me
/
guix
Archived
1
0
Fork 0
Commit Graph

6805 Commits (dfbeb5d1ce6e8faefe1b5d48ae1ced71c39e91e8)

Author SHA1 Message Date
Ludovic Courtès afc490b957
substitute: Use SRFI-71 instead of SRFI-11.
* guix/scripts/substitute.scm (display-narinfo-data)
(open-connection-for-uri/cached)
(process-substitution): Use SRFI-71 instead of SRFI-11.
2022-06-26 23:19:14 +02:00
Ludovic Courtès f99f00fc81
status: Relay "updating substitutes" messages.
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.
2022-06-26 23:19:14 +02:00
Ludovic Courtès d418031a8c
self: 'guix-daemon' wrapper refers to the right Guile.
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'.
2022-06-26 23:19:13 +02:00
( 30edb241a9
build-system/dub: Don't expect ‘.dub/dub.json’.
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>
2022-06-19 02:00:00 +02:00
( ba95bbbac5
build-system/dub: Fix configure docstring indentation.
* guix/build/dub-build-system.scm (configure): Reflow docstring.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2022-06-19 02:00:00 +02:00
( c67ea330d4
build-system/dub: Use the gold linker.
* 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>
2022-06-19 02:00:00 +02:00
( c539a13050
build-system/dub: Don't explicitly return #t from phases.
* guix/build/dub-build-system.scm (configure, build, check, install):
Remove trailing #t.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2022-06-19 02:00:00 +02:00
Denis 'GNUtoo' Carikli 242fad357e
utils: Define 'target-x86?' predicate.
* guix/utils.scm (target-x86?): New predicate.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-06-24 10:21:05 +02:00
Christopher Baines 9d30cfa337
guix system: Inline menu-entries in to bootcfg in perform-action.
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.
2022-06-23 12:50:48 +01:00
Ludovic Courtès bdf4221767
refresh: Repurpose '-L' for '--load-path'.
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.
2022-06-22 23:43:22 +02:00
Ludovic Courtès 2ccbf3a45c
style: Keep values next to their keyword.
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.
2022-06-22 23:42:30 +02:00
Michal Atlas 4dbe1c96e4
build-system: chicken: Add version information to eggs if missing.
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>
2022-06-21 21:41:32 +02:00
Ludovic Courtès ab174e16b5
challenge: Colorize output.
* guix/scripts/challenge.scm (good-news, bad-news): New procedures.
(summarize-report, summarize-report-list): Use them and 'highlight'.
2022-06-19 23:14:56 +02:00
Julien Lepiller 319b8331b2
guix: self: Do not record reference to gcc-toolchain.
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.
2022-06-18 22:12:56 +02:00
Fredrik Salomonsson c3afbd05bf
guix: emacs-utils: Add emacs-header-parse.
* 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>
2022-06-17 23:39:32 +02:00
Fredrik Salomonsson f8275916fc
guix: emacs-utils: Add emacs-batch-script.
* 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>
2022-06-17 23:39:31 +02:00
Liliana Marie Prikler 956f0b4465
guix: Modernize renpy-build-system.
* 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.
2022-06-17 18:49:06 +02:00
Taiju HIGASHI c8803d89fe
ui: Improve pager selection logic when less is not installed.
* 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>
2022-06-16 23:57:41 +02:00
Ludovic Courtès 925a57c5d0
shell: Fix '--export-manifest' for cached profiles and when '-p' is used.
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.
2022-06-16 23:57:40 +02:00
Ludovic Courtès 4231031b69
shell: Do not auto-detect manifest when '-p' is used.
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.
2022-06-16 23:57:40 +02:00
Ludovic Courtès c8e393ffe2
packages: Change the order of %SUPPORTED-SYSTEMS.
Commit 2a34333d0c 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.
2022-06-16 23:57:40 +02:00
Josselin Poiret f404112007
channels: Print backtrace when generating package cache fails.
* 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>
2022-06-16 12:50:06 +02:00
Ludovic Courtès 53b9c27aa5
upstream: 'package-update' reports "unknown upstream releases" errors.
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.
2022-06-15 23:49:24 +02:00
Ludovic Courtès 5c06eedf08
refresh: Switch to SRFI-71.
* guix/scripts/refresh.scm (update-package): Use SRFI-71 'let' instead
of SRFI-11 'let-values'.
2022-06-15 23:49:24 +02:00
Ludovic Courtès 5d4b189120
challenge: When using '--diff', do not attempt to chmod symlinks.
This is a followup to 2a2856d5cc.

* guix/scripts/challenge.scm (make-directory-writable): Do not call
'make-file-writable' on symlinks.
2022-06-15 23:49:23 +02:00
Hartmut Goebel 0d9f1f15cb
import: Add hex.pm importer.
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.
2022-06-15 10:18:34 +02:00
Hartmut Goebel 97586ca1cb
build-system: Add 'rebar-build-system'.
* 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.
2022-06-15 10:17:25 +02:00
Hartmut Goebel 2f3cea45b9
Revert "Add (guix extracting-download)."
This reverts commit f63c79bf76, which was missed
when reverting the #51061 patch series for now in
a1679b74c9.
2022-06-15 10:17:24 +02:00
Ludovic Courtès 3d0749b4e3
ssh: Add #:connection-timeout parameter to 'open-ssh-session'.
* guix/ssh.scm (open-ssh-session): Add #:connection-timeout parameter
and honor it.
2022-06-15 00:25:20 +02:00
Ludovic Courtès 9be470b5d2
pull: Tweak cache directory validation code.
This is a followup to 7c52cad046.

* 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'.
2022-06-15 00:25:17 +02:00
Tobias Geerinckx-Rice 998d9a6183
pull: Fix typo in error message.
* guix/scripts/pull.scm (guix-pull): Report the right user name/ID.
2022-06-12 02:00:00 +02:00
Ludovic Courtès 2a2856d5cc
challenge: Actually delete nars that have been extracted.
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'.
2022-06-13 12:27:34 +02:00
Efraim Flashner 2a34333d0c
guix: packages: Add %32bit-supported-systems, %64bit-supported-systems.
* guix/packages.scm (%32bit-supported-systems,
%64bit-supported-systems): New variables.
(%supported-systems): Rewrite using %32bit-supported-systems,
%64bit-supported-systems.
2022-06-12 13:50:43 +03:00
Maxim Cournoyer 8994e13b9f
least-authority: Fix typo.
* guix/least-authority.scm (least-authority-wrapper): Fix typo in doc.
2022-06-10 23:52:34 -04:00
Tobias Geerinckx-Rice 7c52cad046
pull: Fail if cache directory ownership is suspect.
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’.
2022-06-05 02:00:00 +02:00
Josselin Poiret 5011866692
guix: platform: Fix typo in lookup-platform-by-target.
* guix/platform.scm (lookup-platform-by-target): Fix typo system ->
target.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-06-08 12:02:03 +02:00
Antero Mejr 7041fe0646
packages: Add 'specifications->packages'.
* 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>
2022-06-06 22:43:30 +02:00
Lars-Dominik Braun 143141726e
import: hackage: Filter upper/mixed case dependencies too.
* 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.
2022-06-06 13:26:51 +02:00
Lars-Dominik Braun dedfcaa8e2
import: hackage: Filter internal libraries from inputs and native-inputs.
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.
2022-06-06 13:26:45 +02:00
Lars-Dominik Braun c3fbaee345
import: cabal: Support library names
* 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.
2022-06-06 13:26:45 +02:00
Lars-Dominik Braun e3337f35af
import: cabal: Allow curly bracket before else statement.
* 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.
2022-06-06 13:26:45 +02:00
Lars-Dominik Braun 001e0bac99
import: cabal: Allow properties without space between key and value.
* 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.
2022-06-06 13:26:45 +02:00
Lars-Dominik Braun 0972feaff1
import: cabal: Allow curly brackets in more positions.
* 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.
2022-06-06 13:26:45 +02:00
Lars-Dominik Braun 2c5d18e421
import: cabal: Support elif statement.
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.
2022-06-06 13:26:09 +02:00
Tobias Geerinckx-Rice 91363452f2
guix system: Don't suggest reconfiguration during reconfiguration.
* guix/scripts/system.scm (process-action):
Add 'reconfigure to the warning's guard clause.

Reported by johnjaye on #guix.
2022-05-29 02:00:00 +02:00
Ludovic Courtès 35c1edb20a
guix home: Add 'edit' sub-command.
* guix/scripts/home/edit.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/scripts/home.scm (show-help): Add "edit".
(process-command): Handle it.
(guix-home): Add it.
* po/guix/POTFILES.in: Add 'guix/scripts/home/edit.scm'.
* doc/guix.texi (Invoking guix home): Document it.
2022-06-04 12:04:24 +02:00
Ludovic Courtès 3f83c0b7c7
guix system: Add 'edit' sub-command.
* guix/scripts/system/edit.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/scripts/system.scm (show-help): Mention "edit".
(actions): Add it.
(process-command): Handle it.
* doc/guix.texi (Invoking guix system): Document it.
* po/guix/POTFILES.in: Add guix/scripts/system/edit.scm.
2022-06-04 12:04:24 +02:00
Ludovic Courtès f9fb00ff08
edit: Extract 'spawn-editor' procedure.
* guix/scripts/edit.scm (spawn-editor): New procedure, with code from...
(guix-edit): ... here.  Use it.
2022-06-04 12:04:24 +02:00
zimoun 104b4e25ab
cache: Catch invalid 'last-expiry-cleanup'.
Fixes <http://issues.guix.gnu.org/55638>.

* guix/cache.scm (maybe-remove-expired-cache-entries)[last-expiry-date]:
Use 'get-string-all' + 'string->number' instead of 'read'; ignore
invalid numbers.
* tests/cache.scm ("maybe-remove-expired-cache-entries, empty cache")
("maybe-remove-expired-cache-entries, corrupted cache"): New tests.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-06-04 12:04:23 +02:00
Ludovic Courtès 2acc83daa5
shell: '--export-manifest -D x -D y' generates a valid manifest.
* guix/scripts/shell.scm (manifest->code*): Add missing 'list' in
generated 'concatenate-manifests' call.
* tests/guix-shell-export-manifest.sh: Add test.
2022-06-01 22:22:19 +02:00
Tobias Geerinckx-Rice 22f56dda8e
import: minetest: Fix typo.
* guix/import/minetest.scm (important-dependencies): Fix ‘choosen’ typo.
2022-05-29 02:00:07 +02:00
Maxim Cournoyer 5d8fb87127
gnu: Remove python2-setuptools.
* gnu/packages/python-xyz.scm (python2-setuptools): Delete variable.
(python-setuptools)[properties]: Delete field.
* gnu/packages/syncthing.scm (syncthing-gtk): Delete commented native input.
* guix/lint.scm (check-inputs-should-not-be-an-input-at-all): Remove obsolete entries.
2022-05-31 14:54:16 -04:00
Maxim Cournoyer be672f1f7f
gnu: bazaar: Obsolete with breezy.
* gnu/packages/version-control.scm (bazaar): Deprecate package.
* guix/build/bzr.scm (bzr-fetch): Adjust to use breezy; delete trailing #t.
* guix/bzr-download.scm (bzr-package): Replace bazaar by breezy.
2022-05-31 14:54:02 -04:00
Maxim Cournoyer bec1c89891
gnu: Remove python2-mccabe.
* gnu/packages/python-xyz.scm (python2-mccabe): Delete variable.
2022-05-31 14:53:37 -04:00
Maxim Cournoyer 53cd5923ef
diagnostics: Fix typo about 0-indexed COL in location.
* guix/diagnostics.scm (source-properties->location): The location column is
0-indexed, not 1-indexed (the same as in source-properties, so the code is
accurate).
2022-05-31 14:52:14 -04:00
Maxim Cournoyer d7c4e7a0c2
utils: Add a %guix-source-root-directory procedure.
* guix/utils.scm (%guix-source-root-directory): New procedure.
2022-05-31 14:52:14 -04:00
Maxim Cournoyer 5bc1ede862
utils: Add a 'delete-expression' procedure.
* guix/utils.scm: Fix copyright lines and order imports.
(edit-expression): Fix typo in doc.  Add a new 'include-trailing-newline?'
keyword argument.  Update doc.
(delete-expression): New procedure.
2022-05-31 14:52:13 -04:00
Maxim Cournoyer 51b6715960
packages: Fix typo in package-superseded doc.
* guix/packages.scm (package-superseded): Fix typo.
2022-05-31 14:52:13 -04:00
Ludovic Courtès 1ae0e1dc29
store: 'map/accumulate-builds' preserves caches.
Fixes <https://issues.guix.gnu.org/55721>.

Starting from the switch to functional object caches ca.
9e5812ac59, we would be losing accumulated
caches when aborting to the build handler.  This patch fixes that.

In particular, by preserving '%reference-cache-id', we avoid redundant
'query-references' RPCs, which accounted for a large part of the extra
processing time.

* guix/store.scm (build-accumulator): When returning an <unresolved>
node, call 'set-store-connection-caches!' before and after to preserve
caches.
(map/accumulate-builds): Pass STORE as the first argument to
the <unresolved> continuation.
2022-05-30 16:34:39 +02:00
Ludovic Courtès 40530ffd15
store: Record cache lookups in 'references/cached'.
* guix/store.scm (references/cached): Add call to
'record-cache-lookup!'.
2022-05-29 23:56:01 +02:00
Ricardo Wurmus e640da33f3
Merge branch 'wip-r' 2022-05-29 11:49:03 +02:00
Ricardo Wurmus 371a83b764
scripts/import: Use pretty printer from (guix scripts style).
* guix/scripts/import.scm (guix-import): Use pretty-print-with-comments.
(newline-rewriting-port): Remove procedure.
2022-05-29 00:01:46 +02:00
Ricardo Wurmus 556ca8ba21
guix: Upgrade to Bioconductor 3.15.
* guix/build-system/r.scm (bioconductor-uri): Bump Bioconductor version to
3.15.
* guix/import/cran.scm (%bioconductor-version): Same.
2022-05-28 23:19:05 +02:00
yarl-baudig@mailoo.org d4158ea63a
substitute: Check for --help or --version options early.
Running `guix archive --authorize` sets /etc/guix/acl to 600
via with-atomic-file-output via mkstemp!.
Then running `guix substitute --help/--version` fails on "permission denied".
While "guix substitute" is an internal tool, the options --help and --version
exist and you should be able to run those from the command line.

* guix/scripts/substitute.scm (guix-substitute): Earlier check for
--help or --version.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-27 23:36:36 +02:00
Ludovic Courtès 4e13ee4b57
guix package: Sort search results by package version.
Fixes <https://issues.guix.gnu.org/55480>.
Reported by Greg Hogan <code@greghogan.com>.

* guix/scripts/package.scm (find-packages-by-description): When PACKAGE1
and PACKAGE2 have the same name, sort by version.
2022-05-26 11:41:05 +02:00
Mathieu Othacehe d2c06bf2ff
platforms: Remove the s390x platform.
Turns out this platform doesn't have a bootstrap tarball and should be
considered as not supported for now.

* guix/platforms/s390.scm: Remove it.
* Makefile.am (MODULES): Adapt it.
* doc/guix.texi (Foreign Architectures): Ditto.
2022-05-25 17:11:32 +02:00
Mathieu Othacehe a9dcd60bc1
platforms: Remove the hurd module.
The hurd platform is now defined in the (guix platforms x86) module.

* guix/platforms/hurd.scm: Remove it.
* Makefile.am (MODULES): Adapt it.
2022-05-25 13:01:15 +02:00
Josselin Poiret 9e2b0dc9e5
build-system: linux-module: Directly use-module (guix platform).
* guix/build-system/linux-module.scm (system->arch): Remove module-ref
shenanigans.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-05-25 09:27:25 +02:00
Josselin Poiret dab819d5c4
Move (gnu platform) and (gnu platforms ...) to guix/.
* gnu/platform.scm:
* gnu/platforms/arm.scm:
* gnu/platforms/hurd.scm:
* gnu/platforms/mips.scm:
* gnu/platforms/powerpc.scm:
* gnu/platforms/riscv.scm:
* gnu/platforms/s390.scm:
* gnu/platforms/x86.scm: Move to guix/.

* Makefile.am:
* doc/guix.texi (Porting to a New Platform):
* etc/release-manifest.scm:
* gnu/ci.scm:
* gnu/image.scm:
* gnu/local.mk:
* gnu/packages/bioinformatics.scm:
* gnu/packages/bootstrap.scm:
* gnu/packages/cross-base.scm:
* gnu/packages/instrumentation.scm:
* gnu/packages/linux.scm:
* gnu/system/image.scm:
* gnu/system/images/hurd.scm:
* gnu/system/images/novena.scm:
* gnu/system/images/pine64.scm:
* gnu/system/images/pinebook-pro.scm:
* gnu/system/images/rock64.scm:
* guix/scripts/build.scm:
* guix/scripts/system.scm:
* guix/self.scm: Update (gnu platform...) to (guix platform...).

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-05-25 09:27:25 +02:00
Ludovic Courtès 93f601d97c
profiles: 'manifest->gexp' emits 'properties' field only when needed.
Partly fixes <https://issues.guix.gnu.org/55499>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

For a profile built with:

  guix install r-seurat r-cistopic r-monocle3 r-cicero-monocle3

this reduces the size of the 'manifest' file from 6.4M to 5.6M (12%).

* guix/profiles.scm (manifest->gexp)[entry->gexp]: When PROPERTIES is
empty, do not emit a 'properties' field.
2022-05-24 17:17:26 +02:00
Christopher Baines 00be2fcb0b
lint: check-derivation: Catch all exceptions.
Rather than raising the exception.

I'm looking at this as the linux-module-build-system is broken in such a way
that this causes the derivation linter to error.  With this change, it
correctly reports the issue.

* guix/lint.scm (check-derivation): Catch all exceptions.
2022-05-23 23:18:30 +01:00
Kyle Meyer 71de612e10
licenses: Add Expat No Attribution license.
* guix/licenses.scm (expat-0): New variable.
* guix/import/utils.scm (spdx-string->license): Add MIT-0.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-23 16:24:47 +02:00
Nicolas Graves 95b0544fcf
import: utils: Update list of SPDX licenses.
* guix/import/utils.scm (spdx-string->license): Update.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-23 16:24:46 +02:00
Josselin Poiret aaf547824e
scripts: package: Transform before creating manifest entries.
* guix/scripts/package.scm (options->installable): Add TRANSFORM
argument, to be able to directly transform the new packages before
creating their manifest entries.
(process-actions): Remove transform-entry, and step3, transforming
directly in step2.
* tests/guix-package.sh: Add test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-23 16:24:46 +02:00
Mathieu Othacehe 08756c831c
self: Ship platform files.
* guix/self.scm (compiled-guix): Ship them.
2022-05-22 16:06:07 +02:00
Mathieu Othacehe 051c087d71
scripts: build: Highlight the current system with --list-systems.
* guix/scripts/build.scm (list-systems): Highlight it.
2022-05-22 15:15:33 +02:00
Mathieu Othacehe b55310603f
linux: Remove system->linux-architecture procedure.
* gnu/packages/linux.scm (system->linux-architecture): Remove it.
(make-linux-libre-headers*, make-linux-libre*): Adapt them.
* guix/build-system/linux-module.scm (system->arch): Adapt it.
* gnu/packages/instrumentation.scm (uftrace): Ditto.
* gnu/packages/cross-base.scm (cross-kernel-headers): Ditto.
* gnu/packages/bioinformatics.scm (ncbi-vdb): Ditto.
* doc/guix.texi (Porting to a new platform): Update it.
2022-05-22 15:15:33 +02:00
Mathieu Othacehe ec42d287b4
scripts: Add --list-systems and --list-targets options.
Also factorize the --system and --target build options. Check that the passed
system and target arguments are known platforms.

* doc/guix.texi (Additional Build Options): Document the new --list-systems
and --list-targets options.
* guix/scripts/build.scm (show-cross-build-options-help,
show-emulated-build-options-help, list-systems, list-targets): New procedures.
(%standard-cross-build-options, %standard-emulated-build-options): New
variables.
(show-help): Remove --system and --target entries and use
show-cross-build-options-help and show-emulated-build-options-help procedures instead.
(%options): Remove --system and --target entries and use
%standard-cross-build-options and %standard-emulated-build-options variables instead.
* guix/scripts/archive.scm (show-help, %options): Adapt them.
* guix/scripts/environment.scm: Ditto.
* guix/scripts/graph.scm: Ditto.
* guix/scripts/pack.scm: Ditto.
* guix/scripts/pull.scm: Ditto.
* guix/scripts/size.scm: Ditto.
* guix/scripts/weather.scm: Ditto.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-05-22 15:15:33 +02:00
Philip McGrath 9885c2fd07
gnu: elm: Support 'elm reactor'.
* gnu/packages/elm.scm (elm): Rename to ...
(elm-sans-reactor): ... this new variable.
[synopsis, description]: Tweak.
(elm): New variable.
* guix/build-system/elm.scm (default-elm): Use elm-sans-reactor.
* doc/guix.texi (Build Systems)[elm-build-system]: Update accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22 01:07:54 +02:00
Philip McGrath 903c82583e
import: Add Elm importer.
* guix/import/elm.scm, guix/scripts/import/elm.scm: New files.
* Makefile.am (MODULES): Add them.
* guix/scripts/import.scm (importers): Add "elm".
* doc/guix.texi (Invoking guix import): Document Elm importer.
* doc/contributing.texi (Elm Packages): Mention it.
* tests/elm.scm ("(guix import elm)"): New test group.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22 01:07:52 +02:00
Philip McGrath 9a47fd56dd
import: json: Accept '#:http-fetch' in 'json-fetch'.
For example, supplying 'http-fetch/cached' would enable caching.

* guix/import/json.scm (json-fetch): Add '#:http-fetch' argument.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22 01:07:52 +02:00
Philip McGrath ae533e3084
http-client: 'http-fetch/cached' converts strings to URIs.
* guix/http-client.scm (http-fetch/cached): Use 'string->uri' if URI is
a string, as with 'http-fetch'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22 01:07:52 +02:00
Philip McGrath 00a5a07bb2
http-client: Accept '#:headers' in 'http-fetched/cached'.
Callers can supply alternative headers as with 'http-fetch'.

* guix/http-client.scm (http-fetch/cached): Add '#:headers' argument.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22 01:07:52 +02:00
Philip McGrath dce724dc82
build-system/elm: Add implicit Elm inputs.
* guix/build-system/elm.scm (default-elm-core): New variable.
(default-elm-json): Likewise
(lower): Use them as implicit inputs when applicable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22 01:07:52 +02:00
Philip McGrath aefcfdd0ae
guix: Add elm-build-system.
* gnu/packages/patches/elm-offline-package-registry.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/elm.scm (elm): Use it.
* guix/build-system/elm.scm, guix/build/elm-build-system.scm,
tests/elm.scm: New files.
* Makefile.scm (MODULES, SCM_TESTS): Add them.
* doc/guix.texi (Build Systems): Document 'elm-build-system'.
* doc/contributing.texi (Elm Packages): New section. Document naming
conventions and utilities.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22 01:07:51 +02:00
Ricardo Wurmus dd19b191d6
guix: Remove unused import.
* guix/scripts/pull.scm: Do not import with-file-lock/no-wait from (guix build
syscalls).
2022-05-20 20:42:53 +02:00
Ricardo Wurmus e35c08d2f9
guix: Remove duplicate definitions of dump-port.
* guix/store.scm (dump-port): Remove procedure; autoload from (guix build
utils) instead.
* guix/store/deduplication.scm (dump-port): Remove procedure; unhide dump-port
from (guix build utils).
2022-05-20 20:42:53 +02:00
Ludovic Courtès a4994d7393
inferior: Close duplicate socketpair file descriptor.
* guix/inferior.scm (open-bidirectional-pipe): Pass SOCK_CLOEXEC to
'socketpair'.
* tests/inferior.scm ("close-inferior"): Add test.
2022-05-20 18:46:07 +02:00
Ludovic Courtès 2f17089371
store: Use a decaying cutoff in 'map/accumulate-builds'.
This reduces the wall-clock time of:

  ./pre-inst-env guix system vm gnu/system/examples/desktop.tmpl -n

from 2m13s to 53s (the timings depend on which derivations have already
been built and are in store; in this case, many were missing).

* guix/store.scm (default-cutoff): New variable.
(map/accumulate-builds): Use it.  Parameterize it in recursive calls to
have decaying cutoff.
2022-05-18 23:27:08 +02:00
Ludovic Courtès 001f4afd07
packages: Use separate package/graft cache.
* guix/packages.scm (%package-graft-cache): New variable.
(input-graft): Add (=> %package-graft-cache).
2022-05-18 23:27:03 +02:00
Ludovic Courtès ba6ba1a5af
store: 'mcached' users can specify a cache ID.
Users of 'mcached' can now specify a cache ID; furthermore, the cache
hit rate is automatically recorded for all the caches accessed with
'mcached'.

* guix/store.scm (%max-store-connection-caches)
(%store-connection-cache-names): New variables.
(recorder-for-cache): New procedure.
(record-cache-lookup!): Add 'cache-id' parameter and rewrite in terms of
'recorder-for-cache'.
(lookup-cached-object): Add 'cache-id' parameter and honor it.
(%mcached): Add #:cache parameter and honor it.
(mcached): Add '=>' keyword and corresponding clauses.
2022-05-18 23:26:59 +02:00
Efraim Flashner fd00ac7e27
guix: cpu: Add detection for aarch64 CPUs.
* guix/cpu.scm (cpu->gcc-architecture): Add detection logic for aarch64
CPUs.
2022-05-17 15:19:41 +03:00
Efraim Flashner 41ed6db81e
guix: cpu: Add support for reading armhf/aarch64 CPUs.
* guix/cpu.scm (current-cpu): Set flags at the beginning of the loop.
Read from '/proc/cpuinfo' until the end of the file. Add match options
for discovering armhf/aarch64 cpu configurations.
2022-05-17 15:19:37 +03:00
Maxime Devos 89a2eb25c3
search-paths: Define $SSL_CERT_DIR and $SSL_CERT_FILE.
For the ‘why’, see the docstring next to $SSL_CERT_DIR.  In later commits,
packages will be changed to use these variables and the variables will be
added to more packages.

* guix/search-paths.scm ($SSL_CERT_DIR, $SSL_CERT_FILE): New variables.
* doc/guix.texi (Search Paths): Document them.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-13 17:15:37 +02:00
Maxim Cournoyer 8cdad3484c
download: Add a mirror for CTAN.
* guix/download.scm (%mirrors)[ctan]: New entry.
2022-05-12 12:45:49 -04:00
Ludovic Courtès 0f024554e6
transformations: Preserve transformation order in package property.
Fixes <https://issues.guix.gnu.org/54942>.
Reported by SeerLite <seerlite@nixnet.email>.

* guix/transformations.scm (options->transformation)
[package-with-transformation-properties]: Add call to 'reverse'.
* tests/transformations.scm ("options->transformation, property order"):
New test.
2022-05-05 23:56:58 +02:00
Ludovic Courtès 3682bd4003
Add (guix least-authority).
* guix/least-authority.scm: New file.
* Makefile.am (MODULES): Add it.
* gnu/build/shepherd.scm (default-mounts): Make public.
2022-05-01 21:30:35 +02:00
Ludovic Courtès 774f8804ba
gexp: Add 'references-file'.
* gnu/services/base.scm (references-file): Remove.
* guix/gexp.scm (references-file): New procedure.
* tests/gexp.scm ("references-file"): New test.
2022-05-01 21:30:34 +02:00
Ludovic Courtès d2c663711e
guix system: Highlight search results.
This is a followup to 5e0c347975.

* guix/scripts/system/search.scm (guix-system-search): Pass #:regexps
parameter to 'display-search-results'.
2022-04-29 22:59:08 +02:00
Ludovic Courtès c1719a0adf
publish: Send uncached narinfo replies from the main thread.
Fixes <https://issues.guix.gnu.org/54723>.
Reported by Guillaume Le Vaillant <glv@posteo.net>.

Regression introduced in f743f2046b.

With commit f743f2046b, responses to
pipelined GETs would end up being written concurrently by many threads.
Thus the body of those responses could be interleaved and garbled.

* guix/scripts/publish.scm: Revert
f743f2046b.
* tests/publish.scm ("/*.narinfo pipeline"): New test.
2022-04-29 18:07:17 +02:00
Alex Griffin e5098ad9b0
scripts: pack: Fix typo.
* guix/scripts/pack.scm (compressor-extenstion): Fix typo.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-04-26 09:12:31 +02:00
Maxim Cournoyer 96dbcd7443
pack: Fix match error for multi-packages deb packs.
* guix/scripts/pack.scm: Remove duplicated copyright line.
(debian-archive)[single-entry]: Match one or anything, not one or zero.

Reported-by: jgart <jgart@dismail.de>
2022-04-23 00:59:07 -04:00
Attila Lendvai 8852f911ff
git-download: Set locale to deal with Unicode in git metadata.
Without this the git-fetch GEXP is run in an environment that uses ASCII
character encoding when strings are crossing the Guile - C boundary.  It means
that e.g. tag names that have Unicode chars in them will cause problems,
e.g. when walking and deleting the .git directory.

An example in the wild: https://github.com/klauspost/pgzip/tags

Fixes <https://issues.guix.gnu.org/54893>.

* guix/git-download.scm (git-fetch): Call 'setenv' and 'setlocale' to
set it to en_US.utf8.
* gnu/packages/commencement.scm (glibc-utf8-locales-final): Make public.
Add 'properties' field.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-04-20 23:46:43 +02:00
Ludovic Courtès 5e0c347975
ui: Highlight package and service search results.
* guix/ui.scm (package->recutils): Add #:highlighting parameter and use it.
(display-search-results): Add #:regexps parameter; call
'colorize-full-matches' and pass #:highlighting.
* guix/scripts/package.scm (process-query): Pass #:regexps to
'display-search-results'.
* guix/scripts/home.scm (search): Likewise.
* guix/scripts/system/search.scm (service-type->recutils): Add #:highlighting
parameter and use it.
2022-04-19 18:07:49 +02:00
Ludovic Courtès d08e4d52a3
colors: Add 'colorize-full-matches'.
* guix/colors.scm (colorize-full-matches): New procedure.
2022-04-19 18:07:49 +02:00
Ludovic Courtès 00dcfb261b
ui: Highlight important bits in recutils output.
* guix/scripts/system/search.scm (service-type->recutils): Highlight the
value of the 'name' field.
* guix/ui.scm (package->recutils): Likewise for 'name' and 'version'.
2022-04-19 18:07:49 +02:00
Ludovic Courtès b9233cb9a8
publish: Support systemd-style socket activation.
* guix/scripts/publish.scm (systemd-socket): New procedure.
(guix-publish): Add 'style' variable.  Adjust startup message depending
on whether STYLE is 'systemd.
* doc/guix.texi (Invoking guix publish): Mention socket activation.
2022-04-14 14:48:20 +02:00
Ludovic Courtès 17c6d00b57
publish: Use SRFI-71 instead of SRFI-11.
* guix/scripts/publish.scm (make-request-handler): Use 'let' instead of
'let-values'.
2022-04-14 14:48:20 +02:00
Ludovic Courtès c9cded0955
style: Correctly read dots in pairs and improper lists.
Until now dots were read as symbols.

* guix/scripts/style.scm (read-with-comments)[dot]: New variable.
[dot?, reverse/dot]: New procedures.
Use 'reverse/dot' instead of 'reverse' when reading lists.
* tests/style.scm ("read-with-comments: dot notation")
("((a . 1) (b . 2))", "(a b c . boom)"): New tests.
2022-04-14 14:48:20 +02:00
Liliana Marie Prikler 9ab158a457
guix: Add define-deprecated/public-alias.
* guix/deprecation.scm (define-deprecated/public-alias): New variable.
2022-04-12 20:32:32 +02:00
Attila Lendvai 2c73e654fe
http-client: Fix redirection.
* guix/http-client.scm (http-fetch): Use the right uri variable in case of
redirection.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-11 15:49:32 +02:00
Julien Lepiller d59abc336d
import: opam: Factor out source import.
This also ensures a package can be imported even when it does not
specify a URL.

* guix/import/opam.scm (opam->guix-source): New procedure.
(opam->guix-package): Use it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-11 11:55:58 +02:00
Julien Lepiller be7338d400
import: opam: Accept tabulations.
* guix/import/opam.scm (SP, SP2): Accept tabulation as whitespace.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-11 11:55:54 +02:00
Ludovic Courtès 7da907f90e
reconfigure: Fix typo on 'live-service-transient?'.
Fix typo introduced in e25eca35ff.

* guix/scripts/system/reconfigure.scm (running-services): Add question
mark to 'live-service-transient?.
2022-04-11 09:27:03 +02:00
Ludovic Courtès e25eca35ff
services: herd: Adjust to <live-service> changes.
This is a followup to a2c759c830.

* 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-10 01:15:13 +02:00
Ludovic Courtès 090ebc5ff9
guix describe: Add missing import.
Fixes a regression introduced in
d4e858763c.

* guix/scripts/describe.scm: Add missing autoload.
2022-04-09 00:29:24 +02:00
Ludovic Courtès 13307c198b
diagnostics: Turn diagnostic locations into hyperlinks.
* guix/diagnostics.scm (print-diagnostic-prefix): Use
'location->hyperlink' when 'supports-hyperlinks?' returns true.
2022-04-08 23:59:48 +02:00
Ludovic Courtès 3da62bf5aa
ui: Move 'location->hyperlink' to (guix diagnostics).
* guix/ui.scm (location->hyperlink): Move to...
* guix/diagnostics.scm: ... here.
* guix/scripts/system/search.scm: Adjust imports accordingly.
2022-04-08 23:59:48 +02:00
Ludovic Courtès d4e858763c
ui: Move hyperlink facilities to (guix colors).
* 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-08 23:59:48 +02:00
Ludovic Courtès c42b7baf13
shell: Add '--export-manifest'.
* 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-04 22:58:04 +02:00
Ludovic Courtès 6fed836a6f
environment: Export 'load-manifest'.
* guix/scripts/environment.scm (load-manifest): New procedure.
(options/resolve-packages): Use it.
2022-04-04 22:58:03 +02:00
Ludovic Courtès f54f2aa9df
packages: Add 'package-unique-version-prefix'.
* 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-04 22:58:03 +02:00
Maxim Cournoyer 360e2eb3ac
build: emacs-utils: Add a (as-display) subform to `emacs-substitute-variables'.
* 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-04 00:06:31 -04:00
Maxim Cournoyer bfe66d4a2a
import: pypi: Use new style for the conditional unzip input.
* guix/import/pypi.scm (make-pypi-sexp)<unzip>: Use new style.
2022-04-04 00:06:31 -04:00
Ludovic Courtès 2a363bb5d3
weather: Colorize the output.
* guix/colors.scm (coloring-procedure): Export.
* guix/scripts/weather.scm (report-server-coverage): Highlight the
server name and colorize the availability ratio.
2022-04-01 18:01:06 +02:00
Efraim Flashner 67213a2759
download: Use https for main KDE source.
* guix/download.scm (%mirrors)[kde]: Use https URIs for main KDE mirrors.
* tests/lint.scm ("mirror-url: kde suggestion"): New test.
2022-03-29 14:43:14 +03:00
Maxim Cournoyer 65400c3c3b
profiles: manual-database: Remove GDBM workaround.
* guix/profiles.scm (manual-database): No longer set the MALLOC_PERTURB_
environment variable.
2022-03-22 14:51:53 -04:00
jgart 18119fe288
packages: Clarify comment about build-system package record field.
* 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-22 15:29:32 +01:00
Maxime Devos e584a093f9
packages: Fix time-travel from Guix 1.1.0 / Guile < 2.2.7.
* 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-21 23:03:35 +01:00
Ludovic Courtès 3748c32b13
home: import: Clarify alias parsing code.
* 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-20 19:02:41 +01:00
Ludovic Courtès 6da2a5a565
home: import: Properly parse aliases that contain quotes.
* 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-20 19:02:41 +01:00
Ludovic Courtès 9ea6a18e99
guix home: Show "container" in '--help' output.
This is a followup to 094a2cfbe4.

* guix/scripts/home.scm (show-help): Add "container".
2022-03-19 22:25:53 +01:00
Ludovic Courtès 094a2cfbe4
guix home: Add 'container' command.
* 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-19 18:51:09 +01:00
Ludovic Courtès 322707bc7f
guix system: Call 'export-graph' with the right port argument.
* guix/scripts/system.scm (export-extension-graph)
(export-shepherd-graph): Honor PORT.
2022-03-18 16:03:33 +01:00
Ludovic Courtès 25261cbf96
guix home: Implement the 'extension-graph' and 'shepherd-graph' actions.
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-18 16:03:33 +01:00
Ludovic Courtès f5a94b3a9f
graph: Factorize 'lookup-backend'.
* 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-18 16:03:33 +01:00
Ludovic Courtès 625fa3cfe8
ui: 'show-what-to-build' highlights "would be downloaded" headings.
* guix/ui.scm (show-what-to-build): Highlight "X MB would be downloaded".
2022-03-18 16:03:33 +01:00
Ludovic Courtès 9e0f0123a0
ui: 'show-what-to-build' highlights "The following [...] will be built".
* 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-18 16:03:32 +01:00
Maxim Cournoyer cd85f8bb95
utils: Add ar-for-target and ld-for-target procedures.
* guix/utils.scm (ar-for-target, ld-for-target): New procedures.
2022-03-18 01:26:26 -04:00
Ludovic Courtès 00dfff84c6
packages: 'modify-inputs' preserves outputs in 'replace' clauses.
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-16 15:48:51 +01:00
Efraim Flashner 030900747b
Revert "gnu: Add %final-inputs-riscv64."
This reverts commit 0444be8689.

This is no longer necessary after the gcc STARTFILE_PREFIX_SPEC commit.
2022-03-16 12:16:15 +02:00
Ludovic Courtès 3b80e79f21
transformations: '--tune' prints supported micro-architectures upon error.
* guix/transformations.scm (build-system-with-tuning-compiler): Add
&fix-hint condition when asked for an unsupported micro-architecture.
2022-03-14 23:32:30 +01:00
Ludovic Courtès a359f3a49c
build-system/ocaml: Use standard packages as "build inputs".
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-14 23:32:18 +01:00
Maxime Devos 2e5c3d91fe
gexp: Correctly handle #$output in 'gexp->approximate-sexp'.
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-13 23:20:07 +01:00
Maxime Devos 5aec62ee0f
gexp: Correctly handle unquoting S-exp objects.
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-13 23:18:14 +01:00
Maxime Devos 88e44f7e16
lint: check-tests-true: Allow #:tests? #t for some build systems.
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-11 23:34:47 -05:00
Ludovic Courtès f7bb161445
import: hackage: Use SRFI-71 instead of SRFI-11.
* 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-07 22:49:29 +01:00
Ludovic Courtès 483e4a9d07
import: hackage: Avoid pointless use of 'compose'.
* guix/import/hackage.scm (hackage-module->sexp): Unroll pointless calls
to 'compose'.
(hackage->guix-package): Likewise.
2022-03-07 22:49:29 +01:00
zimoun 5278cab3dc
scripts: import: gem: Fix recursive error handling.
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-07 22:49:29 +01:00
zimoun 7229b0e858
import: cran: Return multiple values for unknown packages.
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-07 22:49:28 +01:00
zimoun 1fe81b349c
import: elpa: Return multiple values for unknown packages.
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-07 22:49:28 +01:00
zimoun 6bb92098b4
import: hackage: Return multiple values for unknown packages.
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-07 22:49:28 +01:00
zimoun 434925379d
import: pypi: Return multiple values for unknown packages.
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-07 22:49:28 +01:00
Ludovic Courtès ebb03447f8
import: pypi: Gracefully handle missing project home page.
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-07 22:49:28 +01:00
Ludovic Courtès 1cad347618
derivations: Coalesce inputs that have the same output path.
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-07 22:49:27 +01:00
Efraim Flashner 7b2f749862
build-system/meson: Add more cross-compilation targets.
* 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-07 22:53:57 +02:00
Ludovic Courtès a8d3033da6
import: github: Reuse HTTP connection for the /tags URL fallback.
* 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-06 22:49:47 +01:00
Ludovic Courtès 8786c2e8d7
http-client: Correctly handle redirects when #:keep-alive? #t.
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-06 22:49:47 +01:00
Ludovic Courtès 55e8e283ae
import: github: Gracefully handle rate limit exhaustion.
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-06 22:49:47 +01:00
Ludovic Courtès ecad9b2213
http-client: Add response headers to '&http-get-error'.
* guix/http-client.scm (&http-get-error)[headers]: New field.
(http-fetch): Initialize the 'headers' field.
2022-03-06 22:49:46 +01:00
Ludovic Courtès f1c18e1766
download: Fix typo in procedure name.
* guix/build/download.scm (make-credendials-with-ca-trust-files): Rename
to...
(make-credentials-with-ca-trust-files): ... this.
2022-03-03 23:57:01 +01:00
Ludovic Courtès c1a871a166
download: Load X.509 certificates only once.
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-03 23:57:00 +01:00
Ludovic Courtès b4acb39b6b
download: Remove obsolete bit from docstring.
This is a followup to f4cde9ac4a.

* guix/build/download.scm (open-connection-for-uri): Remove bit about
'close-connection' from the docstring.
2022-03-03 23:57:00 +01:00
Ludovic Courtès ee6275c974
shell: Disable caching when '-p' is passed.
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.
2022-03-02 19:26:15 +01:00
Maxim Cournoyer deaa322963
guix: Index the man-db database via man pages names.
Fixes <https://issues.guix.gnu.org/38838>.

* guix/man-db.scm (write-mandb-database): Use the abbreviated base name of the
man page as the key, not its full file name.
2022-03-02 00:00:55 -05:00
Ludovic Courtès 2ddfb7b99b
pull: No longer print upgraded/added packages upon completion.
* guix/scripts/pull.scm (build-and-install): Remove call to
'display-profile-news' and adjust accordingly.
2022-02-27 18:06:19 +01:00
Ludovic Courtès bc8bea1739
pull: '--news' no longer shows package lists.
* guix/scripts/pull.scm (display-channel-news): Return #t when news were
displayed.
(display-news): Add #:profile-news? parameter and honor it.  Print
something there were no news.
(process-query): For 'display-news', call 'display-channel-news'
directly.
* doc/guix.texi (Invoking guix pull): Adjust accordingly.
2022-02-27 18:06:14 +01:00
zimoun 1f6ae9a8e0
build: julia-build-system: Fix corner-case for parallel tests.
* guix/build/julia-build-system.scm (check): Do not run parallel tests when
'--cores=1'.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2022-02-24 12:20:32 +02:00
Efraim Flashner 05d469ab9d
build: julia: Add 'julia-package-dependencies' as keyword.
* guix/build-system/julia.scm (link-depot): Accept julia-package-dependencies
keyword and use it for 'julia-create-package-toml' function.
(julia-create-package-toml): Use pattern matching.
(julia-build): Add 'julia-pacakge-dependencies'.
* guix/build/julia-build-system.scm (julia-build): Add
'#:julia-package-dependencies' keyword.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2022-02-24 12:20:31 +02:00
Ludovic Courtès 0ca26437cb
guix build: Warn when attempting to build an unsupported package.
Fixes <https://issues.guix.gnu.org/51801>.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.

* guix/scripts/build.scm (options->derivations)[warn-if-unsupported]:
New procedure.
[compute-derivation]: Use it.
* tests/guix-build.sh: Add test.
2022-02-18 14:14:38 +01:00
Ludovic Courtès 5a57313918
profiles: 'profile-derivation' rejects unsupported packages.
Previously user-facing commands would happily start building packages
even if they do not support that system.  With this change, all the
user-facing commands reject unsupported packages without going further.

* guix/profiles.scm (profile-derivation): Add #:allow-unsupported-packages?.
Define 'check-supported-packages' and honor #:allow-unsupported-packages?.
* tests/guix-pack.sh, tests/guix-package.sh, tests/guix-shell.sh: Ensure
that unsupported packages are rejected.
* tests/guix-system.sh: Pass "--system=armhf-linux" when attempting to
build gnu/system/examples/asus-c201.tmpl.
2022-02-18 14:14:38 +01:00
Ludovic Courtès 0572737a62
packages: 'package-transitive-supported-systems' ignores '%current-target-system'.
Previously 'package-transitive-supported-systems' would enter an
infinite loop over the cross-compilation tool chain if
%CURRENT-TARGET-SYSTEM was set.

* guix/packages.scm (package-transitive-supported-systems)[supported-systems-procedure]:
Pass explicit SYSTEM and TARGET parameters.
* tests/packages.scm ("supported-package? vs. %current-target-system"):
New test.
2022-02-18 14:14:38 +01:00
Ludovic Courtès 5d4d8d83e4
status: Do not pass a non-literal format string to 'format'.
* guix/status.scm (print-build-event): Use 'display' instead of 'format'
for hooks.
2022-02-16 16:49:27 +01:00
Ludovic Courtès 086813f63c
status: Use bold more sparsely at -v1.
Until now, at -v1, all the "apply N grafts" messages (for instance)
would be displayed in bold.  This would typically result in several
subsequent lines all bold, although none of them is particularly
interesting.  This improves on that by avoiding bold at -v1 for these
messages.

* guix/status.scm (print-build-event)[emph]: New variable.
Use it for the "View build log", "expected hash", and "offloading build"
messages.
[info]: Default to 'identity' when PRINT-URLS? and PRINT-LOG? are both
false.
2022-02-16 16:49:27 +01:00
Ludovic Courtès 3bed628b3e
status: Do not print .drv file names for grafts.
With this change, "guix build vim-full" prints:

  applying 15 grafts for vim-full-8.2.4306 ...

instead of showing /gnu/store/…-vim-full-8.2.4306.drv.

* guix/status.scm (print-build-event): In the 'graft' case, print just
the "package name" part of DRV.
2022-02-16 16:49:26 +01:00
Ludovic Courtès ca155a20ae
gexp: Preserve source location for #~ and #$ read extensions.
Read hash extensions preserve source location info as source properties
on their result.  However, in Guile 3.0.8, that location would be
dismissed, leading 'local-file' to fail to resolve file names relative
to the source directory.

Fixes <https://issues.guix.gnu.org/54003>.
Reported by Aleksandr Vityazev <avityazev@posteo.org>.

* guix/gexp.scm <eval-when> [read-syntax-redefined?, read-procedure]
[read-syntax*]: New variables.
[read-ungexp]: Adjust to expect either sexps or syntax objects.
[read-gexp]: Call 'read-procedure'.
* tests/gexp.scm ("local-file, relative file name, within gexp")
("local-file, relative file name, within gexp, compiled"): New tests.
2022-02-16 16:49:26 +01:00
Ludovic Courtès 791069737c
guix system: Fix 'describe' when booting the latest generation.
Fixes a regression introduced in
9679123ce0, whereby 'guix system describe'
would error out when /run/current-system points to /gnu/store/…-system,
which is the case when booting the latest generation or after
reconfigure.

* guix/scripts/system.scm (process-command): For 'describe'. Try
'generation-number' with and without the optional argument.
2022-02-15 17:24:08 +01:00
Ludovic Courtès 7f6dd3be3d
gexp: 'computed-file' always uses a native Guile.
Fixes a regression whereby, when cross-compiling, 'computed-file' would
use a cross-compiled Guile as its builder, which would fail to run.

Regression introduced in af57d1bf6c (the
problem had always been there but was hidden before behind the (not guile)
condition.)

* guix/gexp.scm (computed-file-compiler): For 'guile', pass #:target #f.
* tests/gexp.scm ("lower-object, computed-file, #:target"): New test.
2022-02-15 09:33:59 +01:00
Ricardo Wurmus 15cf09fc69
profiles: texlive-font-maps: Create ls-R file.
* guix/profiles.scm (texlive-font-maps): Run mktexlsr on resulting tree to
provide ls-R file.
2022-02-14 23:14:42 +01:00
Ludovic Courtès 054ec2e242
pull: '--list-generations' pipes its output to the pager.
* guix/scripts/pull.scm (process-query): For 'list-generations queries,
use 'with-paginated-output-port'.
(display-news-entry-title): Pass second argument to 'highlight'.
(display-news-entry): Pass second argument to 'dim'.
2022-02-14 15:52:36 +01:00
Ludovic Courtès 5b6e31b020
ui: 'display-generation' uses color when talking to a pager.
This makes sure that, say, 'guix pull -l' benefits from colors when its
output is piped to a pager, as long as the underlying terminal supports
it.

* guix/ui.scm (display-generation): Add second argument to 'highlight'.
2022-02-14 15:52:36 +01:00
Ludovic Courtès 7ffcee1937
ui: 'with-paginated-output-port' gives access to the wrapped port.
* guix/ui.scm (pager-port-mapping): New variable.
(pager-wrapped-port): New procedure.
(call-with-paginated-output-port): Parameterize 'pager-port-mapping'.
2022-02-14 15:52:36 +01:00
Ludovic Courtès b9df2e2b4d
pull: '--list-generations' lists packages only with '--details'.
* guix/scripts/pull.scm (show-help, %options): Add "--details".
(process-query): Honor it.
* doc/guix.texi (Invoking guix pull): Document it.
2022-02-14 15:52:36 +01:00
Ludovic Courtès 6adce1538d
publish: Do not sign the URL/Compression/FileSize narinfo fields.
This will allow mirror operators to alter these non-normative bits of a
narinfo without having to resign narinfos.

* guix/scripts/publish.scm (narinfo-string): Remove
URL/Compression/FileSize from BASE-INFO.  Move them after "Signature".
* tests/publish.scm ("/*.narinfo")
("/*.narinfo with properly encoded '+' sign")
("/*.narinfo with lzip + gzip")
("with cache, lzip + gzip"): Adjust accordingly.
* tests/substitute.scm ("query narinfo with signature over relevant subset"):
New test.
2022-02-14 11:23:56 +01:00
Ludovic Courtès ca87601dd9
git-authenticate: Ensure the target is a descendant of the introductory commit.
Fixes a bug whereby authentication of a commit *not* descending from the
introductory commit could succeed, provided the commit verifies the
authorization invariant.

In the example below, A is a common ancestor of the introductory commit
I and of commit X.  Authentication of X would succeed, even though it is
not a descendant of I, as long as X is authorized according to the
'.guix-authorizations' in A:

   X   	 I
    \   /
      A

This is because, 'authenticate-repository' would not check whether X
descends from I, and the call (commit-difference X I) would return X.

In practice that only affects forks because it means that ancestors of
the introductory commit already contain a '.guix-authorizations' file.

* guix/git-authenticate.scm (authenticate-repository): Add call to
'commit-descendant?'.
* tests/channels.scm ("authenticate-channel, not a descendant of introductory commit"):
New test.
* tests/git-authenticate.scm ("authenticate-repository, target not a descendant of intro"):
New test.
* tests/guix-git-authenticate.sh: Expect earlier test to fail since
9549f0283a is not a descendant of
$intro_commit.  Add new test targeting an ancestor of the introductory
commit, and another test targeting the v1.2.0 commit.
* doc/guix.texi (Specifying Channel Authorizations): Add a sentence.
2022-02-14 11:23:08 +01:00
Ludovic Courtès 87d49346f3
git: Add 'commit-descendant?'.
* guix/git.scm (commit-descendant?): New procedure.
* tests/git.scm ("commit-descendant?"): New test.
2022-02-14 11:23:07 +01:00
Ludovic Courtès ef6d127190
tests: Set a hard build timeout.
* guix/tests.scm (open-connection-for-tests): Pass #:timeout to
'set-build-options'.
(call-with-external-store): Add call to 'set-build-options'.
2022-02-14 11:23:07 +01:00
Efraim Flashner e8af2ea63a
gnu: cpu: Add detection for AMD CPUs.
* guix/cpu.scm <cpu>: Add vendor field.
(current-cpu): Also fill in the 'vendor' field.
(cpu->gcc-architecture): Add detection logic for AMD CPUs.
2022-02-13 14:58:43 +02:00
Efraim Flashner 73373ce5f8
guix: cpu: Rewrite based on feature flags.
* guix/cpu.scm (cpu->gcc-architecture): Rewrite detection based on
detected feature flags.
2022-02-13 14:48:08 +02:00
Ludovic Courtès bc1ad69605
tests: Pass #:guile to 'computed-file' & co.
Fixes a regression introduced in
af57d1bf6c whereby tests would end up
building the world.

* guix/gexp.scm (mixed-text-file): Add #:guile parameter and honor it.
* tests/gexp.scm ("mixed-text-file"): Pass #:guile to 'mixed-text-file'.
("file-union"): Pass #:guile to 'file-union'.
("lower-object, computed-file"): Pass #:guile to 'computed-file'.
("lower-object, computed-file + grafts"): Likewise.
* tests/packages.scm ("origin->derivation, single file with snippet"):
Likewise.
* tests/profiles.scm ("profile-derivation, ordering & collisions"):
Likewise.
* guix/tests.scm (test-file): Likewise.
2022-02-11 23:51:39 +01:00
Ludovic Courtès 5996aab354
build-system/texlive: Be explicit about #:guile-for-build.
This ensures package derivations are not a function of the value
of (%guile-for-build).

* guix/build-system/texlive.scm (texlive-build): Explicitly pass
 #:guile-for-build to 'gexp->derivation'.
2022-02-11 17:28:01 +01:00
Ludovic Courtès af57d1bf6c
gexp: <computed-file> does not honor (%guile-for-build).
* guix/gexp.scm (computed-file-compiler): Default to (default-guile).
That way, lowering of <computed-file> is not affected by the
'%guile-for-build' parameter.
(file-union): Add #:guile parameter and honor it.
* gnu/packages/ruby.scm (ruby-tzinfo-data): Pass #:guile to 'file-union'.
2022-02-11 17:28:00 +01:00
Maxim Cournoyer 96d7535b03
deprecation: Refine the old daemon deprecation warning message.
* guix/deprecation.scm (warn-about-old-daemon): Mention a direct consequence
of failing to upgrade the daemon.
* guix/store.scm (build-things): Add a comment explaining the rationale to
emit a deprecation warning for a daemon older than version 0x163.

Suggested-by: Ricardo Wurmus <rekado@elephly.net>
2022-02-08 21:34:07 -05:00
Mathieu Othacehe f9c62b23cc
store: Warn about daemon deprecation.
* guix/deprecation.scm (warn-about-old-daemon): New procedure.
* guix/store.scm (build-things): Use it to warn about old daemons.
2022-02-08 16:29:31 +01:00
Alice BRENON 6207da50e2
import: utils: Harden beautify-description.
* guix/import/utils.scm (beautify-description): Handle non-string
arguments.
[use-modules]: Explicitly import G_ from (guix i18n) and make (guix ui)
import explicit.
* guix/import/opam.scm: [use-modules] Make imports explicit for module
(guix import utils).

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-02-08 13:34:01 +01:00
Maxim Cournoyer dde03913b3
build: Fix typo in file-size docstring.
* guix/build/store-copy.scm (file-size): Fix typo.
2022-02-07 16:22:37 -05:00
Ricardo Wurmus 805af862c6
guix: Restore profile hook for TeX Live font maps.
Long ago we had a profile hook, called “texlive-configuration”, which would
operate on the texlive-* packages that have actually been installed in the
profile, build a union directory, and then install a texmf.cnf file that
declared the prefix of the TeX Live tree to be the union directory.  It then
generated font maps based on the fonts that had actually been installed.

This approach had multiple disadvantages, the worst of which was that you
could only really have one TeX Live tree.  Commit
04a0b1e09a addressed this, where texmf.cnf was
modified *once* and for all in texlive-bin to reference the GUIX_TEXMF
variable to determine the root of the tree.  This made much of
“texlive-configuration” obsolete, because we didn’t need to have any union
directories at all, because we had no need for a customized per-profile
variant of texmf.cnf.

Unfortunately, with the loss of the profile hook we would no longer build font
maps.  This patch resurrects the profile hook: we’re again generating font
maps (such as pdftex.map) based on the contents of the profile.

* gnu/packages/tex.scm (texlive-default-updmap.cfg): New variable.
* guix/profiles.scm (texlive-configuration): Rename this...
(texlive-font-maps): ...to this; update to run updmap-sys on the contents of
the profile to generate only font maps.
(%default-profile-hooks): Add texlive-font-maps.
* guix/status.scm (hook-message): Rename unused texlive-configuration to
texlive-font-maps.
2022-02-07 21:37:04 +01:00
Julien Lepiller fb1a9c11e5
guix: maven: Fix java parser.
* guix/build/maven/java.scm (comment, comment-chr): Support more comment
styles.
2022-02-05 20:16:32 +01:00
Ludovic Courtès 5c13484646
deploy: Add '--execute'.
* guix/scripts/deploy.scm (show-help, %options): Add '--execute'.
(invoke-command): New procedure.
(guix-deploy): Break arguments at "--" and handle '-x' and associated
command.
* doc/guix.texi (Invoking guix deploy): Document it.
2022-02-02 18:35:00 +01:00
Ludovic Courtès 9679123ce0
guix system: 'describe' shows the running system, not the current one.
* guix/profiles.scm (generation-number): Add optional 'base-profile'
parameter and use it.
* guix/scripts/system.scm (process-command): Add "/run/current-system"
as first argument to 'generation-number'.
* doc/guix.texi (Invoking guix system): Clarify that 'guix system
describe' shows the running system.
2022-02-02 18:12:22 +01:00