summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2026-05-18guix: build-system: Set pypi-uri in pyproject, drop python module.Nicolas Graves
After this commit, when both modules are imported: - if pyproject is imported before, the warning is 'pypi-uri' is deprecated, use '(@ (guix build-system pyproject) pypi-uri)' instead - if python is imported before, the warning is `pypi-uri' imported from both (guix build-system python) and (guix build-system pyproject) This seems convenient enough to warn for deprecation in the short term, while avoiding any breaking changes. * guix/build-system/pyproject.scm (pypi-uri): Move the procedure from (guix build-system python) here. * guix/build-system/python (pypi-uri): Drop definition, import it from (guix build-system pyproject) and deprecate it. * gnu/packages/openldap.scm: Reorder modules to get the right warning. * gnu/packages/pypy.scm: Likewise. * gnu/packages/*.scm : Drop module (guix build-system python). * tests/import/pypi.scm: Likewise. Merges: https://codeberg.org/guix/guix/pulls/7448 Change-Id: Ib42f53bc545052eb7918a25afe9db6d5fc2cb834 Reviewed-by: Nguyễn Gia Phong <cnx@loang.net> Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-18tests: builders: Switch to pyproject-build-system.Nicolas Graves
* guix/build/pyproject-build-system.scm (set-version): Ensure source is not #f before using it. * tests/builders.scm (make-python-dummy)[build-system]: Switch to pyproject-build-system. [native-inputs]: Add python-setuptools. (python-dummy-no-setuptools): Drop it. (check-build-success, check-build-failure): Refresh tests. (check-build-failure): Drop python-dummy-no-setuptools. Change-Id: I892b45c34b506ff27634e2ef706009dc81e831ec Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-18build-system: pyproject: Fix 'install phase for purelib/platlib.Nicolas Graves
* guix/build/pyproject-build-system.scm (install): [install-path, fix-scripts, distribution-name]: New helper procedures. [expand-data-directory]: Refactor and build upon install-path to handle purelib and platlib on top of just scripts and data. Change-Id: I64f5453676e6881ae1cbce3170ed854f7035982a Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-18build-system: pyproject: Add arguments to pytest_guix plugin.Nicolas Graves
* guix/build/pyproject-build-system.scm (keywords->alist, guile->python-keywords): Add procedures. (check): Convert keyword alist before writing it. * guix/build-system/pyproject.scm (%default-pytest-guix-options): Add some python kwargs in a guile format. * gnu/packages/aux-files/python/pytest_guix.py (pytest_addoption): Handle python kwargs when some are provided. Change-Id: Ie35e9b300acda830f35b6b754e8ccc07ad730faa Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-18build-system: pyproject: Add pytest-guix-options.Nicolas Graves
* guix/build/pyproject-build-system.scm (check): Pass pytest-guix-options to python through a hidden json file. * guix/build-system/pyproject.scm (%default-pytest-guix-options): Add variable. (pyproject-build): Use it. * gnu/packages/aux-files/python/pytest_guix.py: Import pytest-guix-options from guile through a hidden json file. Change-Id: Ice2ea72452c335b900bc354a04bd9657dc03d7d4 Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-18build-system/pyproject: Ignore selected pytest inputs.Nicolas Graves
This commit includes squashed changes from https://codeberg.org/guix/guix/pulls/7220 and https://codeberg.org/guix/guix/pulls/7338. * gnu/packages/aux-files/python/pytest_guix.py: New file. * Makefile.am: Record it. * guix/build/pyproject-build-system.scm (check): Preload pytest_guix plugin when available. * guix/build-system/pyproject.scm (default-pytest-guix-plugin): New package, generated from pytest_guix.py. (lower): Add python-pytest-guix argument, and inject it if python-pytest is in the native-inputs. Change-Id: I13263b461e9962aad340347657b9c9685db63927 Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-18build: pyproject: set-version: Support more backends.Nguyễn Gia Phong
hatch-vcs also uses the SETUPTOOLS_SCM_PRETEND_VERSION environment variable, while poetry-dynamic-versioning uses POETRY_DYNAMIC_VERSIONING_BYPASS. versioneer, on the other hand, read from the Python package's ._version.get_versions(). The version scheme for Python packaging is not the same as (nor compatible with) that of semantic version, hence stop mentioning the latter in the docstring and comments. When no relevant Python build backend is detected, regardless if the source has been obtained from a VCS checkout, it is confusing to mention any of the backends as unnecessary as a native input. Moreover, unlike the hatch-vcs, poetry-dynamic-versioning and setuptools-scm that works transparently with the build backend, pbr and versioneer are required for building. The output of the set-version phase has been adjusted accordingly. * guix/build/pyproject-build-system.scm (set-version): Add support for python-hatch-vcs. Clarify docstring. Log the explicit reason for noop cases. References: https://github.com/ofek/hatch-vcs#version-source-environment-variables References: https://github.com/mtkennerly/poetry-dynamic-versioning#environment-variables References: https://github.com/python-versioneer/python-versioneer References: https://docs.openstack.org/pbr/latest/user/packagers.html#versioning References: https://packaging.python.org/en/latest/specifications/version-specifiers Change-Id: I8f499856cb6b026539c96fb828e450a40ba10b79 Reviewed-by: Nicolas Graves <ngraves@ngraves.fr> Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-18build-system: python: Remove strip-python2-variant.Andreas Enge
* guix/build-system/python.scm (strip-python2-variant): Remove variable. Fixes: guix/guix#5398 Change-Id: Ice537cbbecdc04cafcd5f1260a27a5f3a631df58 Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-18build-system: pyproject: Remove reference to python-build-system.Nicolas Graves
* guix/build-system/pyproject.scm (%pyproject-build-system-modules): Replace %python-build-system-modules by %default-gnu-imported-modules. Change-Id: Ifee0564b61d15a022dc22afe437567d86034c81b Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-05-16pull: Add ‘guix-channel?’ to the set of bindings when loading channel files.Ludovic Courtès
* guix/scripts/pull.scm (%safe-channel-bindings): Add ‘guix-channel?’. Reported-by: Tomas Volf <~@wolfsden.cz> Change-Id: I5c1d06f540b85ebf96390ac4eaf10ff45e13123d Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #8562
2026-05-10pull, time-machine: ‘--allow-untrusted-channels’ takes an argument.Ludovic Courtès
* guix/scripts/pull.scm (%default-options): Change ‘require-trusted-channels?’ to ‘require-trusted-channels’. (show-help, %options): Support optional argument to ‘--allow-untrusted-channels’. (channel-list): Adjust accordingly. * guix/scripts/time-machine.scm (show-help, %options) (%default-options): Likewise. * tests/guix-time-machine.sh: Add test. * doc/guix.texi (Invoking guix pull) (Invoking guix time-machine): Adjust accordingly. Suggested-by: Reepca Russelstein <reepca@russelstein.xyz> Change-Id: I342ebbcc7355953487a5c6c8ac85048943a5ac46 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-10pull, time-machine: Accept content SWHIDs as arguments to ‘--channels’.Ludovic Courtès
* guix/swh.scm (swhid-content-data): New procedure. (call): Do not close ‘port’ when ‘result’ is the same as ‘port’. * guix/scripts/pull.scm (swhid-content-data*): New procedure. (channel-list): Accept ‘file’ as a SWHID. * tests/guix-time-machine.sh: Add test. * doc/guix.texi (Invoking guix pull): Document it. (Invoking guix time-machine): Likewise. Change-Id: I8145cd8685fe2926b1548d4a2dcd54804d89228a Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-10pull, time-machine: Support transparent download of channel files.Ludovic Courtès
* guix/scripts/pull.scm (%default-options): Add ‘require-trusted-channels?’. (show-help, %options): Add ‘--allow-untrusted-channels’. (trusted-channels, equivalent-channels?, check-trusted-channels): New procedures. (channel-list)[require-trusted-channels?]: New variable. [load-channels]: Honor it and call ‘check-trusted-channels’. * guix/scripts/time-machine.scm (show-help, %options): Add ‘--allow-untrusted-channels’. (%default-options): Add ‘require-trusted-channels?’. * tests/guix-time-machine.sh: Add test. * doc/guix.texi (Invoking guix pull): Update ‘--channels’ documentation and document ‘allow-untrusted-channels’. (Invoking guix time-machine): Likewise. (Channels with Substitutes): Add example of ‘guix pull’ with a URL. Change-Id: If0bb6acaedf324e35a21c9c7d285f3e423ae49aa Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-10ui: ‘load*’ accepts a file name or a port.Ludovic Courtès
* guix/ui.scm (load/isolated): Change ‘file’ parameter to ‘port’ and adjust accordingly. (load*): Change ‘file’ to ‘file-or-port’ and adjust accordingly. * tests/ui.scm ("load/isolated, reading exceeds limits") ("load/isolated, attempt to import module") ("load/isolated, attempt to allocate with 'cons'") ("load/isolated, attempt to allocate with 'make-vector'") ("load/isolated, use of allowed bindings"): New tests. Change-Id: I0ec8fa2717c02041d409f6dc59b753d4501107f9 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-10http-client: Record file name in returned port.Ludovic Courtès
* guix/http-client.scm (http-fetch): Add call to ‘set-port-filename!’. Change-Id: I621e467308c54463399dfa283c920bef705e425a Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-10perform-download: Use ‘read/safe’ from (guix ui).Ludovic Courtès
* guix/scripts/perform-download.scm (read/safe): Remove. Change-Id: I941e1ab299dc1e82b2587ae58fc9f44aa9187653 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-10pull, time-machine: Evaluate channels in a sandbox by default.Ludovic Courtès
* guix/scripts/pull.scm (%default-options): Add ‘isolated-channel-evaluation?’. (show-help, %options): Add ‘--unsafe-channel-evaluation’. (%safe-channel-bindings): New variable. (channel-list): Honor ‘isolated-channel-evaluation?’. * guix/scripts/time-machine.scm (show-help, %options): Add ‘--unsafe-channel-evaluation’. (%default-options): Add ‘isolated-channel-evaluation?’. * tests/guix-time-machine.sh: Test use of unauthorized bindings in channel files. * doc/guix.texi (Invoking guix time-machine): Document ‘--unsafe-channel-evaluation’. (Invoking guix pull): Likewise. (Channels with Substitutes): Add index entry for ‘channel-with-substitutes-available’. Mention that it requires ‘--unsafe-channel-evaluation’. Change-Id: I75f60dba516f42ef62a9d779cde8e2f0a9d0c140 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-10ui: Add #:isolated? parameter to ‘load*’.Ludovic Courtès
* guix/ui.scm (read/safe, sever-module!, load/isolated): New procedures. (pure-bindings-sans-allocators): New variable. (load*): Add #:isolated? parameter and honor it. Change-Id: I0164a7a28997e01c6948ed32d26900b5bf524b27 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-10ui: ‘load*’ takes a list of modules to import.Ludovic Courtès
* guix/ui.scm (load*): Change ‘module’ to ‘imports’. Define ‘user-module’. * guix/scripts/build.scm (options->things-to-build): Update to new ‘load*’ calling convention. * guix/scripts/deploy.scm (load-source-file): Likewise. * guix/scripts/environment.scm (load-manifest) (options/resolve-packages): Likewise. * guix/scripts/home.scm (process-action): Likewise. (%user-module): Rename to… (%user-modules): … this, and change to a list of module names. * guix/scripts/pack.scm (guix-pack): Update ‘load*’ calls. * guix/scripts/package.scm (load-manifest, %options): Likewise. * guix/scripts/pull.scm (channel-list): Likewise. * guix/scripts/refresh.scm (packages-from-manifest): Likewise. * guix/scripts/system.scm (%user-module): Rename to… (%user-modules): … this, and change to a list of module names. (read-operating-system): Adjust accordingly. (process-action): Likewise. * guix/scripts/weather.scm (load-manifest): Likewise. * tests/gexp.scm ("local-file, relative file name, within gexp, compiled"): Likewise. Change-Id: Ic838e66719d89de556ac0872c3ce0c8ff6de8790 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-05-07style: Add ‘remove-input’ and related styling rules.Nicolas Graves
* guix/scripts/style.scm (input-matches?, package-list->string, %field-accessors, remove-from-package-field, transform-package-field): Add variables. (%options): Add options --remove-input, --remove-native-input, --remove-propagated-input, and --parameter. (guix-style): Implement those options. To keep ony one autoload, use specification->package+output rather than specification->package. * tests/style.scm ("remove-input, single input removed", "remove-input, one of multiple inputs removed", "remove-input, middle input removed from list", "remove-input, non-existent input unchanged", "remove-input, input with output specifier", "remove-native-input, single input removed", "remove-native-input, one of multiple inputs removed", "remove-native-input, does not affect inputs field", "remove-propagated-input, single input removed", "remove-propagated-input, one of multiple inputs removed", "remove-propagated-input, does not affect other fields", "remove-input from all three fields independently", "remove-input, dry-run does not modify file"): New tests. ("url-fetch->git-fetch, preserved field"): Drop the use of %patch-path and %package-module-path, which are not necessary because of -L. Change the mocked procedure from specification->package to specification->package+output, as in the implementation. * doc/guix.texi (Invoking guix style): Add description for guix style -S remove-*input rules. Change-Id: I449c87930310a73ad316b4cb5db72d0906ea495d Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #5862
2026-05-06import/cran: Fail gracefully if HEAD is not supported.Ricardo Wurmus
* guix/import/cran.scm (description->package): Ignore failure when SOURCE-SIZE-TOO-BIG? raises an exception. Change-Id: I986ad51f26b705d5efcac083984fdec478234683
2026-04-30import/cran: Mark large packages non-substitutable.Ricardo Wurmus
* guix/import/cran.scm (%max-source-size): New parameter. (source-size-too-big?): New procedure. (maybe-arguments): Accept argument SUBSTITUTABLE?. (description->package): Accept keyword argument SUBSTITUTABLE?. Change-Id: I273ed6507086ec6f1bc5c5fb2a4ac9987b7304ae
2026-04-30shell: Add --cwd.Danny Milosavljevic
* guix/scripts/environment.scm (show-environment-options-help): Document --cwd. (%options): Add cwd. (launch-environment/container): Add cwd parameter. Implement passing it to the container. (guix-environment*): Reject --cwd without --container. * doc/guix.texi (Invoking guix shell): Document it. * tests/guix-environment-container.sh: Add tests. * tests/guix-shell.sh: Add tests. Fixes: guix/guix# 7825 Change-Id: Iba4ff3d2058e92f504fbcbf688346357ce913213
2026-04-27home: Run child as pid 2.Johannes Christ
To test, use a sample home configuration and a command such as: guix home container home.scm -- sleep 10 Before this commit, hitting `^C` would not have any effect, as `sleep` does not explicitly register a signal handler for `SIGINT`. With this commit, `guix home container` forwards the signal to `sleep`, which then exits. * guix/scripts/home.scm (spawn-home-container): Instruct `eval/container` to not run our child directly as pid 1 in the spawned container, as it may not expect to run as an init process. Change-Id: Ib997a0386d0851978d197fbd2dfb139141d13065 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #8051
2026-04-27environment: Run child as PID 2.Johannes Christ
* guix/scripts/environment.scm (launch-environment/container): Instruct `call-with-container` to not run the child as PID 1, which sets up a simple signal proxying parent process to properly forward signals such as `SIGINT` to the child. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Change-Id: I8d435357f54b092562b461e0913aa58e63ecdbf9 Fixes: #7600 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-04-24publish: Ignore ‘--advertise’ and warn when listening to localhost.Ludovic Courtès
* guix/scripts/publish.scm (run-publish-server): Write lower-case message. (localhost?): New procedure. (guix-publish): Warn when ‘advertise?’ is true but ‘address’ is localhost. Adjust #:advertise? argument to ‘run-publish-server’ accordingly. Reported-by: Sergio Pastor Pérez <sergio.pastor-perez@inria.fr> Change-Id: I7166528d11ead67882326defcf5151af28e4253a Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #7790
2026-04-17hash: %vcs-directories: Add .jj for Jujutsu.Hilton Chain
* guix/hash.scm (%vcs-directories): Add ".jj". Merges: #7872
2026-04-15guix: scripts: gc: Give better error reporting when attempting to vacuum.jgart
* guix/scripts/gc.scm (%options): Error out when a non-root user tries to vacuum the database. Change-Id: Iee7d626c43980640aa91a3ceeb95675016932c55 Signed-off-by: jgart <jgart@dismail.de>
2026-04-15guix: Implement fossil-download.Nguyễn Gia Phong
* guix/fossil-download.scm: New file. * guix/build/fossil.scm: New file. * Makefile.am (MODULES): Add them. * etc/teams.scm (core)[#:scope]: Add "guix/fossil-download.scm". (vcs)[#:scope]: Add "guix/build/fossil.scm". * CODEOWNERS: Regenerate file. * doc/guix.texi (origin Reference): Document fossil-fetch and fossil-reference. * NEWS: Add entry about fossil-fetch. Change-Id: Ia252bcbbb417159a842d5092a937e2aad55a1656 Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-12guix: texlive build system: Relax Metafont requirement.Nicolas Goaziou
* guix/build/texlive-build-system.scm (generate-font-metrics): Cater for texlive-metafont both as a native input and as an argument from texlive-local-tree. Change-Id: I32dd86d49ebcb49efd2a253c0491926e0333d3f4
2026-04-12guix: Generate TeX Live profiles reproductibly.Nicolas Goaziou
Fixes: https://issues.guix.gnu.org/73295 * guix/profiles.scm (texlive-font-maps): Do not use mktexlsr command. Change-Id: I91710740d7f467a236cc82ceca560b0f51a4094d
2026-04-12guix: texlive importer: Handle additional licenses.Nicolas Goaziou
* guix/import/texlive.scm (string->license): Handle additional licenses. Change-Id: Idb89ef4b3f9ba52a404caa4cc7f4a61d4e1201e6
2026-04-12guix: texlive importer: Refresh texlive-source properly.Nicolas Goaziou
* guix/import/texlive.scm (texlive->svn-multi-reference): Rename to... (texlive->svn-reference): ... this. (tlpdb->package): Handle "texlive-source" specifically. (package-from-texlive-repository?): * guix/upstream.scm (package-update/svn-fetch): New variable. (%method-updates): Extend with the previous function. (update-package-source): Also update svn-reference objects. Change-Id: Iaa988e5e3c401ea933720127bfc3046aa70935f4
2026-04-11import: gem: Warn when rubygems-fetch fails.jgart
* guix/import/gem.scm: Use (guix diagnostics) and (guix i18n). (gem->guix-package): Emit a warning when rubygems-fetch returns #f. Change-Id: I838cb77470ebb35f2065be7772fcd87647153ea8 Signed-off-by: jgart <jgart@dismail.de>
2026-04-10tests: Fix non-deterministic AppImage tests.Noé Lopez
The tested AppImages were not actually relocatable and would rely on items being available on the environment’s store (apart from glibc). * guix/scripts/pack.scm (wrapped-manifest): New function. (guix-pack): Extract relocatable manifest to wrapped-manifest. * tests/pack.scm: Use relocatable profiles in AppImage tests. Fixes: <https://issues.guix.gnu.org/76850> Change-Id: Ib3123054913fce903d215dc0629d806e9fceebc7 Reported-by: Reepca Russelstein <reepca@russelstein.xyz> Signed-off-by: Vagrant Cascadian <vagrant@debian.org>
2026-04-10gnu: appimage-type-2-runtime: Update to continuous-1.caf24f9.Noé Lopez
The runtime-fuse3 binary was renamed to runtime. * gnu/packages/appimage.scm (appimage-type2-runtime): Update to continuous-1.caf24f9. * guix/scripts/pack.scm (self-contained-appimage): [runtime-path]: Use new runtime name. Change-Id: Ibbb1fcb6ca914764c37addb62c8234b49cc93bd5 Signed-off-by: Vagrant Cascadian <vagrant@debian.org>
2026-04-10download: Remove some KDE mirrors.Efraim Flashner
* guix/download.scm (%mirrors): Remove some dead mirrors. Change-Id: I07b59a6c8d3e83aa71a040a542850041a0562244
2026-04-10download: Update Sourceforge mirrors.Efraim Flashner
* guix/download.scm (mirrors)[sourceforge]: Update mirror list. Change-Id: I187fd0022557cddd908404b5d2442a02d7eb1f30
2026-04-10tests: keys: Moving to openpgp subdirectory.Nicolas Graves
* tests/keys/*.(pub|sec): Move to tests/keys/openpgp/*.(pub|sec) * build-aux/test-env.in: Adapt accordingly. * Makefile.am: Likewise. * guix/tests/gnupg.scm: Likewise. * tests/guix-authenticate.sh: Likewise. * tests/openpgp.scm: Likewise. Change-Id: If8897cec9851cc51a4ebadcc5927dc0e0520b881 Reviewed-by: Danny Milosavljevic <dannym@friendly-machines.com> Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-10guix: openpgp: Refactor openpgp-fingerprint->bytevector.Nicolas Graves
Both (guix channel) and (guix git-authenticate) use similar procedures. To refactor the one in (guix git-authenticate), move the procedure to (guix openpgp). * guix/channels.scm: Replace autoloaded import openpgp-public-key-fingerprint with openpgp-fingerprint->bytevector. (openpgp-fingerprint->bytevector): Move function definition from here... * guix/openpgp.scm (openpgp-fingerprint->bytevector): ...to here. * guix/git-authenticate.scm (read-authorizations): Use openpgp-fingerprint->bytevector. * guix/scripts/git/authenticate.scm: Avoid using the (guix channels) module. * tests/git-authenticate.scm : Likewise. Change-Id: Ifd20588fcfaab601990098bd8575ee985e87394a Reviewed-by: Danny Milosavljevic <dannym@friendly-machines.com> Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-10guix: git-authenticate: Migrate to (srfi srfi-71).Nicolas Graves
* guix/git-authenticate.scm (commit-signing-key): Use srfi-71 instead of srfi-11 in case of multiple values. Change-Id: I6a35880bc97385b4424b7218a757c226e044555c Reviewed-by: Danny Milosavljevic <dannym@friendly-machines.com> Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-09guix: lint: Disallow more word patterns.Efraim Flashner
* guix/lint.scm (check-description-style): Add more entries to the check-description-typo list. Change-Id: Idb266bdc3f5b28ae353124b7e615a399bfd97ce7
2026-04-07svn-download: Add missing module import for SWH fallback.Ludovic Courtès
Fixes a regression introduced in ad8d386168c434b8149beae3838a8f27e487f441, where a call to ‘u8-list->bytevector’ was introduced without the corresponding (rnrs bytevectors) import. * guix/svn-download.scm (svn-fetch-builder): In gexp, add missing (rnrs bytevectors) import. Change-Id: I38a29d94a4645ff24ef44a84196a6040945776b8 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #7674
2026-04-04guix system: Make ‘--save-provenance’ effective for images.Ludovic Courtès
Previously ‘--save-provenance’ would be silently ignored for ‘guix system image’. * guix/scripts/system.scm (image-with-provenance): New procedure. (process-action): In ‘transform’, add case for ‘image?’, and emit a warning in the default case. Change-Id: I5020a4b3dacbe7a0820a3c4779b7d86a8133bd60 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #7485
2026-04-02build-system/r: Make test directory configurable.Ricardo Wurmus
Previously we would accept the #:test-directory argument but ignore the value. * guix/build-system/r.scm (r-build): Set default value for TEST-DIRECTORY field. * guix/build/r-build-system.scm (patch-tests): Use value of TEST-DIRECTORY argument. Change-Id: If435577bc0e90ede360ee281ee5bc27fa1b0b3f0
2026-03-31import/cran: Use SPAWN instead of SYSTEM*.Ricardo Wurmus
With SYSTEM* we see a file descriptor leak. See the discussion at <https://codeberg.org/guix-science/guix-cran-scripts/issues/5>. There is no such leak when using SPAWN. * guix/import/cran.scm (fetch-description-from-tarball, source->dependencies): Use SPAWN instead of SYSTEM*. Change-Id: Idb13f775317e6d5d426f8675e169f0ebbe246fe2
2026-03-30build: cargo: Separate the phases more distinctly.Efraim Flashner
* guix/build/cargo-build-system.scm (prepare-rust-crates): New phase. (unpack-rust-crates): Move old functionality to prepare-rust-crates. Take unpacking functionality from the configure phase. (%standard-phases): Add prepare-rust-crates between unpack and unpack-rust-crates. Change-Id: Ibc61a6d1de1eab269b021f977440aa3c631ffcf6 Signed-off-by: John Kehayias <john@guixotic.coop>
2026-03-29records: Warn about shadowing due to inherited field value bindings.Ludovic Courtès
This is a followup to a7c8e68dc51144a6d3981b770aca9c4897fc7c0c: this commit introduced a new binding in the body of field values, which could silently shadow outer bindings. This new warning catches potentially unwanted shadowing. * guix/records.scm (make-syntactic-constructor)[check-shadowing]: New procedure. [wrap-field-value]: Use it. * tests/records.scm ("define-record-type* & inherited value shadowing"): New test. Change-Id: I81ad14cf10da7213e9f8db987c8b0bd4c41acba2 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #7424
2026-03-29import: elpa: Gracefully handle invalid ELPA version lists.Ludovic Courtès
Previously version lists containing zeroes would be rejected; furthermore, #f would be returned even though callers expect a string: $ guix refresh emacs-counsel guix refresh: Package version for counsel contains non numeric part. Backtrace: […] In guix/utils.scm: 925:32 5 (_ #f "0.15.1") In unknown file: 4 (string->pointer #f #<undefined>) […] guix/ui.scm:920:18: In procedure string->pointer: Wrong type argument in position 1 (expecting string): #f * guix/import/elpa.scm (elpa-version->string): Accept zeroes in ‘elpa-version’. Raise an error instead of returning #f on failure. Clarify error messages. Change-Id: I1ab1d6892b434747d91e9090bb5f2f3c93f1ee92 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #7484
2026-03-29refresh: Make --list-updaters fast if web.cvs.savannah.gnu.org is broken.Hugo Buddelmeijer
--list-updaters loops through all packages and all updaters to see whether they match. The gnu-ftp updater used to use official-gnu-packages to fetch a list of packages from web.cvs.savannah.gnu.org. official-gnu-packages only caches the result if it succeeds; but does not cache upon a timout or 5xx status. official-gnu-packages times out after a minute and is called for all 30k+ packages. refresh --list-updaters could therefore take 30000 minutes. Now --list-updaters uses official-gnu-packages* (from lint.scm) that memoizes the result also on failure, thereby limiting the time to 1 minute. * guix/gnu-maintenance.scm: Add official-gnu-packages* from guix/lint.scm. Call official-gnu-packages* from gnu-package? * guix/lint.scm: Move official-gnu-packages* to guix/gnu-maintenance.scm Change-Id: I5e2e094bfb1042b03db47e119ced0e94b49b417c Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #4949