summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2021-02-01build/python: Add a sanity check phase.Lars-Dominik Braun
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.
2021-02-01build/python: Adjust wrap phase to use the new GUIX_PYTHONPATH.Maxim Cournoyer
* guix/build/python-build-system.scm (wrap): Adjust to use the new GUIX_PYTHONPATH. Remove trailing #t.
2021-02-01build/python: Add the installation bin directory to PATH.Maxim Cournoyer
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.
2021-02-01build/python: Always add the install prefix to the Guix PYTHONPATH.Maxim Cournoyer
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.
2021-02-01build/python: Replace PYTHONPATH by GUIX_PYTHONPATH.Maxim Cournoyer
* guix/build/python-build-system.scm (add-installed-pythonpath): Replace "PYTHONPATH" by "GUIX_PYTHONPATH".
2021-02-01gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH.Maxim Cournoyer
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.
2021-01-29gnu: texlive-bin: Enable the use of multiple TeX Live trees.Maxim Cournoyer
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.
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-26utils: Add NIX_STORE_DIR as a candidate for the value of the store directory.Maxim Cournoyer
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.
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-15build-system/gnu: Really ignore the return value of phases.Ludovic Courtès
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.
2021-01-14build-system/texlive: Allow specifying SVN references with a single component.Maxim Cournoyer
This is the case for macros (formats), for which the TeX Directory Structure specifies to be located at the root of the source tree directly. * guix/build-system/texlive.scm (texlive-ref): Make the ID parameter optional. Update doc.
2021-01-13Merge branch 'staging' into 'core-updates'.Maxim Cournoyer
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
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.
2021-01-08build-systems/emacs: No longer skip patching of files containing NULs.Maxim Cournoyer
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.
2021-01-08utils: Allow text substitution even in the presence of NUL characters.Mark H Weaver
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>
2021-01-07ui: Fix order of match clauses.Simon Tournier
Fixes <https://bugs.gnu.org/45709>. This is a follow-up to commit cf289d7cfa34315bf13b3114b9a5bf3d3c05ebea. * guix/ui.scm (run-guix-command): Match for #false first. Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
2021-01-07upstream: Make the 'updaters' parameter optional.Ludovic Courtès
* guix/upstream.scm (lookup-updater, package-latest-release) (package-latest-release*, package-update): Make 'updaters' an optional parameter. * guix/lint.scm (check-for-updates): Remove second argument to 'package-latest-release*'.
2021-01-07import: elpa: Updater gracefully handles missing upstream data.Ludovic Courtès
Fixes a crash with: guix refresh emacs-exwm-no-x-toolkit * guix/import/elpa.scm (latest-release): Return #f when 'elpa-package-info' returns #f.
2021-01-05Discover extensions via GUIX_EXTENSIONS_PATH.Ricardo Wurmus
* guix/scripts.scm (%command-categories): Add extension category. * guix/ui.scm (source-file-command): Also parse extensions files. (command-files): Accept an optional directory argument. (extension-directories): New procedure. (commands): Use it. (show-guix-help): Hide empty categories. (run-guix-command): Try loading an extension if there is no matching Guix command.
2021-01-04graph: Install JavaScript files.Ludovic Courtès
Until now, 'guix graph --backend=d3js' wouldn't work outside the build tree. * d3.v3.js: Move to... * guix/d3.v3.js: ... here. * graph.js: Move to... * guix/graph.js: ... here. * Makefile.am (nobase_dist_guilemodule_DATA): Add them. (EXTRA_DIST): Remove them. * guix/graph.scm (emit-d3js-prologue, emit-d3js-epilogue): Adjust 'search-path' argument accordingly. * guix/self.scm (compiled-guix)[*extra-modules*]: Pass them via #:extra-files.
2021-01-04ui: It's 2021 now!Ludovic Courtès
* guix/ui.scm (show-version-and-exit): Change year to 2021.
2021-01-04guix system: Add '--graph-backend'.Ludovic Courtès
* guix/scripts/system.scm (lookup-backend): New procedure. (export-extension-graph, export-shepherd-graph): Add #:backend parameter and honor it. (show-help, %options): Add "--graph-backend". (%default-options): Add 'graph-backend'. (process-action): Pass #:backend to 'export-extension-graph' and 'export-shepherd-graph'. * doc/guix.texi (Invoking guix system): Document '--graph-backend'.
2021-01-04environment: Remove unused modules.guy fleury iteriteka
* guix/scripts/environment.scm: Do not use (ice-9 format) and (ice-9 rdelim). Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-04substitute: Handle "invalid session" GnuTLS errors on reused connections.Ludovic Courtès
Reported by Christopher Baines <mail@cbaines.net> at <https://issues.guix.gnu.org/45323#2>. * guix/scripts/substitute.scm (call-with-cached-connection): Handle 'gnutls-error and ERROR/INVALID-SESSION.
2021-01-04guix hash: Honor '-H' when used alongside '-r'.Ludovic Courtès
* guix/scripts/hash.scm (guix-hash): When 'recursive? is true, use 'open-hash-port' instead of 'open-sha256-port'. * tests/guix-hash.sh: Add test for 'guix hash -r -H sha512'.
2020-12-31import/utils: recursive-import: Fix typo.Ricardo Wurmus
* guix/import/utils.scm (recursive-import): Fix typo.
2020-12-31import/elpa: Abort early on failure to fetch meta data.Ricardo Wurmus
* guix/import/elpa.scm (elpa->guix-package): Raise condition instead of returning #FALSE. * guix/scripts/import/elpa.scm (guix-import-elpa): Handle conditions when importing recursively.
2020-12-31build-system/cargo: Use argument "--no-track" in "cargo install".Zhu Zihao
* 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>
2020-12-29build-systems/gnu: Add compressor file extension to symbolic links.Maxim Cournoyer
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.
2020-12-28utils: Add pkg-config-for-target.Efraim Flashner
* guix/utils.scm (pkg-config-for-target): New procedure.
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-12-27import/utils: alist->package: Handle SPDX license names only as fallback.Ricardo Wurmus
Fixes <https://bugs.gnu.org/45453>. * guix/import/utils.scm (alist->package): Find plain license names in (guix licenses) first, and only fall back to SPDX names on error. * tests/import-utils.scm ("alist->package with SPDX license name 1/2", "alist->package with SPDX license name 2/2"): New tests.
2020-12-27import/print: package->code: Fix branching.Ricardo Wurmus
* guix/import/print.scm (package->code)<license->code>: Branch on VAR, not on the SYMBOL-APPEND return value.
2020-12-23guix: Quote list of bootstrap scripts.Ricardo Wurmus
This is a follow-up to commit 9cfc93be30c516fd6fa32915c61c06e03f23a011. * guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Quote the list of default bootstrap scripts.
2020-12-23ssh: Use 'guix repl' instead of 'guile'.Ludovic Courtès
This simplifies setup of build machines: no need to install Guile in addition to Guix, no need to set 'GUILE_LOAD_PATH' & co., leading to fewer failure modes. * guix/ssh.scm (remote-run): New procedure. (remote-daemon-channel): Use it instead of 'open-remote-pipe*'. (store-import-channel)[import]: Remove check for module availability. Add call to 'primitive-exit'. Use 'remote-run' instead of 'open-remote-pipe'. (store-export-channel)[export]: Remove check for module availability. Add calls to 'primitive-exit'. Use 'remote-run' instead of 'open-remote-pipe'. (handle-import/export-channel-error): Remove 'module-error' clause. (report-module-error): Remove. * guix/scripts/offload.scm (assert-node-has-guix): Replace call to 'report-module-error' by 'leave'. * doc/guix.texi (Daemon Offload Setup): Remove mention of Guile.
2020-12-23substitute: Reuse connections for '--query'.Ludovic Courtès
This significantly speeds up things like substituting the closure of a .drv. This is a followup to 5ff521452b9ec2aae9ed8e4bb7bdc250a581f203. * guix/scripts/substitute.scm (http-multiple-get): Add #:open-connection and #:keep-alive? and honor them. (open-connection-for-uri/maybe): Use 'open-connection-for-uri/cached' instead of 'guix:open-connection-for-uri'. Call 'http-multiple-get' within 'call-with-cached-connection'. (open-connection-for-uri/cached): Add #:timeout and #:verify-certificate? and honor them. (call-with-cached-connection): Add 'open-connection' parameter and honor it.
2020-12-23build-system/gnu: Allow overriding of bootstrap scripts.Ricardo Wurmus
* 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.
2020-12-23import: crate: Change updater name from "crates" to "crate".Nicolas Goaziou
* guix/import/crate.scm (%crate-updater): Change name to `crate', so it is on par with the importer, and the manual.
2020-12-23scripts: Fix typo in crate importer help message.Nicolas Goaziou
Fixes <https://issues.guix.gnu.org/45351>. * guix/scripts/import/crate.scm (show-help): Fix URL.
2020-12-22import/cran: Add input style "specification".Ricardo Wurmus
* guix/import/cran.scm (%input-style): New parameter. (format-inputs): Use it. * guix/scripts/import/cran.scm (guix-import-cran): Set the %input-style parameter. (%options): Add "--style" option. * doc/guix.texi (Invoking guix import): Document it.
2020-12-21system: Allow separated /boot and encrypted root.Miguel Ángel Arruga Vivas
* gnu/bootloader/grub.scm (grub-configuration-file): New parameter store-crypto-devices. [crypto-devices]: New helper function. [builder]: Use crypto-devices. * gnu/machine/ssh.scm (roll-back-managed-host): Use boot-parameters-store-crypto-devices to provide its contents to the bootloader configuration generation process. * gnu/tests/install.scm (%encrypted-root-not-boot-os, %encrypted-root-not-boot-os): New os declaration. (%encrypted-root-not-boot-installation-script): New script, whose contents were initially taken from %encrypted-root-installation-script. (%test-encrypted-root-not-boot-os): New test. * gnu/system.scm (define-module): Export operating-system-bootoader-crypto-devices and boot-parameters-store-crypto-devices. (<boot-parameters>): Add field store-crypto-devices. (read-boot-parameters): Parse store-crypto-devices field. [uuid-sexp->uuid]: New helper function extracted from device-sexp->device. (operating-system-bootloader-crypto-devices): New function. (operating-system-bootcfg): Use operating-system-bootloader-crypto-devices to provide its contents to the bootloader configuration generation process. (operating-system-boot-parameters): Add store-crypto-devices to the generated boot-parameters. (operating-system-boot-parameters-file): Likewise to the file with the serialized structure. * guix/scripts/system.scm (reinstall-bootloader): Use boot-parameters-store-crypto-devices to provide its contents to the bootloader configuration generation process. * tests/boot-parameters.scm (%default-store-crypto-devices): New variable. (%grub-boot-parameters, test-read-boot-parameters): Use %default-store-crypto-devices. (tests store-crypto-devices): New tests.
2020-12-20scripts: discover: Remove previous cache file.Mathieu Othacehe
Partially fixes <https://issues.guix.gnu.org/45302>. * guix/scripts/discover.scm (guix-discover): Remove previous cache files.
2020-12-20avahi: Remove poll timeout when possible.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/45314>. * guix/avahi.scm (avahi-browse-service-thread): Change timeout default value to false when no "stop-loop?" procedure is passed. Adapt "iterate-simple-poll" call accordingly. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-12-19maint: Require Guile >= 2.2.6.Ludovic Courtès
* configure.ac: For Guile 2.2, require 2.2.6 or later. * guix/gexp.scm (define-syntax-parameter-once): Remove. Use 'define-syntax-parameter' instead. * guix/mnoads.scm: Likewise. * guix/inferior.scm (proxy)[select*]: Remove. * guix/scripts/publish.scm <top level>: Remove replacement for (@@ (web http) read-header-line). * guix/store/deduplication.scm (counting-wrapper-port): Remove. (nar-sha256): Call 'port-position' on PORT to compute SIZE.
2020-12-19daemon: Delegate deduplication to 'guix substitute'.Ludovic Courtès
This removes the main source of latency between subsequent downloads. * nix/libstore/build.cc (SubstitutionGoal::tryToRun): Add a "deduplicate" key to ENV. (SubstitutionGoal::finished): Remove call to 'optimisePath'. * guix/scripts/substitute.scm (process-substitution)[destination-in-store?] [dump-file/deduplicate*]: New variables. Pass #:dump-file to 'restore-file'. * guix/scripts/substitute.scm (guix-substitute)[deduplicate?]: New variable. Pass #:deduplicate? to 'process-substitution'. * guix/serialization.scm (dump-file): Export and augment 'dump-file'.
2020-12-19daemon: Let 'guix substitute' perform hash checks.Ludovic Courtès
This way, the hash of the store item can be computed as it is restored, thereby avoiding an additional file tree traversal ('hashPath' call) later on in the daemon. Consequently, it should reduce latency between subsequent substitute downloads. This is a followup to 5ff521452b9ec2aae9ed8e4bb7bdc250a581f203. * guix/scripts/substitute.scm (narinfo-hash-algorithm+value): New procedure. (process-substitution): Wrap INPUT into a hash input port, 'hashed', and read from it. Compare the actual and expected hashes, and print a "hash-mismatch" status line when they differ. When they match, print not just "success" but also the nar hash and size. * nix/libstore/build.cc (class SubstitutionGoal)[expectedHashStr]: Remove. (SubstitutionGoal::finished): Tokenize 'status'. Parse it and handle "success" and "hash-mismatch" accordingly. Call 'hashPath' only when the returned hash is not SHA256. (SubstitutionGoal::handleChildOutput): Remove 'expectedHashStr' handling. * tests/substitute.scm ("substitute, invalid hash"): Rename to... ("substitute, invalid narinfo hash"): ... this. ("substitute, invalid hash"): New test.
2020-12-18status: Do not emit ANSI escapes when stderr is not a tty.Ludovic Courtès
Fixes <https://bugs.gnu.org/44985>. Reported by Simon Josefsson <simon@josefsson.org>. * guix/progress.scm (display-download-progress): Add #:tty? and honor it. * guix/status.scm (print-build-event): Pass #:tty? to 'display-download-progress'.
2020-12-18import: elpa: Support working with MELPA.Carlo Zancanaro
* guix/import/elpa.scm (default-files-spec): New variable. (download-git-repository, package-name->melpa-recipe, file-hash, vcs-file?, git-repository->origin, melpa-recipe->origin, melpa-recipe->maybe-arguments): New procedures. (elpa-package->sexp): Add optional repo argument, and use it to determine whether to attempt to construct a source using the MELPA recipe. (elpa->guix-package): Pass repo to elpa-package->sexp. Signed-off-by: Christopher Baines <mail@cbaines.net>
2020-12-15import: cran: Use CRAN’s canonical URL as home-page.Lars-Dominik Braun
* guix/import/cran.scm (%cran-canonical-url): New variable. (description->package): Construct home-page using canonical URL. Signed-off-by: Christopher Baines <mail@cbaines.net>