summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2020-06-11Merge branch 'master' into stagingMarius Bakke
2020-06-11packages: 'package-grafts' returns grafts for all the relevant outputs.Ludovic Courtès
Fixes <https://bugs.gnu.org/41796>. Reported by Jakub Kądziołka <kuba@kadziolka.net>. * guix/packages.scm (input-graft): Add 'output' parameter and honor it. Add OUTPUT to the cache key. (input-cross-graft): Likewise. (fold-bag-dependencies): Operate on inputs instead of nodes. Turn VISITED into a vhash instead of a set. Pass PROC HEAD and OUTPUT instead of just HEAD. (bag-grafts): Adjust accordingly. * tests/packages.scm ("package-grafts, dependency on several outputs"): New test.
2020-06-10database: separate transaction-handling and retry-handling.Caleb Ristvedt
Previously call-with-transaction would both retry when SQLITE_BUSY errors were thrown and do what its name suggested (start and rollback/commit a transaction). This changes it to do only what its name implies, which simplifies its implementation. Retrying is provided by the new call-with-SQLITE_BUSY-retrying procedure. * guix/store/database.scm (call-with-transaction): no longer restarts, new #:restartable? argument controls whether "begin" or "begin immediate" is used. (call-with-SQLITE_BUSY-retrying, call-with-retrying-transaction, call-with-retrying-savepoint): new procedures. (register-items): use call-with-retrying-transaction to preserve old behavior. * .dir-locals.el (call-with-retrying-transaction, call-with-retrying-savepoint): add indentation information.
2020-06-10database: ensure update-or-insert is run within a transactionCaleb Ristvedt
update-or-insert can break if an insert occurs between when it decides whether to update or insert and when it actually performs that operation. Putting the check and the update/insert operation in the same transaction ensures that the update/insert will only succeed if no other write has occurred in the middle. * guix/store/database.scm (call-with-savepoint): new procedure. (update-or-insert): use call-with-savepoint to ensure the read and the insert/update occur within the same transaction.
2020-06-10database: rewrite query procedures in terms of with-statement.Caleb Ristvedt
Most of our queries would fail to finalize their statements properly if sqlite returned an error during their execution. This resolves that, and also makes them somewhat more concise as a side-effect. This also makes some small changes to improve certain queries where behavior was strange or overly verbose. * guix/store/database.scm (call-with-statement): new procedure. (with-statement): new macro. (last-insert-row-id, path-id, update-or-insert, add-references): rewrite to use with-statement. (update-or-insert): factor last-insert-row-id out of the end of both branches. (add-references): remove pointless last-insert-row-id call. * .dir-locals.el (with-statement): add indenting information.
2020-06-10database: work around guile-sqlite3 bug preventing statement resetCaleb Ristvedt
guile-sqlite3 provides statement caching, making it unnecessary for sqlite to keep re-preparing statements that are frequently used. Unfortunately it doesn't quite emulate the semantics of sqlite_finalize properly, because it doesn't cause a commit if the statement being finalized is the last "active" statement (see https://notabug.org/guile-sqlite3/guile-sqlite3/issues/12). We work around this by wrapping sqlite-finalize with our own version that ensures sqlite-reset is called, which does The Right Thing™. * guix/store/database.scm (sqlite-finalize): new procedure that shadows the sqlite-finalize from (sqlite3).
2020-06-09import: stackage: Fix typo.Tobias Geerinckx-Rice
* guix/import/stackage.scm (latest-lts-release): Fix spelling of ‘if’.
2020-06-09import: stackage: Fix typo.Marius Bakke
* guix/import/stackage.scm (latest-lts-release): Fix spelling of "included".
2020-06-09store: Use buffered I/O for all protocol writesLars-Dominik Braun
* guix/store.scm (run-gc) Use buffered output port. (export-path) Same. (add-file-tree-to-store) Same. (set-build-options): Same. Add explicit flush. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-06-09git-authenticate: 'commit-authorized-keys' properly handles orphan commits.Ludovic Courtès
Previously it would trigger a wrong-number-of-arguments error for 'lset-intersection'. * guix/git-authenticate.scm (commit-authorized-keys): Add case for when 'commit-parents' returns the empty list.
2020-06-09git: 'commit-difference' really excludes the ancestors of #:excluded.Ludovic Courtès
* guix/git.scm (commit-difference): Initialize VISITED to the closure of OLD and EXCLUDED, as written in the docstring. * tests/git.scm ("commit-difference, excluded commits"): Adjust accordingly.
2020-06-08Merge branch 'master' into stagingMarius Bakke
2020-06-08syscalls: set-thread-name, thread-name: Fix thinko.Jan (janneke) Nieuwenhuizen
* guix/build/syscalls.scm (set-thread-name, thread-name): Oops, fix thinko.
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-06Merge branch 'master' into stagingMarius Bakke
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-29Merge branch 'master' into stagingMarius Bakke
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-26Merge branch 'master' into stagingMarius Bakke
2020-05-26Merge branch 'master' into stagingMarius Bakke
2020-05-26Merge branch 'master' into stagingMarius Bakke
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'.