* build-aux/git-authenticate.scm (load-keyring-from-blob)
(load-keyring-from-reference): New procedures.
(authenticate-commits): Add #:keyring-reference and use
'load-keyring-from-reference'.
* build-aux/git-authenticate.scm (read-authorizations)
(commit-authorized-keys): New procedures.
(authenticate-commit): Use it instead of %AUTHORIZED-SIGNING-KEYS.
It can now authenticate 14K+ commits in 23s instead of 4mn20.
* build-aux/git-authenticate.scm (%authorized-signing-keys): Turn
fingerprints into bytevectors.
(with-temporary-files): Remove.
(commit-signing-key): Add 'keyring' parameter. Use
'string->openpgp-packet' and 'verify-openpgp-signature' instead of (guix
gnupg) procedures.
(authenticate-commit): Add 'keyring' parameter. Pass it to
'commit-signing-key'. Adjust to SIGNING-KEY being an <openpgp-public-key>.
(authenticate-commits): Remove 'parameterize'. Load keyring with
'get-openpgp-keyring'.
(git-authenticate): When printing stats, adjust to SIGNER being an
<openpgp-public-key>.
I (nckx) have revoked all RSA subkeys, in favour of my older and
freshly-refreshed ECDSA ones. This was merely a precaution: to my
knowledge all my RSA private keys have been carefully destroyed and
were never compromised. This commit keeps ‘make authenticate’ happy.
* guix/gnupg.scm (revkeysig-rx): New variable for revoked keys.
(gnupg-verify): Parse it.
(gnupg-status-good-signature?): Accept it as ‘good’ for our purposes.
* build-aux/git-authenticate.scm (%committers): Clarify nckx's subkeys.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Works around <https://bugs.gnu.org/40522>.
* build-aux/compile-all.scm (parallel-job-count*): New procedure.
<top level>: Use it instead of 'parallel-job-count'.
This avoids repeated "will be downloaded" messages for
'compute-guix-derivation' and its dependencies.
* build-aux/build-self.scm (build): Don't call 'show-what-to-build*'
when 'with-build-handler' is defined.
This patch changes three things:
1. package derivations are built using Guile 3.0;
2. 'gexp->derivation' defaults to Guile 3.0;
3. "guile3.0-" packages are deprecated aliases for the regular
package, which now depends on Guile 3.0; "guile2.2-" packages are
introduced; "guile-next" is renamed to "guile".
* gnu/packages/guile.scm (guile-2.0/fixed): Remove.
(guile-3.0/fixed): New variable.
(package-for-guile-3.0): Remove.
(package-for-guile-2.2): New variable.
(define-deprecated-guile3.0-package): New macro.
(guile-3.0)[name]: Change to "guile".
(guile-json-3)[native-inputs, inputs]: New fields.
(guile2.2-json): New variable.
(guile3.0-json): Deprecate.
(guile-gdbm-ffi)[native-inputs]: Switch to GUILE-3.0.
(guile2.2-gdbm-ffi): New variable.
(guile3.0-gdbm-ffi): Deprecate.
(guile-sqlite3): Switch to GUILE-3.0.
(guile2.2-sqlite3): New variable.
(guile3.0-sqlite3): Deprecate.
(guile-bytestructures): Switch to GUILE-3.0.
(guile2.2-bytestructures): New variable.
(guile3.0-bytestructures): Deprecate.
(guile-git): Switch to GUILE-3.0.
(guile2.2-git): New variable.
(guile3.0-git): Deprecate.
(guile-2.2/bug-fix):
* gnu/packages/ci.scm (cuirass): Switch to GUILE-3.0.
* gnu/packages/emacs-xyz.scm (emacs-guix): Switch to GUILE-3.0.
* gnu/packages/gtk.scm (guile-cairo)[arguments]: New field.
Switch to GUILE-3.0.
(guile2.2-cairo): New variable.
(guile3.0-cairo): Deprecate.
(guile-rsvg): Switch to GUILE-3.0.
(guile2.2-cairo): New variable.
(guile3.0-cairo): Deprecate.
(guile-present): Switch to GUILE-3.0.
(guile2.2-present): New variable.
(guile3.0-present): Deprecate.
(guile-gnome)[propagated-inputs]: Use GUILE2.2-CAIRO and GUILE2.2-LIB.
* gnu/packages/guile-xyz.scm (guile-fibers)[arguments]: Add #:configure-flags.
Switch to GUILE-3.0.
(guile2.2-fibers): New variable.
(guile3.0-fibers): Deprecate.
(guile-syntax-highlight): Switch to GUILE-3.0.
(guile2.2-syntax-highlight): New variable.
(guile3.0-syntax-highlight): Deprecate.
(guile-colorized): Switch to GUILE-3.0.
(guile2.2-colorized): New variable.
(guile3.0-colorized): Deprecate.
(guile-pfds): Switch to GUILE-3.0.
(guile2.2-pfds): New variable.
(guile3.0-pfds): Deprecate.
(guile-simple-zmq): Switch to GUILE-3.0.
(guile2.2-simple-zmq): New variable.
(guile3.0-simple-zmq): Deprecate.
(guile-newt): Switch to GUILE-3.0.
(guile2.2-newt): New variable.
(guile3.0-newt): Deprecate.
(guile-parted): Switch to GUILE-3.0.
(guile2.2-parted): New variable.
(guile3.0-parted): Deprecate.
(guile-config): Switch to GUILE-3.0.
(guile2.2-config): New variable.
(guile3.0-config): Deprecate.
(guile-hall): Switch to GUILE-3.0.
(guile2.2-hall): New variable.
(guile3.0-hall): Deprecate.
(guile-ics): Switch to GUILE-3.0.
(guile2.2-ics): New variable.
(guile3.0-ics): Deprecate.
(guile-wisp)[arguments]: Add 'support-guile-3.0' phase.
Switch to GUILE-3.0.
(guile2.2-wisp): New variable.
(guile3.0-wisp): Deprecate.
(guile-lib): Switch to GUILE-3.0.
(guile2.2-lib): New variable.
(guile3.0-lib): Deprecate.
(guile-minikanren): Switch to GUILE-3.0.
(guile2.2-minikanren): New variable.
(guile3.0-minikanren): Deprecate.
(guile-irregex): Switch to GUILE-3.0.
(guile2.2-irregex): New variable.
(guile3.0-irregex): Deprecate.
(haunt): Switch to GUILE-3.0, and remove GUILE-READER.
(guile2.2-haunt): New variable.
(guile3.0-haunt): Deprecate.
(guile-commonmark): Switch to GUILE-3.0.
(guile2.2-commonmark): New variable.
(guile3.0-commonmark): Deprecate.
(mcron): Switch to GUILE-3.0.
(guile2.0-mcron): New variable.
(guile3.0-mcron): Deprecate.
(guile-picture-language): Switch to GUILE-3.0.
(guile2.2-picture-language): New variable.
(guile3.0-picture-language): Deprecate.
(guile-gi): Switch to GUILE-3.0.
(guile2.2-gi): New variable.
(guile3.0-gi): Deprecate.
(guile-hashing): Switch to GUILE-3.0.
(guile2.2-hashing): New variable.
(guile3.0-hashing): Deprecate.
* gnu/packages/package-management.scm (guix): Switch to GUILE-3.0.
(guile2.2-guix): New variable.
(guile3.0-guix): Deprecate.
(gwl): Replace "guile3.0-" with "guile-".
(guix-jupyter)[source]: Adjust for Guile 3.0.
Switch to GUILE-3.0.
* gnu/packages/ssh.scm (guile-ssh): Switch to GUILE-3.0.
(guile2.2-ssh): New variable.
(guile3.0-ssh): Deprecate.
* gnu/packages/admin.scm (shepherd): Switch to GUILE-3.0.
(guile2.2-shepherd): New variable.
(guile3.0-shepherd): Deprecate.
* gnu/packages/mail.scm (mailutils): Switch to GUILE-3.0.
(guile2.2-mailutils): New variable.
(guile3.0-mailutils): Deprecate.
* gnu/packages/plotutils.scm (guile-charting): Switch to GUILE-3.0.
(guile2.2-charting): New variable.
(guile3.0-charting): Deprecate.
* gnu/packages/version-control.scm (libgit2): Switch to GUILE-3.0.
* gnu/packages/vpn.scm (vpnc-scripts): Switch to GUILE-3.0.
* gnu/packages/web.scm (guix-data-service): Switch to GUILE-3.0.
(hpcguix-web): Switch to GUILE-3.0.
* guix/self.scm (specification->package): Refer to the "guile-" variants
instead of "guile3.0-".
* guix/gexp.scm (default-guile): Change to GUILE-3.0.
* build-aux/build-self.scm (build): #:guile-version defaults to "3.0".
* gnu/packages/commencement.scm (guile-final): Base on GUILE-3.0/FIXED.
_IOLBF & co. were deprecated in Guile 2.2 and removed in 3.0.
* build-aux/hydra/gnu-system.scm: Pass 'line instead of _IOLBF to 'setvbuf'.
* build-aux/hydra/guix-modular.scm: Likewise.
The manifest can be passed to 'guix build -m', 'guix weather -m', and so
on. It can also be passed to an installed 'guix' (without
./pre-inst-env), with the exception so far of installation tests.
* build-aux/run-system-tests.scm: Remove. Move interesting bits move
to...
* etc/system-tests.scm: ... here. New file.
* Makefile.am (EXTRA_DIST): Remove 'build-aux/run-system-tests.scm' and
add 'etc/system-tests.scm'.
(check-system): Rewrite to run 'guix build -m etc/system-tests.scm'.
* build-aux/run-system-tests.scm (source-commit): New procedure.
(tests-for-current-guix): Add 'commit' parameter and pass it to
'channel-source->package'.
(run-system-tests): Call 'source-commit' and pass the result to
'tests-for-current-guix'.
* gnu/ci.scm (channel-build-system)[build, lower]: Honor #:source.
(channel-source->package): New procedure.
(system-test-jobs): Remove 'instance' and call to
'checkout->channel-instance'. Use 'channel-source->package'.
* build-aux/run-system-tests.scm (tests-for-channel-instance): Rename to...
(tests-for-current-guix): ... this. Change 'instance' to 'source'.
(run-system-tests): Use 'local-file' instead of 'interned-file' for
SOURCE.
This is a followup to commit 7dc0f1d5a8,
signed with sub-key "3D2C DA58 819C 08C2 A649 D43D 5C3B 064C 724A 5726".
* build-aux/git-authenticate.scm (%committers): Provide fingerprint of
subkey for thomasd.
A list of already-authenticated commits is kept in
~/.cache/guix/authentication. This speeds up subsequent "make
authenticate" invocations.
* build-aux/git-authenticate.scm (authenticated-commit-cache-file)
(previously-authenticated-commits, cache-authenticated-commit): New
procedures.
(git-authenticate): Define 'authenticated-commits' and pass it as a
third argument to 'commit-difference'. Add call to
'cache-authenticated-commit'. Don't display signing stats when STATS is
null.
Fixes <https://bugs.gnu.org/36378>.
Reported by Reza Alizadeh Majd <r.majd@pantherx.org>.
* build-aux/hydra/gnu-system.scm (find-current-checkout): New procedure.
(hydra-jobs): Use FIND-CURRENT-CHECKOUT to define CHECKOUT. Pass it to the
inferior Guix as an extra argument whose key is 'superior-guix-checkout'.
* gnu/ci.scm (find-current-checkout): New procedure.
(hydra-jobs): Use FIND-CURRENT-CHECKOUT to define CHECKOUT. This will return
'#f' if the current Guix is an inferior. In that case, use the
'superior-guix-checkout' argument provided by the superior Guix.
This is a followup to 7e6d8d366a.
It means that "make check-system" can run tests from (gnu tests install)
much faster because it does not need to build a full 'guix' package.
* gnu/ci.scm (channel-instance->package): Export.
* build-aux/run-system-tests.scm (tests-for-channel-instance): New
procedure, with code formerly in 'run-system-tests'.
(run-system-tests): Call 'interned-file' for SOURCE, and add call to
'tests-for-channel-instance'.
This is a followup to 2e3e5d2198.
* build-aux/test-env.in: Remove mentions of 'NIX_ROOT_FINDER'.
* nix/libstore/gc.cc (LocalStore::collectGarbage): Adjust comment
accordingly.
Fixes <https://bugs.gnu.org/35539>.
Reported by Florian Pelz <pelzflorian@pelzflorian.de>.
* build-aux/check-available-binaries.scm (packages-for-system): New procedure.
<top level>: Use it.
This is a followup to 48d498c2c3, which
introduced a typo (missing '->' in 'mlet'.)
Fixes <https://bugs.gnu.org/35623>.
Reported by Karrick McDermott <kmcdermott@linkedin.com>.
* build-aux/build-self.scm (build): Add 'getenv' and 'setenv' calls for
HOME.
This reverts commit fa9e6e8b67.
By using the new bindings, we would prevent users of Guix prior to
de9fbe9cdc, such as version 0.16.0, to
upgrade to current master. Thus, we will keep using the old names for a
while.
This variable is unused since commit
45779fa676.
* guix/self.scm (%dependency-variables): Remove.
* build-aux/build-self.scm (%dependency-variables): Remove.
This makes it easier to run the uninstalled daemon.
* nix/local.mk (libstore_a_CPPFLAGS): Append "/guix" to
NIX_LIBEXEC_DIR.
* build-aux/pre-inst-env.in (NIX_LIBEXEC_DIR): Adjust comment.
* nix/libstore/builtins.cc (builtinDownload): Remove SUBDIR and its
use.
* nix/libstore/local-store.cc (runAuthenticationProgram): Ditto.
* nix/libstore/gc.cc (addAdditionalRoots): Remove "/guix" prefix.
* nix/nix-daemon/guix-daemon.cc (main): Ditto.
Previously execution of the trampoline would be somewhat sensitive to
GUILE_LOAD_PATH & co., for example.
* build-aux/build-self.scm (build-program): Remove 'unsetenv' call and
%LOAD-COMPILED-PATH hack.
(call-with-clean-environment): New procedure.
(with-clean-environment): New macro.
(build): Wrap 'open-pipe*' call in 'with-clean-environment'.
Previously we would rely on auto-compilation of all the Guix modules.
The complete evaluation would take ~15mn on berlin.guixsd.org and
require lots of RAM. This approach should be faster since potentially
only part of the modules are rebuilt. Furthermore, as a side-effect, it
builds the derivations that 'guix pull' uses.
* build-aux/hydra/gnu-system.scm: Remove 'eval-when' form.
(hydra-jobs): New procedure.
* gnu/ci.scm (package->alist, qemu-jobs, system-test-jobs)
(tarball-jobs): Return strings for the 'license' field.
* guix/self.scm (compiled-guix)[*cli-modules*]: Add (gnu ci).
* build-aux/hydra/evaluate.scm <top level>: Add call to 'add-to-store'.
Use that as the 'file-name' attribute. Call 'primitive-load' in a
directory excursion to SOURCE.
The newline is meant to follow the spinner's traces so it must go to the
error port as well.
* build-aux/build-self.scm (build): Send newline to the error port.
These builds shouldn't take too long. Sometimes the guest kernel
crashes and the VM gets stuck; we should be able to terminate those jobs
quickly.
* build-aux/hydra/gnu-system.scm (qemu-jobs)[->alist]: Add
'max-silent-time' and 'timeout'.
(system-test-jobs)[test->thunk]: Likewise.
Previously we'd pass a relative file name to 'add-indirect-root', which
the daemon would interpret as relative to "/". Consequently, checkouts
were not protected from GC.
* build-aux/update-guix-package.scm (main): Pass an absolute file name
to 'add-indirect-root'.
The lists of new and upgraded packages in 'NEWS' had become way too long
and redundant with what 'guix pull' reports.
* build-aux/update-NEWS.scm (write-packages-added): Don't print ADDED.
(write-packages-updates)[important, table, latest, noteworthy]: New
variables.
Print NOTEWORTHY rather than all of UPGRADED.
(main): Print PREVIOUS-VERSION and NEW-VERSION.
Reported by Paul Garlick <pgarlick@tourbillion-technology.com>.
Fixes a bug whereby "old" Guix instances (before mid-May 2018) would
fail to pull to current master.
Specifically, Paul reported being unable to upgrade from
6f84dc4314 (a commit that predates that
addition of the 'bootstrap' phase on gnu-build-system on 'master' and
that also predates the new 'guix pull'.)
* build-aux/build-self.scm (guile-gcrypt)[arguments]: New field.
Fixes <https://bugs.gnu.org/31892>.
Reported by Vagrant Cascadian <vagrant@debian.org>.
* build-aux/build-self.scm (build): Define 'port' and wrap 'open-pipe*'
call in 'with-input-from-port'.
(build-program): Use 'port->connection' or 'open-connection' instead of
'with-store.'
* build-aux/build-self.scm (build-program)["compute-guix-derivation"]:
Honor the SOURCE command-line argument. Add a VERSION command-line
argument and honor it.
(build): Pass VERSION to BUILD.
This is a followup to d6b5aa0b03.
* guix/self.scm (%config-variables): Remove %CONFIG-DIRECTORY,
%STATE-DIRECTORY, %STORE-DATABASE-DIRECTORY, and %STORE-DIRECTORY.
(make-config.scm): Define them here.
* build-aux/build-self.scm (%config-variables, make-config.scm):
Likewise.
Guix'es older than one week don't have this variable so requiring it
would break things for them.
* build-aux/build-self.scm (%config-variables): Remove
'%store-database-directory'.
Previously the %CONFIG-VARIABLES list would be generated based on what
the current (guix config) contains. Thus, it would include
'%guix-register-program', which we recently removed, because
existing (guix config) most likely contained that variable. Since its
value could differ from machine to machine, the build farm could be
building a different config.scm, thereby preventing people from getting
substitutes.
* guix/self.scm (%config-variables): Turn into a white list instead of
taking all the remaining variables from the current (guix config).
* build-aux/build-self.scm (%config-variables): Likewise.
Previously, under Cuirass, we'd add "build-aux/cuirass/../hydra/../..".
But then, commit c45477d2a1 added this
in (gnu system vm):
(local-file (search-path %load-path
"guix/store/schema.sql"))
Since 'search-path' would not return an absolute file name, 'local-file'
would try to resolve that relative to "gnu/system", leading to:
ERROR: In procedure force:
In procedure canonicalize-path: No such file or directory: "/gnu/store/…-guix-ce573b1/gnu/system/build-aux/cuirass/../hydra/../../guix/store/schema.sql
* build-aux/hydra/gnu-system.scm <top level>: Canonicalize DIR before
adding it to %LOAD-PATH.
* guix/scripts/pull.scm (%pull-version): New variable.
(build-from-source): Pass #:pull-version to BUILD.
(whole-package-for-legacy, derivation->manifest-entry): New procedure.
(build-and-install): Rewrite in terms of 'build-and-use-profile'.
* guix/scripts/system.scm (maybe-suggest-running-guix-pull)[latest]:
Switch to "/current".
* scripts/guix.in (augment-load-paths!): Remove use of
~/.config/guix/latest.
* build-aux/compile-as-derivation.scm: Replace "/guix/latest/" with
"/current/share/guile/site/X.Y"
* guix/scripts.scm (warn-about-old-distro)[age]: Check "/current"
instead of "/latest".
* doc/guix.texi (Invoking guix pull): Document it.
* doc/contributing.texi (Running Guix Before It Is Installed): Remove
footnote about abusing ~/.config/guix/latest.