summaryrefslogtreecommitdiff
path: root/guix/build
AgeCommit message (Expand)Author
2021-04-29download: Use Disarchive as a last resort....This is a fixed version of 66b14dccdd0d83c875ce3a8d50ceab8b6f0a3ce2, which was reverted in e74250c3c535b75dd2225a26df51febb7ed94654. * guix/download.scm (%disarchive-mirrors): New variable. (%disarchive-mirror-file): New variable. (built-in-download): Add 'disarchive-mirrors' keyword argument and pass its value along to the 'builtin:download' derivation. (url-fetch): Pass '%disarchive-mirror-file' to 'built-in-download'. * guix/scripts/perform-download.scm (perform-download): Read Disarchive mirrors from the environment and pass them to 'url-fetch'. * guix/build/download.scm (disarchive-fetch/any): New procedure. (url-fetch): Add 'disarchive-mirrors' keyword argument, use it to make a list of URIs, and use the new procedure to fetch the file if all other methods fail. * build-aux/build-self.scm (build-program)[select?]: Exclude '(guix build download)'. * guix/self.scm (compiled-guix)[*core-modules*]: Add 'guile-json' to the list of extensions. Timothy Sample
2021-04-28Revert "download: Use Disarchive as a last resort."...This reverts commit 66b14dccdd0d83c875ce3a8d50ceab8b6f0a3ce2, which broke 'guix pull'. Timothy Sample
2021-04-27download: Use Disarchive as a last resort....* guix/download.scm (%disarchive-mirrors): New variable. (%disarchive-mirror-file): New variable. (built-in-download): Add 'disarchive-mirrors' keyword argument and pass its value along to the 'builtin:download' derivation. (url-fetch): Pass '%disarchive-mirror-file' to 'built-in-download'. * guix/scripts/perform-download.scm (perform-download): Read Disarchive mirrors from the environment and pass them to 'url-fetch'. * guix/build/download.scm (disarchive-fetch/any): New procedure. (url-fetch): Add 'disarchive-mirrors' keyword argument, use it to make a list of URIs, and use the new procedure to fetch the file if all other methods fail. Timothy Sample
2021-04-22utils: wrap-program: Refuse to wrap .X-real files....* guix/build/utils.scm (wrap-program): Error if wrap-program was mistakenly passed a .X-real file. This prevents and forces us to fix cases where a double wrapped ..X-real-real file is created, such as can be seen with: "find /gnu/ -iname '.*-real-real'". Signed-off-by: Ludovic Courtès <ludo@gnu.org> Brendan Tildesley
2021-04-22qt-build-system: Don't double wrap programs....* guix/build/qt-build-system.scm (wrap-all-programs): Excluded wrapped programs from the list of files to wrap if they exist to avoid double wrapping. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Brendan Tildesley
2021-04-22rakudo-build-system: Don't double wrap programs....* guix/build/rakudo-build-system.scm (wrap): Don't return any potential already wrapped-programs in the list-of-files to wrap. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Brendan Tildesley
2021-04-22glib-or-gtk-build-system: Don't double wrap programs....* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): If a package definition was modified to insert an additional wrap phase before glib-or-gtk...'s wrap phase instead of after, glib-or-gtk...'s wrap phase will double wrap the .X-real file from the earlier wrap phase. Filtering out such wrapped programs means these .X-real files should fix this and mean packagers don't have to worry about ensuring their wrap phases are put afterwards. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Brendan Tildesley
2021-04-22utils: Rename 'wrapper?' to 'wrapped-program?'....* guix/build/utils.scm (wrap-program): The wrapper? procedure is incorrectly named as it actually checks to see if prog is the original program that was moved, not the wrapper. * guix/build/python-build-system: (wrap): Use renamed wrapped-program?. * gnu/packages/ebook.scm (calibre)[arguments]: Likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Brendan Tildesley
2021-04-22gremlin: 'elf-dynamic-info' returns a file name rathern than a dynamic entry....* guix/build/gremlin.scm (elf-dynamic-info): Return the dynamic entry value, not the dynamic entry. * tests/gremlin.scm ("elf-dynamic-info-soname"): New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Dion Mendel
2021-04-16Merge remote-tracking branch 'origin/master' into core-updates... Conflicts: gnu/local.mk gnu/packages/boost.scm gnu/packages/chez.scm gnu/packages/compression.scm gnu/packages/crates-io.scm gnu/packages/docbook.scm gnu/packages/engineering.scm gnu/packages/gcc.scm gnu/packages/gl.scm gnu/packages/gtk.scm gnu/packages/nettle.scm gnu/packages/python-check.scm gnu/packages/python-xyz.scm gnu/packages/radio.scm gnu/packages/rust.scm gnu/packages/sqlite.scm guix/build-system/node.scm Efraim Flashner
2021-04-15grafts: Support rewriting UTF-16 and UTF-32 store references....Partially fixes <https://bugs.gnu.org/33848>. * guix/build/graft.scm (replace-store-references): Add support for finding and rewriting UTF-16 and UTF-32 store references. * tests/grafts.scm: Add tests. Mark H Weaver
2021-04-10build-system/qt: Fix wrapping with QTWEBENGINEPROCESS_PATH....This is a follow up commit to 06eb21856f, which added QTWEBENGINEPROCESS_PATH to the list of wrapped variables. Unfortunately it wouldn't be set, as its value is a plain file rather than a directory, and the code only checked for directories. * guix/build/qt-build-system.scm (variables-for-wrapping): Define a file type entry for each variable definition, and use it to determine if we should look for directories versus plain files. Maxim Cournoyer
2021-04-09build-system/gnu: Give #:bootstrap-scripts a valid default....Commit 9cfc93be30c516fd6fa32915c61c06e03f23a011 changed the default value of #:bootstrap-scripts to #f, which is invalid (it must be a list of strings). That default value was used by build systems that inherit phases from 'gnu-build-system', such as 'qt-build-system', which would lead to wrong-type-arg errors in the 'boostrap' phase. Reported by Raghav Gururajan <rg@raghavgururajan.name>. * guix/build/gnu-build-system.scm (%bootstrap-scripts): New variable. (bootstrap): Change #:bootstrap-scripts to default to it. * guix/build-system/gnu.scm (%bootstrap-scripts): Change value. (gnu-build): #:bootstrap-scripts defaults to %bootstrap-scripts. Remove call to 'sexp->gexp'. (gnu-cross-build): Likewise. Ludovic Courtès
2021-04-08build-system/qt: Wrappers set 'QTWEBENGINEPROCESS_PATH' if needed....Suggested by Maxim Cournoyer <maxim.cournoyer@gmail.com>. * guix/build/qt-build-system.scm (variables-for-wrapping): Add "QTWEBENGINEPROCESS_PATH". Ludovic Courtès
2021-04-08build-system/qt: Wrappers only include relevant directories to XDG_DATA_DIRS....Fixes <https://bugs.gnu.org/47569>. Previously the wrapper's XDG_DATA_DIRS would contain any input that had a /share sub-directory, which is usually all build-time inputs. * guix/build/qt-build-system.scm (variables-for-wrapping)[collect-sub-dirs]: Add 'selectors' parameter and honor it. Change caller to handle selectors. Add selectors for /share. Ludovic Courtès
2021-04-02build-system: Rewrite node build system....* guix/build/node-build-system.scm: Rewrite it. * guix/build-system/node.scm: Adjust accordingly. * gnu/packages/node-xyz.scm (node-semver): Likewise. Co-authored-by: Timothy Sample <samplet@ngyro.com> Jelle Licht
2021-03-29build-system/julia: Turn on deprecation warnings....* guix/build/julia-build-system.scm (check): Set option '--depwarn=yes'. Signed-off-by: Ludovic Courtès <ludo@gnu.org> zimoun
2021-03-24Merge remote-tracking branch 'origin/master' into core-updatesEfraim Flashner
2021-03-23syscalls: Fix RNDADDTOENTCNT on powerpc64le-linux....This fixes the failing test add-to-entropy-count in tests/syscalls.scm on powerpc64le-linux. * guix/build/syscalls.scm (RNDADDTOENTCNT): When %host-type starts with "powerpc64le", set this to #x80045201. Otherwise, set it to #x40045201 as before. Chris Marusich
2021-03-23syscalls: Fix clone on powerpc64le-linux....This makes the clone procedure work correctly and fixes some test failures on powerpc64le-linux, including tests/containers.scm. * guix/build/syscalls.scm (clone): Add an entry for ppc64le. Chris Marusich
2021-03-19download: 'tls-wrap' treats premature TLS termination as EOF....This is a backport of Guile commit 076276c4f580368b4106316a77752d69c8f1494a. * guix/build/download.scm (tls-wrap)[read!]: Wrap 'get-bytevector-n!' call in 'catch' and handle 'error/premature-termination' GnuTLS errors. Ludovic Courtès
2021-03-15syscalls: mounts: Fix a matching bug....On some systems, the columns in /proc/self/mountinfo look like this: 23 28 0:21 / /proc rw,nosuid,nodev,noexec,relatime shared:11 - proc proc rw Before this change, the mounts procedure was written with the assumption that the type and source could always be found in columns 8 and 9, respectively. However, the proc(5) man page explains that there can be zero or more optional fields starting at column 7 (e.g., "shared:11" above), so this assumption is false in some situations. * guix/build/syscalls.scm (mounts): Update the match pattern to use ellipsis to match zero or more optional fields followed by a single hyphen. Remove the trailing ellipsis, since multiple ellipses are not allowed in the same level. The proc(5) man page indicates that there are no additional columns, so it is probably OK to match an exact number of columns at the end like this. Chris Marusich
2021-03-15build-system/cargo: Don't clobber packaged crates while building....This fixes an issue where two packages share a common dependent. * guix/build/cargo-build-system.scm (unpack-rust-crates): Only copy rust crates into the target directory if there isn't one already there with the same name. Efraim Flashner
2021-03-14build-system/cargo: Propagate crates across builds....* guix/build-system/cargo.scm (cargo-build): Add cargo-package-flags, install-source flags. * guix/build/cargo-build-system.scm (unpack-rust-crates, package): New procedures. (install): Also install crate sources. (%standard-phases): Add new phases. * doc/guix.texi (Packaging-guidelines)[Rust Crates]: Adjust to changes in the cargo-build-system. Efraim Flashner
2021-03-11download: 'tls-wrap' returns an unbuffered custom port....Partly fixes <https://bugs.gnu.org/46967>. * guix/build/download.scm (tls-wrap)[unbuffered]: New procedure. Pass the result of 'make-custom-binary-input/output-port' to 'unbuffered'. Ludovic Courtès
2021-03-11download: 'tls-wrap' avoids intermediate buffer....* guix/build/download.scm (tls-wrap)[read!]: Read straight into BV instead of calling 'get-bytevector-some' and 'unget-bytevector'. Ludovic Courtès
2021-03-10syscalls: Define the ST_* constants and add 'statfs-flags->mount-flags'....* guix/build/syscalls.scm (linux?): New variable. (define-statfs-flags): New macro. (ST_RDONLY, ST_NOSUID, ST_NODEV, ST_NOEXEC, ST_SYNCHRONOUS) (ST_MANDLOCK, ST_WRITE, ST_APPEND, ST_IMMUTABLE, ST_NOATIME) (ST_NODIRATIME, ST_RELATIME): New variables. (statfs-flags->mount-flags): New procedure. Ludovic Courtès
2021-03-06Merge branch 'master' into core-updatesChristopher Baines
2021-02-25syscalls: Add 'mounts' and the <mount> record type....* guix/build/syscalls.scm (<mount>): New record type. (option-string->mount-flags, mount-flags) (octal-decode, mounts): New procedures. (mount-points): Rewrite in terms of 'mount'. * tests/syscalls.scm ("mounts"): New test. Ludovic Courtès
2021-02-25syscalls: Define MS_RELATIME....* guix/build/syscalls.scm (MS_RELATIME): New variable. Ludovic Courtès
2021-02-24guix: renpy-build-system: Quote data directory....This prevents generated launchers and desktop files from inadvertently crashing if the directory name contains a space. * gnu/build/renpy-build-system.scm (install, install-desktop-file): Use ~s to format data directory. Leo Prikler
2021-02-22profiles: Fix typo in manifest comment....* guix/build/profiles.scm (build-profile): Fix typo. Ludovic Courtès
2021-02-11Merge branch 'master' into core-updatesDanny Milosavljevic
2021-02-07build-system: Add renpy-build-system....* guix/build/renpy-build-system.scm: New file. * guix/build-system/renpy.scm: New file. * Makefile.am (MODULES): Add them here. * doc/guix.texi (Build Systems): Document renpy-build-system. Leo Prikler
2021-02-04build/gnu: Only make source checkout files writable....This is a followup commit to 6129ebddbd. It was suggested by Ludovic in #guix that it's probably safer to leave files extracted from a tarball alone. While at it, guard against possible exceptions that can happen in the presence of dangling symbolic links, for example. * guix/build/gnu-build-system.scm (unpack): Wrap the make-file-writable call in a false-if-exception handler. Move the for-each loop under the file-is-directory? cond branch. Maxim Cournoyer
2021-02-04build/gnu: Ensure the files are writable after the unpack phase....Fixes <https://issues.guix.gnu.org/43015>. * guix/build/gnu-build-system.scm (unpack): Call 'make-file-writable' on every source file. Maxim Cournoyer
2021-02-03build: python: Fix build phases ordering....The wrap phase was happening before the installed site location was added to GUIX_PYTHONPATH, causing wrapped commands to not find their own Python libraries. * guix/build/python-build-system.scm (%standard-phases): Explicit the sequential ordering of phases using add-after directives, so that the wrap phase occurs after the add-install-to-pythonpath and add-install-to-path phases. Maxim Cournoyer
2021-02-03Merge branch 'master' into core-updatesChristopher Baines
2021-02-01build/python: Add a sanity check phase....Add a new phase validating the usability of installed Python packages. * gnu/packages/aux-files/python/sanity-check.py: New file. * Makefile.am (AUX_FILES): Register it. * guix/build-system/python.scm (sanity-check.py): New variable. (lower): Add the script as an implicit input. * guix/build/python-build-system.scm: Remove trailing #t. (sanity-check): New phase. (%standard-phases): Use it. * tests/builders.scm: (make-python-dummy) (dummy-ok, dummy-dummy-nosetuptools, dummy-fail-requirements) (dummy-fail-import, dummy-fail-console-script): New variables. ("python-build-system: dummy-ok") ("python-build-system: dummy-dummy-nosetuptools") ("python-build-system: dummy-fail-requirements") ("python-build-system: dummy-fail-import") ("python-build-system: dummy-fail-console-script"): Add tests. Lars-Dominik Braun
2021-02-01build/python: Adjust wrap phase to use the new GUIX_PYTHONPATH....* guix/build/python-build-system.scm (wrap): Adjust to use the new GUIX_PYTHONPATH. Remove trailing #t. Maxim Cournoyer
2021-02-01build/python: Add the installation bin directory to PATH....This also to reduce the need for boilerplate code found in check phase overrides. * guix/build/python-build-system.scm (add-install-to-path): New phase. (%standard-phases): Order it before the check phase. Maxim Cournoyer
2021-02-01build/python: Always add the install prefix to the Guix PYTHONPATH....This is to remove the need for common boilerplate code in check phase overrides. * guix/build/python-build-system.scm (add-installed-pythonpath): Streamline. This phase depends on the presence of a "python" input; thus GUIX_PYTHONPATH is guaranteed to be defined. Update doc. (add-install-to-pythonpath): New phase. (%standard-phases): Order it before the check phase. Maxim Cournoyer
2021-02-01build/python: Replace PYTHONPATH by GUIX_PYTHONPATH....* guix/build/python-build-system.scm (add-installed-pythonpath): Replace "PYTHONPATH" by "GUIX_PYTHONPATH". Maxim Cournoyer
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-02-01guix package: Add '--export-manifest'....* guix/scripts/package.scm (export-manifest): New procedure. (show-help, %options): Add '--export-manifest'. (process-query): Honor it. * guix/build/profiles.scm (build-profile): Mention it. * tests/guix-package.sh: Test it. * doc/guix.texi (Invoking guix package): Document it. Ludovic Courtès
2021-01-30build-system/julia: Don't rely on file name to set module name....* guix/build/julia-build-system.scm (project.toml->name): New procedure. (precompile, check, julia-build): Accept new key argument #:julia-package-name. * guix/build-system/julia.scm (julia-build): ... add it. * doc/guix.texi (julia-build-system): Update julia-package-name accordingly. Signed-off-by: Ludovic Courtès <ludo@gnu.org> nixo
2021-01-30build-system/julia: Enable tests....* guix/build-system/julia.scm (julia-build): Set tests? default to #t. * guix/build/julia-build-system.scm (check): Respect tests? and fix julia invocation. (%standard-phases): Add check phase after install. * doc/guix.texi (julia-build-system): Update accordingly. Signed-off-by: Ludovic Courtès <ludo@gnu.org> nixo
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