Age | Commit message (Expand) | Author |
2021-06-12 | profiles: Move some of the work to the build side....When running:
guix environment --ad-hoc gnome --no-grafts --search-paths
this reduces wall-clock time by ~5%. The number of object cache lookups
goes down from 96K to 89K. (Note that 'gnome' is an interesting example
because it has many propagated inputs, which themselves have propagated
inputs too, which would lead to a long input list and a long manifest in
the 'profile-derivation' gexp.)
* guix/profiles.scm (profile-derivation)[inputs, search-paths]: Remove.
[extra-inputs]: New variable.
[builder]: Adjust call to 'build-profile'.
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths): New
procedure.
(build-profile): Remove 'inputs' parameter; make 'manifest' the 2nd
positional parameter and add #:extra-inputs. Call
'manifest-sexp->inputs+search-paths' to obtain 'inputs' and
'search-paths'.
| Ludovic Courtès |
2021-06-12 | git: Update the mtime of the just-updated checkout....Reported by zimoun <zimon.toutoune@gmail.com>.
Previously, the mtime of CACHE-DIRECTORY may or may not have been
updated after a pull. Thus, 'maybe-remove-expired-cache-entries' could
potentially delete CACHE-DIRECTORY right before it's returned.
* guix/git.scm (update-cached-checkout): Call 'utime' on CACHE-DIRECTORY.
| Ludovic Courtès |
2021-06-08 | lint: Check for trailing whitespace in description....* guix/lint.scm (check-description-style): Check for trailing whitespace.
* tests/lint.scm: ("description: trailing whitespace"): New test.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Xinglu Chen |
2021-06-08 | lint: Check for trailing whitespace in synopsis....* guix/lint.scm (check-synopsis-style): Check for trailing whitespace.
* tests/lint.scm ("synopsis: contains trailing whitespace"): New test.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Xinglu Chen |
2021-06-08 | transformations: '--with-latest' correctly handles already-latest case....Previously, '--with-latest' would wrongfully print:
warning: could not determine latest upstream release of 'xyz'
when 'xyz' is already the latest version. This fixes that.
* guix/transformations.scm (transform-package-latest): Use
'package-latest-release' instead of 'package-latest-release*'.
| Ludovic Courtès |
2021-06-08 | grafts: Cache the derivation/graft mapping for the whole session....Partly fixes <https://bugs.gnu.org/41702>.
Reported by Lars-Dominik Braun <ldb@leibniz-psychology.org>.
Previously, 'graft-derivation' would start anew at every call. When
creating a profile with lots of packages, it would potentially do the
same work multiple times. The per-session cache addresses this. It
increases the derivation-graft-cache hit rate from 77.9% to 80.1% on:
GUIX_PROFILING="derivation-graft-cache" ./pre-inst-env \
guix environment --ad-hoc libreoffice inkscape krita darktable -n
The effect is more visible on the pathological case below, where cache
hit rate goes from 75% to 87% and wall-clock time from 5.0s to 3.5s:
GUIX_PROFILING="derivation-graft-cache" ./pre-inst-env \
guix environment --ad-hoc r-learnr --search-paths
* guix/grafts.scm (%graft-cache): New variable.
(graft-derivation): Add calls to 'store-connection-cache' and
'set-store-connection-cache!'.
| Ludovic Courtès |
2021-06-08 | store: 'references/cached' now uses a per-session cache....* guix/store.scm (%reference-cache): Remove.
(%reference-cache-id): New variable.
(references/cached): Rewrite in terms of it.
| Ludovic Courtès |
2021-06-08 | store: Remove 'references/substitutes'....This procedure lost its only user in commit
710854304b1ab29332edcb76f3de532e0724c197.
* guix/store.scm (references/substitutes): Remove.
* tests/store.scm ("references/substitutes missing reference info")
("references/substitutes with substitute info"): Remove.
| Ludovic Courtès |
2021-06-08 | grafts: Use SRFI-71 instead of SRFI-11....* guix/grafts.scm (reference-origins): Use SRFI-71 'let*'.
| Ludovic Courtès |
2021-06-08 | grafts: Record cache lookups for profiling....* guix/grafts.scm (record-cache-lookup!): New procedure.
(with-cache): Use it.
| Ludovic Courtès |
2021-06-08 | store: Generalize cache lookup recording....* guix/store.scm (cache-lookup-recorder): New procedure.
(record-cache-lookup!): Define in terms of it.
| Ludovic Courtès |
2021-06-08 | store: Support dynamic allocation of per-connection caches....* guix/store.scm (<store-connection>)[object-cache]: Remove.
[caches]: New field.
(open-connection, port->connection): Adjust '%make-store-connection'
calls accordingly.
(%store-connection-caches, %object-cache-id): New variables.
(allocate-store-connection-cache, vector-set)
(store-connection-cache, set-store-connection-cache)
(set-store-connection-caches!, set-store-connection-cache!): New
procedures.
(cache-object-mapping): Add #:cache parameter.
(set-store-connection-object-cache!): Remove.
(lookup-cached-object): Use 'store-connection-cache'.
(run-with-store): Use 'store-connection-caches' and
'set-store-connection-caches!'.
| Ludovic Courtès |
2021-06-07 | etc: Add "bordeaux.guix.gnu.org.pub" public key file....* etc/substitutes/bordeaux.guix.gnu.org.pub: New file.
* Makefile.am (dist_pkgdata_DATA): Add it.
* guix/self.scm (miscellaneous-files): Add
"share/guix/bordeaux.guix.gnu.org.pub".
| Christopher Baines |
2021-06-06 | scripts: substitute: Cache connection when looking for narinfos....The process-substitution procedure is opening two distinct connections. The
first one when looking for narinfo by calling lookup-narinfo and the other one
when fetching nar files.
Cache the connection when looking for narinfos so that process-substitution
only opens one connection.
* guix/scripts/substitute.scm (lookup-narinfo): Cache connection by using
open-connection-for-uri/cached.
| Mathieu Othacehe |
2021-06-06 | lint: tests-true: Check if tests are enabled when cross-compiling....* guix/lint.scm (check-tests-true): New linter.
(%local-checkers)[tests-true]: Add it.
* tests/lint.scm ("tests-true: #:tests? must not be set to #t")
("tests-true: absent #:tests? is acceptable")
("tests-true: #:tests? #f is acceptable")
("tests-true: #:tests? #t acceptable when compiling natively"): Test it.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
| Maxime Devos |
2021-06-05 | hg-download: Add helpers for defining packages....Hg followup to commit ee17a9e06e636400e3354796a42ac445dbcc8f96.
* guix/hg-download.scm (hg-version, hg-file-name): New procedures.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
| Xinglu Chen |
2021-06-05 | profiles: 'check-for-collisions' filters out more non-collisions upfront....When running:
GUIX_PROFILING="gc object-cache" ./pre-inst-env \
guix install gnome -p /tmp/sdsdfsd --no-grafts -n
this reduces the number of object cache lookup from 115K to 96K, with a
slight CPU and memory usage reduction as well.
* guix/profiles.scm (check-for-collisions)[candidates]: Exclude entries
if their 'item' fields are eq?.
| Ludovic Courtès |
2021-06-05 | guix: Update to Bioconductor 3.13....* guix/build-system/r.scm (bioconductor-uri): Update version.
* guix/import/cran.scm (%bioconductor-version): Update.
| Ricardo Wurmus |
2021-06-03 | licenses: Add BSD-1-Clause license....* licenses.scm (bsd-1): New variable.
| Xinglu Chen |
2021-06-03 | import: Add CHICKEN egg importer....* guix/import/egg.scm: New file.
* guix/scripts/import/egg.scm: New file.
* tests/egg.scm: New file.
* Makefile.am (MODULES, SCM_TESTS): Register them.
* po/guix/POTFILES.in: Likewise.
* guix/scripts/import.scm (importers): Add egg importer.
* doc/guix.texi (Invoking guix import, Invoking guix refresh): Document it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Xinglu Chen |
2021-06-03 | gnu-maintenance: 'generic-html' computes the right source URL....Fixes a regression introduced in
84f8bae0f85de081bbc55aa54ad6a50981a06a43, whereby the URL computed for
the new ffmpeg (for instance) would be:
https://ffmpeg.org/ffmpeg-4.4.tar.xz
instead of:
https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz
Reported by Maxim Cournoyer.
* guix/gnu-maintenance.scm (latest-html-release)[url->release]: Adjust
computation in the case of a URI-reference with a relative path.
| Ludovic Courtès |
2021-06-01 | ui, lint: Simplify exception handling in Guile 3 style....* guix/lint.scm (check-derivation)[try]: Remove "catch #t" wrapping.
* guix/ui.scm (call-with-error-handling): Remove "catch 'system-error"
and move 'system-error handling to the &exception-with-kind-and-args
clause.
| Ludovic Courtès |
2021-06-01 | maint: Require Guile 3.0....* configure.ac: Require Guile 3.0.
* doc/guix.texi (Requirements): Adjust accordingly.
* gnu/packages/package-management.scm (guile2.2-guix): Remove.
* guix/lint.scm (exception-with-kind-and-args?): Remove 'cond-expand'.
* guix/scripts/deploy.scm (deploy-machine*): Likewise.
* guix/store.scm (call-with-store): Likewise.
* guix/swh.scm (http-get*, http-post*): Likewise.
* guix/ui.scm (without-compiler-optimizations, guard*)
(call-with-error-handling): Likewise.
| Ludovic Courtès |
2021-06-01 | publish: Add keep-alive support when sending nar....The default Guile web server implementation supports the keep alive
mechanism. However, in our custom http-write implementation, the connection
is unconditionally close after sending nar files.
To prevent that, when supported, add the client port to the server poll set so
that further requests can be handled without closing the connection.
* guix/scripts/publish.scm (nar-response-port): Rename it into ...
(nar-compressed-port): ... this procedure. Operate directly on a given PORT.
(http-write): Add keep-alive support when sending nar files.
* guix/scripts/substitute.scm (process-substitution): Pass the download size
to the progress-report-port procedure so that it doesn't block reading from
the input port when keep-alive is supported.
| Mathieu Othacehe |
2021-06-01 | publish: Preserve the request connection header....The Guile web server is reading the response connection header to decide
whether to close the connection. However, as the request connection header is
not forwarded to the response, this mechanism cannot work.
* guix/scripts/publish.scm (add-extra-headers): New procedure.
(make-request-handler): Use it to forward the request connection header to the
response.
| Mathieu Othacehe |
2021-06-01 | progress: Add a download-size argument to progress-report-port....* guix/progress.scm (progress-report-port): Add a download-size argument.
| Mathieu Othacehe |
2021-05-28 | gnu-maintenance: 'generic-html' correctly handles relative release URLs....* guix/gnu-maintenance.scm (latest-html-release)[url->release]: Fix
source URL construction in cases where URL is a possibly relative path.
| Ludovic Courtès |
2021-05-28 | gnu-maintenance: 'release-file?' accepts 'v' prefix as in "PKG-v1.2.tgz"....* guix/gnu-maintenance.scm (%tarball-rx, %package-name-rx): Accept 'v'
and 'V' prefixes. Accept ".tgz" extension.
* tests/gnu-maintenance.scm ("release-file?"): Add test.
| Ludovic Courtès |
2021-05-28 | guix build: Emit "nothing to do" warning only when needed....This is a followup to 681af1fb78a735b51dc811aed770b2948212c3fc.
* guix/scripts/build.scm (guix-build): Emit "nothing to do" warning only
when both DRV and ITEMS are null.
| Ludovic Courtès |
2021-05-28 | guix package: Do not warn about "missing arguments" when there's nothing to do....In some cases, running "guix upgrade" can trigger this warning, and
"missing arguments" is misleading then.
Reported by flatwhatson on #guix.
* guix/scripts/package.scm (process-actions): Change warning to "nothing
to do".
| Ludovic Courtès |
2021-05-28 | import: opam: Generate license for package....* guix/import/opam.scm (opam->guix-package): Generate license for the
‘license’ field.
* tests/opam.scm (test-opam-file): Update accordingly.
("opam->guix-package"): Likewise.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Xinglu Chen |
2021-05-28 | git-download: Support submodules in 'git-predicate'....* guix/git-download.scm (git-file-list): Add prefix and recursive?
arguments. Recurse into submodules when requested.
(git-predicate): Add recursive? argument.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Andrew Whatson |
2021-05-28 | git-download: 'git-predicate' now ignores deleted files....When git-predicate is used on an active worktree, some files in the
index might not exist on the filesystem. Instead of failing with "No
such file or directory", these should be ignored.
* guix/git-download.scm (git-predicate): Wrap 'lstat' call in
'false-if-exception'. Return RESULT when STAT is #f.
Co-authored-by: Andrew Whatson <whatson@gmail.com>
| Ludovic Courtès |
2021-05-28 | scripts: Commands warn when passed zero arguments....This is a followup to 3f8326237df780404c172ef4127195cc20becd66.
* guix/scripts/archive.scm (export-from-store): Warn then FILES is
empty.
* guix/scripts/build.scm (guix-build): Likewise.
* guix/scripts/copy.scm (warn-if-empty): New procedure.
(send-to-remote-host, retrieve-from-remote-host): Call it.
* guix/scripts/edit.scm (guix-edit): Warn when SPECS is empty.
* guix/scripts/environment.scm (guix-environment): Warn when MANIFEST
has zero entries.
* guix/scripts/graph.scm (guix-graph): Warn then ITEMS is empty.
* guix/scripts/package.scm (process-actions): Warn when FILES and TRANS
are both empty.
| Ludovic Courtès |
2021-05-28 | deploy: Error out when the FILE argument is missing....* guix/scripts/deploy.scm (guix-deploy): Error out when FILE is false.
| Ludovic Courtès |
2021-05-26 | guix: ci: Add spec support to latest-evaluations....* guix/ci.scm (latest-evaluations): Add spec parameter support.
| Mathieu Othacehe |
2021-05-26 | guix: ci: Fix evaluation complete? field....* guix/ci.scm (<evaluation>): Fix evaluation complete? field.
| Mathieu Othacehe |
2021-05-22 | import: hackage: Prefix licenses with 'license:'....* guix/import/hackage.scm (string->license): Prefix the value of the license
field with ‘license:’.
* tests/hackage.scm (match-ghc-foo, match-ghc-foo-6, match-ghc-foo-revision):
Adjust accordingly.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Xinglu Chen |
2021-05-22 | lint: archival: Lookup content in Disarchive database....* guix/lint.scm (lookup-disarchive-spec): New procedure.
(check-archival): When 'lookup-content' returns #f, call
'lookup-disarchive-spec'. Call 'lookup-directory' on the result of
'lookup-directory'.
* guix/download.scm (%disarchive-mirrors): Make public.
* tests/lint.scm ("archival: missing content"): Set
'%disarchive-mirrors'.
("archival: content unavailable but disarchive available"): New test.
| Ludovic Courtès |
2021-05-22 | scripts: discover: Report Avahi errors....Fixes: <https://issues.guix.gnu.org/48561>.
* guix/scripts/discover (guix-discover): Report Avahi errors.
| Mathieu Othacehe |
2021-05-20 | guix: Build texlive-configuration only when texlive-base is present....Fixes <https://bugs.gnu.org/48519>.
* guix/profiles.scm (texlive-configuration): Build only if texlive-base is
present in the profile's manifest.
| Ricardo Wurmus |
2021-05-20 | scripts: challenge: Fix regression....This is a follow-up of 3cde5231aa78aa5e31b27888cd78ee0b250a7a1c that fixes the
challenge test.
When dealing with uncompressed NAR, the file size is false. Propagate it to
progress-reporter/file as it used to be the case.
* guix/scripts/challenge.scm (call-with-nar): Accept false size.
| Mathieu Othacehe |
2021-05-17 | ui: 'load*' compiles with '-O1'....With this change, the wall-clock time of:
guix system build --no-grafts -d gnu/system/install.scm
goes from 5.0s to 2.3s on Guile 3.0.5.
* guix/ui.scm (without-compiler-optimizations): New macro.
(load*): Use it.
| Ludovic Courtès |
2021-05-17 | ui: Remove Guile 2.2.3 workaround....This became dead code with commit
4f621a2b003e85d480999e4d0630e9dc3de85bc3.
* guix/ui.scm (load*): Remove Guile 2.2.3 workaround.
| Ludovic Courtès |
2021-05-16 | publish: Add '--negative-ttl'....* guix/scripts/publish.scm (show-help, %options): Add '--negative-ttl'.
(render-narinfo, render-narinfo/cached, make-request-handler): Add #:negative-ttl
and honor it.
(run-publish-server): Add #:narinfo-negative-ttl and honor it.
(guix-publish): Honor '--negative-ttl'.
* tests/publish.scm ("negative TTL", "no negative TTL"): New tests.
| Ludovic Courtès |
2021-05-16 | substitutes: Reduce negative TTLs....* guix/substitutes.scm (%narinfo-negative-ttl): Change to 15mn.
(%narinfo-transient-error-ttl): Halve.
| Ludovic Courtès |
2021-05-15 | inferior: Support querying package replacements....I'm looking at this to help with adding support for looking up package
replacements to store in the Guix Data Service.
* guix/inferior.scm (inferior-package-replacement): New procedure.
* tests/inferior.scm ("inferior-package-replacement"): New test.
| Christopher Baines |
2021-05-14 | swh: 'lookup-origin-revision' ignores partial visits....* guix/swh.scm (lookup-origin-revision): Filter out visits with a status
different from 'full.
| Ludovic Courtès |
2021-05-14 | self: Add dependency on Disarchive....This enables the Disarchive fallback implemented in commit
fbc2a52a32ddc664db8ebab420c2e17b1432c744 (on foreign distros).
* guix/self.scm (specification->package): Add "disarchive".
(compiled-guix): Add DISARCHIVE to DEPENDENCIES in the #:dependencies
argument to 'guix-command'.
| Ludovic Courtès |
2021-05-14 | import: go: Fix goproxy option argument's format....Commit a8b927a562 Added new procedure go-module-available-versions use
'string-append' to GOPROXY, but 'string->symbol' let GOPROXY is a symbol (it
must be a string), which would lead to wrong-type-arg errors in the
'string-append' procedure.
* guix/scripts/import/go.scm (%options)[goproxy]: Remove call to
'string->symbol'.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Zheng Junjie |