guix-play/guix
Ludovic Courtès 64cf660f87
daemon: Spawn 'guix authenticate' once for all.
Previously, we'd spawn 'guix authenticate' once for each item that has
to be signed (when exporting) or authenticated (when importing).  Now,
we spawn it once for all and then follow a request/reply protocol.  This
reduces the wall-clock time of:

  guix archive --export -r $(guix build coreutils -d)

from 30s to 2s.

* guix/scripts/authenticate.scm (sign-with-key): Return the signature
instead of displaying it.  Raise a &formatted-message instead of calling
'leave'.
(validate-signature): Likewise.
(read-command): New procedure.
(define-enumerate-type, reply-code): New macros.
(guix-authenticate)[send-reply]: New procedure.
Change to read commands from current-input-port.
* nix/libstore/local-store.cc (runAuthenticationProgram): Remove.
(authenticationAgent, readInteger, readAuthenticateReply): New
functions.
(signHash, verifySignature): Rewrite in terms of the agent.
* tests/store.scm ("import not signed"): Remove 'pk' call.
("import signed by unauthorized key"): Check the error message of C.
* tests/guix-authenticate.sh: Rewrite using the new protocol.

fixlet
2020-09-14 15:42:55 +02:00
..
build android-repo-download: Use parallel-job-count instead of hard-coding job 2020-09-03 00:09:38 +02:00
build-system build-system: linux-module: Delete some huge items that we probably don't need. 2020-09-14 10:15:43 +02:00
import Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
scripts daemon: Spawn 'guix authenticate' once for all. 2020-09-14 15:42:55 +02:00
store database: register-items: reduce transaction scope. 2020-09-14 10:51:26 +02:00
tests tests: Move OpenPGP helpers to (guix tests gnupg). 2020-06-16 16:10:46 +02:00
android-repo-download.scm android-repo-download: Remove unnecessary use of Guile-JSON. 2020-09-08 00:47:35 +02:00
base16.scm
base32.scm base32: Export the base32 charsets. 2017-07-21 17:03:24 +02:00
base64.scm base64: Do not use (rnrs). 2019-12-15 00:34:05 +01:00
build-system.scm
bzr-download.scm download: Pass 'http_proxy' et al. to git, hg, etc. 2019-09-05 18:33:30 +02:00
cache.scm Remove workaround for 'time-monotonic' in Guile 2.2.2. 2020-03-22 16:49:47 +01:00
channels.scm Use 'formatted-message' instead of '&message' where appropriate. 2020-07-25 19:11:37 +02:00
ci.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
colors.scm ui: Don't disable colors when INSIDE_EMACS is set. 2020-02-24 11:01:52 +01:00
combinators.scm combinators: Fix typo. 2020-07-05 03:15:08 +05:30
config.scm.in Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
cpio.scm
cve.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
cvs-download.scm Use guile-zlib extension in build-side code. 2020-08-24 10:41:06 +02:00
deprecation.scm deprecation: Add a two-element form for simple aliases. 2020-01-12 00:19:09 +01:00
derivations.scm derivations: Avoid uses of 'write' in 'write-derivation'. 2020-08-28 23:29:07 +02:00
describe.scm guix package: Save provenance information when using '--manifest'. 2019-12-29 18:24:54 +01:00
diagnostics.scm diagnostics: Add '&formatted-message'. 2020-07-25 19:11:36 +02:00
discovery.scm discovery: Fix typo. 2020-07-05 16:07:59 +05:30
docker.scm pack: Provide a meaningful "repository name" for Docker. 2019-09-16 10:25:31 +02:00
download.scm download: Add Savannah mirror. 2020-07-20 23:25:10 +02:00
elf.scm elf: Add missing argument in 'elf-segment'. 2015-03-30 15:21:11 +02:00
ftp-client.scm Remove most uses of the _IO*F constants. 2019-01-09 14:47:53 +01:00
gexp.scm gexp: computed-file: Prevent mistakenly overriding default option values. 2020-09-01 00:48:11 -04:00
git-authenticate.scm Use 'formatted-message' instead of '&message' where appropriate. 2020-07-25 19:11:37 +02:00
git-download.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
git.scm git: Export url-cache-directory. 2020-09-06 15:40:54 +02:00
glob.scm glob: Add an extra glob pattern compilation stage. 2018-03-18 22:57:17 +01:00
gnu-maintenance.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
gnupg.scm gnupg: Accept revoked keys. 2020-04-17 23:36:47 +02:00
grafts.scm grafts: Improve performance for derivations with many inputs. 2020-06-06 23:28:48 +02:00
graph.scm graph: Add 'shortest-path'. 2020-05-11 23:30:55 +02:00
hg-download.scm Use guile-zlib extension in build-side code. 2020-08-24 10:41:06 +02:00
http-client.scm download: Do not leak file descriptors on TLS ports. 2020-01-03 16:06:26 +01:00
i18n.scm ui: Introduce (guix i18n). 2017-11-08 22:31:58 +01:00
inferior.scm utils: Move <location> and '&error-location' to (guix diagnostics). 2020-07-25 19:11:36 +02:00
licenses.scm licenses: Update Zlib license URL. 2020-05-15 12:27:22 +02:00
lint.scm lint: formatting: Gracefully handle relative file names. 2020-08-23 23:05:16 +02:00
man-db.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
memoization.scm memoization: Add 'invalidate-memoization!. 2017-12-13 23:11:53 +01:00
modules.scm Remove traces of "GuixSD". 2019-03-13 23:12:43 +01:00
monad-repl.scm
monads.scm monads, gexp: Prevent redefinition of syntax parameters. 2019-02-06 23:06:18 +01:00
nar.scm doc: Distinguish the "nar bundle" format from "nar". 2020-09-11 17:53:58 +02:00
openpgp.scm openpgp: Use Libgcrypt's crc24 implementation. 2020-06-23 23:39:42 +02:00
packages.scm packages: <content-hash> printer gracefully handle #f values. 2020-08-31 15:50:35 +02:00
pki.scm Switch to Guile-Gcrypt. 2018-09-04 17:25:11 +02:00
profiles.scm linux-libre: Support module compression. 2020-08-25 11:53:20 +02:00
profiling.scm profiling: Add a "gc" profiling component. 2019-01-15 20:24:08 +01:00
progress.scm Remove workaround for 'time-monotonic' in Guile 2.2.2. 2020-03-22 16:49:47 +01:00
quirks.scm quirks: Adjust patch to allow traveling back to Dec. 2018. 2020-07-24 18:56:25 +02:00
records.scm records: Have ABI check work well for cross-compilation. 2020-04-08 00:05:45 +02:00
remote.scm Use 'formatted-message' instead of '&message' where appropriate. 2020-07-25 19:11:37 +02:00
repl.scm repl: Return stack traces along with exceptions. 2020-03-19 15:14:08 +01:00
scripts.scm scripts: Use 'define-command' and have 'guix help' use that. 2020-09-10 12:27:24 +02:00
search-paths.scm search-paths: Add 'set-search-paths'. 2018-05-10 14:53:57 +02:00
self.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
serialization.scm serialization: 'read-byte-string' makes a single read(2) call. 2020-01-24 23:56:43 +01:00
sets.scm
ssh.scm ssh: Fix progress bar crash when there are zero items to send. 2020-09-02 23:59:24 +02:00
status.scm status: Remove extra space before ellipsis. 2020-04-19 13:27:06 +02:00
store.scm store: 'set-build-options' sends LC_MESSAGES, not LC_ALL. 2020-09-02 17:17:37 +02:00
svn-download.scm guix: Fix download-svn-to-store. 2020-09-14 14:24:29 +01:00
swh.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
tests.scm packages: Introduce <content-hash> and use it in <origin>. 2020-05-22 01:29:39 +02:00
ui.scm ui: Lexicographically sort transaction entries based on their package name. 2020-09-12 02:08:14 -04:00
upstream.scm upstream: Handle the case where the file name has no extension. 2020-07-27 13:35:49 +02:00
utils.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
workers.scm workers: Display backtrace in pre-unwind handler. 2017-11-17 10:47:56 +01:00