aboutsummaryrefslogtreecommitdiff
path: root/tests
Commit message (Collapse)AuthorAge
* import: go: Emit new-style package inputs.Sarah Morgensen2024-08-31
| | | | | | | | | | | | | | | Since PACKAGE-NAMES->PACKAGE-INPUTS is used by both the go and crate importers, give the crate importer a copy of the original so it continues to use old-style inputs until it is updated. * guix/import/utils.scm (package-names->package-inputs)[make-input]: Return new-style package inputs. (maybe-inputs): Wrap PACKAGE-INPUTS in 'list' instead of 'quasiquote'. * guix/import/crate.scm (package-names->package-inputs): New variable. * tests/go.scm ("go-module->guix-package"): Adjust to new-style package inputs. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
* import: crate: Emit new-style package inputs.Sarah Morgensen2024-08-31
| | | | | | | | | | | | * guix/import/crate.scm (maybe-cargo-development-inputs) (maybe-cargo-inputs): Wrap PACKAGE-INPUTS in unquoted 'list'. * tests/crate.scm ("crate->guix-package") ("cargo-recursive-import") ("cargo-recursive-import-honors-existing-packages"): Adjust accordingly. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: I4dfb745272ecbc893926446872514fb815c07236
* profiles: Use C.UTF-8 instead of ‘glibc-utf8-locales’ where possible.Ludovic Courtès2024-08-31
| | | | | | | | | | | | | | This is a followup to 1cebc334a77030c0c94955981652f4df7608c9e3. * guix/profiles.scm (ca-certificate-bundle)[libc-utf8-locales-for-target]: Remove. [build]: Use “C.UTF-8” instead of “en_US.utf8”. (profile-derivation)[libc-utf8-locales-for-target]: Remove. [set-utf8-locale]: Rewrite to a gexp that calls ‘setlocale’ for “C.UTF-8”. * tests/profiles.scm ("profile-derivation, cross-compilation"): Remove ‘locales’ variable and related check. Change-Id: I7cb148b9149fe5fbe5b9b1b25fdce1002ad1f37e
* build-systems: gnu: Export %default-gnu-imported-modules and ↵Maxim Cournoyer2024-08-31
| | | | | | | | | | | | | | | | | | | | | %default-gnu-modules. Until now users would have to cargo cult or inspect the private %default-modules variable of (guix build-systems gnu) to discover which modules to include when extending the used modules via the #:modules argument. The renaming was automated via the command: $ git grep -l %gnu-build-system-modules | xargs sed 's/%gnu-build-system-modules/%default-gnu-imported-modules/' -i * guix/build-system/gnu.scm (%gnu-build-system-modules): Rename to... (%default-gnu-imported-modules): ... this. (%default-modules): Rename to... (%default-gnu-modules): ... this. Export. (dist-package, gnu-build, gnu-cross-build): Adjust accordingly. Change-Id: Idef307fff13cb76f3182d782b26e1cd3a5c757ee
* build: utils: Raise error in modify-phases upon missing key.Carlo Zancanaro2024-08-31
| | | | | | | | | | * guix/build/utils.scm (alist-cons-before) (alist-cons-after): Error with a match failure if the reference is not found, instead of appending to the alist. * tests/build-utils.scm: Update tests to match the new behavior. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: I3044b101bd06231d5cd55a544ac1009e6ce6f9a0
* cache: Avoid cache cleanup storms from concurrent processes.Ludovic Courtès2024-08-21
| | | | | | | | | | | | Reported by Christopher Baines <guix@cbaines.net>. * guix/cache.scm (maybe-remove-expired-cache-entries): Define ‘expiry-port’; create it with ‘lock-file’. Change ‘last-expiry-date’ accordingly. Write timestamp straight to ‘expiry-port’. * tests/cache.scm ("maybe-remove-expired-cache-entries, cleanup needed but lock taken"): New test. Change-Id: I22441d9d2c4a339d3d3878de131864db5a0ae826
* syscalls: Add ‘mode’ parameter to ‘lock-file’.Ludovic Courtès2024-08-21
| | | | | | | * guix/build/syscalls.scm (lock-file): Add ‘mode’ parameter and honor it. * tests/syscalls.scm ("lock-file + unlock-file"): New test. Change-Id: I113fb4a8b35dd8782b9c0991574e39a4b4393333
* tests: gexp: Handle incorrect guile-bootstrap version for riscv.Christopher Baines2024-08-01
| | | | | | | | | | | | | The tests currently fail when run on riscv-linux (affecting the guix package) because Guile 3 is used as the bootstrap guile. Correcting the package version seems hard, so I'm just tweaking the tests to use the right effective version for riscv64-linux. * tests/gexp.scm (bootstrap-guile-effective-version): New procedure. ("gexp->derivation & with-extensions", "lower-gexp", "lower-gexp, raw-derivation-file"): Use bootstrap-guile-effective-version. Change-Id: I3995e1f6b58ada1baf38a8ec55b0173059dd0079
* modules: ‘file-name->module-name’ strips leading “./”.Ludovic Courtès2024-07-18
| | | | | | | | | | | | Fixes <https://issues.guix.gnu.org/71979>. * guix/modules.scm (file-name->module-name): Strip leading “.” component from FILE. * tests/modules.scm ("file-name->module-name") ("file-name->module-name, leading dot"): New tests. Reported-by: Tomas Volf <~@wolfsden.cz> Change-Id: I3d1b9f3f21448050cac4f3b1aed5f8f03758d4c9
* git: Remove untracked files from cached checkouts.Ludovic Courtès2024-07-18
| | | | | | | | | | | | | | Cached checkouts could end up with stale untracked files, for example because the checkout was interrupted. As a result, when this happens for the Guix checkout, users would not get substitutes for ‘guix pull’. * guix/git.scm (delete-untracked-files): New procedure. (switch-to-ref): Use it. * tests/git.scm ("update-cached-checkout, untracked files removed"): New test. Co-authored-by: Ricardo Wurmus <rekado@elephly.net> Change-Id: Iccbe644ade396ad27a037db7e0ef1c2a68ef91ce
* guix build: Take ‘--system’ into account together with ‘-S’.Ludovic Courtès2024-07-18
| | | | | | | | * guix/scripts/build.scm (options->derivations)[compute-derivation]: Pass ‘system’ to ‘package-source-derivation’. * tests/guix-build.sh: Test ‘-S’ together with ‘-s’. Change-Id: If35f116285dd9caaf939221163ad0ba831eea993
* pack: Create /tmp in Apptainer images.Lars Bilke2024-07-10
| | | | | | | | | | | | Related to <https://bugs.gnu.org/37161> and <https://git.savannah.gnu.org/cgit/guix.git/commit/?id=7979a287f8eb84cbbfa44629951572408939a756>. * guix/scripts/pack.scm (squashfs-image)[build]: Add /tmp to the set of directories created. * tests/pack.scm ("squashfs-image + localstatedir"): Check for /tmp. Change-Id: I576aaa6ba8cb8478acf4c3144d492ae5caf411ca Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* tests: Adjust ‘guix system’ test for EFI bootloader.Ludovic Courtès2024-06-13
| | | | | | | | | | | | | | This is a followup to e5078ff3210f4a9863b641a60430b2cb3c9c15ee, which broke this test: $ guix system disk-image -n gnu/system/examples/desktop.tmpl guix system: warning: 'disk-image' is deprecated: use 'image' instead guix system: error: EFI bootloader required with GPT partitioning * tests/guix-system.sh: Use ‘guix system image’ instead of ‘guix system disk-image’. Pass ‘-t efi-raw’ for ‘desktop.tmpl’. Change-Id: I6877085ab33d9e8b471315b806fed22a7d1241a3
* tests: Fix ‘beautify-description’ test.Ludovic Courtès2024-06-13
| | | | | | | | | This is a followup to 510ad5d93c0ba6208aa42815863853ec522352e6. * tests/import-utils.scm ("beautify-description: transform fragment into sentence"): Fix. Change-Id: I331cb38a3460a024a789846772a074ba0b6c857c
* import: utils: End package descriptions with period.Herman Rimm2024-06-03
| | | | | | | | | | | | | | | | * guix/import/utils.scm (beautify-description): Append period to last words which do not end with one. * tests/crate.scm: Append period to descriptions. * tests/elm.scm: Append period to descriptions. * tests/gem.scm: Append period to descriptions. * tests/hexpm.scm: Append period to descriptions. * tests/minetest.scm: Append period to descriptions. * tests/pypi.scm: Append period to descriptions. * tests/import-utils.scm ("beautify-description: transform fragment into sentence"): Likewise. Change-Id: I0b12c4d94cb26cf62fab5b7cbf7885e66ff6c10f Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* import: crate: Include a main verb in crate importer descriptions.Herman Rimm2024-06-03
| | | | | | | | | * guix/import/crate.scm (make-crate-sexp): Start description with 'This package provides '. * tests/crate.scm: Set descriptions to "This package provides summary". Signed-off-by: Ludovic Courtès <ludo@gnu.org> Change-Id: If0f47a68f986b9e878fd5caa3e365c5ad863089a
* style: Fix conversion of ‘unquote-splicing’ by ‘-S arguments’.Ludovic Courtès2024-06-03
| | | | | | | | | * guix/scripts/style.scm (unquote->ungexp): Add missing comma for ‘ungexp-splicing’. * tests/style.scm ("gexpify arguments, substitute-keyword-arguments + unquote-splicing"): New test. Change-Id: I17dcdd9b4812d54ddba1137e369360706b137bb4
* deduplication: Detect holes and create sparse files.Ludovic Courtès2024-05-25
| | | | | | | | | | | | | | | | | This reduces disk usage of sparse files that are substituted such as Guile object files (ELF files). As of Guile 3.0.9, .go files are sparse due to ELF sections being aligned on 64 KiB boundaries. This reduces disk usage reported by “du -sh” by 9% for the ‘guix’ package, by 23% for ‘guile’, and by 35% for ‘guile-git’. * guix/store/deduplication.scm (hole-size, find-holes): New procedures. (tee)[seekable?]: New variable. [read!]: Add case when SEEKABLE? is true. * tests/store-deduplication.scm (cartesian-product): New procedure. ("copy-file/deduplicate, sparse files (holes: ~a/~a/~a)"): New test set. Change-Id: Iad2ab7830dcb1220e2026f4a127a6c718afa8964
* import: Add binary npm importer.Jelle Licht2024-05-19
| | | | | | | | | | | | | | * guix/scripts/import.scm: (importers): Add "npm-binary". * doc/guix.texi (Invoking guix import): Document npm-binary importer. * guix/import/npm-binary.scm: New file. * guix/scripts/import/npm-binary.scm: New file. * tests/npm-binary.scm: New file. * Makefile.am: Add them. Co-authored-by: Timothy Sample <samplet@ngyro.com> Co-authored-by: Lars-Dominik Braun <lars@6xq.net> Change-Id: I98a45068cf5b9c42790664cc743feaa7ac76f807
* tests: Skip ‘terminal-string-width’ test on encodings other than UTF-8.Ludovic Courtès2024-05-13
| | | | | | | | * tests/syscalls.scm ("terminal-string-width Japanese"): Skip when the encoding of (current-output-port) is not UTF-8. Reported-by: Ashvith Shetty <ashvithshetty10@gmail.com> Change-Id: Ic284dd088d6b148d6fcb457290a28fdb0838b83d
* tests: Remove interference from the user’s Git config.Ludovic Courtès2024-05-13
| | | | | | | | * tests/guix-download.sh: Set ‘GIT_CONFIG_GLOBAL’ and ‘GIT_CONFIG_SYSTEM’. Reported-by: Ashvith Shetty <ashvithshetty10@gmail.com> Change-Id: Ibe14d23db2e8af58b85c78248997c6dde78e11e0
* git authenticate: Record introduction and keyring in ‘.git/config’.Ludovic Courtès2024-05-01
| | | | | | | | | | | | | | * guix/scripts/git/authenticate.scm (%default-options): Remove ‘keyring-reference’. (config-value, configured-introduction, configured-keyring-reference) (configured?, record-configuration, current-branch): New procedures. (guix-git-authenticate)[missing-arguments]: New procedure. Use ‘configured-introduction’ when zero arguments are given. Use ‘configured-keyring-reference’ when ‘-k’ is not passed. Add call to ‘record-configuration’. * doc/guix.texi (Invoking guix git authenticate): Document it. Change-Id: I66e111a83f50407b52da71662629947f83a78bbc
* utils: Don’t re-export ‘call-with-temporary-output-file’.Ludovic Courtès2024-04-15
| | | | | | | | | | | | * guix/utils.scm: Remove re-export of ‘call-with-temporary-output-file’. Autoload a number of modules. * guix/download.scm, guix/import/hackage.scm, guix/import/hexpm.scm, guix/import/opam.scm, guix/import/pypi.scm, tests/cpio.scm, tests/egg.scm, tests/opam.scm, tests/publish.scm, tests/store-database.scm, tests/utils.scm: Adjust imports accordingly. Change-Id: I3f5e94631397996a30be2ea4ff8b50a3371e8ee7
* gexp: Add #:guile parameter to ‘gexp->file’ and ‘scheme-file’.Ludovic Courtès2024-04-08
| | | | | | | | | | | | | | | | | | | | | | | | | | This brings ‘gexp->file’ in line with its documentation and mirrors what’s done for ‘gexp->script’ and ‘program-file’. Fixes <https://issues.guix.gnu.org/69401>. * guix/gexp.scm (gexp->file): Add #:guile, as was already documented. (<scheme-file>)[guile]: New field. (scheme-file): Add #:guile. (scheme-file-compiler): Honor ‘guile’ field. * tests/gexp.scm ("gexp->file") ("gexp->file + file-append", "gexp->file + #:splice?") ("gexp->file, cross-compilation") ("gexp->file, cross-compilation with default target") Add #:guile to ‘gexp->file’ calls. ("gexp-modules deletes duplicates") ("gexp->derivation & with-imported-module & computed module") ("gexp->derivation & with-extensions", "scheme-file"): Likewise for ‘scheme-file’ calls. Change-Id: I47536063d5e411e561ec321e535267e92dd06044 Reported-by: Efraim Flashner <efraim@flashner.co.il> Change-Id: I58d653c7fbe65c665bafcbd332ac9b264ddeab64
* store: database: Rename a couple of procedures.Christopher Baines2024-04-03
| | | | | | | | | | These names should be more descriptive. * guix/store/database.scm (path-id): Rename to select-valid-path-id. (sqlite-register): Rename to register-valid-path. (register-items): Update accordingly. Change-Id: I6d4a14d4cde9d71ab34d6ffdbfbfde51b2c0e1db
* time-machine: Allow time travels to v0.16.0.Ludovic Courtès2024-03-11
| | | | | | | | * guix/scripts/time-machine.scm (%oldest-possible-commit): Change to v0.16.0. * tests/guix-time-machine.sh: Adjust comment. Change-Id: I9ad82bd45fee0d172b5348a8ae16e990338a3a97
* swh: ‘lookup-origin-revision’ handles branches pointing to directories.Ludovic Courtès2024-03-09
| | | | | | | | | | | | Fixes <https://issues.guix.gnu.org/69070>. * guix/swh.scm (branch-target): Add clause for 'directory and 'alias. (lookup-origin-revision): Iterate over all the visits of ORIGIN instead of just the first one. Handle the case where ‘branch-target’ returns something other than a release or revision. * tests/swh.scm ("lookup-origin-revision"): New test. Change-Id: I7f636739a719908763bca1d3e7376341dd62e816
* lint: archival: Trigger “Save Code Now” for VCSes other than Git.Ludovic Courtès2024-03-09
| | | | | | | | | | | | | | | Until now, ‘save-origin’ would be called only when given a <git-reference>. With this change, ‘save-origin’ gets called for other version control systems as well. * guix/lint.scm (swh-response->warning): New procedure, formerly in ‘check-archival’. (vcs-origin, save-package-source): New procedures. (check-archival)[response->warning]: Remove. Call ‘save-package-source’ in both the Git and the non-Git cases. * tests/lint.scm ("archival: missing svn revision"): New test. Change-Id: I535e4ec89488faf83bfa544d5e4935fa73ef54fb
* utils: Add find-definition-insertion-location procedure.Herman Rimm2024-02-23
| | | | | | | | | * guix/utils.scm (find-definition-insertion-location): Add and export procedure. * tests/utils.scm ("find-definition-insertion-location"): Add test. Change-Id: Ie17e1b4a94790f58518ce121411a38d357f49feb Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* utils: Add insert-expression procedure.Herman Rimm2024-02-23
| | | | | | | | | | * guix/utils.scm (define-module): Use (guix read-print) and export (insert-expression). (insert-expression): Add procedure. * tests/utils.scm ("insert-expression"): Add test. Change-Id: I971a43a78aa6ecaaef33c1a7a0db4b287eb85036 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* lint: archival: Check with ‘lookup-directory-by-nar-hash’.Ludovic Courtès2024-02-12
| | | | | | | | | | | | | | | | | While this method is new and nar-sha256 ExtIDs are currently available only for new visits, it is fundamentally more reliable than the other methods, which is why it comes first. * guix/lint.scm (check-archival)[lookup-by-nar-hash]: New procedure. Call ‘lookup-by-nar-hash’ before the other lookup methods. * tests/lint.scm ("archival: content available") ("archival: content unavailable but disarchive available") ("archival: missing revision") ("archival: revision available"): Add a 404 response corresponding to the ‘lookup-external-id’ request. * tests/lint.scm ("archival: nar-sha256 extid available"): New test. Change-Id: I4a81d6e022a3b72e6484726549d7fbae627f8e73
* swh: Add bindings for the “ExtID” API.Ludovic Courtès2024-02-12
| | | | | | | | | | | | | This interface was deployed at archive.softwareheritage.org a few days ago. Our main use case will be looking up directories by “nar-sha256” hashes. * guix/swh.scm (<external-id>): New JSON-mapped record type. (lookup-external-id, lookup-directory-by-nar-hash): New procedures. * tests/swh.scm (%external-id): New variable. ("lookup-directory-by-nar-hash"): New test. Change-Id: Ib671c7798aeb6f8132ac78f2b06b9285da8e7bd5
* channels: ‘latest-channel-instances’ traverses user-provided channels first.Ludovic Courtès2024-01-31
| | | | | | | | | | | | | | | | | | | | | | | Previously, ‘latest-channel-instances’ would perform a depth-first traversal of channels. Since dependencies specified in ‘.guix-channel’ are usually less specific that those provided by the user, this would lead to the use of instances corresponding to those less specific specs, which in turn might declare dependencies that do not exist for the more specific instances. This commit changes ‘latest-channel-instances’ to perform a breadth-first traversal, thereby giving user-supplied channels higher precedence over dependencies found via ‘.guix-channel’. Fixes <https://issues.guix.gnu.org/68822>. * guix/channels.scm (latest-channel-instances)[ignore?]: Remove. [instance-name, same-named?, more-specific?]: New procedures. Rewrite as a breadth-first traversal using a regular loop. * tests/channels.scm ("latest-channel-instances reads dependencies from most-specific instance"): New test. Change-Id: Iba518145cfd209f04293a56246dbfee3b714650b
* channels: Tweak test.Ludovic Courtès2024-01-31
| | | | | | | * tests/channels.scm ("latest-channel-instances excludes duplicate channel dependencies"): Use ‘equal?’ rather than ‘string=?’ since we can get #f. Change-Id: I437b9d7e23200cf0c98b1593e68b1d355bc2de01
* guix: download: Add support for git repositories.Romain GARBAGE2024-01-22
| | | | | | | | | | | | | | | | | | | | | | | | * guix/scripts/download.scm (git-download-to-store*): Add new variable. (copy-recursively-without-dot-git): New variable. (git-download-to-file): Add new variable. (show-help): Add 'git', 'commit', 'branch' and 'recursive'options help message. (%default-options): Add default value for 'git-reference' and 'recursive' options. (%options): Add 'git', 'commit', 'branch' and 'recursive' command line options. (guix-download) [hash]: Compute hash with 'file-hash*' instead of 'port-hash' from (gcrypt hash) module. This allows us to compute hashes for directories. * doc/guix.texi (Invoking guix-download): Add @item entries for `git', `commit', `branch' and `recursive' options. Add a paragraph in the introduction. * tests/guix-download.sh: New tests. Move variables and trap definition to the top of the file. Change-Id: Ic2c428dca4cfcb0d4714ed361a4c46609339140a Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
* guix: import: Optionally import necessary yanked crates.David Elsing2024-01-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/guix.texi (Invoking guix import): Mention '--allow-yanked'. * guix/import/crate.scm (make-crate-sexp): Add yanked? argument. For yanked packages, use the full version suffixed by "-yanked" for generated variable names and add a comment and package property. (crate->guix-package): Add allow-yanked? argument and if it is set to #t, allow importing yanked crates if no other version matching the requirements exists. [find-package-version]: Packages previously marked as yanked are only included if allow-yanked? is #t and then take the lowest priority. [find-crate-version]: If allow-yanked? is #t, also consider yanked versions with the lowest priority. [dependency-name+version]: Rename to ... [dependency-name+version+yanked] ...this. Honor allow-yanked? and choose between an existing package and an upstream package. Exit with an error message if no version fulfilling the requirement is found. [version*]: Exit with an error message if the crate version is not found. (cargo-recursive-import): Add allow-yanked? argument. * guix/read-print.scm: Export <comment>. * guix/scripts/import/crate.scm: Add "--allow-yanked". * tests/crate.scm: Add test 'crate-recursive-import-only-yanked-available'. [sort-map-dependencies]: Adjust accordingly. [remove-yanked-info]: New variable. Adjust test 'crate-recursive-import-honors-existing-packages'. (test-bar-dependencies): Add yanked dev-dependencies. (test-leaf-bob-crate): Add yanked versions. (rust-leaf-bob-3.0.2-yanked): New variable. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Change-Id: I175d89b39774e6b57dcd1f05bf68718d23866bb7
* tests: Mock find-packages-by-name in crate importer test.David Elsing2024-01-09
| | | | | | | | | | | | | | | | * tests/crate.scm: Import only sha256 from (gcrypt hash) as gcrypt-sha256 to prevent a name collision. Rename test 'cargo-recursive-import' to 'crate-recursive-import' and 'cargo-recursive-import-hoors-existing-packages' to 'crate-recursive-import-honors-existing-packages'. Mock find-packages-by-name from (gnu packages). Adjust test to import fake 'bar' crate instead of doctool. (test-bar-crate): New variable. (test-bar-dependencies): New variable. (test-root-crate): Adjust sha256 -> gcrypt-sha256. (test-doctool-crate,test-doctool-dependencies): Remove variables. (rust-leaf-bob-3): New variable. Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
* import: crate: Optionally import dev-dependencies recursively.David Elsing2024-01-09
| | | | | | | | | | | | | | | | | | | If --recursive-dev-dependencies is specified, development dependencies are also included for all recursively imported packages. * doc/guix.texi (Invoking guix import): Mention --recursive-dev-dependencies. * guix/import/crate.scm (crate-recursive-import): Add recursive-dev-dependencies? argument. * guix/scripts/import/crate.scm (show-help, guix-import-crate): Add "--recursive-dev-dependencies". * tests/crate.scm: Test both #f and #t for #:recursive-dev-dependencies? in the 'cargo-recursive-import' test. (test-root-dependencies): Add intermediate-c as dev-dependency. (test-intermediate-c-crate, test-intermediate-c-dependencies): New variables. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Change-Id: Iae89794681155d77f128733120e60f03bc297717
* guix: pack: Build layered images.Oleg Pykhalov2024-01-08
| | | | | | | | | * guix/scripts/pack.scm (docker-image, guix-pack, %default-options, %docker-format-options, show-docker-format-options/detailed): Handle '--max-layers' option. * doc/guix.texi (Invoking guix pack): Document this. Change-Id: I90660b2421fcdde891f003469fe2e2edaac7da41
* gexp: #:references-graphs accepts and honors <gexp-input> records.Ludovic Courtès2023-12-22
| | | | | | | | | | | * guix/gexp.scm (lower-reference-graphs)[tuple->gexp-input]: Add ‘gexp-input?’ case. (gexp->derivation): Update docstring. * doc/guix.texi (G-Expressions): Adjust accordingly. * tests/gexp.scm ("references-file, non-default output"): New test. Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: I595cb75da0867ab8ab44552887dc06ed1d23315e
* gexp: Add compiler for <gexp-input>.Ludovic Courtès2023-12-22
| | | | | | | | | | * guix/gexp.scm (gexp-input-compiler): New procedure. * tests/gexp.scm ("gexp references non-existent output") ("gexp-input, as first-class input"): New tests. * doc/guix.texi (G-Expressions): Document it. Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: I95b58d6e4d77a54364026b4324fbb00125a9402e
* guix: import: Add composer importer.Nicolas Graves2023-12-18
| | | | | | | | | | | | | | * guix/import/composer.scm: New file. * guix/scripts/import/composer.scm: New file. * guix/tests/composer.scm: New file. * Makefile.am: Add them. * guix/scripts/import.scm: Add composer importer. * doc/guix.texi (Invoking guix import): Mention it. Change-Id: I44a89b8cc80ef5b4a3cd15e8fbba4a18c1cea0b1 Co-authored-by: Julien Lepiller <julien@lepiller.eu> Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* guix: import: Report go version for go importer.Efraim Flashner2023-12-16
| | | | | | | | | * guix/import/go.scm (go-package, go.mod-go-version): New procedures. (go-module->guix-package): Add the #:go keyword in the generated package definition if the required go is newer than the default go. * tests/go.scm (mock-http-get): Use gexps for package arguments. Change-Id: I8d005740a442330ac307a40a53764c803ceffc4f
* daemon: Implement ‘substitute-urls’ RPC.Ludovic Courtès2023-12-11
| | | | | | | | | | | | | | * nix/libstore/worker-protocol.hh (PROTOCOL_VERSION): Bump. (WorkerOp): Add ‘wopSubstituteURLs’. * nix/nix-daemon/nix-daemon.cc (performOp): Implement it. * guix/store.scm (%protocol-version): Bump. (operation-id): Add ‘substitute-urls’. (substitute-urls): New procedure. * tests/store.scm ("substitute-urls, default") ("substitute-urls, client-specified URLs") ("substitute-urls, disabled"): New tests. Change-Id: I2c0119500c3a1eecfa5ebf32463ffb0f173161de
* guix: Add target-avr?.Jean-Pierre De Jesus DIAZ2023-12-11
| | | | | | | | * guix/utils.scm (target-avr?): New procedure. * tests/utils.scm: Add tests for target-avr? procedure. Change-Id: Iaa0fa97a2b6bc45d45f907f43157f1548a0ba3fa Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
* shell: ‘--development’ honors ‘--system’.Ludovic Courtès2023-12-06
| | | | | | | | | | | | | | Fixes a bug whereby ‘package->development-manifest’ would run with the wrong system in mind, leading to errors like this: $ guix shell -s i586-gnu -D shepherd --no-grafts guix shell: error: package linux-libre-headers@5.15.49 does not support i586-gnu * guix/scripts/environment.scm (options/resolve-packages): Define ‘system’ and pass it to ‘package->development-manifest’.’ * tests/guix-shell.sh: Test it. Change-Id: I95c471c1918913ab80dec7d3ca64fe38583cce78
* substitute: Do not exit when failing to find a nar.Ludovic Courtès2023-12-04
| | | | | | | | | | | Fixes <https://issues.guix.gnu.org/67575>. * guix/scripts/substitute.scm (process-substitution/fallback): Use ‘report-error’ instead of ‘leave’. Write status line to PORT. * tests/substitute.scm ("substitute, narinfo is available but nar is missing"): Adjust accordingly. Change-Id: Ic7297dbd563c007111ec2167c8d52505a07d4822
* guix: import: Fix parsing Cabal files that import many stanzasSaku Laesvuori2023-12-03
| | | | | | | | | * guix/import/cabal.scm (eval-cabal)[eval]: Split imports to a normalized list before mapping over it. * tests/hackage.scm: Test it. Change-Id: I39ece019251b6a23a937c8562d2d4a545a6bc7df Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
* guix: import: Parse cabal layout blocks correctlySaku Laesvuori2023-12-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | Cabal consideres lines to be part of a layout block if they are indented at least one space more than the field line the block belongs to. Previously Guix considered lines to be a part of the block if they were indented at least as much as the first line in it. This also makes a workaround that enabled if statements to have multiple elses redundant and removes it. Fixes: https://issues.guix.gnu.org/35743 * guix/import/cabal.scm (current-indentation*): Renamed from current-indentation. (previous-indentation, current-indentation): New variables. (make-cabal-parser): Remove outdated comment. [open]: Use previous-indentation + 1 instead of current-indentation. [elif-else]: Split to elif and else to allow only one ELSE in an if statement. (read-cabal)[parameterize]: Use current-indentation* and previous-indentation. * tests/hackage.scm (hackage->guix-package test mixed layout): Expect to pass. Change-Id: I3a1495b1588a022fabbfe8dad9f3231e578af4f3 Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
* gnu: Use ‘libc-utf8-locales-for-target’.Janneke Nieuwenhuizen2023-12-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * guix/packages.scm (%standard-patch-inputs): Use ‘libc-utf8-locales-for-target’ instead of ‘glibc-utf8-locales’. * guix/self.scm (%packages): Likewise. * gnu/home/services/ssh.scm (file-join): Likewise * gnu/installer.scm (build-compiled-file): Likewise. * gnu/packages/chromium.scm (ungoogled-chromium/wayland): Likewise. * gnu/packages/gnome.scm (libgweather4, tracker): Likewise. * gnu/packages/javascript.scm (js-mathjax): Likewise. * gnu/packages/package-management.scm (guix, flatpak): Likewise. * gnu/packages/raspberry-pi.scm (raspi-arm64-chainloader): Likewise. * gnu/packages/suckless.scm (svkbd): Likewise. * gnu/services.scm (cleanup-gexp): Likewise. * gnu/services/base.scm (guix-publish-shepherd-service): Likewise. * gnu/services/guix.scm (guix-build-coordinator-shepherd-services) (guix-build-coordinator-agent-shepherd-services): Likewise. * gnu/services/guix.scm (guix-build-coordinator-queue-builds-shepherd-services): (guix-data-service-shepherd-services) (nar-herder-shepherd-services) (bffe-shepherd-services): Likewise. * gnu/services/web.scm (anonip-shepherd-service) (mumi-shepherd-services): Likewise. * gnu/system/image.scm (system-disk-image, system-iso9660-image) (system-docker-image, system-tarball-image): Likewise. * gnu/system/install.scm (%installation-services): Likewise. * guix/profiles.scm (info-dir-file): Likewise. (ca-certificate-bundle, profile-derivation): Likewise. * guix/scripts/pack.scm (store-database, set-utf8-locale): Likewise. * tests/pack.scm: Likewise. * tests/profiles.scm ("profile-derivation, cross-compilation"): Likewise. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Co-authored-by: Christopher Baines <mail@cbaines.net> Change-Id: I24239f427bcc930c29d2ba5d00dc615960a6c374