summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2022-04-10services: herd: Adjust to <live-service> changes.Ludovic Courtès
This is a followup to a2c759c8304c461d096ab763568e7f71546ff4e8. * guix/scripts/system/reconfigure.scm (running-services): Fill in the 'transient?' field of <live-service>. * tests/services.scm ("shepherd-service-upgrade: one unchanged, one upgraded, one new") ("shepherd-service-upgrade: service depended on is not unloaded") ("shepherd-service-upgrade: obsolete services that depend on each other"): Adjust calls to 'live-service'.
2022-04-09guix describe: Add missing import.Ludovic Courtès
Fixes a regression introduced in d4e858763c4303764729133c547b0a6dfe2354f9. * guix/scripts/describe.scm: Add missing autoload.
2022-04-08diagnostics: Turn diagnostic locations into hyperlinks.Ludovic Courtès
* guix/diagnostics.scm (print-diagnostic-prefix): Use 'location->hyperlink' when 'supports-hyperlinks?' returns true.
2022-04-08ui: Move 'location->hyperlink' to (guix diagnostics).Ludovic Courtès
* guix/ui.scm (location->hyperlink): Move to... * guix/diagnostics.scm: ... here. * guix/scripts/system/search.scm: Adjust imports accordingly.
2022-04-08ui: Move hyperlink facilities to (guix colors).Ludovic Courtès
* guix/ui.scm (supports-hyperlinks?, file-hyperlink, hyperlink): Move to... * guix/colors.scm: ... here. * guix/scripts/home.scm, guix/scripts/system.scm, guix/scripts/system/search.scm: Adjust imports accordingly.
2022-04-04shell: Add '--export-manifest'.Ludovic Courtès
* guix/scripts/shell.scm (show-help, %options): Add '--export-manifest'. (manifest-entry-version-prefix, manifest->code*) (export-manifest): New procedures. (guix-shell): Honor '--export-manifest'. * tests/guix-shell-export-manifest.sh: New file. * Makefile.am (SH_TESTS): Add it. * doc/guix.texi (Invoking guix shell): Document '--export-manifest'. (Invoking guix environment): Link to it. (Invoking guix pack): Likewise.
2022-04-04environment: Export 'load-manifest'.Ludovic Courtès
* guix/scripts/environment.scm (load-manifest): New procedure. (options/resolve-packages): Use it.
2022-04-04packages: Add 'package-unique-version-prefix'.Ludovic Courtès
* gnu/packages.scm (package-unique-version-prefix): New procedure. * guix/scripts/package.scm (manifest-entry-version-prefix): Use it. * tests/packages.scm ("package-unique-version-prefix, gcc@8") ("package-unique-version-prefix, grep"): New tests.
2022-04-04build: emacs-utils: Add a (as-display) subform to `emacs-substitute-variables'.Maxim Cournoyer
* guix/build/emacs-utils.scm (as-display): New variable. (replacement-helper): New syntax helper. (emacs-substitute-sexps): Use it and update doc. (emacs-substitute-variables): Add an optional 'modifier' datum to the replacement specification, and document it.
2022-04-04import: pypi: Use new style for the conditional unzip input.Maxim Cournoyer
* guix/import/pypi.scm (make-pypi-sexp)<unzip>: Use new style.
2022-04-01weather: Colorize the output.Ludovic Courtès
* guix/colors.scm (coloring-procedure): Export. * guix/scripts/weather.scm (report-server-coverage): Highlight the server name and colorize the availability ratio.
2022-03-29download: Use https for main KDE source.Efraim Flashner
* guix/download.scm (%mirrors)[kde]: Use https URIs for main KDE mirrors. * tests/lint.scm ("mirror-url: kde suggestion"): New test.
2022-03-22profiles: manual-database: Remove GDBM workaround.Maxim Cournoyer
* guix/profiles.scm (manual-database): No longer set the MALLOC_PERTURB_ environment variable.
2022-03-22packages: Clarify comment about build-system package record field.jgart
* guix/packages.scm (<package>): Clarify that what goes in the build-system package record field is a build-system record instance. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-03-21packages: Fix time-travel from Guix 1.1.0 / Guile < 2.2.7.Maxime Devos
* guix/packages.scm: Only set #:replace? #true when Guile is >= 2.2.7. Fixes: <https://issues.guix.gnu.org/53765> Reported-By: Peter Kois <kangus@gmail.com> Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-20home: import: Clarify alias parsing code.Ludovic Courtès
* guix/scripts/home/import.scm (generate-bash-configuration+modules) [bash-alias->pair]: Return #f on match failure. [parse-aliases]: Adjust accordingly and use 'match'. Remove 'filter' call.
2022-03-20home: import: Properly parse aliases that contain quotes.Ludovic Courtès
* guix/scripts/home/import.scm (generate-bash-configuration+modules): Define 'alias-rx'. [bash-alias->pair]: Use it. * tests/home-import.scm (match-home-environment-bash-service-with-alias): New variable. ("manifest->code: Bash service with aliases"): New test.
2022-03-19guix home: Show "container" in '--help' output.Ludovic Courtès
This is a followup to 094a2cfbe45c104d0da30ff9d975d052ca0c118c. * guix/scripts/home.scm (show-help): Add "container".
2022-03-19guix home: Add 'container' command.Ludovic Courtès
* guix/scripts/home.scm (show-help, %options): Add '--network', '--share', and '--expose'. (not-config?, user-shell, spawn-home-container): New procedures. (%default-system-profile): New variable. (perform-action): Add #:file-system-mappings, #:container-command, and #:network?; honor them. (process-action): Adjust accordingly. (guix-home)[parse-sub-command]: Add "container". [parse-args]: New procedure. Use it instead of 'parse-command-line'. * tests/guix-home.sh: Add tests. * doc/guix.texi (Declaring the Home Environment): Mention 'guix home container' as a way to test configuration. (Invoking guix home): Document it.
2022-03-18guix system: Call 'export-graph' with the right port argument.Ludovic Courtès
* guix/scripts/system.scm (export-extension-graph) (export-shepherd-graph): Honor PORT.
2022-03-18guix home: Implement the 'extension-graph' and 'shepherd-graph' actions.Ludovic Courtès
Until now these two actions were silently ignored. * guix/scripts/home.scm (show-help, %options): Add "--graph-backend". (%default-options): Add 'graph-backend' key. (export-extension-graph, export-shepherd-graph): New procedures. (perform-action): Add #:graph-backend parameter. Add cases for the 'extension-graph' and 'shepherd-graph' actions. (process-action): Pass #:graph-backend to 'perform-action'. * guix/scripts/system.scm (service-node-type) (shepherd-service-node-type): Export * tests/guix-home.sh: Add tests. * doc/guix.texi (Invoking guix home): Document it.
2022-03-18graph: Factorize 'lookup-backend'.Ludovic Courtès
* guix/graph.scm (lookup-backend): New procedure. * guix/scripts/graph.scm (lookup-backend): Remove. * guix/scripts/system.scm (lookup-backend): Remove. * po/guix/POTFILES.in: Add 'guix/graph.scm'.
2022-03-18ui: 'show-what-to-build' highlights "would be downloaded" headings.Ludovic Courtès
* guix/ui.scm (show-what-to-build): Highlight "X MB would be downloaded".
2022-03-18ui: 'show-what-to-build' highlights "The following [...] will be built".Ludovic Courtès
* guix/colors.scm (highlight/warn): New procedure. * guix/ui.scm (show-what-to-build): Use 'highlight/warn' when displaying what would/will be built.
2022-03-18utils: Add ar-for-target and ld-for-target procedures.Maxim Cournoyer
* guix/utils.scm (ar-for-target, ld-for-target): New procedures.
2022-03-16packages: 'modify-inputs' preserves outputs in 'replace' clauses.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/53915>. Reported by Gordon Quad <gordon@niflheim.info>. * guix/packages.scm (replace-input): Preserve the outputs of INPUT by default. * tests/packages.scm ("modify-inputs, replace, extra output"): New test.
2022-03-16Revert "gnu: Add %final-inputs-riscv64."Efraim Flashner
This reverts commit 0444be868903356a37fc8ffd3cdf820ca038f3e6. This is no longer necessary after the gcc STARTFILE_PREFIX_SPEC commit.
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-03-14build-system/ocaml: Use standard packages as "build inputs".Ludovic Courtès
Conceptually, "standard packages" (GCC, Coreutils, etc.) are "build inputs". In the absence of cross-compilation support, this change has no effect, except for things like '--tune' that expect the compiler to be among the build inputs. * guix/build-system/ocaml.scm (lower): Move (standard-packages) from 'host-inputs' to 'build-inputs'.
2022-03-13gexp: Correctly handle #$output in 'gexp->approximate-sexp'.Maxime Devos
This addresses the following backtrace from "guix lint -c wrapper-inputs hostapd": Backtrace:ostapd@2.10 [wrapper-inputs]... [...] 174:9 3 (gexp->approximate-sexp #<gexp (modify-phases %standard?>) In srfi/srfi-1.scm: 586:17 2 (map1 (#<gexp-output out> #<gexp-input "pkg-config":o?>)) In guix/gexp.scm: 175:16 1 (_ _) In ice-9/boot-9.scm: 1685:16 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1685:16: In procedure raise-exception: Throw to key `match-error' with args `("match" "no matching pattern" #<gexp-output out>)'. * guix/gexp.scm (gexp->approximate-sexp): Handle the case where 'reference' is a <gexp-output>,, by returning (*approximate*). * tests/gexp.scm ("gexp->approximate-sexp, outputs"): Test it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-13gexp: Correctly handle unquoting S-exp objects.Maxime Devos
This fixes a false-positive in the linter: guix lint -c 'wrapper-inputs' libaio * guix/gexp.scm (gexp->approximate-sexp): Allow the 'thing' in <gexp-input> to be a sexp, without approximation, by testing if it is a record. * tests/gexp.scm ("unquoted sexp (not a gexp!)"): Test it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-11lint: check-tests-true: Allow #:tests? #t for some build systems.Maxime Devos
emacs-build-system sets #:tests? #f by default, so the linter shouldn't warn if #:tests? #t is set for packages using emacs-build-system. Likewise for texlive-build-system. * guix/lint.scm (check-tests-true): Do not warn if the build system is emacs-build-system or texlive-build-system. * tests/lint.scm ("tests-true: #:tests? #t acceptable for emacs packages") ("tests-true: #:tests? #t acceptable for texlive packages"): New tests. Fixes: <https://issues.guix.gnu.org/50299> Reported-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2022-03-07import: hackage: Use SRFI-71 instead of SRFI-11.Ludovic Courtès
* guix/import/hackage.scm (read-cabal-and-hash) (hackage-fetch-and-hash, hackage-fetch) (hackage->guix-package): Use 'let' and 'let*' instead of 'let-values' and 'let*-values'.
2022-03-07import: hackage: Avoid pointless use of 'compose'.Ludovic Courtès
* guix/import/hackage.scm (hackage-module->sexp): Unroll pointless calls to 'compose'. (hackage->guix-package): Likewise.
2022-03-07scripts: import: gem: Fix recursive error handling.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/scripts/import/gem.scm (guix-import-gem): Handle error. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: cran: Return multiple values for unknown packages.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/import/pypi.scm (cran->guix-package): Return 'values'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: elpa: Return multiple values for unknown packages.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/import/elpa.scm (elpa->guix-package): Return values. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: hackage: Return multiple values for unknown packages.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/import/hackage.scm (hackage->guix-package): Return 'values'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: pypi: Return multiple values for unknown packages.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/import/pypi.scm (pypi->guix-package): Return two values when PROJECT is false. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: pypi: Gracefully handle missing project home page.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/54259>. Reported by Ricardo Wurmus <rekado@elephly.net>. * guix/import/pypi.scm (pypi->guix-package): Upon 'missing-source-error?', raise '&fix-hint' only if 'project-info-home-page' returns a non-empty string.
2022-03-07derivations: Coalesce inputs that have the same output path.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/54209>. * guix/derivations.scm (coalesce-duplicate-inputs): Use the output paths of DRV as a hash table key. * tests/derivations.scm ("derivation with duplicate fixed-output inputs"): Expect a single input for FINAL. ("derivation with equivalent fixed-output inputs"): New test.
2022-03-07build-system/meson: Add more cross-compilation targets.Efraim Flashner
* guix/build-system/meson.scm (make-machine-alist): Add riscv64-linux option for cpu_family. Add riscv64-linux and powerpc-linux options for endian.
2022-03-06import: github: Reuse HTTP connection for the /tags URL fallback.Ludovic Courtès
* guix/import/github.scm (fetch-releases-or-tags): Call 'open-connection-for-uri' and reuse the same connection for the two 'http-fetch' calls. * .dir-locals.el (scheme-mode): Add 'call-with-port'.
2022-03-06http-client: Correctly handle redirects when #:keep-alive? #t.Ludovic Courtès
Previously PORT would be closed unconditionally, which broke redirects when #:keep-alive? #t is given. * guix/http-client.scm (http-fetch): Make 'port' a parameter of 'loop'. Upon 3xx responses, do not close PORT is KEEP-ALIVE? is true, but consume RESP's body. Add second argument to 'loop'.
2022-03-06import: github: Gracefully handle rate limit exhaustion.Ludovic Courtès
Previously, 'guix refresh' would literally crash when the rate limit was reached due to the call to 'error'. With this change, the updater notices when the rate limit is reached and it turns itself into a no-op until the rate limit has been reset. When running "guix refresh" (with no arguments), the 'github' updater gets used until the rate limit has been reached, after which "guix refresh" automatically picks up the next valid updater, typically 'generic-git'. * guix/import/github.scm (fetch-releases-or-tags): Use 'http-fetch' directly instead of 'json-fetch' to let 'http-get-error?' exceptions through. Handle 403 errors with an 'X-RateLimit-Remaining' header. (%rate-limit-reset-time): New variable. (update-rate-limit-reset-time!, request-rate-limit-reached?): New procedures. (latest-released-version): Remove calls to 'error'.
2022-03-06http-client: Add response headers to '&http-get-error'.Ludovic Courtès
* guix/http-client.scm (&http-get-error)[headers]: New field. (http-fetch): Initialize the 'headers' field.
2022-03-03download: Fix typo in procedure name.Ludovic Courtès
* guix/build/download.scm (make-credendials-with-ca-trust-files): Rename to... (make-credentials-with-ca-trust-files): ... this.
2022-03-03download: Load X.509 certificates only once.Ludovic Courtès
Previously we'd load /etc/ssl/certs/*.pem (or similar) every time 'http-fetch' is called. * guix/build/download.scm (make-credendials-with-ca-trust-files): Wrap in 'mlambda'.
2022-03-03download: Remove obsolete bit from docstring.Ludovic Courtès
This is a followup to f4cde9ac4aedb516c050a30fd999673da434bfa0. * guix/build/download.scm (open-connection-for-uri): Remove bit about 'close-connection' from the docstring.
2022-03-02shell: Disable caching when '-p' is passed.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/53658>. Reported by Guillaume Le Vaillant <glv@posteo.net>. Previously we would wrongfully cache things, by adding a new (profile . _) pair to the option alist, when the user runs: guix shell -p /path/to/profile -q * guix/scripts/shell.scm (profile-cached-gc-root): Add ('profile . _) case.