summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Expand)Author
2023-01-03refresh: Always return an <update-spec> for each command-line option....This fixes a regression introduced in 8aeccc6240ec45f0bc7bed655e0c8149ae4253eb whereby packages specified via -e, -r, or -m, as well as packages *not* specified on the command line, would all lead to a wrong-type error. Reported by Ricardo Wurmus <rekado@elephly.net> at <https://lists.gnu.org/archive/html/guix-devel/2022-12/msg00311.html>. * guix/scripts/refresh.scm (<update-spec>): Move above. Rename constructor to '%update-spec' and add separate 'update-spec' procedure with optional #:version parameter. (options->update-specs): Always return a list of <update-spec> and update docstring accordingly. Rename 'args-packages' to 'update-specs' and ensure it's a list of <update-spec>; handle 'manifest' arguments here. Ludovic Courtès
2023-01-03refresh: Honor user-provided target version and report downgrades....Previously, 'guix refresh guile=3.0.0' would print: 3.0.8 is already the latest version of guile With this change, it prints: guile would be downgraded from 3.0.8 to 3.0.0 This is a followup to 8aeccc6240ec45f0bc7bed655e0c8149ae4253eb. * guix/scripts/refresh.scm (check-for-package-update): Take an <update-spec> instead of a <package>. Report downgrades as such when UPDATE-SPEC specifies a target version. (guix-refresh): Adjust caller. Ludovic Courtès
2023-01-03upstream: Allow downgrades....Previously, 'guix refresh -u guile=3.0.0' would do nothing. With this change, it actually downgrades 'guile'. This is a followup to 8aeccc6240ec45f0bc7bed655e0c8149ae4253eb. * guix/upstream.scm (package-update): Ignore 'version>?' check when #:version is passed. Warn about downgrades. Ludovic Courtès
2023-01-03ui: It's 2023 now!...* guix/ui.scm (show-version-and-exit): Change year to 2023. Ludovic Courtès
2022-12-31import/cran: Depend on gfortran if .f files are detected too....There was an inconsistency between tarball-needs-fortran? and directory-needs-fortran?. * guix/import/cran.scm (directory-needs-fortran?): Match .f files too. Lars-Dominik Braun
2022-12-31import/cran: Use multiple values instead of a list of lists....* guix/import/cran.scm (source-dir->dependencies): Return multiple values. (description->package): Bind two values. Ricardo Wurmus
2022-12-31import/utils: recursive-import: Pass on lookup-node's version argument....* guix/import/utils.scm (recursive-import)<lookup-node>: Replace the #:VERSION keyword from RECURSIVE-IMPORT's arguments with the value of VERSION passed to LOOKUP-NODE. Ricardo Wurmus
2022-12-31import/cran: Always operate on source directory....Extracting the source tarball multiple times is very slow and a speedup of >2x (without network I/O) can be achieved by coalescing all NEEDS-X? functions into a single one, which extracts a tarball only once. * guix/import/cran.scm (tarball-needs-fortran?): Remove unused function. (needs-fortran?): Ditto. (tarball-files-match-pattern?): Ditto. (tarball-needs-zlib?): Ditto. (needs-zlib?): Ditto. (tarball-needs-pkg-config?): Ditto. (needs-pkg-config?): Ditto. (source-dir->dependencies): New function. (source->dependencies): New function. (description->package): Use it. Lars-Dominik Braun
2022-12-31import/cran: Translate more package dependencies....Assumes we use package variable names, not package specification names. * guix/import/cran.scm (invalid-packages): Add more invalid names. (transform-sysname): Transform more package names. Lars-Dominik Braun
2022-12-31import/cran: Allow overriding tarball download....* guix/import/cran.scm (description->package): Accept new keyword argument DOWNLOAD-SOURCE. (cran->guix-package): Ditto. Lars-Dominik Braun
2022-12-31import/cran: Allow overriding description fetch function....* guix/import/cran.scm (cran->guix-package): New keyword argument FETCH-DESCRIPTION. Lars-Dominik Braun
2022-12-31import/cran: Allow custom license prefix....* guix/import/cran.scm (string-licenses): Add license-prefix argument. (string->license): Ditto. (description->package): Ditto. (cran->guix-package): Ditto. (cran-recursive-import): Ditto. * guix/scripts/import/cran.scm (%options): Add new option -p/--license-prefix. (show-help): Document it. (parse-options): Pass it to importer. * doc/guix.texi (Invoking guix import): Document it. Lars-Dominik Braun
2022-12-31import/utils: Pass all arguments through to package builder....Individual importer may have additional arguments. * guix/import/utils.scm (recursive-import): Patch all keyword arguments through to repo->guix-package. * guix/import/cran.scm (cran->guix-package): Add #:allow-other-keys. * guix/import/crate.scm (crate->guix-package): Ditto. * guix/import/egg.scm (egg->guix-package): Ditto. * guix/import/elm.scm (elm->guix-package): Ditto. * guix/import/gem.scm (gem->guix-package): Ditto. * guix/import/gnu.scm (gnu->guix-package): Ditto. * guix/import/go.scm (go-module->guix-package): Ditto. (go-module-recursive-import): Ditto. * guix/import/hackage.scm (hackage->guix-package): Ditto. (hackage-recursive-import): Ditto. * guix/import/hexpm.scm (hexpm->guix-package): Ditto. * guix/import/minetest.scm (minetest->guix-package): Ditto. (minetest-recursive-import): Ditto. * guix/import/opam.scm (opam->guix-package): Ditto. * guix/import/pypi.scm (pypi->guix-package): Ditto. * guix/import/stackage.scm (stackage->guix-package): Ditto. (stackage-recursive-import): Ditto. * guix/import/texlive.scm (texlive->guix-package): Ditto. Lars-Dominik Braun
2022-12-27records: match-record supports specifying a different variable name....An example: (match-record obj <my-type> (field1 (field2 custom-var-name) field3) ...) * guix/records.scm (match-record-inner): Add support for the new syntax. * tests/records.scm ("match-record, simple"): Add a simple test case for the new syntax. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Attila Lendvai
2022-12-26upstream: Allow updating to a specific version....* guix/upstream.scm(package-latest-release): Add keyword-argument 'version' and pass it on to the updater's 'import' function. (package-update): add keyword-argument 'version' and pass it on to package-latest-release. Differentiate the error message issued when no package was found, depending on whether version was given or not. Hartmut Goebel
2022-12-26refresh: Allow updating to a specific version....* guix/scripts/refresh.scm (options->packages)[args-packages]: Handle version specification in package name arguments. (update-package): Add #:version argument and pass it on to called functions. (guix-refresh): When updating, pass the specified version (if any) to update-package. [package-list-without-versions, package-list-with-versions]: New functions. Hartmut Goebel
2022-12-26import: pypi: Allow updating to a specific version....* guix/import/pypi.scm (latest-release): Rename to 'import-release', add #:version argument and pass it on to called functions. Hartmut Goebel
2022-12-26import: launchpad: Allow updating to a specific version....* guix/import/launchpad.scm (latest-release): Rename to 'import-release', add #:version argument. If version is given, return an upstream-source for this version. Hartmut Goebel
2022-12-26import: kde: Allow updating to a specific version....* guix/import/kde.scm (latest-kde-release): Rename to 'import-kde-release', add #:version argument. Rework the code to not sort the relevant files, but just find the requested or latest version. [find-latest-archive-version]: New function. Hartmut Goebel
2022-12-26import: hexpm: Allow updating to a specific version....* guix/import/hexpm.scm (latest-release): Rename to 'import-release', add #:version argument. If version is given, return an upstream-source for this version. Hartmut Goebel
2022-12-26import: gnome: Allow updating to a specific version....* guix/import/gnome.scm (latest-gnome-release): Rename to 'import-gnome-release', add #:version argument. If version is given, try to find the respective version [find-latest-release]: New function, based on former code. [find-version-release]: New function. Hartmut Goebel
2022-12-26import: github: Allow updating to a specific version....* guix/import/github.scm (latest-released-version): Add #:version argument. If version is given, try to find the respective release. (latest-releease) Rename to 'import-release', add #:version argument and pass it on to 'latest-released-version'. Hartmut Goebel
2022-12-26import: git: Allow updating to a specific version....* guix/import/git.scm (latest-tag): Add #:version argument. If version is given, try to find the respective version tag. (latest-git-tag-version): Add #:version argument and pass it on to called functions. (latest-releease) Rename to 'import-release', add #:version argument and pass it on to called functions. Hartmut Goebel
2022-12-26import: gem: Allow updating to a specific version....* guix/import/gem.scm (latest-release): Rename to 'import-release', add #:version argument. If version is given, return an upstream-source for this version. Hartmut Goebel
2022-12-26import: egg: Allow updating to a specific version....* guix/import/egg.scm (latest-release): Rename to 'import-release', add #:version argument. If version is given, return an upstream-source for this version. Hartmut Goebel
2022-12-26import: crate: Allow updating to a specific version....* guix/import/crate.scm (latest-release): Rename to 'import-release', add #:version argument. If version is given, return an upstream-source for this version. Hartmut Goebel
2022-12-26gnu-maintenance: Allow updating to a specific version....* guix/gnu-maintenance.scm (latest-ftp-release): Rename to … (import-ftp-release) … this, add #:version argument. If version is given, try to find the respective version. (latest-html-release): Rename to … (import-html-release) … this, add #:version argument. If version is given, try to find the respective version. (latest-gnu-release): Rename to … (import-gnu-release) … this, add #:version argument. Refactor to first select archives for respective package, the find the requested or latest version, then create the upstream-source. (latest-release): Rename to … (import-release) … this, add #:version argument, pass on to … (import-ftp-release) … this. (import-release*): Rename to … (import-release*) … this, add #:version argument, pass on to … (latest-release) … this. (latest-savannah-release): Rename to … (import-savannah-release) … this, add keword-argument version, pass on to … (import-html-release) … this. (latest-xorg-release): Rename to … (import-xorg-release) … this, add keword-argument version, pass on to … (import-ftp-release) … this. (latest-kernel.org-release): Rename to … (import-kernel.org-release) … this, add #:version argument, pass on to … (import-html-release) … this. (latest-html-updatable-release): Rename to … (import-html-updatable-release) … this, add #:version argument, pass on to … (import-html-release) … this. * guix/import/gnu.scm(gnu->guix-package): Adjust function call. Hartmut Goebel
2022-12-26import: sourceforge: Issue error-message if version is given....Due to the complicated directory structure at sourceforce, enabling the sourceforge importer to update to a specific version is very complicated to implement. Since only 2.0% of the packages in guix are covered by this updater I dedided to not implement this. * guix/gnu-maintenance.scm (latest-sourceforge-release): Add #:version argument. Issue error-message if version is given. Hartmut Goebel
2022-12-26import: Issue error-message if version is given....These importer don't support importing a specific version, thus the updater does neither. Issue an error message in case version is given. * guix/import/cpan.scm (latest-release), guix/import/elpa.scm (latest-release), guix/import/hackage.scm (latest-release), guix/import/minetest.scm (latest-minetest-release), guix/import/opam.scm (latest-release): Add #:version argument, issue error if version is given. * guix/import/cran.scm (latest-cran-release): Same. (latest-bioconductor-release) Same. <version>: rename to <latest-version>. * guix/import/stackage.scm (latest-lts-release): For each generated updater, add #:version argument and issue error if version is given. Hartmut Goebel
2022-12-26import: cpan: Remove unused exports....* guix/import/cpan.scm (#:export): Remove unused exports. Hartmut Goebel
2022-12-26upstream-updater: Rename record field....The next commits will make the functions, which are currently importing the latest version of a package, change into importing the latest or a given version of the package (for those updaters supporting specifying a version). Thus the name ‘latest‘ is no longer appropriate. * guix/upstream.scm (upstream-updater) Rename field [latest] to [import]. (lookup-updater, package-latest-release) Adjust fieldname accordingly. * guix/gnu-maintenance.scm (%gnu-updater, %gnu-ftp-updater, %savannah-updater, %sourceforge-updater, %xorg-updater, %kernel.org-updater, %generic-html-updater), guix/import/cpan.scm (%cpan-updater), guix/import/cran.scm (%cran-updater, %bioconductor-updater), guix/import/crate.scm (%crate-updater), guix/import/egg.scm (%egg-updater), guix/import/elpa.scm (%elpa-updater), guix/import/gem.scm (%gem-updater), guix/import/git.scm (%generic-git-updater), guix/import/github.scm (%github-updater), guix/import/gnome.scm (%gnome-updater), guix/import/hackage.scm (%hackage-updater), guix/import/hexpm.scm (%hexpm-updater), guix/import/kde.scm (%kde-updater), guix/import/launchpad.scm (%launchpad-updater), guix/import/minetest.scm (%minetest-updater), guix/import/opam.scm (%opam-updater), guix/import/pypi.scm (%pypi-updater), guix/import/stackage.scm (%stackage-updater), tests/import-github.scm (found-sexp) tests/transformations.scm ("options->transformation, with-latest"): Adjust fieldname accordingly. Hartmut Goebel
2022-12-26shell: Make --help show --system and --list-systems....These options are callable and documented in the manual but not shown by --help. * guix/scripts/shell.scm: Make --help show --system and --list-systems. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Yarl Baudig
2022-12-21guix: ocaml: Add package-with-ocaml5.0....* guix/build-system/ocaml.scm (package-with-ocaml5.0) (strip-ocaml5.0-variant): New variables. * gnu/packages/ocaml.scm (ocaml5.0-dune-bootstrap) (ocaml5.0-dune, ocaml5.0-dune-configurator) (ocaml5.0-csexp, ocaml5.0-result): New variables. Signed-off-by: Julien Lepiller <julien@lepiller.eu> pukkamustard
2022-12-21guix system: Skip initrd modules check when using --target....* guix/scripts/system.scm (perform-action): Do not call CHECK-INITRD-MODULES when the %current-target-system parameter is set. Maxim Cournoyer
2022-12-20kconfig: Streamline comment in 'modify-defconfig'....* guix/build/kconfig.scm (modify-defconfig): Streamline comment. Maxim Cournoyer
2022-12-20kconfig: Mostly preserve keys ordering of original defconfig....* guix/build/kconfig.scm (defconfig->alist): Reverse the results of lists constructed with cons. Maxim Cournoyer
2022-12-20kconfig: Move pair->config-string up....* guix/build/kconfig.scm (pair->config-string): Move earlier, to match the natural dependency of declarations (useful when experimenting at the REPL). Maxim Cournoyer
2022-12-20read-print: Add special forms....* guix/read-print.scm (%special-forms): Add 'define-configuration' and 'match-record'. Ludovic Courtès
2022-12-19import/cran: Add more mappings from sysnames to Guix package names....* guix/import/cran.scm (transform-sysname): Add more mappings. Ricardo Wurmus
2022-12-19guix: packages: Add type hint comment to home-page record field....* guix/packages.scm (package)[home-page]: Add type comment. Signed-off-by: Andrew Tropin <andrew@trop.in> jgart
2022-12-13ui: Take package upstream name into account when searching....* guix/ui.scm (%package-metrics): Add PACKAGE-UPSTREAM-NAME*. * tests/ui.scm ("package-relevance and upstream name"): New test. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Lars-Dominik Braun
2022-12-13packages: Add 'package-upstream-name*'....* guix/packages.scm (package-upstream-name*): New procedure. * tests/packages.scm ("package-upstream-name*"): New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Lars-Dominik Braun
2022-12-12Merge branch 'version-1.4.0'Ludovic Courtès
2022-12-12pki: 'public-keys->acl' deduplicates entries....Reported by Tobias Geerinckx-Rice <me@tobias.gr> in <https://issues.guix.gnu.org/50892>. * guix/pki.scm (public-keys->acl): Add call to 'delete-duplicates'. * tests/pki.scm ("public-keys->acl deduplication"): New test. Ludovic Courtès
2022-12-10deduplicate: Use 'sendfile' only with file ports....Fixes a regression introduced in b129026e2e242e9068158ae6e6fcd8d7c5ea092e. * guix/store/deduplication.scm (dump-file/deduplicate): Use 'sendfile' only when INPUT' is a file port. Ludovic Courtès
2022-12-10deduplicate: Use 'sendfile' for small file copies....* guix/store/deduplication.scm (dump-file/deduplicate): Use 'sendfile' instead of 'dump-port'. * tests/store-deduplication.scm ("copy-file/deduplicate, below %deduplication-minimum-size"): New test. Ludovic Courtès
2022-12-09environment: '-C' doesn't throw when the NSS is dysfunctional....Previously, if the name service switch was dysfunctional, as can happen on foreign distros lacking nscd, "guix shell -C" would crash with a backtrace on the uncaught 'getpwuid' exception. To address that, catch the exception and deal with it gracefully. Reported by remsd1 on #guix. * guix/scripts/environment.scm (launch-environment/container): Wrap 'getpwuid' call in 'false-if-exception'. Ludovic Courtès
2022-12-08records: 'match-record' checks fields at macro-expansion time....This allows 'match-record' to be more efficient (field offsets are computed at compilation time) and to report unknown fields at macro-expansion time. * guix/records.scm (map-fields): New macro. (define-record-type*)[rtd-identifier]: New procedure. Define TYPE as a macro and use a separate identifier for the RTD. (lookup-field, match-record-inner): New macros. (match-record): Rewrite in terms of 'match-error-inner'. * tests/records.scm ("match-record, simple") ("match-record, unknown field"): New tests. * gnu/services/cuirass.scm (cuirass-shepherd-service): Rename 'log-file' local variable to 'main-log-file'. * gnu/services/getmail.scm (serialize-getmail-configuration-file): Move after <getmail-configuration-file> definition. Ludovic Courtès
2022-12-09environment: '-C' doesn't throw when the NSS is dysfunctional....Previously, if the name service switch was dysfunctional, as can happen on foreign distros lacking nscd, "guix shell -C" would crash with a backtrace on the uncaught 'getpwuid' exception. To address that, catch the exception and deal with it gracefully. Reported by remsd1 on #guix. * guix/scripts/environment.scm (launch-environment/container): Wrap 'getpwuid' call in 'false-if-exception'. Ludovic Courtès
2022-12-08gnu-maintenance: 'generic-html' updater ignores invalid host names....Previously "guix refresh xkbset" for example would crash with a getaddrinfo-error because the domain name is invalid. Now it reports failure to update. Reported by Tyler Wolf <tyler@twolf.io> in <https://issues.guix.gnu.org/59598>. * guix/gnu-maintenance.scm (latest-html-updatable-release): Return #f upon 'getaddrinfo-error' as well. Ludovic Courtès