summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
* style: For 'let' and similar forms, emit one binding per line.Ludovic Courtès2022-07-04
| | | | | | | | | | | | | | | | | | Previously, 'let' bindings could be rendered like this: (let ((x 1) (y 2) (z 3)) ...) With this change, each bindings goes in its own line. Partly fixes <https://issues.guix.gnu.org/56297>. Reported by Maxime Devos <maximedevos@telenet.be>. * guix/scripts/style.scm (pretty-print-with-comments)[list-of-lists?]: New procedure. Use it. * tests/style.scm: Add tests with 'let' and 'substitute-keyword-arguments'.
* style: Add option '--list-stylings'.Hartmut Goebel2022-07-04
| | | | | | * guix/scripts/style.scm (show-stylings): New procedure. (%options, show-help): Add "--list-stylings". * doc/guix.texi (Invoking guix style): Document "-l".
* challenge: Do nothing when passed zero arguments.Ludovic Courtès2022-07-03
| | | | | | | | | | Previously, 'guix challenge' without arguments would list live store items that had been locally built. This was deemed confusing, especially since 'list-live' is an expensive operation. * guix/scripts/challenge.scm (guix-challenge): Warn and exit with 0 when FILES is empty. * doc/guix.texi (Invoking guix challenge): Update accordingly.
* profiles: Do not repeat entries in 'manifest' file.Ludovic Courtès2022-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes <https://issues.guix.gnu.org/55499>. Reported by Ricardo Wurmus <rekado@elephly.net>. With this change, the manifest file created for: guix install r r-seurat r-cistopic r-monocle3 r-cicero-monocle3 r-assertthat goes from 5.7M to 176K. Likewise, on this profile, wall-clock time of: GUIX_PROFILING=gc guix package -I goes from 0.7s to 0.1s, with heap usage going from 55M to 9M. * guix/profiles.scm (manifest->gexp)[optional]: New procedure. [entry->gexp]: Turn into a monadic procedure. Return a 'repeated' sexp if ENTRY was already visited before. Adjust caller accordingly. Bump manifest version. (sexp->manifest)[sexp->manifest-entry]: Turn into a monadic procedure. Add case for 'repeated' nodes. Add each entry to the current state vhash. Add clause for version 4 manifests. [sexp->manifest-entry/v3]: New procedure, with former 'sexp->manifest-entry' code. * tests/profiles.scm ("deduplication of repeated entries"): New test. * guix/build/profiles.scm (manifest-sexp->inputs+search-paths)[let-fields]: New macro. Use it. Expect version 4. Add clause for 'repeated' nodes.
* upstream: 'guix refresh -u' no longer stops when upstream info is lacking.Ludovic Courtès2022-07-01
| | | | | | | | | | Fixes <https://issues.guix.gnu.org/56338>. Starting from 53b9c27aa59bebf955f0aa24fef60a101480ef5c, 'guix refresh -u' would stop upon the first failure to determine upstream releases. This fixes that. * guix/upstream.scm (package-update): Warn rather than update.
* substitute: Use SRFI-71 instead of SRFI-11.Ludovic Courtès2022-06-26
| | | | | | * guix/scripts/substitute.scm (display-narinfo-data) (open-connection-for-uri/cached) (process-substitution): Use SRFI-71 instead of SRFI-11.
* status: Relay "updating substitutes" messages.Ludovic Courtès2022-06-26
| | | | | | | | | | | | | Until now, those messages would be accumulated and displayed all at once, when a '\n' was finally emitted by 'guix substitute'. In the meantime, clients would remain silent. * guix/status.scm (bytevector-index): Change 'number' parameter to 'numbers' and adjust accordingly. (build-event-output-port): Pass both #\newline and #\return to 'bytevector-index'. * tests/status.scm ("build-output-port, daemon messages with LF"): New test.
* self: 'guix-daemon' wrapper refers to the right Guile.Ludovic Courtès2022-06-26
| | | | | | | Partly fixes <https://issues.guix.gnu.org/56030>. Reported by Julien Lepiller <julien@lepiller.eu>. * guix/self.scm (whole-package)[wrap]: Pass #:guile to 'program-file'.
* build-system/dub: Don't expect ‘.dub/dub.json’.(2022-06-19
| | | | | | | | | This file is no longer produced by our version of Dub. * guix/build/dub-build-system.scm (build, check): Remove obsolete substitutions. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
* build-system/dub: Fix configure docstring indentation.(2022-06-19
| | | | | | * guix/build/dub-build-system.scm (configure): Reflow docstring. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
* build-system/dub: Use the gold linker.(2022-06-19
| | | | | | | | | * guix/build-system/dub.scm (default-ld-gold-wrapper): New procedure. (lower): Add a LD-GOLD-WRAPPER to the keyword arguments, and to the resulting bag's… [build-inputs]: …build inputs. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
* build-system/dub: Don't explicitly return #t from phases.(2022-06-19
| | | | | | | * guix/build/dub-build-system.scm (configure, build, check, install): Remove trailing #t. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
* utils: Define 'target-x86?' predicate.Denis 'GNUtoo' Carikli2022-06-24
| | | | | | * guix/utils.scm (target-x86?): New predicate. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* guix system: Inline menu-entries in to bootcfg in perform-action.Christopher Baines2022-06-23
| | | | | | | This avoids an exception when generating images, where the reading of boot parameters fails. * guix/scripts/system.scm (perform-action): Inline menu-entries in to bootcfg.
* refresh: Repurpose '-L' for '--load-path'.Ludovic Courtès2022-06-22
| | | | | | | | | | | This incompatible change fixes an inconsistency with other commands where '-L' is short for '--load-path'. * guix/scripts/refresh.scm (%options): Add --load-path option from %STANDARD-BUILD-OPTIONS. Remove #\L shortcut for --list-updaters, and remove --load-path option that lacked the #\L shortcut. (show-help): Update accordingly. * doc/guix.texi (Invoking guix refresh): Update accordingly.
* style: Keep values next to their keyword.Ludovic Courtès2022-06-22
| | | | | | | | | This ensures we print '#:key value' rather than insert a newline between '#:key' and 'value' as was the case before. * guix/scripts/style.scm (pretty-print-with-comments)[print-sequence]: When ITEM is a keyword, loop with FIRST? = true. * tests/style.scm: Add test.
* build-system: chicken: Add version information to eggs if missing.Michal Atlas2022-06-21
| | | | | | | | | | | Chicken eggs do not always contain version information, yet dependant packages often rely on this information being present. Thus, add a version field if it is missing. * guix/build/chicken-build-system.scm (stamp-egg-version): New variable. (%standard-phases): Add ‘stamp-egg-version’. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
* challenge: Colorize output.Ludovic Courtès2022-06-19
| | | | | * guix/scripts/challenge.scm (good-news, bad-news): New procedures. (summarize-report, summarize-report-list): Use them and 'highlight'.
* guix: self: Do not record reference to gcc-toolchain.Julien Lepiller2022-06-18
| | | | | | | | The ld-wrapper from gcc-toolchain records a reference to the library path through rpath, but this is not needed. By explicitely using rpath flags instead, we save 150 MB of closure. * guix/self.scm (quiet-guile): Do not record reference to gcc-toolchain.
* guix: emacs-utils: Add emacs-header-parse.Fredrik Salomonsson2022-06-17
| | | | | | | | | | * guix/build/emacs-utils.scm (emacs-header-parse): New procedure. * tests/build-emacs-utils.scm ("emacs-header-parse: fetch version", "emacs-header-parse: fetch keywords", "emacs-header-parse: fetch nonexistent author"): New tests. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* guix: emacs-utils: Add emacs-batch-script.Fredrik Salomonsson2022-06-17
| | | | | | | | | | * guix/build/emacs-utils.scm (emacs-batch-script): New procedure. * tests/build-emacs-utils.scm: New file. * Makefile.am (TESTS): Add `tests/build-emacs-utils.scm'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* guix: Modernize renpy-build-system.Liliana Marie Prikler2022-06-17
| | | | | | * guix/build-system/renpy.scm (build): Drop trailing #t. (install, install-desktop-file): Likewise. Also add inputs and use search-input-file for /bin/sh and /bin/renpy.
* ui: Improve pager selection logic when less is not installed.Taiju HIGASHI2022-06-16
| | | | | | | | | | | | | | | | * guix/ui.scm (find-available-pager): New procedure. (call-with-paginated-output-port): Use it. * guix/utils.scm (call-with-environment-variables): Allow clearing of specified environment variables. * tests/ui.scm (make-empty-file, assert-equals-find-available-pager): New procedures. ("find-available-pager, GUIX_PAGER takes precedence") ("find-available-pager, PAGER takes precedence") ("find-available-pager, 'less' takes precedence") ("find-available-pager, 'more' takes precedence") ("find-available-pager, no pager"): New tests. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* shell: Fix '--export-manifest' for cached profiles and when '-p' is used.Ludovic Courtès2022-06-16
| | | | | | | | Fixes <https://issues.guix.gnu.org/55521>. * guix/scripts/shell.scm (export-manifest): When computing 'manifest', honor the 'profile key. * tests/guix-shell-export-manifest.sh: Add test.
* shell: Do not auto-detect manifest when '-p' is used.Ludovic Courtès2022-06-16
| | | | | | | | Previous, "guix shell -p /path/to/profile" would have manifest/guix.scm auto-detection turned on. * guix/scripts/shell.scm (auto-detect-manifest)[options-contain-payload?]: Return #t for 'profile.
* packages: Change the order of %SUPPORTED-SYSTEMS.Ludovic Courtès2022-06-16
| | | | | | | | | Commit 2a34333d0c238fa0983659ea71f0e1af4ff0ac7b led to a couple of test failures in tests/packages.scm and tests/lint.scm due to the different ordering. * guix/packages.scm (%supported-systems): Move %64BIT-SUPPORTED-SYSTEMS first.
* channels: Print backtrace when generating package cache fails.Josselin Poiret2022-06-16
| | | | | | | * guix/channels.scm (package-cache-file): Add a throw handler around the generate-package-cache call, and print backtrace in it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* upstream: 'package-update' reports "unknown upstream releases" errors.Ludovic Courtès2022-06-15
| | | | | | | | | | Fixes <https://issues.guix.gnu.org/55987>. Reported by John Kehayias <john.kehayias@protonmail.com>. * guix/upstream.scm (package-update): Instead of calling 'package-latest-release*', call 'package-latest-release' and distinguish between "up-to-date" and "unknown upstream releases". Raise an error in the latter case.
* refresh: Switch to SRFI-71.Ludovic Courtès2022-06-15
| | | | | * guix/scripts/refresh.scm (update-package): Use SRFI-71 'let' instead of SRFI-11 'let-values'.
* challenge: When using '--diff', do not attempt to chmod symlinks.Ludovic Courtès2022-06-15
| | | | | | | This is a followup to 2a2856d5ccd9a9b7df8a94333a277b971a39b150. * guix/scripts/challenge.scm (make-directory-writable): Do not call 'make-file-writable' on symlinks.
* import: Add hex.pm importer.Hartmut Goebel2022-06-15
| | | | | | | | | | | | | hex.pm is a package repository for Erlang and Elixir. * guix/scripts/import.scm (importers): Add "hexpm". * guix/scripts/import/hexpm.scm, guix/import/hexpm.scm, guix/hexpm-download.scm: New files. * guix/import/utils.scm (source-spec->object): Add "hexpm-fetch" to list of fetch methods. * guix/upstream.scm (package-update/hexpm-fetch): New function. (%method-updates) Add it. * Makefile.am: Add them.
* build-system: Add 'rebar-build-system'.Hartmut Goebel2022-06-15
| | | | | | * guix/build-system/rebar.scm, guix/build/rebar-build-system.scm: New files. * Makefile.am (MODULES): Add them. * doc/guix.texi (Build Systems): Update rebar-build-system section.
* Revert "Add (guix extracting-download)."Hartmut Goebel2022-06-15
| | | | | | This reverts commit f63c79bf7674df012517f8e9148f94c611e35f32, which was missed when reverting the #51061 patch series for now in a1679b74c9aa20bb51bc4add82ebb7ba78926b9c.
* ssh: Add #:connection-timeout parameter to 'open-ssh-session'.Ludovic Courtès2022-06-15
| | | | | * guix/ssh.scm (open-ssh-session): Add #:connection-timeout parameter and honor it.
* pull: Tweak cache directory validation code.Ludovic Courtès2022-06-15
| | | | | | | | | | | This is a followup to 7c52cad0464175370c44bd4695e4c01a62b8268f. * guix/scripts/pull.scm (guix-pull): Move cache directory validation code to... (validate-cache-directory-ownership): ... here. New procedure. Use SRFI-71 instead of SRFI-11. Use 'formatted-message' for the error message, with ASCII quotation marks, and use Texinfo markup for '&fix-hint'.
* pull: Fix typo in error message.Tobias Geerinckx-Rice2022-06-12
| | | | * guix/scripts/pull.scm (guix-pull): Report the right user name/ID.
* challenge: Actually delete nars that have been extracted.Ludovic Courtès2022-06-13
| | | | | | | | | Fixes <https://issues.guix.gnu.org/55809>. Reported by Vagrant Cascadian <vagrant@reproducible-builds.org>. * guix/scripts/challenge.scm (make-directory-writable): New procedure. (call-with-mismatches)[restore-file*]: New procedure. Use it instead of 'restore-file'.
* guix: packages: Add %32bit-supported-systems, %64bit-supported-systems.Efraim Flashner2022-06-12
| | | | | | | * guix/packages.scm (%32bit-supported-systems, %64bit-supported-systems): New variables. (%supported-systems): Rewrite using %32bit-supported-systems, %64bit-supported-systems.
* least-authority: Fix typo.Maxim Cournoyer2022-06-10
| | | | * guix/least-authority.scm (least-authority-wrapper): Fix typo in doc.
* pull: Fail if cache directory ownership is suspect.Tobias Geerinckx-Rice2022-06-05
| | | | | | | | | New users frequently run ‘sudo guix pull’ which breaks subsequent unprivileged ‘guix pull’s until manually fixed with chmod -R. * guix/scripts/pull.scm (guix-pull): Fail if the cache directory (or its innermost extant parent) is not owned by the user pulling the Guix, with a hint about ‘sudo -i’.
* guix: platform: Fix typo in lookup-platform-by-target.Josselin Poiret2022-06-08
| | | | | | | * guix/platform.scm (lookup-platform-by-target): Fix typo system -> target. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* packages: Add 'specifications->packages'.Antero Mejr2022-06-06
| | | | | | | | | | | | * gnu/packages.scm (specifications->packages): New procedure. * guix/scripts/home/import.scm (manifest+configuration-files->code): Use it. * tests/home-import.scm (match-home-environment-no-services) (match-home-environment-no-services-nor-packages) (match-home-environment-bash-service) (match-home-environment-bash-service-with-alias): Adjust 'packages' field accordingly. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* import: hackage: Filter upper/mixed case dependencies too.Lars-Dominik Braun2022-06-06
| | | | | | | | | * guix/import/hackage.scm (filter-dependencies): Convert OWN-NAMES to lowercase before filtering. (hackage-module->sexp): Remove #f from OWN-NAMES, which is used for unnamed (default) libraries. * tests/hackage.scm (test-cabal-internal-library-ignored): Add mismatched uppercase letters.
* import: hackage: Filter internal libraries from inputs and native-inputs.Lars-Dominik Braun2022-06-06
| | | | | | | | | | | Fixes <https://issues.guix.gnu.org/54760>. * guix/import/hackage.scm (filter-dependencies): Support multiple OWN-NAMES. (hackage-module->sexp): Filter OWN-NAMES from HACKAGE-DEPENDENCIES and HACKAGE-NATIVE-DEPENDENCIES. * tests/hackage.scm (test-cabal-internal-library-ignored): New variable. ("hackage->guix-package test internal libraries are ignored"): New testcase.
* import: cabal: Support library namesLars-Dominik Braun2022-06-06
| | | | | | | | | | | | | | * guix/import/cabal.scm (make-cabal-parser): Add name to section. (is-lib): Add optional name to regular expression. (lex-rx-res): Support selecting different substring. (lex-lib): Match 2nd substring from IS-LIB. (lex-line): Adapt to changes for lex-lib. (cabal-library): Add name field and export CABAL-LIBRARY-NAME. (eval): Remove special case for 'library, which is not required any more. (make-cabal-section): Move special case for LIBRARY. * tests/hackage.scm (test-read-cabal-library-name): New variable. ("read-cabal test 1"): Adapt testcase to changed internal structure. ("read-cabal test: library name"): New testcase.
* import: cabal: Allow curly bracket before else statement.Lars-Dominik Braun2022-06-06
| | | | | | | * guix/import/cabal.scm (is-else): Turn into procedure. (lex-line): Move IS-ELSE… (lex-word): …here. * tests/hackage.scm (test-cabal-elif-brackets): Extend testcase.
* import: cabal: Allow properties without space between key and value.Lars-Dominik Braun2022-06-06
| | | | | | * guix/import/cabal.scm (lex-word): Add colon to delimiters. * tests/hackage.scm (test-cabal-property-no-space): New variable. ("hackage->guix-package test properties without space"): New test.
* import: cabal: Allow curly brackets in more positions.Lars-Dominik Braun2022-06-06
| | | | | | | | * guix/import/cabal.scm (is-layout-property): Do not expect end of line. (lex-layout-property): Check for newline. (lex-property): Stop reading on closing curly bracket. * tests/hackage.scm (test-read-cabal-2): New variable. ("read-cabal test: if brackets on the same line"): New test.
* import: cabal: Support elif statement.Lars-Dominik Braun2022-06-06
| | | | | | | | | | | | | | | | | | | Fixes <https://issues.guix.gnu.org/54752>. * guix/import/cabal.scm (make-cabal-parser): Replace if-then-else grammar case with elif-else, modify if-then accordingly. (is-elif): New procedure. (lex-elif): Likewise. (is-id): Add elif keyword. (lex-word): Add test for elif. * tests/hackage.scm (test-cabal-if): New variale. (test-cabal-else): Likewise. (test-cabal-elif): Likewise. (test-cabal-elif-brackets): Likewise. (match-ghc-elif): Likewise. ("hackage->guix-package test lonely if statement", "hackage->guix-package test else statement", "hackage->guix-package test elif statement", "hackage->guix-package test elif statement with brackets"): New tests.
* guix system: Don't suggest reconfiguration during reconfiguration.Tobias Geerinckx-Rice2022-05-29
| | | | | | | * guix/scripts/system.scm (process-action): Add 'reconfigure to the warning's guard clause. Reported by johnjaye on #guix.