summaryrefslogtreecommitdiff
path: root/guix/packages.scm
AgeCommit message (Collapse)Author
2021-01-26build-systems/gnu: Allow unpacking/repacking more kind of files.Maxim Cournoyer
Before this change, only plain directories, tar or zip archives were supported as the source of a package for the GNU build system; anything else would cause the unpack phase to fail. Origins relying on snippets would suffer from the same problem. This change adds the support to use files of the following extensions: .gz, .Z, .bz2, .lz, and .xz, even when they are not tarballs. Files of unknown extensions are treated as uncompressed files and supported as well. * guix/packages.scm (patch-and-repack): Only add the compressor utility to the PATH when the file is compressed. Bind more inputs in the mlet, and use them for decompressing single files. Adjust the decompression and compression routines. [decompression-type]: Remove nested variable. * guix/build/utils.scm (compressor, tarball?): New procedures. Move %xz-parallel-args to the new 'compression helpers' section. * tests/packages.scm: Add tests. Add missing copyright year for Jan. * guix/build/gnu-build-system.scm (first-subdirectory): Return #f when no sub-directory was found. (unpack): Support more file types, including uncompressed plain files.
2021-01-18packages: 'patch-and-repack' returns a directory when given a directory.Ludovic Courtès
Previously, 'patch-and-repack' would always create a tar.xz archive as a result, even if the input was a directory (a checkout). This change reduces gratuitous CPU and storage overhead. * guix/packages.scm (patch-and-repack)[tarxz-name]: Remove 'checkout?' case. [build](repack): New procedure, with "tar" invocation formerly at the top level. If SOURCE is a directory, call 'copy-recursively'; otherwise, call 'repack'. Change NAME to ORIGINAL-FILE-NAME when it matches 'checkout?'.
2021-01-10packages: Fix 'base32' used before definition warning.Maxim Cournoyer
Before this change, compiling the module would emit the following message: "guix/packages.scm:213:25: warning: macro `base32' used before definition". * guix/packages.scm (define-compile-time-decoder) (base32, base64): Move definitions to the top of the module.
2020-11-29Merge remote-tracking branch 'origin/master' into core-updatesChristopher Baines
2020-11-25packages: Ignore return value of origin snippets.Ludovic Courtès
* guix/packages.scm (patch-and-repack): Ignore return value of SNIPPET and remove warning about non #t return value.
2020-10-20packages: Better preserve object identity when rewriting.Ludovic Courtès
Fixes a bug whereby the presence of propagated inputs could lead to two non-eq? but actually equal packages in a bag's inputs. The problem would manifest itself when running, for instance: guix build inkscape -d --with-graft=glib=glib-networking --no-grafts The resulting derivation would differ due from that without '--with-graft'. This was due to the fact that glib propagates libffi; this instance of libffi was not rewritten even though other instances in the graph were rewritten. Thus, glib would end up with two non-eq? libffi instances, which in turn would lead to duplicate entries in its '%build-inputs' variable. Fixes <https://bugs.gnu.org/43890>. * guix/packages.scm (package-mapping)[rewrite]: Remove call to 'cut?' and call 'replace' unconditionally. [replace]: Add 'cut?' case. * tests/guix-build.sh: Add test combining '--no-grafts' and '--with-graft'. * tests/packages.scm ("package-input-rewriting/spec, identity") ("package-input-rewriting, identity"): New tests.
2020-10-19Merge branch 'staging'Maxim Cournoyer
Conflicts: gnu/packages/admin.scm gnu/packages/commencement.scm gnu/packages/gdb.scm gnu/packages/llvm.scm gnu/packages/package-management.scm gnu/packages/tls.scm
2020-10-15packages: Delete duplicate inputs when lowering bags.Ludovic Courtès
This is a followup to 18fa433bf5c420868562b9f4b017c5c97251a44b and <https://issues.guix.gnu.org/43508>. * guix/packages.scm (derivation=?, input=?): New procedures. (bag->derivation, bag->cross-derivation): Add calls to 'delete-duplicates'. * tests/packages.scm ("package-derivation, inputs deduplicated"): New test.
2020-10-12packages: Add 'package-with-c-toolchain'.Ludovic Courtès
* guix/build-system.scm (build-system-with-c-toolchain): New procedure. * guix/packages.scm (package-with-c-toolchain): New procedure. * tests/packages.scm ("package-with-c-toolchain"): New test. * doc/guix.texi (package Reference): Document 'package-with-c-toolchain'. (Build Systems): Mention it.
2020-10-08packages, scripts, utils: Enable multi-threaded xz compression.Maxim Cournoyer
xz compression is slow; using the multi-thread mode of xz can make it more than 6 times faster, for example when compressing the large linux-libre source. * guix/build/utils.scm (%xz-parallel-args): New procedure. * guix/packages.scm (patch-and-repack): Specify the required above xz arguments by setting the XZ_DEFAULTS environment variable. * guix/scripts/pack.scm (%compressors, bootstrap-xz): Modify the commands Gexps so they do not need to be quoted. This allows lazily evaluating the arguments on the builder's side. Specify the required xz arguments. (self-contained-tarball): Do not quote the compressor command value. (docker-image): Likewise. * guix/utils.scm (decompressed-port, compressed-port) (compressed-output-port): Specify the required above xz arguments.
2020-09-27packages: 'package-input-rewriting' has a #:deep? parameter.Ludovic Courtès
* guix/packages.scm (package-input-rewriting): Add #:deep? and pass it to 'package-mapping'. [replacement-property]: New variable. [rewrite]: Check it. [cut?]: New procedure. * tests/packages.scm ("package-input-rewriting"): Pass #:deep? #f and ensure implicit inputs were not rewritten. Avoid 'eq?' comparisons. ("package-input-rewriting, deep"): New test. * gnu/packages/guile.scm (package-for-guile-2.0, package-for-guile-3.0): Pass #:deep? #f.
2020-09-27packages: 'package-mapping' correctly recurses into 'replacement'.Ludovic Courtès
Previously, something like: guix build glib --with-graft=glibc=glibc@2.29 would produce a result showing that rewriting rules were not applied to libx11@1.6.A (a replacement). * guix/packages.scm (package-mapping): Call REPLACE instead of PROC to 'replacement'. * tests/packages.scm ("package-input-rewriting/spec, graft"): New test.
2020-09-27packages: 'package-input-rewriting/spec' can rewrite implicit dependencies.Ludovic Courtès
With this change, '--with-input', '--with-graft', etc. also apply to implicit dependencies. Thus, it's now possible to do: guix build python-itsdangerous --with-input=python-wrapper=python@2 or: guix build hello --with-graft=glibc=glibc@2.29 Additionally, before, implicit inputs were not rewritten, which could lead to duplicates in the output of 'bag-transitive-inputs' (packages that are not 'eq?' but lead to the same derivation). This in turn would lead to unnecessary rebuilds when using '--with-input' & co. This change fixes it by ensuring even implicit inputs are rewritten. Fixes <https://bugs.gnu.org/42156>. * guix/packages.scm (package-input-rewriting/spec): Add #:deep? defaulting to #true, and pass it to 'package-mapping'. [replacement-property]: New variable. [rewrite]: Check that property and set it on the result of PROC. [cut?]: New procedure. * tests/packages.scm ("package-input-rewriting/spec"): Ensure implicit inputs were unchanged. ("package-input-rewriting/spec, partial match"): Pass #:deep? #f. ("package-input-rewriting/spec, deep") ("package-input-rewriting/spec, no duplicates"): New tests. (package/inherit): Move before use. * tests/guix-build.sh: Add tests. * tests/scripts-build.scm ("options->transformation, with-graft"): Compare dependencies by package name or derivation file name. * doc/guix.texi (Defining Packages): Adjust accordingly.
2020-09-27packages: 'package-mapping' can recurse on implicit inputs.Ludovic Courtès
* guix/packages.scm (build-system-with-package-mapping): New procedure. (package-mapping): Add #:deep? and honor it. * tests/packages.scm ("package-mapping"): Compare the direct inputs of the bag of P0 and that of P1. ("package-mapping, deep"): New test.
2020-08-31packages: <content-hash> printer gracefully handle #f values.Ludovic Courtès
Suggested by Robin Green <greenrd@greenrd.org>. * guix/packages.scm (print-content-hash): Gracefully deal with cases with 'content-hash-value' returns #f, as is the case for 'linux-libre'.
2020-07-13packages: Ensure bags are insensitive to '%current-system'.Ludovic Courtès
Fixes <https://bugs.gnu.org/42327>. Reported by Jan Nieuwenhuizen <janneke@gnu.org>. This is a followup to f52fbf7094c9c346d38ad469cc8d92d18387786e. * guix/packages.scm (bag-transitive-inputs, bag-transitive-build-inputs) (bag-transitive-host-inputs, bag-transitive-target-inputs): Parameterize %CURRENT-SYSTEM in addition to %CURRENT-TARGET-SYSTEM. * tests/packages.scm ("package->bag, sensitivity to %current-system"): New test.
2020-06-27packages: Recognize SHA3 and BLAKE2s for 'content-hash'.Ludovic Courtès
* guix/packages.scm (build-content-hash): Add 'sha3-256', 'sha3-512', and 'blake2s-256'. * tests/packages.scm ("package-source-derivation, origin, sha3-512"): New test.
2020-06-11packages: 'package-grafts' returns grafts for all the relevant outputs.Ludovic Courtès
Fixes <https://bugs.gnu.org/41796>. Reported by Jakub Kądziołka <kuba@kadziolka.net>. * guix/packages.scm (input-graft): Add 'output' parameter and honor it. Add OUTPUT to the cache key. (input-cross-graft): Likewise. (fold-bag-dependencies): Operate on inputs instead of nodes. Turn VISITED into a vhash instead of a set. Pass PROC HEAD and OUTPUT instead of just HEAD. (bag-grafts): Adjust accordingly. * tests/packages.scm ("package-grafts, dependency on several outputs"): New test.
2020-06-06packages: Make 'bag-grafts' insensitive to '%current-target-system'.Ludovic Courtès
Fixes <https://bugs.gnu.org/41713>. Reported by Mathieu Othacehe. * guix/packages.scm (bag-grafts): Wrap 'fold-bag-dependencies' calls in 'parameterize'. * tests/packages.scm ("package->bag, sensitivity to %current-target-system"): New test.
2020-05-22packages: Introduce <content-hash> and use it in <origin>.Ludovic Courtès
* guix/packages.scm (<content-hash>): New record type. (define-content-hash-constructor, build-content-hash) (content-hash): New macros. (print-content-hash): New procedure. (<origin>): Rename constructor to '%origin'. [sha256]: Remove field. [hash]: New field. Adjust users. (origin-compatibility-helper, origin): New macros. (origin-sha256): New deprecated procedure. (origin->derivation): Adjust accordingly. * tests/packages.scm ("package-source-derivation, origin, sha512"): New test. * guix/tests.scm: Hide (gcrypt hash) 'sha256' for proper syntax matching. * tests/challenge.scm: Add #:prefix for (gcrypt hash) and adjust users. * tests/derivations.scm: Likewise. * tests/store.scm: Likewise. * tests/graph.scm ("bag DAG, including origins"): Provide 'sha256' field with the right length. * gnu/packages/aspell.scm (aspell-dictionary) (aspell-dict-ca, aspell-dict-it): Use 'hash' and 'content-hash' for proper syntax matching. * gnu/packages/bash.scm (bash-patch): Rename 'sha256' to 'sha256-bv'. * gnu/packages/bootstrap.scm (bootstrap-executable): Rename 'sha256' to 'bv'. * gnu/packages/readline.scm (readline-patch): Likewise. * gnu/packages/virtualization.scm (qemu-patch): Rename 'sha256' to 'sha256-bv'. * guix/import/utils.scm: Hide (gcrypt hash) 'sha256'.
2020-05-22packages: Add 'base64' macro.Ludovic Courtès
* guix/packages.scm (define-compile-time-decoder): New macro. (base32): Redefine in terms of it. (base64): New macro.
2020-05-14packages: Ensure bags are insensitive to '%current-target-system'.Ludovic Courtès
Fixes a bug whereby a bag's transitive dependencies would depend on the global '%current-target-system' value. Partly fixes <https://issues.guix.gnu.org/41182>. * guix/packages.scm (bag-transitive-inputs) (bag-transitive-build-inputs, bag-transitive-target-inputs): Parameterize '%current-target-system'. * tests/packages.scm ("package->bag, sensitivity to %current-target-system"): New test.
2020-04-23Merge branch 'master' into core-updatesMarius Bakke
Conflicts: etc/news.scm gnu/local.mk gnu/packages/bootloaders.scm gnu/packages/linphone.scm gnu/packages/linux.scm gnu/packages/tls.scm gnu/system.scm
2020-04-21packages: Recommend against the use of 'package-file'.Ludovic Courtès
* guix/packages.scm (package-file): Recommend against its use in the docstring. * doc/guix.texi (The Store Monad): Likewise.
2020-04-08Merge branch 'master' into core-updatesMarius Bakke
Conflicts: etc/news.scm gnu/local.mk gnu/packages/check.scm gnu/packages/cross-base.scm gnu/packages/gimp.scm gnu/packages/java.scm gnu/packages/mail.scm gnu/packages/sdl.scm gnu/packages/texinfo.scm gnu/packages/tls.scm gnu/packages/version-control.scm
2020-04-06gnu: Move PACKAGES-WITH-*PATCHES to (guix packages)Carl Dong
* gnu/packages/cross-base.scm (package-with-extra-patches, package-with-patches): Move procedures from here... * guix/packages.scm (package-with-extra-patches, package-with-patches): ...to here, and export.
2020-03-30Merge branch 'master' into core-updatesMarius Bakke
Conflicts: gnu/packages/admin.scm gnu/packages/commencement.scm gnu/packages/guile.scm gnu/packages/linux.scm gnu/packages/package-management.scm gnu/packages/pulseaudio.scm gnu/packages/web.scm
2020-03-29packages: 'package->bag' keys cache by replacement.Ludovic Courtès
* guix/packages.scm (package->bag): When GRAFT? is true, use PACKAGE's replacement as the cache key. Remove GRAFT? from the list of secondary cache keys.
2020-03-29packages: Change 'guile-for-grafts' back to 2.0.Ludovic Courtès
This reverts 2b6fe60599d52b449bbf531cfdc4dbf18a14eb2c, due to reports of segfaults of Guile 3.0.2 during grafting. * guix/packages.scm (guile-for-grafts): Change back to GUILE-2.0.
2020-03-27packages: Use Guile 3.0 for grafts.Ludovic Courtès
* guix/packages.scm (guile-2.0): Rename to... (guile-for-grafts): ... this, and adjust callers. Refer to 'guile-3.0' instead of 'guile-2.0'.
2020-03-27Merge branch 'master' into core-updatesMarius Bakke
Conflicts: gnu/packages/icu4c.scm gnu/packages/man.scm gnu/packages/python-xyz.scm guix/scripts/environment.scm guix/scripts/pack.scm guix/scripts/package.scm guix/scripts/pull.scm guix/store.scm
2020-03-26gnu: bootstrap: Add support for the Hurd.Efraim Flashner
On 3342a1182b15ec031f0ec6f602fd96c1dca3d4b0 gnu: make-bootstrap: Use _IOLBF on Guile 2.0 only. Run ./pre-inst-env guix build --target=i586-pc-gnu bootstrap-tarballs --verbosity=1 Producing /gnu/store/lhca65c997pvic5cfrpm0dasniwqlg2a-bootstrap-tarballs-0 With guix hash -rx /gnu/store/lhca65c997pvic5cfrpm0dasniwqlg2a-bootstrap-tarballs-0 07jnq2by98f2a45k8wd2gj62iazvwfa4z7p3w3id4m1g0fdsvc3b * gnu/packages/bootstrap.scm (%bootstrap-executables): Add entries for the Hurd. (bootstrap-executable-url): Use lilypond url for the Hurd. (bootstrap-guile-url-path): Likewise. (bootstrap-guile-hash): Add entry for the Hurd. (%bootstrap-coreutils&co): Likewise. (%bootstrap-binutils): Likewise. (%bootstrap-glibc): Likewise. (%bootstrap-gcc): Likewise. * guix/packages.scm (%supported-systems): Add i586-gnu. Co-authored-by: Jan Nieuwenhuizen <janneke@gnu.org>
2020-03-22packages: 'package-field-location' handles missing source properties.Ludovic Courtès
This is a followup to f2b24f01f42c1bad3ddffd140194de1aec38a5f8. * guix/packages.scm (package-field-location): Check whether 'source-properties->location' returns #f. This fixes the case where 'source-properties' returns the empty list.
2020-03-21Merge branch 'master' into core-updatesMarius Bakke
2020-03-20packages: 'package-field-location' preserves the original file name.Ludovic Courtès
Fixes <https://bugs.gnu.org/39425>. Reported by Alex ter Weele <alex.ter.weele@gmail.com>. * guix/packages.scm (package-field-location): Remove 'with-fluids' for '%file-port-name-canonicalization'. Change the 'file' field of the resulting location to FILE.
2020-01-17packages: 'patch-and-repack' sets the mtime to 1, not 0.Ludovic Courtès
* guix/packages.scm (patch-and-repack)[build]: Pass "--mtime=@1" instead of "--mtime=@0".
2019-12-19guix: Fix %hurd-systems list.Efraim Flashner
* guix/packages.scm (%hurd-systems): Replace i585-gnu with i586-gnu.
2019-10-20packages: Add "aarch64-linux" to '%hydra-supported-systems'.Ludovic Courtès
* guix/packages.scm (%hydra-supported-systems): Keep "aarch64-linux".
2019-09-17Merge branch 'master' into core-updatesLudovic Courtès
2019-09-10packages: 'package-field-location' really catches 'system-error.Ludovic Courtès
This had been wrong since forever (i.e., 2013). * guix/packages.scm (package-field-location): Catch 'system-error, not 'system.
2019-09-06packages: 'supported-package?' binds '%current-system' for graph traversal.Ludovic Courtès
Previously, (supported-package? coreutils "armhf-linux") with (%current-system) = "x86_64-linux" would return false. That's because 'supported-package?' would traverse the x86_64 dependency graph, which contains 'tcc-boot0', which supports x86 only. Consequently, 'supported-package?' would match only 53 packages for "armhf-linux" when running on x86, as is the case during continuous integration. * guix/packages.scm (package-transitive-supported-systems): Add an optional 'system' parameter. Use 'mlambda' instead of 'mlambdaq' for memoization. (supported-package?): Pass 'system' to 'package-transitive-supported-systems'. * tests/packages.scm ("package-transitive-supported-systems, implicit inputs") ("package-transitive-supported-systems: reduced binary seed, implicit inputs"): Remove calls to 'invalidate-memoization!', which no longer work and were presumably introduced to work around the bug we're fixing (see commit 0db65c168fd6dec57a357735fe130c80feba5460). * tests/packages.scm ("supported-package?"): Rewrite test to use only existing system name since otherwise 'bootstrap-executable' raises an exception. ("supported-package? vs. system-dependent graph"): New test.
2019-08-29Merge branch 'master' into core-updatesMark H Weaver
2019-08-26packages: Apply target triplet in bag-transitive-host-inputs.David Thompson
Fixes a bug where propagated inputs that should be cross-compiled are instead compiled for the host system. * guix/packages.scm (bag-transitive-host-inputs): Call transitive-inputs in the context of the bag's target system triplet.
2019-06-20packages: Retain version in file name when repacking source checkouts.Marius Bakke
Fixes <https://bugs.gnu.org/34066>. * guix/packages.scm (patch-and-repack)<tarxz-name>: If FILE-NAME is a source checkout, reuse the name without the '-checkout' part.
2019-06-17packages: 'patch-and-repack' no longer uses #:deprecation-warnings.Ludovic Courtès
* guix/packages.scm (patch-and-repack): Remove #:deprecation-warnings argument passed to 'gexp->derivation'.
2019-06-17gexp: Remove #:pre-load-modules? parameter.Ludovic Courtès
* guix/gexp.scm (gexp->derivation): Remove #:pre-load-modules?. (compiled-modules): Likewise. Inline the case correspoding to PRE-LOAD-MODULES? = #t. * guix/packages.scm (patch-and-repack): Remove #:pre-load-modules?.
2019-05-01Merge branch 'master' into core-updatesMarius Bakke
2019-04-04gexp: 'compiled-modules' loads modules before compiling them.Ludovic Courtès
This works around <https://bugs.gnu.org/15602> in the context of modules specified with 'with-imported-modules'. * guix/gexp.scm (gexp->derivation): Add #:pre-load-modules? parameter and pass it to 'compiled-modules'. (compiled-modules): Add #:pre-load-modules? parameter and honor it. * guix/packages.scm (patch-and-repack): Pass #:pre-load-modules? to 'gexp->derivation'.
2019-03-30packages: Remove 'maintainers' field.Ludovic Courtès
This field was never used and doesn't match the way we collectively maintain packages. * guix/packages.scm (<package>)[maintainers]: Remove.
2019-03-30packages: Remove 'self-native-input?' field.Ludovic Courtès
This field has become unnecessary with the addition of 'this-package'. * guix/packages.scm (<package>)[self-native-input?]: Remove. (package->bag): Adjust accordingly. * doc/guix.texi (package Reference): Remove 'self-native-input?'.