summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2023-06-02environment: Fix unbound-variable bug with '--symlink'.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/63845>. Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>. * guix/scripts/environment.scm (launch-environment/container): Reference 'evaluate-populate-directive' before calling 'call-with-container'.
2023-06-02read-print: Add 'package/inherit' special form.Ludovic Courtès
* guix/read-print.scm (%special-forms): Add 'package/inherit'.
2023-06-02ci: Reify the timestamps of evaluations.Ludovic Courtès
* guix/ci.scm (<evaluation>)[start-time, checkout-time, completion-time]: New fields.
2023-06-02import/cran: string->license: Add another case for GPLv3+.Ricardo Wurmus
* guix/import/cran.scm (string->license): Translate "GPL (>=3)" to gpl3+.
2023-06-02import/cran: Libraries should not use CRAN-GUIX-NAME.Ricardo Wurmus
* guix/import/cran.scm (source-dir->dependencies): Do not use CRAN-GUIX-NAME when processing result of NEEDED-LIBRARIES-IN-DIRECTORY.
2023-06-02import/cran: Also search Makevars file for libraries.Ricardo Wurmus
* guix/import/cran.scm (needed-libraries-in-directory): Look at Makevars in addition to Makevars.in for libraries.
2023-05-31upstream: Honor package properties for ignored and extra inputs.Ludovic Courtès
* guix/upstream.scm (update-package-inputs)[filtered-inputs] [regular-inputs, native-inputs, propagated-inputs]: New procedures. Use them in 'update-field' calls. * tests/guix-refresh.sh (GUIX_TEST_UPDATER_TARGETS): Add "libreoffice" to the dependencies of "the-test-package". Add 'updater-ignored-inputs' property to "the-test-package". * doc/guix.texi (Invoking guix refresh): Document it.
2023-05-31import: gem: Updater provides input list.Ludovic Courtès
* guix/import/gem.scm (import-release): Add 'inputs' field. * tests/gem.scm ("package-latest-release"): New test.
2023-05-31import: gem: Factorize "bundler" special case for name mapping.Ludovic Courtès
* guix/import/gem.scm (ruby-package-name): Add "bundler" special case. (gem->guix-package): Adjust accordingly. * tests/gem.scm ("gem-recursive-import") ("gem-recursive-import with a specific version"): Remove "ruby-bundler" from the expected packages.
2023-05-31import: elpa: Updater provides input list.Ludovic Courtès
* guix/import/elpa.scm (elpa-dependency->upstream-input): New procedure. (latest-release): Add 'inputs' field. * tests/elpa.scm ("package-latest-release"): New test.
2023-05-31import: cpan: Updater provides input list.Ludovic Courtès
* guix/import/cpan.scm (latest-release): Add 'inputs' field. * tests/cpan.scm ("package-latest-release"): New test.
2023-05-31import: cpan: Represent dependencies as <upstream-input> records.Ludovic Courtès
* guix/import/cpan.scm (cpan-name->downstream-name) (cran-dependency->upstream-input, cran-module-inputs): New procedures. (cpan-module->sexp)[guix-name, convert-inputs]: Remove. [maybe-inputs]: Adjust to deal with <upstream-input>. Use 'cpan-name->downstream-name' instead of 'guix-name'. Add call to 'cpan-module-inputs' and adjust calls to 'maybe-inputs'. No longer emit input labels. * tests/cpan.scm ("cpan->guix-package"): Adjust test accordingly.
2023-05-31import: cpan: Remove unary 'string-append' call.Ludovic Courtès
* guix/import/cpan.scm (package->upstream-name): Remove useless 'string-append'.
2023-05-31upstream: Remove <upstream-input-change> and related code.Ludovic Courtès
* guix/upstream.scm (<upstream-input-change>): Remove. (changed-inputs): Remove. * tests/upstream.scm (test-package, test-new-package) ("changed-inputs returns no changes") ("changed-inputs returns changes to plain input list") ("changed-inputs returns changes to all plain input lists"): Remove.
2023-05-31upstream: 'update-package-source' edits input fields.Ludovic Courtès
Previously, 'guix refresh r-ggplot2 -u' and similar commands would print of list of input changes that would have to be made manually. With this change, 'guix refresh -u' takes care of updating input fields automatically. * guix/upstream.scm (update-package-inputs): New procedure. (update-package-source): Call it when 'upstream-source-inputs' returns true. * guix/scripts/refresh.scm (update-package): Remove iteration over the result of 'changed-inputs'. * guix/import/test.scm (available-updates): Add support for input lists. * tests/guix-refresh.sh (GUIX_TEST_UPDATER_TARGETS): Add input list for "the-test-package". Make sure 'guix refresh -u' updates 'inputs' accordingly. * doc/guix.texi (Invoking guix refresh): Mention it.
2023-05-31diagnostics: Factorize 'absolute-location'.Ludovic Courtès
* guix/scripts/style.scm (absolute-location): Move to... * guix/diagnostics.scm (absolute-location): ... here. * guix/upstream.scm (update-package-source): Use it.
2023-05-31upstream: Replace 'input-changes' field by 'inputs'.Ludovic Courtès
Returning the expected list of inputs rather than changes relative to the current package definition is less ambiguous and offers more possibilities for further processing. * guix/upstream.scm (<upstream-source>)[input-changes]: Remove. [inputs]: New field. (<upstream-input>): New record type. * guix/upstream.scm (upstream-input-type-predicate) (input-type-filter, upstream-source-regular-inputs) (upstream-source-native-inputs, upstream-source-propagated-inputs): New procedures. (changed-inputs): Expect an <upstream-source> as its second argument. Adjust accordingly. * guix/import/pypi.scm (distribution-sha256): New procedure. (maybe-inputs): Expect a list of <upstream-input>. (compute-inputs): Rewrite to return a list of <upstream-input>. (pypi-package-inputs, pypi-package->upstream-source): New procedures. (make-pypi-sexp): Use it. * guix/import/stackage.scm (latest-lts-release): Define 'cabal'. Replace 'input-changes' field by 'inputs'. * guix/scripts/refresh.scm (update-package): Use 'changed-inputs' instead of 'upstream-source-input-changes'. * tests/cran.scm ("description->package"): Adjust order of inputs. * tests/pypi.scm (default-sha256, default-sha256/base32): New variables. (foo-json): Add 'digests' entry. ("pypi->guix-package, no wheel"): Check HASH against DEFAULT-SHA256/BASE32. ("pypi->guix-package, wheels"): Likewise. ("pypi->guix-package, no usable requirement file."): Likewise. ("pypi->guix-package, package name contains \"-\" followed by digits"): Likewise. ("package-latest-release"): New test. * tests/upstream.scm (test-package-sexp): Remove. ("changed-inputs returns no changes"): Rewrite to use <upstream-source>. (test-new-package-sexp): Remove. ("changed-inputs returns changes to plain input list"): Rewrite. ("changed-inputs returns changes to all plain input lists"): Likewise. ("changed-inputs returns changes to labelled input list") ("changed-inputs returns changes to all labelled input lists"): Remove. * guix/import/cran.scm (maybe-inputs): Expect PACKAGE-INPUTS to be a list of <upstream-input>. (source-dir->dependencies): Return a list of <upstream-input>. (vignette-builders): Likewise. (uri-helper, cran-package-source-url) (cran-package-propagated-inputs, cran-package-inputs): New procedures. (description->package): Use them instead of local definitions. (latest-cran-release): Replace 'input-changes' field by 'inputs'. (latest-bioconductor-release): Likewise. (format-inputs): Remove. * guix/import/hackage.scm (cabal-package-inputs): New procedure. (hackage-module->sexp): Use it. [maybe-inputs]: Expect a list of <upstream-input>.
2023-05-31import: json: Add #:timeout to 'json-fetch'.Ludovic Courtès
* guix/import/json.scm (json-fetch): Add #:timeout and pass it to 'http-fetch'.
2023-05-31import: utils: 'call-with-networking-exception-handler' doesn't unwind.Ludovic Courtès
That way backtraces show where the error actually originates from. * guix/import/utils.scm (call-with-networking-exception-handler): Rewrite using 'with-exception-handler'.
2023-05-31tests: pypi: Rewrite tests using a local HTTP server.Ludovic Courtès
* guix/import/pypi.scm (%pypi-base-url): New variable. (pypi-fetch): Use it. * tests/pypi.scm (foo-json): Compute URLs relative to '%local-url'. (test-json-1, test-json-2, test-source-hash): Remove. (file-dump): New procedure. (with-pypi): New macro. ("pypi->guix-package, no wheel") ("pypi->guix-package, wheels") ("pypi->guix-package, no usable requirement file.") ("pypi->guix-package, package name contains \"-\" followed by digits"): Rewrite using 'with-pypi'.
2023-05-31tests: http: Allow responses to specify a path.Ludovic Courtès
* guix/tests/http.scm (%local-url): Add #:path parameter and honor it. (call-with-http-server)[responses]: Add extra clause with 'path'. [bad-request]: New variable. [server-body]: Handle three-element clauses. Wrap 'run-server' call in 'parameterize'.
2023-05-31transformations: Add "--tune" to "--help-transform".Ludovic Courtès
* guix/transformations.scm (show-transformation-options-help/detailed): Add '--tune'.
2023-05-31guix gc: Round MiBs in user feedback.Remco van 't Veer
* guix/scripts/gc.scm (guix-gc): Round MiBs in user feedback. Signed-off-by: Florian Pelz <pelzflorian@pelzflorian.de>
2023-05-30substitute: If a server's nar URL is 404, try the next one(s).Ludovic Courtès
If a substitute server advertises in its narinfo, for example, both a /zstd and a /lzip URL but the /zstd URL is unreachable, try the /lzip URL. Fixes <https://issues.guix.gnu.org/63634>. * guix/narinfo.scm (narinfo-preferred-uris): New procedure. (narinfo-best-uri): Rebase on top of it. * guix/scripts/substitute.scm (download-nar)[try-fetch]: New procedure. Use 'narinfo-preferred-uris' and 'try-fetch' to attempt all the URLs of NARINFO. * tests/substitute.scm (request-substitution): Remove 'parameterize'. Delete DESTINATION. ("substitute, preferred nar URL is 404, other is 200"): New test.
2023-05-25self: Install 'guix-daemon.cil'.Ludovic Courtès
* guix/self.scm (selinux-policy): New procedure. (miscellaneous-files): Add 'daemon' parameter. Add 'guix-daemon.cil'. (compiled-guix): Adjust call to 'miscellaneous-files'.
2023-05-24self: Build against "graphviz-minimal".Ludovic Courtès
Fixes <https://issues.guix.gnu.org/63050>. Reported by Andreas Enge <andreas@enge.fr>. * guix/self.scm (%packages): Change "graphviz" to refer to "graphviz-minimal". Add "font-ghostscript". (info-manual): Define 'font-ghostscript'. [build]: Set XDG_DATA_DIRS.
2023-05-22substitute: Rethrow with 'raise-exception', not 'throw'.Ludovic Courtès
Rethrowing with 'throw' doesn't work as intended when the exception being rethrown is a SRFI-34 exception. Fixes <https://issues.guix.gnu.org/55820>. * guix/scripts/substitute.scm (kind-and-args-exception?): New variable. (call-with-cached-connection): Rewrite using 'guard' instead of 'catch' and 'raise' instead of 'throw'. (system-error?): Use 'kind-and-args-exception?' instead of local definition.
2023-05-18style: Add 'arguments' styling rule.Ludovic Courtès
* guix/scripts/style.scm (unquote->ungexp, gexpify-argument-value) (quote-argument-value, gexpify-argument-tail) (gexpify-package-arguments): New procedures. (%gexp-keywords): New variable. (%options): Add "arguments" case for 'styling-procedure. (show-stylings): Update. * tests/style.scm ("gexpify arguments, already gexpified") ("gexpify arguments, non-gexp arguments, margin comment") ("gexpify arguments, phases and flags") ("gexpify arguments, append arguments") ("gexpify arguments, substitute-keyword-arguments") ("gexpify arguments, append substitute-keyword-arguments"): New tests. * doc/guix.texi (package Reference): For 'arguments', add compatibility note and link to 'guix style'. (Invoking guix style): Document the 'arguments' styling rule.
2023-05-18refresh: Honor '--key-server'.Ludovic Courtès
Previously, the '--key-server' option would be ignored in an invocation like: ./pre-inst-env guix refresh python-scipy=1.8.1 -t pypi -u \ --key-server=pgp.mit.edu * guix/upstream.scm (download-tarball): Add #:key-server parameter and pass it to 'gnupg-verify*'. (package-update/url-fetch, package-update/git-fetch) (package-update): Likewise. * guix/scripts/refresh.scm (update-package): Add #:key-server and pass it down to 'package-update'. (guix-refresh): Pass #:key-server to 'update-package'.
2023-05-17scripts: import: elpa: Return consistent error code.Simon Tournier
Fixes <https://bug.gnu.org/58308>. Reported by Ricardo Wurmus. * guix/scripts/import/elpa.scm (guix-import-elpa): Return consistent error code independently of the 'recursive' option. Signed-off-by: Josselin Poiret <dev@jpoiret.xyz>
2023-05-17scripts: import: elpa: Warn when version is specified.Simon Tournier
* guix/scripts/import/elpa.scm (guix-import-elpa): Warn when version is specified. Signed-off-by: Josselin Poiret <dev@jpoiret.xyz>
2023-05-11download: Refer to the 'guile-gnutls' package and not 'gnutls'.Ludovic Courtès
This reinstates c625e5b64d0a6cb7ffbf2ef971d4c990b1f5c5c1, which was reverted due to a circular dependency: https://issues.guix.gnu.org/63331 This is a followup to 305794762cbb57d252d5305b69a18cec6528baef, which removed Guile bindings from 'gnutls'. * guix/android-repo-download.scm (android-repo-fetch): Refer to 'guile-gnutls instead of 'gnutls. * guix/cvs-download.scm (cvs-fetch): Likewise. * guix/git-download.scm (git-fetch): Likewise. * guix/hg-download.scm (hg-fetch): Likewise.
2023-05-09Merge branch 'rust-team'Efraim Flashner
2023-05-09gnu: gcc: Update cpu tuning architectures.Efraim Flashner
* gnu/packages/gcc.scm (%gcc-7.5-armhf-micro-architectures): Add missing micro-architecture. (%gcc-10-armhf-micro-architectures): Adjust accordingly. (%gcc-11-aarch64-micro-architectures): Add missing micro-architecture. (%gcc-12-aarch64-micro-architectures, %gcc-12-armhf-micro-architectures, %gcc-12-x86_64-micro-architectures, %gcc-13-aarch64-micro-architectures, %gcc-13-armhf-micro-architectures, %gcc-13-x86_64-micro-architectures): New variables. (gcc-12)[properties]: Use new compiler-cpu-architectures. * guix/cpu.scm (cpu->gcc-architecture): Update entries for Intel, AMD, x86_64 fallback and aarch64.
2023-05-07gnu: rust: Update to 1.67.Efraim Flashner
* gnu/packages/rust.scm (rust): Update to 1.67. [arguments]: Add a phase to skip tests requiring mercurial. Extend the custom 'patch-process-tests phase. (rust-1.64)[arguments]: Adjust 'patch-cargo-checksums phase to patch another file. * guix/build/cargo-build-system.scm (package): Adjust to remove Cargo.toml.orig file if it exists.
2023-05-07build: cargo-build-system: Don't try to package when skipping build.Efraim Flashner
* guix/build/cargo-build-system.scm (package): If the package isn't going to be built then use the source instead.
2023-05-06Revert "download: Refer to the 'guile-gnutls' package and not 'gnutls'."Ludovic Courtès
This reverts commit c625e5b64d0a6cb7ffbf2ef971d4c990b1f5c5c1, which introduced a circular dependency: the origin of guile-gnutls relies on 'git-download', which would now depend on guile-gnutls.
2023-05-06download: Refer to the 'guile-gnutls' package and not 'gnutls'.Ludovic Courtès
This is a followup to 305794762cbb57d252d5305b69a18cec6528baef, which removed Guile bindings from 'gnutls'. * guix/android-repo-download.scm (android-repo-fetch): Refer to 'guile-gnutls instead of 'gnutls. * guix/cvs-download.scm (cvs-fetch): Likewise. * guix/git-download.scm (git-fetch): Likewise. * guix/hg-download.scm (hg-fetch): Likewise.
2023-05-06lint: archival: Warn against non-origin package sources.Ludovic Courtès
Suggested by Maxim Cournoyer <maxim.cournoyer@gmail.com> and Simon Tournier <zimon.toutoune@gmail.com>. * guix/lint.scm (check-archival): Add 'local-file?' clause. Clarify message in case (package-source package) is not an origin. * tests/lint.scm ("archival: not an origin"): New test.
2023-05-06build-system: node: Use `--install-links' with `npm install'.Jelle Licht
Later versions of npm need to explicitly install a copy of local dependencies, instead of only a symlink. * guix/build/node-build-system.scm (configure): Add `--install-links' to npm install invocation. (install): Ditto.
2023-05-05read-print: Recognize 'wrap-program' and 'wrap-script' as special forms.Ludovic Courtès
* guix/read-print.scm (%special-forms): Add 'wrap-program' and 'wrap-script'.
2023-05-05read-print: Correctly read "(. x)".Ludovic Courtès
* guix/read-print.scm (read-with-comments): Check whether REST is a pair before calling 'set-cdr!'. * tests/read-print.scm ("read-with-comments: half dot notation"): New test.
2023-05-04transformations: Add '--with-configure-flag'.Sarthak Shah
* guix/transformations.scm (transform-package-configure-flag): New procedure. (%transformation-options, %transformation-options) (show-transformation-options-help/detailed): Add it. * tests/transformations.scm ("options->transformation, with-configure-flag"): New test. * doc/guix.texi (Package Transformation Options): Document it. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-05-04style: Make 'safe' policy less conservative.Ludovic Courtès
Previously, a mere (arguments '(#:tests? #f)) would lead guix style -S inputs --input-simplification=safe to bail out. It now recognizes such trivial argument lists and proceeds. * guix/scripts/style.scm (trivial-package-arguments?): New procedure. (simplify-package-inputs): Use it in the 'safe case instead of 'null?'. * tests/style.scm ("input labels, 'safe' policy, trivial arguments"): New test.
2023-05-04profiles: 'texlive-font-maps' gracefully handles lack of texlive inputs.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/63043>. * guix/profiles.scm (texlive-font-maps): Define 'texlive-inputs'. [build]: Use it. Return #f when TEXLIVE-INPUTS is empty.
2023-05-04import: elpa: Standardize warning message.Ludovic Courtès
* guix/import/elpa.scm (melpa-recipe->origin): Standardize warning message.
2023-05-04import: Cosmetic tweaks to 'recursive-import'.Ludovic Courtès
* guix/import/utils.scm (recursive-import): Tweak docstring. Simplify 'apply' call.
2023-05-04import: elpa: Use the expected repo in recursive imports.Ludovic Courtès
* guix/import/elpa.scm (elpa-recursive-import): Pass REPO in calls to 'elpa->guix-package'.
2023-05-04import: elpa: 'elpa->guix-package' accepts other keyword arguments.Ludovic Courtès
This is a followup to 3c24da4260f28b4ed57efda0296688a50ac94628. * guix/import/elpa.scm (elpa->guix-package): Add #:allow-other-keys.
2023-05-04ftp-client: 'connect*' retries until the timeout has expired.Ludovic Courtès
Partly fixes <https://issues.guix.gnu.org/63024>. Reported by Greg Hogan <code@greghogan.com> and Timo Wilken <guix@twilken.net>. * guix/ftp-client.scm (connect*): When 'select' returns an empty set, try again until TIMEOUT has expired.