summaryrefslogtreecommitdiff
path: root/guix/build
AgeCommit message (Expand)Author
2021-02-01gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH....Using PYTHONPATH as a mean to discover the Python packages had the following issues: 1. It is not versioned, so different versions of Python would clash if installed in a shared profile. 2. It would interfere with the host Python site on foreign distributions, sometimes preventing a a user to login their GDM session (!). 3. It would take precedence over user installed Python packages installed through pip. 4. It would leak into Python virtualenvs, which are supposed to create isolated Python environments. This changes fixes the above issues by making use of a sitecustomize.py module. The newly introduced GUIX_PYTHONPATH environment variable is read from the environment, filtered for the current Python version of the interpreter, and spliced in 'sys.path' just before Python's own site location, which provides the expected behavior. * gnu/packages/aux-files/python/sitecustomize.py: New file. * Makefile.am: Register it. * gnu/packages/python.scm (customize-site) (guix-pythonpath-search-path): New procedures. (python-2.7)[phases]{install-sitecustomize.py}: New phase. [native-inputs]{sitecustomize.py}: New input. [native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH. (python-3.9)[native-search-paths]: Likewise. [phases]{install-sitecustomize}: Override with correct version. [native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH. * gnu/packages/commencement.scm (python-boot0): [phases]{install-sitecustomize}: Likewise. [native-inputs]{sitecustomize.py}: New input. [native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH. * guix/build/python-build-system.scm (site-packages): Do not add a trailing '/'. squash! gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH. Maxim Cournoyer
2021-01-29gnu: texlive-bin: Enable the use of multiple TeX Live trees....Attempting to compose multiple TeX Live trees (such as can happen when using a texlive-union generated package) proved problematic; only the texmf.cnf configuration file from the union would be honored, causing other TeX Live components to be ignored. This change does away with TeX Live unions, instead relying on the default texmf.cnf configuration file provided by the texlive-bin package to honor individual TeX Live trees referred to via the newly introduced GUIX_TEXMF variable, and replacing the texlive-union procedure by texlive-updmap.cfg, to explicit that generating the fonts map configuration is now its sole purpose. * gnu/packages/tex.scm (texlive-bin)[phases]{customize-texmf}: New phase. {postint}: Move the patching of the texmf.cnf file to the new above phase. Patch the updmap.pl script to find its Perl modules. [native-search-paths]: Rename the TEXMF variable to GUIX_TEXMF. Remove the TEXMFCNF variable. * guix/profiles.scm (texlive-configuration): Remove procedure. (%default-profile-hooks)[texlive-configuration]: Unregister hook. (texlive-union): Alias to what has moved to... (texlivke-updmap.cfg): ... here. Update doc. Do not provide a different texmf.cnf configuration. [inherit]: Do not inherit from texlive-base. [build-system]: Switch to the copy-build-system. [arguments]{install-plan}: New argument. [phases]{regenerate-updmap.cfg}: New phase, which keeps only the fonts map generating code from the previous builder code. [inputs]: Remove bash, and move to ... [propagated-inputs]: ... here. [native-inputs]: Remove field, and move the source of the base updmap.cfg file to... [source]: ... here. [synopsis]: Update. [description]: Likewise. [license]: Delete duplicates. Maxim Cournoyer
2021-01-26build-systems/gnu: Allow unpacking/repacking more kind of files....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. Maxim Cournoyer
2021-01-26utils: Add NIX_STORE_DIR as a candidate for the value of the store directory....On the daemon side, nixStore gets set to the environment variable NIX_STORE_DIR, else the environment variable NIX_STORE else the compile time macro NIX_STORE_DIR (see the Settings::processEnvironment method in nix/libstore/globals.cc). When creating a build environment, it sets NIX_STORE with the value computed as described above. Hence, it's safer to look for both NIX_STORE_DIR and NIX_STORE in (guix build utils), so that it works in any context (build context or external context). * guix/build/utils.scm (%store-directory): Consider both NIX_STORE_DIR and NIX_STORE as environment variables. Maxim Cournoyer
2021-01-15build-system/gnu: Really ignore the return value of phases....This is a followup to 04baa011e9122205009d6d5f15b8162bf6f3fb8a. * guix/build/gnu-build-system.scm (gnu-build): Really ignore the return value of PROC. Wrap PROC call in 'with-throw-handler'. Add 'end-of-phase' procedure and use it. Ludovic Courtès
2021-01-13Merge branch 'staging' into 'core-updates'....Conflicts: gnu/local.mk gnu/packages/cmake.scm gnu/packages/curl.scm gnu/packages/gl.scm gnu/packages/glib.scm gnu/packages/guile.scm gnu/packages/node.scm gnu/packages/openldap.scm gnu/packages/package-management.scm gnu/packages/python-xyz.scm gnu/packages/python.scm gnu/packages/tls.scm gnu/packages/vpn.scm gnu/packages/xorg.scm Maxim Cournoyer
2021-01-08build-systems/emacs: No longer skip patching of files containing NULs....This follows the fix to <https://bugs.gnu.org/30116>. * guix/build/emacs-build-system.scm (patch-el-files) [file-contains-nul-char]: Remove nested procedure. [el-file]: Do no filter out files containing NUL characters. Maxim Cournoyer
2021-01-08utils: Allow text substitution even in the presence of NUL characters....Fixes <https://issues.guix.gnu.org/30116>. Before this change, the presence of a NUL character on a line meant that the (glibc) regexp engine used by Guile would either 1. stop scanning the string or 2. crash with the error "string contains #\\nul character", depending on the locale used. This change works around this limitation by first replacing the NUL character by an unused Unicode code point, doing the substitution, then reverting the replacement. * guix/build/utils.scm (unused-private-use-code-point) (replace-char): New procedures. (substitute): Make use of the above procedures to work around the NUL character regexp engine limitation. * tests/build-utils.scm: Add tests. Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Mark H Weaver
2020-12-31build-system/cargo: Use argument "--no-track" in "cargo install"....* guix/build/cargo-build-system(install): Add argument "--no-track" in "cargo install". Remove stale hack. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zhu Zihao
2020-12-29build-systems/gnu: Add compressor file extension to symbolic links....Otherwise man and info readers are not able to read their content as they rely on the file extension to detect if compression is used. * guix/build/gnu-build-system.scm (compress-documentation) [retarget-symlink]: Append the compressor file extension to the link file name. Maxim Cournoyer
2020-12-23build-system/gnu: Allow overriding of bootstrap scripts....* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Accept bootstrap-scripts keyword argument and pass it to gnu-build. (%bootstrap-scripts): New variable. * guix/build/gnu-build-system.scm (%bootstrap-scripts): Remove variable. (bootstrap): Remove default value for bootstrap-scripts argument. Ricardo Wurmus
2020-12-15guix system: 'init' copies, resets timestamps, and deduplicates at once....Partly fixes <https://bugs.gnu.org/44760>. * guix/build/store-copy.scm (copy-store-item): New procedure. (populate-store): Use it instead of the inline 'copy-recursively' call. * guix/scripts/system.scm (copy-item): Likewise. Pass #:reset-timestamps? and #:deduplicate? to 'register-path'. Ludovic Courtès
2020-12-15store-copy: 'populate-store' can optionally deduplicate files....Until now deduplication was performed as an additional pass after copying files, which involve re-traversing all the files that had just been copied. * guix/store/deduplication.scm (copy-file/deduplicate): New procedure. * tests/store-deduplication.scm ("copy-file/deduplicate"): New test. * guix/build/store-copy.scm (populate-store): Add #:deduplicate? parameter and honor it. * tests/gexp.scm ("gexp->derivation, store copy"): Pass #:deduplicate? #f to 'populate-store'. * gnu/build/image.scm (initialize-root-partition): Pass #:deduplicate? to 'populate-store'. Pass #:deduplicate? #f to 'register-closure'. * gnu/build/vm.scm (root-partition-initializer): Likewise. * gnu/build/install.scm (populate-single-profile-directory): Pass #:deduplicate? #f to 'populate-store'. * gnu/build/linux-initrd.scm (build-initrd): Likewise. * guix/scripts/pack.scm (self-contained-tarball)[import-module?]: New procedure. [build]: Pass it as an argument to 'source-module-closure'. * guix/scripts/pack.scm (squashfs-image)[build]: Wrap in 'with-extensions'. * gnu/system/linux-initrd.scm (expression->initrd)[import-module?]: New procedure. [builder]: Pass it to 'source-module-closure'. * gnu/system/install.scm (cow-store-service-type)[import-module?]: New procedure. Pass it to 'source-module-closure'. Ludovic Courtès
2020-12-15store-copy: 'populate-store' resets timestamps....Until now, 'populate-store' would reset permissions but not timestamps, so callers would resort to going through an extra directory traversal to reset timestamps. * guix/build/store-copy.scm (reset-permissions): Remove. (copy-recursively): New procedure. (populate-store): Pass #:keep-permissions? to 'copy-recursively'. Remove call to 'reset-permissions'. * tests/gexp.scm ("gexp->derivation, store copy"): In BUILD-DRV, check whether 'populate-store' canonicalizes permissions and timestamps. * gnu/build/image.scm (initialize-root-partition): Pass #:reset-timestamps? #f to 'register-closure'. * gnu/build/vm.scm (root-partition-initializer): Likewise. Ludovic Courtès
2020-12-13utils: 'copy-recursively' keeps symlink mtime when #:keep-mtime? is true....* guix/build/utils.scm (copy-recursively): In the "leaf" procedure, call 'set-file-time' also on symlinks. Ludovic Courtès
2020-12-13utils: 'set-file-time' passes AT_SYMLINK_NOFOLLOW....* guix/build/utils.scm (AT_SYMLINK_NOFOLLOW): New variable. (set-file-time): Use it. Ludovic Courtès
2020-12-13build/python: Fix cythonize check phase....* guix/build/python-build-system.scm (ensure-no-cythonized-files): Use format when printing the warning. Efraim Flashner
2020-12-09build/python: Check for cythonized files....* guix/build/python-build-system.scm (ensure-no-cythonized-files): New procedure. (%standard-phases): Add it. Efraim Flashner
2020-12-07build-system/gnu: Remove the source directory from search paths....Fixes <https://issues.guix.gnu.org/44924>. * guix/build/gnu-build-system.scm (set-paths): Delete 'source' from 'input-directories'. 宋文武
2020-12-03build-system: Add chicken-build-system....* guix/build-system/chicken.scm: New file. * guix/build/chicken-build-system.scm: New file. * Makefile.am: Add them. * doc/guix.texi: Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> raingloom
2020-12-01build-system/gnu: Add 'make-dynamic-linker-cache' phase....* guix/build/gnu-build-system.scm (make-dynamic-linker-cache): New procedure. (%standard-phases): Add it. * guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Add #:make-dynamic-linker-cache? and honor it. Ludovic Courtès
2020-12-01gremlin: Add 'file-needed/recursive'....* guix/build/gremlin.scm (file-needed/recursive): New procedure. * tests/gremlin.scm ("file-needed/recursive"): New test. Ludovic Courtès
2020-12-01gremlin: Fix typo in docstring....* guix/build/gremlin.scm (file-runpath): Fix typo. Ludovic Courtès
2020-11-29Merge remote-tracking branch 'origin/master' into core-updatesChristopher Baines
2020-11-25build-system/texlive: Phases no longer return a Boolean....* guix/build/texlive-build-system.scm (configure): Remove trailing #t. (build): Use 'for-each' instead of 'every'. (install): Remove trailing #t. Ludovic Courtès
2020-11-25build-system/minify: Phases no longer return a Boolean....* guix/build/minify-build-system.scm (minify): Use 'for-each' instead of 'every'. Call 'close-pipe' and call error when it returns non-zero. (build): Use 'for-each' instead of 'every'. (install): Remove trailing #t. Ludovic Courtès
2020-11-25build-system/gnu: Ignore the result of phase procedures....* guix/build/gnu-build-system.scm (set-SOURCE-DATE-EPOCH) (set-paths, install-locale, unpack, bootstrap) (patch-usr-bin-file, patch-source-shebangs) (patch-generated-file-shebangs, check) (patch-shebangs, strip, validate-runpath) (validate-documentation-location, reset-gzip-timestamps) (compress-documentation, delete-info-dir-file) (patch-dot-desktop-files, install-license-files): Remove trailing #t. (gnu-build): Use 'for-each' instead of 'every', ignore the result if each phase procedure, and remove warning about non #t phase results. Ludovic Courtès
2020-11-22Merge branch 'master' into stagingMarius Bakke
2020-11-22build-system/cargo: Set gettext environment variable when available....* guix/build/cargo-build-system.scm (configure): When gettext is available in the build environment set the GETTEXT_SYSTEM variable. * gnu/packages/crates-io.scm (rust-gettext-rs-0.5, rust-gettext-rs-0.4, rust-gettext-sys-0.19)[arguments]: Remove phase to help find system gettext. Efraim Flashner
2020-11-22build-system/cargo: Set libclang environment variable when available....* guix/build/cargo-build-system.scm (configure): When clang is available in the build environment set the LIBCLANG_PATH variable. * gnu/packages/crates-graphics.scm (rust-aom-sys-0.1, uust-dav1d-sys-0.3), * gnu/packages/crates-io.scm (rust-bindgen-0.55, rust-bindgen-0.54, rust-bindgen-0.53, rust-bindgen-0.52, rust-cexpr-0.4, rust-cexpr-0.3, rust-cexpr-0.2, rust-clang-sys-1, rust-clang-sys-0.29, rust-clang-sys-0.26, rust-clang-sys-0.22, rust-clang-sys-0.11, rust-libpijul-0.12, rust-nettle-7, rust-nettle-sys-2, rust-sequoia-openpgp-0.9)[arguments]: Remove phases which set an environment variable to find clang. [inputs]: Rename instances of libclang with clang. Efraim Flashner
2020-11-22build-system/cargo: Set openssl environment variable when available....* guix/build/cargo-build-system.scm (configure): When openssl is available set the OPENSSL_DIR variable to discover its location. * gnu/packages/crates-io.scm (rust-curl-sys-0.4, rust-libgit2-sys-0.10, rust-libpijul-0.12, rust-libssh2-sys-0.2, rust-native-tls-0.2, rust-openssl-sys-0.9, rust-openssl-0.7, rust-trust-dns-rustls-0.6), * gnu/packages/rust-apps.scm (tokei, exa)[arguments]: Remove redundant setenv for openssl. Efraim Flashner
2020-11-20build-system/python: Set PYTHONDONTWRITEBYTECODE....* guix/build/python-build-system.scm (enable-bytecode-determinism): Set PYTHONDONTWRITEBYTECODE. Maxim Cournoyer
2020-11-20build-system/cargo: Do not pass --features to Cargo unless specified....Fixes <https://bugs.gnu.org/44692>. * guix/build/cargo-build-system.scm (build): Default to the empty list for FEATURES. Check whether the list is empty when building the Cargo arguments. Marius Bakke
2020-11-19utils: Add #:keep-permissions? parameter to 'copy-recursively'....* guix/build/utils.scm (copy-recursively): Add #:keep-permissions? and honor it. * doc/guix.texi (Build Utilities): Adjust accordingly. Ludovic Courtès
2020-11-19utils: Add #:copy-file parameter to 'copy-recursively'....* guix/build/utils.scm (copy-recursively): Add #:copy-file and honor it. * doc/guix.texi (Build Utilities): Adjust accordingly. Ludovic Courtès
2020-11-19utils: 'copy-recursively' keeps directory mtime when #:keep-mtime? is true....Fixes <https://bugs.gnu.org/44741>. * guix/build/utils.scm (copy-recursively): Move 'set-file-time' call from 'down' to 'up'. Ludovic Courtès
2020-11-17utils: 'wrap-script' doesn't pass a non-literal string to 'format'....Reported by Vagrant Cascadian <vagrant@debian.org> in <https://bugs.gnu.org/44626>. * guix/build/utils.scm (wrap-script): Use 'display' instead of passing a non-literal string to 'format'. Ludovic Courtès
2020-11-07Merge branch 'master' into staging... Conflicts: gnu/local.mk gnu/packages/gdb.scm gnu/packages/lisp-xyz.scm gnu/packages/web-browsers.scm Marius Bakke
2020-11-06build-system/meson: Do not apply strip-runpath to the "debug" output....Because the debug files are read-only, the strip-runpath procedure would throw an exception when attempting to open them. * guix/build/meson-build-system.scm (shrink-runpath): Remove "debug" from the list of outputs to be processed. Maxim Cournoyer
2020-10-28build/maven: Fix typo....* guix/build/maven/pom: Fix spelling of "with". Vagrant Cascadian
2020-10-28build/maven: fix-pom-dependencies: Fix typo....* guix/build/maven/pom (fix-pom-dependencies): Fix spelling of "overrides". Vagrant Cascadian
2020-10-28build/maven: fix-pom-dependencies: Fix typo....* guix/build/maven/pom (fix-pom-dependencies): Fix spelling of "overridden". Vagrant Cascadian
2020-10-26build/maven-build-system: Return #t in fix-pom-files phase....* guix/build/maven-build-system.scm (fix-pom-files): Return #t. Björn Höfling
2020-10-20build-system/python: Revert changing of phase order....Commit c94a2864d4 moved the 'check' phase back into its original place before the 'install' phase, but such a change would require adapting the definition of many Python packages which have come to rely on such phase ordering. * guix/build/python-build-system.scm (%standard-phases): Move the check phase back after the install phase, and update comment. Maxim Cournoyer
2020-10-19build-system/python: Do not embed timestamps in the .pyc byte code files....Fixes <https://issues.guix.gnu.org/22129>. A previously worked around problem where running the test suite after byte compiling the sources in commit 6bbb37a545912c6bb2513ee08587ee4fe39cc330 could be broken by adding built sources to the PYTHONPATH, as is done for python-matplotlib and many others. This seems to be caused by the timestamps embedded in the sources (mtime), that can somehow change when running the tests, or by picking up the different installed source files mtimes when their location is added to the PYTHONPATH. Since Python 3.7.0, it is possible to produce .pyc byte code files that do not embed any timestamp, which solves the problem in a definitive way. This patch makes use of this new feature. * guix/build/python-build-system.scm (install): Add '--no-compile' parameter to setup.py, and instead invoke the 'compileall' module with the "--invalidation-mode=unchecked-hash" option to byte compile the source files. (%standard-phases): Revert the workaround that moved the check phase after the install phase, as it is no longer necessary. Update comment. Reported-by: Mark H Weaver <mhw@netris.org> Maxim Cournoyer
2020-10-19Merge branch 'staging'...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 Maxim Cournoyer
2020-10-19Merge branch 'master' into stagingMarius Bakke
2020-10-16build: Fix docstring typos....* gnu/build/image.scm (estimate-partition-size): Fix typo in docstring. * guix/build/copy-build-system.scm (install): Likewise. * guix/build/lisp-utils.scm (generate-executable): Likewise. * guix/build/maven/pom.scm (find-parent, fix-pom-dependencies): Likewise. * guix/build-system/cargo.scm (expand-crate-sources): Likewise. Tobias Geerinckx-Rice
2020-10-15build-system/go: Install license files....* guix/build/go-build-system.scm (install-license-files): New procedure. (%standard-phases): Replace inherited 'install-license-files phase. Efraim Flashner
2020-10-13Merge branch 'master' into stagingMarius Bakke