summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2020-06-08syscalls: set-thread-name, thread-name: Stub for the Hurd.Jan (janneke) Nieuwenhuizen
Avoid crash Backtrace: guix/build/syscalls.scm:405:8: In procedure prctl: Function not implemented because of missing prctl on the Hurd. * guix/build/syscalls.scm (set-thread-name, thread-name): Rename to ... (set-thread-name!/linux,thread-name/linux): ...this. (set-thread-name, thread-name): Swtich between linux implementation and or stub.
2020-06-07git-authenticate: Prevent removal of '.guix-authorizations'.Ludovic Courtès
* guix/git-authenticate.scm (commit-authorized-keys) [parents-have-authorizations-file?, assert-parents-lack-authorizations]: New procedures. Use the latter before returning DEFAULT-AUTHORIZATIONS. * guix/git.scm (false-if-git-not-found): Export. * guix/tests/git.scm (populate-git-repository): Add 'remove' clause. * tests/git-authenticate.scm ("signed commits, .guix-authorizations removed"): New test.
2020-06-07git: 'update-cached-checkout' gracefully handles missing starting commit.Ludovic Courtès
Fixes <https://bugs.gnu.org/41604> Reported by John Soo <jsoo1@asu.edu> and zimoun <zimon.toutoune@gmail.com>. * guix/git.scm (false-if-git-not-found): New macro. (reference-available?): Use it. (update-cached-checkout): Use it when looking up STARTING-COMMIT. Set RELATION to 'unrelated when OLD is #false.
2020-06-06ui: 'display-search-results' automatically invokes the pager.Ludovic Courtès
* guix/ui.scm (call-with-paginated-output-port): New procedure. (with-paginated-output-port): New macro. (display-search-results): Use it instead of displaying a hint.
2020-06-06utils: Add 'with-environment-variables'.Ludovic Courtès
* guix/tests/gnupg.scm (call-with-environment-variables) (with-environment-variables): Move to... * guix/utils.scm: ... here. * guix/tests/git.scm: Adjust accordingly.
2020-06-06packages: Make 'bag-grafts' insensitive to '%current-target-system'.Ludovic Courtès
Fixes <https://bugs.gnu.org/41713>. Reported by Mathieu Othacehe. * guix/packages.scm (bag-grafts): Wrap 'fold-bag-dependencies' calls in 'parameterize'. * tests/packages.scm ("package->bag, sensitivity to %current-target-system"): New test.
2020-06-06grafts: Improve performance for derivations with many inputs.Ludovic Courtès
Partly fixes <https://bugs.gnu.org/41702>. Reported by Lars-Dominik Braun <ldb@leibniz-psychology.org>. Previously we'd potentially traverse the same sub-graph of DEPS several times. With this patch, command: guix environment --ad-hoc r-learnr --search-paths goes from 11.3s to 4.6s. * guix/grafts.scm (reference-origin): Rename to... (reference-origins): ... this. Change 'item' parameter to 'items'. [lookup-derivers]: New procedure. (cumulative-grafts)[dependency-grafts]: Change 'item' to 'items' and use 'reference-origins'. Remove 'mapm' around 'dependency-grafts' call.
2020-06-05git-authenticate: Add tests.Ludovic Courtès
* guix/tests/git.scm (call-with-environment-variables) (with-environment-variables): Remove. * guix/tests/git.scm (populate-git-repository): Add clauses for signed commits and signed merges. * guix/tests/gnupg.scm: New file. * tests/git-authenticate.scm: New file. * tests/ed25519bis.key, tests/ed25519bis.sec: New files. * Makefile.am (dist_noinst_DATA): Add 'guix/tests/gnupg.scm'. (SCM_TESTS): Add 'tests/git-authenticate.scm'. (EXTRA_DIST): Add tests/ed25519bis.{key,sec}.
2020-06-05git-authenticate: Raise proper SRFI-35 conditions.Ludovic Courtès
* guix/git-authenticate.scm (&git-authentication-error) (&unsigned-commit-error, &unauthorized-commit-error) (&signature-verification-error, &missing-key-error): New condition types. (commit-signing-key, authenticate-commit): Raise them.
2020-06-05git-authenticate: Don't hard-code "origin/" for keyring reference.Ludovic Courtès
* guix/git-authenticate.scm (load-keyring-from-reference): Remove hard-coded "origin/". Use BRANCH-ALL instead of BRANCH-REMOTE.
2020-06-05Add (guix git-authenticate).Ludovic Courtès
* build-aux/git-authenticate.scm (commit-signing-key) (read-authorizations, commit-authorized-keys, authenticate-commit) (load-keyring-from-blob, load-keyring-from-reference) (authenticate-commits, authenticated-commit-cache-file) (previously-authenticated-commits, cache-authenticated-commit): Remove. * build-aux/git-authenticate.scm (git-authenticate): Pass #:default-authorizations to 'authenticate-commits'. * guix/git-authenticate.scm: New file, with code taken from 'build-aux/git-authenticate.scm'. Remove references to '%historical-authorized-signing-keys' and add #:default-authorizations parameter instead. * Makefile.am (MODULES): Add it. (authenticate): Depend on guix/git-authenticate.go.
2020-06-02build-system: linux-module: Allow passing #:make-flags argument.Danny Milosavljevic
* guix/build-system/linux-module.scm (linux-module-build): Add #:make-flags. (linux-module-build-cross): Add #:make-flags. * guix/build/linux-module-build-system.scm (install): Pass make-flags. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2020-06-01combinators: Recurse fold2 to named let loop.Arun Isaac
* guix/combinators.scm (fold2): Recurse to named let loop, not fold2 itself. Signed-off-by: Jakub Kądziołka <kuba@kadziolka.net>
2020-05-29size: Document that positional arguments can be store items.Pierre Neidhardt
* guix/scripts/size.scm (show-help): Mention STORE-ITEM positional argument alternative.
2020-05-29syscalls: 'terminal-dimension' ignores EPERM.Ludovic Courtès
Fixes <https://bugs.gnu.org/41581>. Reported by Tobias Geerinckx-Rice <me@tobias.gr>. * guix/build/syscalls.scm (terminal-dimension): Add EPERM to the list of errno code for FALL-BACK.
2020-05-29syscalls: Properly match %HOST-TYPE.Jesse Dowell
Fixes <https://bugs.gnu.org/41546>. Regression introduced in 0d371c633f7308cfde2432d6119d386a5c63198c. * guix/build/syscalls.scm (write-socket-address!) (read-socket-address): Use 'string-contains' instead of 'string-suffix?'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-05-29quirks: Build 'compute-guix-derivation' modules with 2.2 when needed.Ludovic Courtès
Fixes <https://bugs.gnu.org/41595>. Reported by Jan Nieuwenhuizen <janneke@gnu.org>. * guix/quirks.scm (requires-guile-2.2?): New procedure. (%quirks): Add it. (%bug-41214-patch): Comment.
2020-05-29utils: Add 'cc-for-target'.Marius Bakke
* guix/utils.scm (cc-for-target): New procedure.
2020-05-29image: Do not use VM to create disk-images.Mathieu Othacehe
Now that installing Grub on raw disk-images is supported, we do not need to rely on (gnu system vm) module. * gnu/system/image.scm (make-system-image): Rename to ... (system-image): ... this, and remove the compatibility wrapper. (find-image): Turn to a monadic procedure. This will become useful when introducing Hurd support, to be able to detect the target system. * gnu/ci.scm (qemu-jobs): Use lower-object now that system-image returns a file-like object. * gnu/tests/install.scm (run-install): Ditto. * guix/scripts/system.scm (system-derivation-for-action): Add a 'base-image' argument, (perform-action): adapt accordingly.
2020-05-25compile: Do not optimize "gnu/tests/*".Ludovic Courtès
* guix/build/compile.scm (optimization-options): Add "gnu/tests/" to level 0.
2020-05-25gexp: The result of 'imported-files/derivation' is non-substitutable.Ludovic Courtès
* guix/gexp.scm (imported-files/derivation): Pass #:substitutable? #f to 'gexp->derivation'.
2020-05-25self: Optimize 'file-append*' for 'local-file?'.Ludovic Courtès
* guix/self.scm (file-append*): Add 'local-file?' case. * guix/gexp.scm (local-file-select?): Export.
2020-05-25gexp: Fix expansion for (file-append (local-file ...) ...).Ludovic Courtès
Fixes <https://bugs.gnu.org/41527>. Regression introduced in d03001a31a6d460b712825640dba11e3f1a53a14. * guix/gexp.scm (lower+expand-object): When LOWERED is not a struct and EXPAND is true, call EXPAND. * tests/gexp.scm ("file-append, raw store item"): New test.
2020-05-25pull: Protect against downgrade attacks.Ludovic Courtès
* guix/scripts/pull.scm (%default-options): Add 'validate-pull'. (%options, show-help): Add '--allow-downgrades'. (warn-about-backward-updates): New procedure. (guix-pull): Pass #:current-channels and #:validate-pull to 'latest-channel-instances'. * guix/channels.scm (ensure-forward-channel-update): Add hint for when (channel-commit channel) is true. * doc/guix.texi (Invoking guix pull): Document '--allow-downgrades'.
2020-05-25channels: 'latest-channel-instances' guards against non-forward updates.Ludovic Courtès
* guix/channels.scm (latest-channel-instance): Add #:starting-commit and pass it to 'update-cached-checkout'. Return the commit relation as a second value. (ensure-forward-channel-update): New procedure. (latest-channel-instances): Add #:current-channels and #:validate-pull. [current-commit]: New procedure. Pass #:starting-commit to 'latest-channel-instance'. When the returned relation is true, call VALIDATE-PULL. (latest-channel-derivation): Add #:current-channels and #:validate-pull. Pass them to 'latest-channel-instances*'. * tests/channels.scm ("latest-channel-instances #:validate-pull"): New test.
2020-05-25git: 'update-cached-checkout' returns the commit relation.Ludovic Courtès
* guix/git.scm (update-cached-checkout): Add #:starting-commit parameter. Call 'commit-relation' when #:starting-commit is true. Always return the relation or #f as the third value. (latest-repository-commit): Adjust accordingly. * guix/import/opam.scm (get-opam-repository): Likewise. * tests/channels.scm ("latest-channel-instances includes channel dependencies") ("latest-channel-instances excludes duplicate channel dependencies"): Update mock of 'update-cached-checkout' accordingly.
2020-05-25channels: 'latest-channel-instances' doesn't leak internal state.Ludovic Courtès
* guix/channels.scm (latest-channel-instances): Remove 'previous-channels' argument. Introduce 'loop' and use it.
2020-05-25git: Add 'commit-relation'.Ludovic Courtès
* guix/git.scm (commit-relation): New procedure. * tests/git.scm ("commit-relation"): New test.
2020-05-23guix package: Support multiple profiles with '--list-installed'.zimoun
* guix/scripts/package.scm (process-query): List installed multiple profiles. * tests/guix-package-net.sh: Test it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-05-22upstream: Use 'origin-hash'.Ludovic Courtès
* guix/upstream.scm (update-package-source): Use 'origin-hash' instead of 'origin-sha256'.
2020-05-22lint: archival: Use 'origin-hash'.Ludovic Courtès
* guix/lint.scm (check-archival): Use 'origin-hash' instead of 'origin-sha256', removing hard-coded "sha256".
2020-05-22packages: Introduce <content-hash> and use it in <origin>.Ludovic Courtès
* guix/packages.scm (<content-hash>): New record type. (define-content-hash-constructor, build-content-hash) (content-hash): New macros. (print-content-hash): New procedure. (<origin>): Rename constructor to '%origin'. [sha256]: Remove field. [hash]: New field. Adjust users. (origin-compatibility-helper, origin): New macros. (origin-sha256): New deprecated procedure. (origin->derivation): Adjust accordingly. * tests/packages.scm ("package-source-derivation, origin, sha512"): New test. * guix/tests.scm: Hide (gcrypt hash) 'sha256' for proper syntax matching. * tests/challenge.scm: Add #:prefix for (gcrypt hash) and adjust users. * tests/derivations.scm: Likewise. * tests/store.scm: Likewise. * tests/graph.scm ("bag DAG, including origins"): Provide 'sha256' field with the right length. * gnu/packages/aspell.scm (aspell-dictionary) (aspell-dict-ca, aspell-dict-it): Use 'hash' and 'content-hash' for proper syntax matching. * gnu/packages/bash.scm (bash-patch): Rename 'sha256' to 'sha256-bv'. * gnu/packages/bootstrap.scm (bootstrap-executable): Rename 'sha256' to 'bv'. * gnu/packages/readline.scm (readline-patch): Likewise. * gnu/packages/virtualization.scm (qemu-patch): Rename 'sha256' to 'sha256-bv'. * guix/import/utils.scm: Hide (gcrypt hash) 'sha256'.
2020-05-22packages: Add 'base64' macro.Ludovic Courtès
* guix/packages.scm (define-compile-time-decoder): New macro. (base32): Redefine in terms of it. (base64): New macro.
2020-05-22guix hash, guix download: Support base64 format.Ludovic Courtès
* guix/scripts/download.scm (show-help, %options): Support "base64" format. * guix/scripts/hash.scm (show-help, %options): Likewise. * tests/guix-hash.sh: Test it. * doc/guix.texi (Invoking guix hash): Document it.
2020-05-22guix hash, guix download: Add '--hash'.Ludovic Courtès
* guix/scripts/download.scm (%default-options): Add 'hash-algorithm'. (show-help, %options): Add "--hash". (guix-download): Honor it. * guix/scripts/hash.scm (%default-options): Add 'hash-algorithm'. (show-help, %options): Add "--hash". (guix-hash): Honor it. * tests/guix-hash.sh: Test '-H sha512'. * doc/guix.texi (Invoking guix download): Document it. (Invoking guix hash): Document it.
2020-05-21build: asdf-build-system: Use SBCL source in CL packages.Pierre Neidhardt
* guix/build/asdf-build-system.scm (copy-files-to-output): Don't attempt to reset timestamps on files without write access. (install): When parent SBCL package is in the inputs, use its source. This way we get possibly patched sources in CL packages as well (e.g. for FFI). This is also useful for sources that generate files on load-op, like cl-unicode. * guix/build-system/asdf.scm (package-with-build-system): Forward the SBCL parent as a native input so that it can be used in the above install phase.
2020-05-19publish: Improve performance by increasing buffer size.Ricardo Wurmus
* guix/scripts/publish.scm (http-write): Increase socket send buffer.
2020-05-18build-system/guile: Expose #:scheme-file-regexp.Alex Sassmannshausen
* guix/build-system/guile.scm (%scheme-file-regexp): New variable. (guile-build): Accept #:scheme-file-regexp and pass it on to builder.
2020-05-18guix describe: Add '--list-formats'Ekaitz Zarraga
* guix/scripts/describe.scm (%available-formats): New variable. (list-formats): New procedure. (%options, show-help): Add --list-formats * doc/guix.texi: Add --list-formats Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-05-18build: minify-build-system: Fail to install empty files.Efraim Flashner
* guix/build/minify-build-system.scm (install): Produce an error if the minified file is zero bytes.
2020-05-16utils: 'target-arm32?' & co. take an optional parameter.Ludovic Courtès
* guix/utils.scm (target-arm32?, target-aarch64?) (target-arm?, target-64bit?): Make 'target' an optional parameter.
2020-05-16gexp: Add 'let-system'.Ludovic Courtès
* guix/gexp.scm (<system-binding>): New record type. (let-system): New macro. (system-binding-compiler): New procedure. (default-expander): Add 'self-quoting?' case. (self-quoting?): New procedure. (lower-inputs): Add 'filterm'. Pass the result of 'mapm/accumulate-builds' through FILTERM. (gexp->sexp)[self-quoting?]: Remove. * tests/gexp.scm ("let-system", "let-system, target") ("let-system, ungexp-native, target") ("let-system, nested"): New tests. * doc/guix.texi (G-Expressions): Document it.
2020-05-16gexp: Compilers can now return lowerable objects.Ludovic Courtès
* guix/gexp.scm (lower-object): Iterate if LOWERED is a struct. (lower+expand-object): New procedure. (gexp->sexp): Use it. (define-gexp-compiler): Adjust docstring.
2020-05-15licenses: Update Zlib license URL.Ludovic Courtès
* guix/licenses.scm (zlib): Change URL.
2020-05-15quirks: Add patch for <https://bugs.gnu.org/41214>.Ludovic Courtès
Fixes <https://bugs.gnu.org/41214>. * guix/quirks.scm (%bug-41214-patch): New variable. (%patches): Add it.
2020-05-15channels: 'build-from-source' restores '%guile-for-build'.Ludovic Courtès
Not restoring it would cause problems when running: guix time-machine --commit=6298c3ffd9654d3231a6f25390b056483e8f407c or similar because the target Guix would be built with 2.2, and then we'd erroneously go on and attempt build the profile with 2.2. This would fail because profile dependencies such as "guile-gdbm-ffi" now target 3.0. * guix/channels.scm (call-with-guile): New procedure. (with-guile): New macro. (build-from-source): Use it instead of calling 'set-guile-for-build' just once. This ensures that '%guile-for-build' is restored afterwards.
2020-05-15syscalls: Adjust 'sockaddr-in', 'sockaddr-in6' structs for the Hurd.Jan (janneke) Nieuwenhuizen
* guix/build/syscalls.scm (sockaddr-in,sockaddr-in6): Rename to ... (sockaddr-in/linux, sockaddr-in6/linux): ... this. Rename introduced bindings as well. (write-socket-address!/linux,read-socket-address/linux): Rename from (write-socket-address!, read-socket-address): ... new switches between those and ... (write-socket-address!/hurd, read-socket-address/hurd): ... these new function.
2020-05-15channels: Move quirks and patches to (guix quirks).Ludovic Courtès
* guix/channels.scm (apply-patches): Don't access <patch> record directly; use 'applicable-patch?' and 'apply-patch' instead. (<patch>, syscalls-reexports-local-variables?) (guile-2.2.4, %quirks, %bug-41028-patch, %patches): Move to... * guix/quirks.scm: ... here. New file. (apply-patch, applicable-patch?): New procedures.
2020-05-14pack: Add relocation via ld.so and fakechroot.Ludovic Courtès
* gnu/packages/aux-files/run-in-namespace.c (HAVE_EXEC_WITH_LOADER): New macro. (bind_mount): Rename to... (mirror_directory): ... this. Add 'firmlink' argument and use it instead of calling mkdir/open/close/mount directly. (bind_mount, make_symlink): New functions. (exec_in_user_namespace): Adjust accordingly. (exec_with_loader) [HAVE_EXEC_WITH_LOADER]: New function. (exec_performance): New function. (engines): Add them. * guix/scripts/pack.scm (wrapped-package)[fakechroot-library] [audit-module]: New procedures. [audit-source]: New variable. [build](elf-interpreter, elf-loader-compile-flags): New procedures. (build-wrapper): Use them. * tests/guix-pack-relocatable.sh: Test with 'GUIX_EXECUTION_ENGINE=fakechroot'. * doc/guix.texi (Invoking guix pack): Document the 'performance' and 'fakechroot' engines. * gnu/packages/aux-files/pack-audit.c: New file. * Makefile.am (AUX_FILES): Add it.
2020-05-14store: 'mapm/accumulate-builds' preserves '%current-target-system'.Ludovic Courtès
Fixes <https://bugs.gnu.org/41182>. * guix/store.scm (mapm/accumulate-builds): Pass #:system and #:target to 'run-with-store'. * tests/store.scm ("mapm/accumulate-builds, %current-target-system"): New test. * tests/guix-pack.sh: Add 'guix pack -d --target' test.