summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
6 dayspackages: Honor system and target system for graft replacements.David Elsing
Fixes <https://issues.guix.gnu.org/76110>. Fixes a regression introduced in 28e4018e59d30efb3d52aa950ce2261f11b69b33 where the system and target system would be ignored. * guix/packages.scm (input-graft, input-cross-graft): Wrap graft replacement in ‘with-parameters’. * tests/packages.scm ("package-grafts, indirect grafts") ("package-grafts, indirect grafts, propagated inputs") ("package-grafts, same replacement twice") ("package-grafts, dependency on several outputs") ("replacement also grafted"): Adjust accordingly by comparing the replacement after lowering to a derivation. ("package-grafts, indirect grafts, #:system argument"): New test. Change-Id: I1663f0cc50842bb9abb53ba4aa9935052022d1f4 Signed-off-by: Ludovic Courtès <[email protected]> Reported-by: Denis 'GNUtoo' Carikli <[email protected]>
10 daysgexp: ‘with-parameters’ properly handles ‘%graft?’.David Elsing
Fixes <https://issues.guix.gnu.org/75879>. * .dir-locals.el (scheme-mode): Remove mparameterize indentation rules. Add state-parameterize and store-parameterize indentation rules. * etc/manifests/system-tests.scm (test-for-current-guix): Replace mparameterize with store-parameterize. * etc/manifests/time-travel.scm (guix-instance-compiler): Likewise. * gnu/tests.scm (compile-system-test): Likewise. * guix/gexp.scm (compile-parameterized): Use state-call-with-parameters. * guix/monads.scm (mparameterize): Remove macro. (state-call-with-parameters): New procedure. (state-parameterize): New macro. * guix/store.scm (store-parameterize): New macro. * tests/gexp.scm ("with-parameters for %graft?"): New test. * tests/monads.scm ("mparameterize"): Remove test. ("state-parameterize"): New test. Co-authored-by: Ludovic Courtès <[email protected]> Change-Id: I0c74066ca3f37072815b073fb3039925488a9645 Signed-off-by: Ludovic Courtès <[email protected]>
10 daysservices: ‘shepherd-service-upgrade’ handles canonical name changes.Ludovic Courtès
Partly fixes <https://issues.guix.gnu.org/76315>. Fixes a bug whereby a service whose canonical name has changed would not be restarted—e.g., if '(syslogd) has a replacement providing '(system-log syslogd). * gnu/services/shepherd.scm (shepherd-service-upgrade)[running?]: Remove. [to-restart]: Change to a subset of LIVE. Look up all the names of each element of TARGET. * guix/scripts/system/reconfigure.scm (upgrade-shepherd-services): TO-RESTART is now a list of <live-service>; adjust accordingly. * tests/services.scm ("shepherd-service-upgrade: one unchanged, one upgraded, one new"): ("shepherd-service-upgrade: service depended on is not unloaded"): ("shepherd-service-upgrade: obsolete services that depend on each other"): ("shepherd-service-upgrade: transient service"): Adjust accordingly. ("shepherd-service-upgrade: service has new canonical name"): New test. Reported-by: Tomas Volf <[email protected]> Change-Id: I7cec495b4e824da5fad5518f039607cf92f935d9
11 daystests: publish: Constrain guix-publish thread use.Christopher Baines
On systems with more than 64 processors. Otherwise starting so many threads during the test will trip resource limits and lead to a spurious failure with SIGABRT. I'm seeing this on a 128 core system running Guix, and limiting to just 64 processors seems sufficient. * tests/publish.scm: Call setaffinity when the current processor count exceeds 64. Change-Id: Id4c6d7dcc9ae8dd8dafa2587def98f538061425c
14 daysmachine: hetzner: Fix deployment on smaller instances.Roman Scherer
* gnu/machine/hetzner.scm (hetzner-machine-rescue-install-os): Avoid out of disk space error by bind mounting /mnt/tmp/gnu/store to /gnu/store. * tests/machine/hetzner.scm: Test with smaller instances. * doc/guix.texi (Invoking guix deploy): Mention unsupported instance. Change-Id: If8bfb6733de493b51813b3e82e255849192f7cba Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-28refresh: Add support for partial target versions.Maxim Cournoyer
* guix/import/utils.scm (find-version): New procedure. * guix/scripts/refresh.scm (<update-spec>) [partial?]: New field. (update-spec-partial?): New accessor. (update-spec): Add a PARTIAL? optional argument. (update-specification->update-spec) <update-spec>: Call with its new PARTIAL? optional argument when FALLBACK-VERSION is provided, i.e. when '--target-version' was used. (update-package): Remove the PACKAGE and VERSION positional arguments, and replace them with UPDATE-SPEC. Update doc. Call `package-update' with its new #:partial-version? argument. (check-for-package-update) <package-latest-release>: Pass the new #:partial-version? argument to it. (guix-refresh) <update-package>: Adjust call accordingly. (show-help): Udate doc. * guix/upstream.scm (package-latest-release): Add #:partial-version? argument, and apply it to the importer call. (package-update): Add #:partial-version?> argument. Update doc. Pass it to the `package-latest-release' call. * guix/gnu-maintenance.scm (rewrite-url): Add #:partial-version? argument. Update doc. Crawl URL for newer compatible versions when provided. (import-html-release): Add #:partial-version? argument, and pass it to the `rewrite-url' call. Use `find-version' to find the best version. (import-release, import-ftp-release, import-gnu-release) (import-release*): Add #:partial-version? argument and honor it. (import-html-updatable-release): Add #:partial-version? argument, and pass it to the `import-html-release' call. * guix/import/gnome.scm (import-gnome-release) <#:partial-version?>: Add new argument and honor it. * guix/import/texlive.scm (latest-texlive-tag): Rename to... (texlive-tags): ... this, and have it return all tags. (texlive->guix-package): Adjust accordingly. (latest-release): Add a #:partial-version? argument. Update doc. * guix/import/stackage.scm (latest-lts-release): New #:partial-version? argument. * guix/import/pypi.scm (import-release): New #:partial-version? argument; pass it to `pypi-package->upstream-source'. * guix/import/opam.scm (latest-release): New #:partial-version? argument. * guix/import/minetest.scm (latest-minetest-release): New #:partial-version? argument. (pypi-package->upstream-source): New #:partial-version? argument. Update doc. * guix/import/launchpad.scm (latest-released-version): Rename to... (release-versions): ... this, making it return all versions. (import-release) <#:partial-version?>: New argument. * guix/import/kde.scm (import-kde-release) <#:partial-version?>: New argument. Update doc. Refactor to honor argument. * guix/import/hexpm.scm (lookup-hexpm): Update doc. (hexpm-latest-release): Rename to... (hexpm-releases): ... this; return all release strings. (hexpm->guix-package): Adjust accordingly. (import-release): Add and honor a #:partial-version? argument. Update doc. * guix/import/hackage.scm (import-release): New #:partial-version? argument. * guix/import/cpan.scm (latest-release): New #:partial-version? argument. * guix/import/crate.scm (max-crate-version-of-semver): Improve doc. (import-release): Add a #:partial-version? argument and honor it. * guix/import/egg.scm (find-latest-version): Rename to... (get-versions): ... this, returning all versions. (egg-metadata): Adjust accordingly. (egg->guix-package): Likewise. (import-release): Add a new #:partial-version? argument and honor it. * guix/import/elpa.scm (latest-release): New #:partial-version? argument. * guix/import/gem.scm (get-versions): New procedure. (import-release): Add a new #:partial-version? argument and honor it. * guix/import/git.scm (version-mapping): Update doc; streamline a bit. (latest-tag): Rename to... (get-tags): ... this, dropping the #:version keyword and returning the complete tags alist. Update doc. (latest-git-tag-version): Rename to... (get-package-tags): ... this, returning the complete tags alist of the package. Update doc. (import-git-release): Add a new #:partial-version? argument and honor it. Update doc. * guix/import/github.scm (latest-released-version): Rename to... (get-package-tags): ... this, returning all tags. Update doc. (import-release): Add a new #:partial-version? argument and honor it. * guix/import/cran.scm (latest-cran-release) (latest-bioconductor-release): Add #:partial-version? argument. * guix/import/composer.scm (latest-version): Delete procedure. (composer-fetch): Add #:partial-version? keyword and honor it. Update doc. (import-release): Likewise. * guix/import/test.scm (import-release): Add #:partial-version? argument. * tests/guix-refresh.sh: Add test. * tests/gem.scm (test-foo-versions-json): New variable. (package-latest-release): Mock new URL. * tests/import-git.scm (latest-git-tag-version): New procedure. * tests/gnu-maintenance.scm (libuv-dist-html) (libuv-dist-1.46.0-html, libuv-dist-1.44.2-html) (libuv-html-data): New variables. (mock-http-fetch/cached): New procedure. ("rewrite-url, without to-version"): Rewrite using the above. ("rewrite-url, partial to-version"): New test. * doc/guix.texi <"Invoking guix refresh">: Update doc. Series-to: [email protected] Change-Id: I092a58b57ac42e54a2fa55e7761e8c6993af8ad4
2025-02-24read-print: Adjust test for keyword alignment.Ludovic Courtès
This is a followup to f7744227699d27045e87be9eac3464c2f62ff7e3, which changed the rule without updating the test. * tests/read-print.scm ("keyword-value-same-line"): Adjust. Change-Id: Ie802ef3d2e577cb0647158baed0606c958394c06
2025-02-22tests: Remove extraneous 'with-store' in derivations test.Maxim Cournoyer
* tests/derivations.scm ("derivation fails but keep going"): Remove extraneous 'with-store'. Change-Id: If30c2d457504b8524cd167f1a145fbbea61b513c Signed-off-by: Maxim Cournoyer <[email protected]>
2025-02-11import/utils: Wrap terms starting with @ in descriptions.Ricardo Wurmus
* tests/import-utils.scm ("beautify-description: escape @stuff"): Add test. * guix/import/utils.scm (beautify-description): Also wrap terms in @code{...} that start with an escaped @. Change-Id: I424f626635b821af6f4c16c97b8724cdaf99de45
2025-02-11import/utils: Escape @ in synopses.Ricardo Wurmus
* tests/import-utils.scm ("beautify-synopsis: escape @"): Add tests. * guix/import/utils.scm (beautify-synopsis): Replace @ with @@. Change-Id: I011d61687a098b5b50f44c1acd6f0a4eea06e9f0
2025-02-09machine: Implement 'hetzner-environment-type'.Roman Scherer
* Makefile.am (SCM_TESTS): Add test modules. * doc/guix.texi: Add documentation. * gnu/local.mk (GNU_SYSTEM_MODULES): Add modules. * gnu/machine/hetzner.scm: Add hetzner-environment-type. * gnu/machine/hetzner/http.scm: Add HTTP API. * po/guix/POTFILES.in: Add Hetzner modules. * tests/machine/hetzner.scm: Add machine tests. * tests/machine/hetzner/http.scm Add HTTP API tests. Change-Id: I276ed5afed676bbccc6c852c56ee4db57ce3c1ea Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-09scripts: style: Sort more kinds of package definitions.Herman Rimm
* guix/scripts/style.scm (order-packages): Match comments before package S-exp. and its fields. Match in let. Match package/inherit. * tests/guix-style.sh: Add pkg-baz variable and package/inherit to test. Change-Id: I48a5976930501c20415b5413966b5294958bc23b Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-09tests: crate: Add build dependency.Herman Rimm
* tests/crate.scm ("crate-recursive-import"): Add rust-leaf-bob-3 to rust-root-1 cargo-inputs. (test-root-dependencies): Add leaf-bob 3 build dependency. Change-Id: I1285fc6b36429f754d54def0b14f821306ba366d Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-09import: crate: Comment out missing dependencies.Herman Rimm
* guix/import/crate.scm (package-names->package-inputs): Emit comments. (make-crate-sexp): Make input into comment if missing. (crate->guix-package): Take #:mark-missing? argument. [dependency-name+missing+version+yanked]: Mark as missing. Rename from dependency-name+version+yanked. [sort-map-dependencies]: Adjust. [remove-missing+yanked-info]: Remove missing info. Rename from remove-yanked-info. * guix/scripts/import/crate.scm (show-help): Explain --mark-missing. (%options): Add mark-missing option. (guix-import-crate): Pass mark-missing option as #:mark-missing?. * doc/guix.texi (Invoking guix import): Document --mark-missing. * tests/crate.scm ("crate->guix-package-marks-missing-packages"): Add test. Change-Id: I065d394e1c04fdc332b8f7f8b9fcbd87c14c6512 Signed-off-by: Ludovic Courtès <[email protected]>
2025-01-28grafts: Allow file-like objects in the ‘replacement’ field of <graft>.Ludovic Courtès
This is a followup to and simplification of 3331d675fbf5287e8cbe12af48fb2de14f1ad8bc. * guix/grafts.scm (graft-derivation/shallow)[mapping]: Wrap origin and replacement in ‘with-parameters’. (cumulative-grafts)[finalize-graft]: Remove, and remove its sole user. * guix/packages.scm (input-graft, input-cross-graft): Add ‘replacement’ straight into the ‘replacement’ field of <graft>. * tests/packages.scm ("package-grafts, indirect grafts") ("package-grafts, indirect grafts, propagated inputs") ("package-grafts, same replacement twice") ("package-grafts, dependency on several outputs") ("replacement also grafted"): Adjust accordingly. Suggested-by: David Elsing <[email protected]> Change-Id: I286fceae53df9d3051137bbca5f944d51d0c92f3
2025-01-28gexp: ‘with-parameters’ accepts plain store items in its body.Ludovic Courtès
* guix/gexp.scm (compile-parameterized): Return ‘obj’ as-is when it’s not a struct. * tests/gexp.scm ("with-parameters + store item"): New test. Change-Id: I5b5348b98bce923d07f6fa39b2f0948723011db8
2025-01-26tests: crate: Adjust for change in imported yanked crates.Efraim Flashner
This is a follow-up to 67950f46ef2c08a0873f7d08f61fdc14758e3ae5. * tests/crate.scm (crate-import-only-yanked-available): Adjust the imported crates to match the change in the importer. Change-Id: I9657838e51062861299fb10bc25ad0c05cb75f5a
2025-01-24tests: pack: Improve AppImage tests.Noé Lopez
* tests/pack.scm: Improve AppImage tests. Change-Id: I7890b902f65a2944ae8fa03db8a964deda3c725c Signed-off-by: Ludovic Courtès <[email protected]>
2025-01-24lint: Adjust ‘check-inputs-should-not-be-an-input-at-all’ tests for Python.Ludovic Courtès
This is a followup to bea2914b3d1b06cc8cc1d9cff88c0dd7d8ebb1be, which removed ‘python-setuptools’ from the list of “unauthorized” inputs. * tests/lint.scm ("inputs: python-pip should not be an input at all (input)") ("inputs: python-pip should not be an input at all (native-input)") ("inputs: python-pip should not be an input at all (propagated-input)"): New tests, with s/python-setuptools/python-pip/. Change-Id: Ic575825da5c64052d3d573b37b458bd61547bae1
2025-01-20guix: toml: Fix evaluation of empty inline tables.Lars-Dominik Braun
* guix/build/toml.scm (eval-toml-file): Add pattern for empty inline table. * tests/toml.scm ("parse-toml: Empty inline table"): New testcase. Change-Id: I69663af2a861716acfb801fad4474e029e102a1b
2025-01-19grafts: Only compute necessary graft derivations.David Elsing
* guix/packages.scm (input-graft, input-cross-graft): Store the monadic value of the replacement in the 'replacement' field of <graft> instead of unwrapping it. (cumulative-grafts): Turn monadic values in the 'replacement' field of applicable grafts into derivations. * tests/packages.scm ("package-grafts, indirect grafts") ("package-grafts, indirect grafts, propagated inputs") ("package-grafts, same replacement twice") ("package-grafts, dependency on several outputs") ("replacement also grafted"): Do not compare <graft> records directly, compare the relevant fields instead, calling ‘run-with-store’ on the ‘replacement’ field. Co-authored-by: Ludovic Courtès <[email protected]> Change-Id: Idded0a402b8974df1ef2354f1a88c308b9b99777
2025-01-16home: Define ‘%base-home-services’.Ludovic Courtès
* gnu/home.scm (%base-home-services): New variable. (<home-environment>)[services]: Change default to ‘%base-home-services’. * guix/scripts/home/import.scm (manifest+configuration-files->code): Use ‘%base-home-services’ by default. * tests/home-import.scm (match-home-environment-no-services) (match-home-environment-transformations) (match-home-environment-no-services-nor-packages) (match-home-environment-bash-service) (match-home-environment-bash-service-with-alias): Adjust accordingly. * doc/he-config-bare-bones.scm: Use ‘%base-home-services’. * doc/guix.texi (Declaring the Home Environment): Add index entry for ‘%base-home-services’. Change-Id: Id95ede62b97a976aad138bfc4b63fc0bdf37c7de
2025-01-12import: git: Do not search pre-release words in tag prefix.宋文武
This fixes tags like 'xfce4-dev-tools-4.20.0'. * tests/import-git.scm ("latest-git-tag-version: prefix contains pre-release words"): New test. * guix/import/git.scm (latest-tag): Don't filter out pre-releases tags. (version-mapping): Filter out pre-releases tags from versions. * gnu/packages/xfce.scm (garcon, thunar-archive-plugin, xfce4-dev-tools): Remove FIXME comments for the 'generic-git' updater. Change-Id: I7683200fa451d7fad153aa08fa9d5761688de01d
2025-01-08upstream: Define ‘preferred-upstream-source’.Ludovic Courtès
* guix/upstream.scm (preferred-upstream-source): New procedure. * tests/upstream.scm ("preferred-upstream-source"): New test. Change-Id: I4b48b44f1aa233d2e99bfe2e1359a670297efae8
2025-01-07syscalls: Remove wrong syscall ID for ‘kexec_load_file’ on i686.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/75205>. * guix/build/syscalls.scm (kexec-load-file): Remove syscall ID for i686. * tests/syscalls.scm ("kexec-load-file"): Accept ENOSYS in addition to EPERM. Reported-by: Dariqq <[email protected]> Change-Id: I83fe25636addb57533ed88cbfb40107d265b13a7
2024-12-30channels: Adjust tests for new #:verify-certificate? parameter.Ludovic Courtès
This is a followup to 9544a0441145b9d404bb52edbdaf11666008731c. * tests/channels.scm ("latest-channel-instances includes channel dependencies") ("latest-channel-instances excludes duplicate channel dependencies"): Add #:verify-certificate? parameter to ‘update-cached-checkout’ mock. Change-Id: Ia795b965c564e5552525327d1d748635dc66d5fd
2024-12-30import: pypi: Adjust test to new setuptools and wheel requirements.Ludovic Courtès
This is a followup to c904350a81f9ff47cc025bc9d0d48f1bd2ead30e and d7890af335ed046ba245137fb13031be964d03f5, which led to adding ‘setuptools’ and ‘wheel’ to ‘native-inputs’ in many (most?) cases. * tests/pypi.scm ("pypi->guix-package, no wheel") ("pypi->guix-package, no requires.txt, but wheel.") ("pypi->guix-package, no usable requirement file, no wheel."): Add ‘python-setuptools’ and ‘python-wheel’ to the native inputs. ("package-latest-release"): Add ‘setuptools’ and ‘wheel’ to the expected result. Change-Id: I4d1001b0ad332836fe7d1d9ecd07d4adc32330af
2024-12-30daemon: Explicitly unlock output path in the has-become-valid case.Reepca Russelstein
Fixes <https://issues.guix.gnu.org/31785>. Similar to <https://github.com/NixOS/nix/issues/178>, fixed in <https://github.com/NixOS/nix/commit/29cde917fe6b8f2e669c8bf10b38f640045c83b8>. We can't rely on Goal deletion to release our locks in a timely manner. In the case in which multiple guix-daemon processes simultaneously try producing an output path path1, the one that gets there first (P1) will get the lock, and the second one (P2) will continue trying to acquire the lock until it is released. Once it has acquired the lock, it checks to see whether the path has already become valid in the meantime, and if so it reports success to those Goals waiting on its completion and finishes. Unfortunately, it fails to release the locks it holds first, so those stay held until that Goal gets deleted. Suppose we have the following store path dependency graph: path4 / | \ path1 path2 path3 P2 is now sitting on path1's lock, and will continue to do so until path4 is completed. Suppose there is also a P3, and it has been blocked while P1 builds path2. Now P3 is sitting on path2's lock, and can't acquire path1's lock to determine that it has been completed. Likewise P2 is sitting on path1's lock, and now can't acquire path2's lock to determine that it has been completed. Finally, P3 completes path3 while P2 is blocked. Now: - P1 knows that path1 and path2 are complete, and holds no locks, but can't determine that path3 is complete - P2 knows that path1 and path3 are complete, and holds locks on path1 and path3, but can't determine that path2 is complete - P3 knows that path2 and path3 are complete, and holds a lock on path2, but can't determine that path1 is complete And none of these locks will be released until path4 is complete. Thus, we have a deadlock. To resolve this, we should explicitly release these locks as soon as they should be released. * nix/libstore/build.cc (DerivationGoal::tryToBuild, SubstitutionGoal::tryToRun): Explicitly release locks in the has-become-valid case. * tests/store-deadlock.scm: New file. * Makefile.am (SCM_TESTS): Add it. Change-Id: Ie510f84828892315fe6776c830db33d0f70bcef8 Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-28syscalls: Add ‘kexec-load-file’.Ludovic Courtès
* guix/build/syscalls.scm (string->utf-8/nul-terminated) (kexec-load-file): New procedures. * tests/syscalls.scm ("kexec-load-file"): New test. Change-Id: I3724226a14ecc07f346e77519fb5b0591096c7f6
2024-12-18packages: Add #:recursive? to ‘package-input-rewriting’.Ludovic Courtès
* guix/packages.scm (package-input-rewriting): Add #:recursive? [cut?]: Honor it. * tests/packages.scm ("package-input-rewriting, recursive"): New test. * doc/guix.texi (Defining Package Variants): Document it. Change-Id: Ie82f35ae0ae873dc68f8b1c0dd6616f552772e65
2024-12-18accounts: Add /etc/subid and /etc/subgid allocation logic.Giacomo Leidi
This commit adds allocation logic for subid ranges. Subid ranges are ranges of contiguous subids that are mapped to a user in the host system. This patch implements a flexible allocation algorithm allowing users that do not want (or need) to specify details of the subid ranges that they are requesting to avoid doing so, while upholding requests of users that need to have specific ranges. * gnu/build/accounts.scm (%subordinate-id-min): New variable; (%subordinate-id-max): new variable; (%subordinate-id-count): new variable; (subordinate-id?): new variable; (&subordinate-id-error): new variable; (&subordinate-id-overflow-error): new variable; (&illegal-subid-range-error): new variable; (&specific-subid-range-expected-error): new variable; (&generic-subid-range-expected-error): new variable; (within-interval?): new variable; (allocate-unused-range): new variable; (allocate-generic-range): new variable; (allocate-specific-range): new variable; (reserve-subids): new variable; (range->entry): new variable; (entry->range): new variable; (allocate-subids): new variable; (subuid+subgid-databases): new variable. * gnu/system/accounts.scm (subid-range-end): New variable; (subid-range-has-start?): new variable; (subid-range-less): new variable. * test/accounts.scm: Test them. Change-Id: I8de1fd7cfe508b9c76408064d6f498471da0752d Co-Authored-By: Ludovic Courtès <[email protected]> Signed-off-by: Giacomo Leidi <[email protected]> Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-18accounts: Add /etc/subuid and /etc/subgid support.Giacomo Leidi
This commit adds a new record type, <subid-entry> and serializers and deserializers for it in (gnu build accounts). Each instance of this record represents one line in either /etc/subuid or /etc/subgid. Since Shadow uses the same representation for both files, it should be ok if we do it as well. This commit adds also <subid-range>, a user facing representation of <subid-entry>. It is supposed to be usable directly in OS configurations. * gnu/build/accounts.scm (subid-entry): New record; (write-subgid): add serializer for subgids; (write-subuid): add serializer for subuids; (read-subgid): add serializer for subgids; (read-subuid): add serializer for subuids. * gnu/system/accounts.scm (subid-range): New record. * test/accounts.scm: Test them. Change-Id: I6b037e40e354c069bf556412bb5b626bd3ea1b2c Signed-off-by: Giacomo Leidi <[email protected]> Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-16import: pypi: Support extracting dependencies from pyproject.toml.Lars-Dominik Braun
* guix/import/pypi.scm (guess-requirements): Support extracting dependencies from pyproject.toml. * tests/pypi.scm: ("pypi->guix-package, no requires.txt, but wheel."): Renamed from "pypi->guix-package, wheels", remove requires.txt file, because the current implementation cannot detect invalid files. ("pypi->guix-package, no usable requirement file, no wheel."): Renamed from "pypi->guix-package, no usable requirement file.". (test-pyproject.toml): New variable. ("pypi->guix-package, no wheel, no requires.txt, but pyproject.toml"): New test. ("pypi->guix-package, no wheel, but requires.txt and pyproject.toml"): Ditto. Change-Id: Ib525750eb6ff4139a8209420042b28ae3c850764 Reviewed-by: Ludovic Courtès <[email protected]> Signed-off-by: Sharlatan Hellseher <[email protected]>
2024-12-16packages: Use origin file names as their input labels.Ludovic Courtès
* guix/packages.scm (add-input-label): Rely on 'origin-actual-file-name' for internal inputs labels. * tests/packages.scm ("this-package-input, origin"): New test. * doc/guix.texi (package Reference): Mention origin lookup for ‘lookup-package-input’ & co. * gnu/packages/base.scm (tzdata)[inputs]: Reintroduce label. * gnu/packages/tex.scm (texlive-hyphen-complete)[inputs]: Likewise. (texlive-newverbs)[native-inputs]: Likewise. Change-Id: I6ba5352b1b1b8ab810da3730b09cb9db61d6429c Co-authored-by: Simon Tournier <[email protected]>
2024-12-14tests: guix-shell-export-manifest: Fix pyproject-build-system python test.Janneke Nieuwenhuizen
This is a follow-up to commit fdc0fefd46a45b70784a4e3f8900cbe593426a9e build-system/pyproject: Use python-sans-pip-wrapper as default-python. * tests/guix-shell-export-manifest.sh: Grep for python-sans-pip-wrapper, which is the python now used by the pyproject-build-system. Change-Id: I5f44e07544f80973fa6b306b2dcdf42ac3b56ad6
2024-12-14tests: guix-package: Fix guix package --search test.Janneke Nieuwenhuizen
This is a follow-up to commit 6f8c8a86d827627f503a803381bce7fbcf8f39a0 gnu: Fix synopsis in miscelaneous packages. Change-Id: I5f44e07544f80973fa6b306b2dcdf42ac3b56ad6 * tests/guix-package.sh: Search for GNU hello's changed synopsis "Example GNU package". Change-Id: I79f606afee348cb6d57d9c0d08e15cd9267d5ceb
2024-12-13guix: toml: Fix parsing empty strings in arrays.Lars-Dominik Braun
Change-Id: Id14d4008391a01820ade754fa9c2ca8e88b8c7f9
2024-12-13guix: toml: Add TOML parser.Lars-Dominik Braun
* guix/build/toml.scm: New file. * tests/toml.scm: New file. * Makefile.am: Register new files.
2024-12-12lint: More abbreviations.Gabriel Wicki
* guix/lint.scm: Allow more common abbreviations in double-space-after sentence check. * tests/lint.scm: Add tests. Change-Id: I0eedf73e5fcd0a8c67b3ae3dfa979a57fe0f6253 Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-12lint: Ignore initials from double space check.Gabriel Wicki
Prevent false positives in initials as the are commonly used in names, e.g. Margaret E. Hamilton - which obviously do not end sentences. Check whether a period character `.' is preceded by at least two characters. This should save us from false positives when linting. * guix/lint.scm(check-description-style)[check-end-of-sentence-space] Add condition. * tests/lint.scm: Add test case. Change-Id: I42a1365aaaed2afc7308b88ebd4b0720ad362761 Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-12lint: Prevent false positives in description typo check.Gabriel Wicki
* guix/lint.scm(check-description-style)[check-description-typo]: Add spaces to match strings to prevent matching false positives, like "allows tokens" or "prevents torpedoes". * tests/lint.scm: Add test. Change-Id: Ifc2ec6167a590b9d2e742dd86fecd798c4bfaa24 Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-12lint: Allow texinfo markup at beginning of synopsis.Gabriel Wicki
* guix/lint.scm(check-synopsis-style)[check-proper-start]: Add condition. * tests/lint.scm: Add test case. Change-Id: I2509b3a4e7e51c6a274697ceb5f776c22e27c5f9 Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-12lint: Allow texinfo markup at beginning of description.Gabriel Wicki
* guix/lint.scm(starts-with-texinfo-markup?): New function. (check-description-style)[check-proper-start]: Add condition. * tests/lint.scm: Add test case. Change-Id: I674988882265d9e2041d48dba0f9627cd68bf292 Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-12lint: Refine description start check logic.Gabriel Wicki
Fix linter warnings for the following: - packages that belong to some programming language or ecosystem, e.g. python-foo or texlive-bar, - packages whose names end in a version distinction, e.g. wlroots-0.16 and - packages where the software's real name contains an underscore `_' character where our package name replaced that with a hyphen `-', e.g. wpa_supplicant and wpa-supplicant-minimal. * guix/lint.scm (check-description-style)[check-proper-start]: Add conditions. * tests/lint.scm: New tests. Change-Id: Ifc9f5cda04db59e460e287cd93afae89c7f17e3c Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-12lint: Fix indentation.Gabriel Wicki
* guix/lint.scm(check-synopsis-style): Add white space. * tests/lint.scm: Fix indentation. Signed-off-by: Ludovic Courtès <[email protected]> Change-Id: I8e08fa43131c586065b742fc441172c9408877a3
2024-12-03import: utils: Wrap function names in @code.Ricardo Wurmus
* guix/import/utils.scm (beautify-description): Adjust to include "()" in @code wrapper. * tests/import-utils.scm ("beautify-description: wrap function names in @code"): New test. Change-Id: I2b58728571a18ce8302c1b6f98b0c16dbe5931c3
2024-12-02tests: Adjust ‘guix build -P1’ test to new packages.Ludovic Courtès
Fixes a bug introduced in 794e079437c8687f49d294322dab3b7a8a6abacf whereby the grep patterns used in this test would also match /gnu/store/…-rust-libgit2-sys-0.17.0+1.8.1.drv, thus getting 5 matches instead of 4. * tests/guix-build.sh: Refine grep patterns for ‘guix build -P1’ test. Reported-by: Janneke Nieuwenhuizen <[email protected]> Change-Id: Iae35e6ee44b8eca0ef66c1d8ab7f9ff65a59d8d0
2024-12-02packages: 'package-input-rewriting/spec' optionally replace hidden.Greg Hogan
Commit eee95b5a879b7096dffd533f24107cf8926b621e changed package rewriting to ignore hidden packages. This patch permits the previous use by adding an option to rewrite hidden packages. * guix/packages.scm (package-input-rewriting/spec)[rewrite]: When P is hidden, return it as-is unless #:replace-hidden? has been enabled. * tests/packages.scm ("package-input-rewriting/spec, replace hidden package"): New test. * doc/guix.texi (Defining Package Variants): Update. Change-Id: I0a7988cac70e0c6b88b0fe6e27c1036fa723e030 Signed-off-by: Ludovic Courtès <[email protected]>
2024-12-01transformations: ‘package-with-upstream-version’ can preserve patches.Ludovic Courtès
* guix/transformations.scm (upstream-fetch): New procedure. (package-with-upstream-version): Add #:preserve-patches? and honor it. Change-Id: Ib56b84957d8bdad2eebe2551e2a6e477506fc55e
2024-12-01guix build: Add ‘--dependents’.Ludovic Courtès
* guix/scripts/build.scm (show-help, %options): Add ‘--dependents’. (dependents): New procedure. (options->things-to-build): Add ‘store’ parameter; honor ‘dependents’ option. [for-type]: Handle ‘dependents’ type. (options->derivations): Update call to ‘options->things-to-build’. * tests/guix-build.sh: Add test. * doc/guix.texi (Additional Build Options): Document ‘--dependents’. (Invoking guix refresh): Cross-reference it. * doc/contributing.texi (Submitting Patches): Mention it. Change-Id: I00b6d5831e1f1d35dc8b84a82605391d5a8f417c