summaryrefslogtreecommitdiff
path: root/guix/transformations.scm
AgeCommit message (Collapse)Author
2026-01-29transformations: Fix `recursive?' inheritance for `with-git-url'.Maxim Cournoyer
* guix/transformations.scm (transform-package-source-git-url): Use the second value of `package-git-url+recursive?'. * tests/transformations.scm ("options->transformation, with-git-url, recursive? inheritance"): New test. Change-Id: Ifd89bf1b0267f2b080b872cc7b318b9ae3706422
2026-01-25transformations: Add ‘--amd-gpu’ transformation option.Ludovic Courtès
* guix/transformations.scm (split-on-commas): New procedure, moved from… (transform-package-toolchain): … here. (package-amd-gpu-specialization, transform-package-amd-gpu-targets): New procedures. (%transformations, %options): Add ‘amd-gpu’. * tests/transformations.scm ("options->transformations, amd-gpu") ("options->transformations, amd-gpu, not applicable") ("options->transformations, amd-gpu, missing clang-rocm input") ("options->transformations, amd-gpu, wrong GPU"): New tests. * doc/guix.texi (Package Transformation Options): Document it. Change-Id: I56bf0dffbf12bc08cf6318fe56952473b395c303 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #5583 Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2025-08-06gnu: go-1.23: Add aarch64 micro-architecture compiler support.Efraim Flashner
* gnu/packages/golang.scm (%go-1.23-arm64-micro-architectures): New variable. (go-1.23)[compiler-cpu-architectures]: Add aarch64 micro-architectures. * guix/transformations.scm (tuning-compiler): Update the go optimizer to also support GOARM64. Change-Id: I8825f9857e07c1634ea346d5a16ae9550f340e65
2025-05-05transformations: Git source transformations honour RECURSIVE?.Romain GARBAGE
* guix/transformations.scm (package-git-url+recursive?): New variable. (package-git-url): Remove variable. (evaluate-git-replacement-specs): Use package-git-url+recursive?. (transform-package-source-branch, transform-package-source-commit, transform-package-source-git-url): Update according to changes above. * doc/guix.texi (Package Transformation Options): Update documentation. * tests/transformations.scm: Update tests. Add tests for RECURSIVE? inheritance with WITH-COMMIT and WITH-SOURCE. Change-Id: Id6a5e6957a9955c8173b06b3e14f2986c6dfc4bc Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-01-08transformations: ‘package-with-upstream-version’ can preserve archive type.Ludovic Courtès
Fixes a discrepancy for ‘url-fetch’ packages where upstream provides several source tarballs. For example, for ‘xorg-server’, ‘package-with-upstream-version’ would pick the “tar.gz” tarball even though the package definition uses “tar.xz”. It now picks “tar.xz” by default. * guix/transformations.scm (package-with-upstream-version): Add #:preserve-archive-type?. Call ‘preferred-upstream-source’ to honor it. Change-Id: Iefa007aba339d81709faf82b7c52a5a2c7a6aad7
2024-12-12transformations: Add tuning wrapper for gfortran.Romain GARBAGE
guix/transformations.scm (tuning-compiler): Add gfortran to the list of wrapped compilers. Change-Id: Ic7eaa07acbb5ea013af0d515686e961106a6bbbb Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-12-01transformations: Add #:authenticate? to ‘package-with-upstream-version’.Ludovic Courtès
* guix/transformations.scm (upstream-source-without-signatures): New procedures. (package-with-upstream-version): Add #:authenticate? and honor it. Change-Id: Ib86feb765f57bc1b129e813780abc605c43ed97b
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-01transformations: Export ‘package-with-upstream-version’.Ludovic Courtès
* guix/transformations.scm (package-with-upstream-version): Export. Change-Id: I8e09e69e9c32bffc329c97ef1c0258f750181b11
2024-10-22shell: Enable caching when using deterministic package transformations.Ludovic Courtès
Until now, using any package transformation would disable the automatic GC root creation and caching in ‘guix shell’. This change introduces a finer-grain distinction: a command like: guix shell --tune inkscape is now subject to caching, whereas: guix shell --with-latest=inkscape inkscape remains non-cacheable. * guix/transformations.scm (%transformations-with-external-dependencies): New variable. (cacheable-transformation-option-key?): New procedure. * guix/scripts/shell.scm (profile-cached-gc-root): In the ‘transformation-option-key?’ clause, call ‘loop’ when ‘cacheable-transformation-option-key?’ returns true. Change-Id: I847b661dfea20ecf851db2023a5c7ea8c5b5ca7c
2024-06-11transformations: Fix powerpc64le support.Efraim Flashner
* guix/transformations.scm (tuning-compiler): Adjust the wrapper script when building for powerpc* architectures to pass the correct flags. Change-Id: I9d809ac9b707eb8d6afa7b843c95bce29862a752
2024-03-10transformations: Add support for rust.Efraim Flashner
* guix/transformations.scm (tuning-compiler): Add support for rustc. Change-Id: I6db596a586eda648666550cdcadaa5e1704cb79c
2023-12-03transformations: Add support for zig.Ekaitz Zarraga
* guix/transformations.scm (tuning-compiler): Add support for zig. Change-Id: I40bd28071c97c0dd0a907c704072b52b26d2de28 Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2023-09-17transformations: tuned-package: Use target on cross-compile.Jean-Pierre De Jesus DIAZ
* guix/transformations.scm (tuned-package): Use either bag-target if available or bag-system to select the CPU architecture of the package that is going to be tuned. This enables the tuning of cross-compiled packages. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-07-25transformations: Wrap go binary.Efraim Flashner
* guix/transformations.scm (tuning-compiler): Adjust to wrap the go binary with the appropriate environment variable. (build-system-with-tuning-compiler): Remove custom 'set-microarchitecture phase.
2023-07-12transformations: Allow tuning go packages.Efraim Flashner
* guix/transformations.scm (build-system-with-tuning-compiler): When checking if a microarchitecture is supported by the compiler, also check if it is a go compiler which supports that psabi. Add a phase after 'setup-go-environment to set the go microarchitecture.
2023-05-31transformations: Add "--tune" to "--help-transform".Ludovic Courtès
* guix/transformations.scm (show-transformation-options-help/detailed): Add '--tune'.
2023-05-04transformations: Add '--with-configure-flag'.Sarthak Shah
* guix/transformations.scm (transform-package-configure-flag): New procedure. (%transformation-options, %transformation-options) (show-transformation-options-help/detailed): Add it. * tests/transformations.scm ("options->transformation, with-configure-flag"): New test. * doc/guix.texi (Package Transformation Options): Document it. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-01-16transformations: Let users know when '--with-latest' has no effect.Ludovic Courtès
* guix/transformations.scm (package-with-upstream-version): Print a message when VERSION is false and SOURCE has the same version as P.
2023-01-16transformations: Add '--with-version'.Ludovic Courtès
This is a followup to 8aeccc6240ec45f0bc7bed655e0c8149ae4253eb. * guix/transformations.scm (package-with-upstream-version): New procedure. (transform-package-latest)[package-with-latest-upstream]: Remove. Use 'package-with-upstream-version' instead. (transform-package-version): New procedure. (%transformations, %transformation-options) (show-transformation-options-help/detailed): Add '-with-version'. * tests/transformations.scm ("options->transformation, with-version"): New test. * doc/guix.texi (Package Transformation Options): Document '--with-version'. (Defining Package Variants): Mention it.
2022-10-02transformations: Switch to SRFI-71.Ludovic Courtès
* guix/transformations.scm (package-with-source) (evaluate-source-replacement-specs): Use SRFI-71 'let' instead of 'let-values'.
2022-09-29transformations: '--with-source' now operates in depth.Ludovic Courtès
The '--with-source' option is the first one that was implemented, and it's the only one that would operate only on leaf packages rather than traversing the dependency graph. This change makes it consistent with the rest of the transformation options. * guix/transformations.scm (evaluate-source-replacement-specs): New procedure. (transform-package-source): Rewrite using it. * tests/transformations.scm ("options->transformation, with-source, no matches"): Rewrite since we no longer get a warning. ("options->transformation, with-source, in depth"): New test. * doc/guix.texi (Package Transformation Options): Adjust examples.
2022-05-05transformations: Preserve transformation order in package property.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/54942>. Reported by SeerLite <seerlite@nixnet.email>. * guix/transformations.scm (options->transformation) [package-with-transformation-properties]: Add call to 'reverse'. * tests/transformations.scm ("options->transformation, property order"): New test.
2022-03-14transformations: '--tune' prints supported micro-architectures upon error.Ludovic Courtès
* guix/transformations.scm (build-system-with-tuning-compiler): Add &fix-hint condition when asked for an unsupported micro-architecture.
2022-01-11shell: Cache profiles even when using package specs.Ludovic Courtès
This enables profile caching not just when '-m' or '-f' is used, but also when package specs are passed on the command line, as in: guix shell -D guix git It also changes profile cache keys to include the system type, which was previously ignored. * guix/scripts/shell.scm (options-with-caching)[single-file-for-caching]: Remove. Call 'profile-cached-gc-root' instead; adjust to accept two values. (profile-cache-primary-key): New procedure. (profile-cache-key): Remove. (profile-file-cache-key, profile-spec-cache-key): New procedures. (profile-cached-gc-root): Rewrite to include functionality formally in 'single-file-for-caching', but extend to handle package specs. * gnu/packages.scm (cache-is-authoritative?): Export. * guix/transformations.scm (transformation-option-key?): New procedure. * doc/guix.texi (Invoking guix shell): Move '--rebuild-cache' documentation to the bottom, just above '--root'. Explain caching and how these two options relate to that.
2022-01-01transformations: Add '--tune'.Ludovic Courtès
* guix/transformations.scm (tuning-compiler) (tuned-package, tunable-package?, package-tuning) (transform-package-tuning) (build-system-with-tuning-compiler): New procedures. (%transformations): Add 'tune'. (%transformation-options): Add "--tune". * tests/transformations.scm ("options->transformation, tune") ("options->transformations, tune, wrong micro-architecture"): New tests. * doc/guix.texi (Package Transformation Options): Document '--tune'.
2021-09-08transformations: Git tags and 'git describe' style IDs are used as version.Marius Bakke
* guix/transformations.scm (commit->version-string): New procedure. Use git tags and 'git describe' style identifiers directly. (transform-package-source-commit): Adjust accordingly. * tests/transformations.scm ("options->transformation, with-commit, version transformation"): New test. * doc/guix.texi (Package Transformation Options): Mention the 'git describe' style.
2021-08-11transformations: 'with-patch' works on non-origin sources.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/49697>. Reported by Philippe Swartvagher <philippe.swartvagher@inria.fr>. * guix/transformations.scm (patched-source): New procedure. (transform-package-patches)[package-with-extra-patches]: Use it when (package-source p) is not an origin. * tests/transformations.scm ("options->transformation, with-commit + with-patch"): New test.
2021-06-08transformations: '--with-latest' correctly handles already-latest case.Ludovic Courtès
Previously, '--with-latest' would wrongfully print: warning: could not determine latest upstream release of 'xyz' when 'xyz' is already the latest version. This fixes that. * guix/transformations.scm (transform-package-latest): Use 'package-latest-release' instead of 'package-latest-release*'.
2021-01-19transformations: Add '--with-latest'.Ludovic Courtès
* guix/upstream.scm (upstream-source-compiler): New procedure. (%updaters): Set! it. * guix/transformations.scm (transform-package-latest): New procedure. (%transformations): Add 'with-latest'. (%transformation-options, show-transformation-options-help/detailed): Add '--with-latest'. * tests/transformations.scm ("options->transformation, with-latest"): New test. * doc/guix.texi (Package Transformation Options): Document it.
2020-12-27transformations: Add '--with-patch'.Ludovic Courtès
Suggested by Philippe Swartvagher <philippe.swartvagher@inria.fr>. * guix/transformations.scm (transform-package-patches): New procedure. (%transformations): Add it as 'with-patch'. (%transformation-options, show-transformation-options-help/detailed): Add '--with-patch'. * tests/transformations.scm ("options->transformation, with-patch"): New test. * doc/guix.texi (Package Transformation Options): Document it.
2020-11-21transformations: Show '--help-transform' only where applicable.Ludovic Courtès
Fixes <https://bugs.gnu.org/44773>. Reported by Florian Pelz <pelzflorian@pelzflorian.de>. This fixes a regression introduced in 6701f64f7329cdbeda70bcaf38523c9098e5a938. * guix/transformations.scm (%transformation-options): Add "--help-transform". (show-transformation-options-help): Rename to... (show-transformation-options-help/detailed): ... this. (show-transformation-options-help): New public procedure. * guix/scripts/build.scm (show-build-options-help): Remove "--help-transform". (%standard-build-options): Likewise. (show-help): Call 'show-transformation-options-help'. * guix/scripts/environment.scm (show-help): Likewise. * guix/scripts/graph.scm (show-help): Likewise. * guix/scripts/install.scm (show-help): Likewise. * guix/scripts/pack.scm (show-help): Likewise. * guix/scripts/package.scm (show-help): Likewise. * guix/scripts/upgrade.scm (show-help): Likewise.
2020-10-31transformations: Raise '&formatted-message' exceptions instead of 'leave'.Ludovic Courtès
* guix/transformations.scm (evaluate-replacement-specs) (package-git-url, evaluate-git-replacement-specs) (transform-package-source-git-url) (transform-package-toolchain): Use 'raise' and 'formatted-message' instead of 'leave'.
2020-10-31guix build: Move transformation options to (guix transformations).Ludovic Courtès
* guix/transformations.scm: New file. * tests/scripts-build.scm: Rename to... * tests/transformations.scm: ... this. * Makefile.am (MODULES): Add 'guix/transformations.scm'. (SCM_TESTS): Adjust to rename. * guix/scripts/build.scm (numeric-extension?) (tarball-base-name, <downloaded-file>, download-to-store*) (compile-downloaded-file, package-with-source) (transform-package-source, evaluate-replacement-specs) (transform-package-inputs, transform-package-inputs/graft) (%not-equal, package-git-url, evaluate-git-replacement-specs) (transform-package-source-branch, transform-package-source-commit) (transform-package-source-git-url, package-dependents/spec) (package-toolchain-rewriting, transform-package-toolchain) (transform-package-with-debug-info, transform-package-tests) (%transformations, transformation-procedure, %transformation-options) (show-transformation-options-help, options->transformation) (package-transformations): Move to (guix transformations). * guix/scripts/environment.scm: Adjust accordingly. * guix/scripts/graph.scm: Likewise. * guix/scripts/install.scm: Likewise. * guix/scripts/pack.scm: Likewise. * guix/scripts/package.scm: Likewise. * guix/scripts/upgrade.scm: Likewise. * po/guix/POTFILES.in: Add 'guix/transformations.scm'.