Commit Graph

6892 Commits

Author SHA1 Message Date
Ludovic Courtès
ae1f120181
environment: Report "command not found" from the child process.
Fixes a bug whereby, for example:

  guix shell bash -- bash -c xyz

would erroneously print:

  guix shell: error: bash: command not found

simply because the parent process could not distinguish that 127 from a
"genuine" 127 used by convention for "command not found".

* guix/scripts/environment.scm (launch-environment): Before exiting,
report a "command not found" error and suggest a command name.
(validate-exit-status): Remove.
(launch-environment/fork): Remove call
(launch-environment/container)[exit/status*]: Remove.
Call 'exit/status' instead of it.
2022-08-04 12:05:46 +02:00
Ludovic Courtès
f44c135608
guix build: Print hints when -s or --target is passed an invalid string.
* guix/scripts/build.scm (%standard-cross-build-options)
(%standard-native-build-options): Print hints when the target/system is
not found.
2022-08-04 12:05:46 +02:00
Ludovic Courtès
dd573ceea7
download: Do not wrap TLS port on GnuTLS >= 3.7.7.
The custom input/output port wrapping the TLS session record port would
introduce overhead, and it would also prevent its uses in a non-blocking
context--e.g., with Fibers.  The port close mechanism added in GnuTLS
3.7.7 allows us to get rid of that wrapper.

* guix/build/download.scm (wrap-record-port-for-gnutls<3.7.7): New
procedure, with code formerly in 'tls-wrap'.
(tls-wrap): Check for 'set-session-record-port-close!' and use it when
available; otherwise call 'wrap-record-port-for-gnutls<3.7.7'.
2022-08-03 17:43:29 +02:00
Guillaume Le Vaillant
c232375340
build-system: asdf: Add asd-operation parameter.
The 'asd-operation' parameter can be used to specify the ASDF operation to use
in the build phase. It's default value is "load-system".

* guix/build-system/asdf.scm (package-with-build-system, asdf-build): Add
  'asd-operation' parameter.
* guix/build/asdf-buid-system.scm (build): Add 'asd-operation' parameter and
  use it.
* guix/build/lisp-utils.scm (compile-systems): Add 'asd-operation' parameter
  and use it.
2022-08-03 16:45:54 +02:00
Pierre Neidhardt
6181f1f263
build-system: asdf: Let ASDF locate the .asd files.
This approach has many benefits:

- It simplifies the build system.
- The package definitions are easier to write.
- It fixes a bug with systems that call asdf:clear-system which would cause
  the load to fail. See for instance test systems using Prove.

* guix/build-system/asdf.scm (package-with-build-system): Remove 'asd-files'
  and replace 'test-asd-file' by 'asd-test-systems'.
  (lower): Same.
* guix/build/asdf-build-system.scm (source-asd-file): Remove since ASDF does
  it better than us.
  (find-asd-files): Same.
  (build): Remove unused asd-files argument.
  (check): Remove asd-files argument and replace asd-systems by
  asd-test-systems.
* guix/build/lisp-utils.scm (compile-systems): Call to ASDF to find the
  systems.
  (test-system): Same.

Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
2022-08-03 16:45:53 +02:00
Pierre Neidhardt
6b5ef03a25
guix: build: Switch from asdf:compile-system to asdf:load-system.
According to the ASDF manual:

This will make sure all the files in the system are compiled, but not
necessarily load any of them in the current image; on most systems, it
will _not_ load all compiled files in the current image.  This function
exists for symmetry with 'load-system' but is not recommended unless you
are writing build scripts and know what you're doing.

* guix/build/lisp-utils.scm (compile-systems): Switch from asdf:compile-system
  to asdf:load-system.

Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
2022-08-03 16:45:53 +02:00
Maxim Cournoyer
4905b5b839
build-system: qt: Ensure a default value is provided for #:qtbase.
* guix/build-system/qt.scm (qt-build)[qtbase]: Specify a default value.  Lower
it using ungexp-native.
(qt-cross-build): Likewise.

Reported-by: Maxime Devos <maximedevos@telenet.be> and others.
2022-08-01 12:48:37 -04:00
Ludovic Courtès
cce7427f95
download: 'url-fetch' closes its HTTP/HTTPS port.
* guix/build/download.scm (url-fetch)[fetch]: In the http/https case,
close PORT before returning.
2022-08-01 14:08:07 +02:00
Maxim Cournoyer
1f466ed6be
build: qt: Add qtbase argument and wrap Qt environment variables exactly.
* guix/build-system/qt.scm (default-qtbase): New variable.
(lower) <#:qtbase>: Add argument...
[build-inputs]: ... and propagate it here.
(qt-build): Add qtbase argument.
(qt-cross-build): Likewise.
* guix/build/qt-utils.scm (%default-qt-major-version): New variable.
(variables-for-wrapping): Add qt-major-version argument, and use it to format
the various path prefixes.  Wrap QT environment variables exactly.
(wrap-qt-program*): Add qt-major-version argument, and pass it to
variables-for-wrapping.
(wrap-qt-program): Add qt-major-version argument, and pass it to
wrap-qt-program*.
(wrap-all-qt-programs): Add qtbase argument, and extract the major version
from it, passing it to wrap-qt-program*.
2022-07-31 21:55:49 -04:00
Maxim Cournoyer
eef8e2ec46
gnu: qttools: Rename to qttools-5.
Automated with:

  git grep -l qttools | xargs sed 's/\bqttools\b/\0-5/g' -i
  git checkout NEWS
2022-07-31 21:55:48 -04:00
Ludovic Courtès
4de445f3da
guix gc: '--delete-generations' now deletes old Home generations.
This reverts commit 24c0518dd4,
thereby reinstating ba22560627, with an
additional fix in (guix self).

Fixes <https://issues.guix.gnu.org/56722>.
Reported by "(" <paren@disroot.org>.

* guix/scripts/gc.scm (guix-gc)[delete-generations]: Add call to
'home-generation-base'.
* guix/self.scm (compiled-guix)[*core-cli-modules*]: Remove (guix
scripts gc).
* doc/guix.texi (Invoking guix gc): Document the change.
2022-08-01 00:02:04 +02:00
Tobias Geerinckx-Rice
75bc96ed8e
download: Refresh KDE mirror list.
* guix/download.scm (%mirrors)[kde]: Update list, using HTTPS wherever
possible.
2022-07-24 02:00:00 +02:00
Tobias Geerinckx-Rice
24c0518dd4
Revert "guix gc: '--delete-generations' now deletes old Home generations."
This reverts commit ba22560627.
2022-07-17 02:00:00 +02:00
r0man
af7dd52136
gnu: clojure: Update to 1.11.1.
This patch updates Clojure to 1.11.1. It also adds the 'reset-class-timestamps
phase to the Clojure build system.

This phase makes sure the timestamp of compiled class files is set to a later
point in time than the timestamp of the corresponding Clojure source files. If
the timestamps of the class and source files are the same, the Clojure
compiler will compile the sources again which can lead to issues. This problem
has been discussed here [1]. The suggested solution was to keep/adjust the
timestamps of the class files.

[1] https://www.mail-archive.com/clojure@googlegroups.com/msg99928.html

* gnu/packages/clojure.scm (clojure): Update to 1.11.1 and update all of
LIBRARIES accordingly.
[arguments]: In 'unpack-library-sources' phase, copy from
"core-specs-alpha-src" and "spec-alpha-src" as well.  Add
phases 'closure-spec-skip-macros', 'clojure-spec-compile',
'maven-classpath-properties', and 'reset-class-timestamps'.
* guix/build/clojure-build-system.scm (regular-jar-file?)
(reset-class-timestamps): New procedures.
(%standard-phases): Add 'reset-class-timestamps' phase.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-07-23 00:39:56 +02:00
Ludovic Courtès
ba22560627
guix gc: '--delete-generations' now deletes old Home generations.
Previously, 'guix gc -d4m' would ignore Home generations.  With this
change, they are treated like profiles and generations that match the
pattern are deleted.

* guix/scripts/gc.scm (guix-gc)[delete-generations]: Add call to
'home-generation-base'.
* doc/guix.texi (Invoking guix gc): Document the change.
2022-07-23 00:39:55 +02:00
Ludovic Courtès
ff94f9dfde
deploy: Honor '--dry-run'.
* guix/scripts/deploy.scm (%options): Add "dry-run".
(show-what-to-deploy): Add #:dry-run? and honor it.
(guix-deploy): Honor --dry-run.
2022-07-23 00:39:55 +02:00
Ricardo Wurmus
be7b314f3f
import: Enable recursive import for texlive packages.
* guix/import/texlive.scm (tlpdb->package): Add VERSION argument; include
explicit version field in output.
(texlive->guix-package): Set default value for VERSION argument; adjust call
of tlpdb->package.
(texlive-recursive-import): Accept REPO and VERSION keyword arguments.
* guix/import/utils.scm (package->definition): Add a clause to deal with
output from tlpdb->package.
* guix/scripts/import/texlive.scm (%options): Add "recursive" option.
(guix-import-texlive): Honor "recursive" option.
* doc/guix.texi (Using TeX and LaTeX): Mention "recursive" option.
2022-07-19 23:49:42 +02:00
Antero Mejr
95acd67dd3
system: Add -I, --list-installed option.
* guix/scripts/system.scm (display-system-generation): Add
 #:list-installed-regex and honor it.
(list-generations): Likewise.
(show-help, %options): Add "--list-installed".
(process-command): For 'describe' and 'list-generation', honor the
'list-installed option.
* doc/guix.texi (Invoking Guix System): Add information for
--list-installed flag.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-07-19 18:54:42 +02:00
Antero Mejr
55725724dd
home: Add -I, --list-installed option.
* guix/scripts/package.scm (list-installed): New procedure.
* guix/scripts/home.scm (%options, show-help): Add '--list-installed'.
(process-command): For 'describe' and 'list-generations', honor the
'list-installed option.
(display-home-environment-generation): Add #:list-installed-regex and
honor it.
(list-generations): Likewise.
* guix/scripts/utils.scm (pretty-print-table): New argument "left-pad".
* doc/guix.texi (Invoking Guix Home): Add information and example for
--list-installed flag.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-07-19 18:54:42 +02:00
Ludovic Courtès
e87c6fb95a
upstream: Sort '%updaters' alphabetically.
Previously the output of 'guix refresh --list-updaters' would be
non-deterministic, and likewise the order in which updaters are tried
would be non-deterministic.

Reported by zimoun <zimon.toutoune@gmail.com>.

* guix/upstream.scm (%updaters): Add call to 'sort'.
2022-07-19 18:54:41 +02:00
Hartmut Goebel
bf82f7cbe3
import: pypi: Fix coding style.
I missed this remark from the review when pushing the last change.

* guix/import/pypi.scm(python->package-name): Replace the trailing '#t'-case
  by a 'else'.
2022-07-15 21:19:08 +02:00
Hartmut Goebel
2e0b7867fe
import: pypi: Add special treatment for Tryton package names,
Trytond modules are Python packages, and treated like this in guix.  Anyhow,
since they are add-ons for the “Trytond“ application, their guix package name
do not get the "python-" prefix like other Python modules, (see also
https://issues.guix.gnu.org/46057#1).  This change disables adding the
"python-" prefix to the guix package name for Trytond modules when importing
and updating, thus inhibiting irritating messages like in this example:

  $ guix refresh -u trytond-party
  …
  trytond-party: consider adding this propagated input: python-trytond-country
  trytond-party: consider removing this propagated input: trytond-country

Handling this special case seems appropriate since (as of now) there are
about 165 packages for Trytond and the number is growing.

* guix/import/pypi.scm(python->package-name): Don't add "python-" prefix for
  trytond packages.
2022-07-15 21:14:22 +02:00
Hartmut Goebel
af025d99f4
import: egg: Fix updater.
'egg-source-url' did not return the URL, but the quoted expression.  This did
break the updater, which expects the URL as a string.

* guix/import/egg.scm(egg-source-url): Remove.
  (egg->guix-package)[egg-content]: Use quoted expression directly.
  (latest-release): Call egg-uri instead of egg-source-url.
2022-07-15 20:17:37 +02:00
Ludovic Courtès
4ce7f1fb24
monad-repl: Add "build", "lower", and "verbosity" commands.
Fixes <https://issues.guix.gnu.org/56114>.
Reported by Maxime Devos <maximedevos@telenet.be>.

* guix/monad-repl.scm (%build-verbosity): New variable.
(evaluate/print-with-store): New procedure.
(run-in-store): Rewrite in terms of 'evaluate/print-with-store'.
(verbosity, lower, build): New meta-commands.
* doc/guix.texi (Using Guix Interactively): New node.
(The Store Monad): Link to it.
(Invoking guix repl): Likewise.
* doc/contributing.texi (Running Guix Before It Is Installed): Refer to
it.
(The Perfect Setup): Suggest 'guix install' rather than 'guix package -i'.
2022-07-15 17:36:57 +02:00
Ludovic Courtès
30915a7419
shell: Ignore cached profiles when using '--export-manifest'.
Fixes <https://issues.guix.gnu.org/56539>.

Fixes a bug where "guix shell -D pkg --export-manifest" would provide
the expansion of PKG's dependencies instead of a call to
'package-development-manifest' if that profile happened to be cached.

* guix/scripts/shell.scm (profile-cached-gc-root): Add clause for 'export-manifest?.
2022-07-15 17:36:57 +02:00
Ludovic Courtès
b8b02f4de5
style: Gracefully handle failure to locate a source file.
* guix/scripts/style.scm (absolute-location): Raise an error when
'search-path' returns #f.
2022-07-12 01:17:45 +02:00
Hartmut Goebel
e8cd9e3d12
import: github: Use correct URL scheme.
This effects packages hosted at github with source-uri like
…/releases/download/REPO-VERSION/REPO-VERSION.EXT.
E.g. ‘guix refresh udisks’ would fail to find the new release of ‘udisks’
before this change.

* guix/import/github.scm(updated-url): For one one of the
  cases add missing 'prefix' and set new version.
2022-07-11 15:35:28 +02:00
Ludovic Courtès
9fdc4b6c28
monads: Add 'mparameterize'.
* etc/system-tests.scm (mparameterize): Move to...
* guix/monads.scm (mparameterize): ... here.
* tests/monads.scm ("mparameterize"): New test.
* .dir-locals.el (c-mode): Add it.
2022-07-10 23:57:14 +02:00
Ludovic Courtès
c9fbd40785
channels: Emit version 3 profiles.
Fixes <https://issues.guix.gnu.org/56441>.
Reported by zimoun <zimon.toutoune@gmail.com>.

Fixes a bug introduced in 4ff12d1de7 with
version 4 of the manifest format.  A new 'guix time-machine' would
create a v4 manifest; when targeting an old revision (v3),
'generate-package-cache' would fail to read that manifest and abort.
Furthermore, an old Guix living in a new profile with a v4 manifest
would be unable to describe itself via (guix describe).

* guix/channels.scm (package-cache-file): Add 'format-version' field to
PROFILE.
(channel-instances->derivation): Pass #:format-version to
'profile-derivation'.
2022-07-08 23:58:11 +02:00
Ludovic Courtès
89e2288751
profiles: Support the creation of profiles with version 3 manifests.
* guix/profiles.scm (%manifest-format-version): New variable.
(manifest->gexp): Add optional 'format-version' parameter.
[optional, entry->gexp]: Honor it.
(profile-derivation): Add #:format-version parameter and honor it.
(<profile>)[format-version]: New field.
(profile-compiler): Honor it.
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths): Support
both versions 3 and 4.  Remove unused 'properties' variable.
* tests/profiles.scm ("profile-derivation format version 3"): New test.
2022-07-08 23:58:11 +02:00
Ludovic Courtès
e7e04396c0
profiles: Remove support for reading versions 0 and 1.
Version 2 was introduced in commit
dedb17ad01 (May 2015), which made it into
Guix 0.9.0.

* guix/profiles.scm (find-package): Remove.
(sexp->manifest)[infer-search-paths]: Remove.
Remove clauses for versions 0 and 1.
2022-07-08 23:58:11 +02:00
Christopher Baines
b4c4a6acb1
guix: inferior: Fix the behaviour of open-inferior #:error-port.
I'm looking at this as the Guix Data Service uses this behaviour to record and
display logs from inferior processes.

* guix/inferior.scm (open-bidirectional-pipe): Call dup2 for file descriptor
2, passing either the file number for the current error port, or a file
descriptor for /dev/null.
* tests/inferior.scm ("#:error-port stderr", "#:error-port pipe"): Add two new
tests that cover some of the #:error-port behaviour.
2022-07-08 13:51:34 +01:00
Ludovic Courtès
8d9291bd2c
style: For 'let' and similar forms, emit one binding per line.
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'.
2022-07-04 23:38:38 +02:00
Hartmut Goebel
a3d86b341d
style: Add option '--list-stylings'.
* guix/scripts/style.scm (show-stylings): New procedure.
  (%options, show-help): Add "--list-stylings".
* doc/guix.texi (Invoking guix style): Document "-l".
2022-07-04 16:13:13 +02:00
Ludovic Courtès
e7ab3d33ae
challenge: Do nothing when passed zero arguments.
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.
2022-07-03 01:41:06 +02:00
Ludovic Courtès
4ff12d1de7
profiles: Do not repeat entries in 'manifest' file.
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.
2022-07-01 23:29:16 +02:00
Ludovic Courtès
b512dadfd6
upstream: 'guix refresh -u' no longer stops when upstream info is lacking.
Fixes <https://issues.guix.gnu.org/56338>.

Starting from 53b9c27aa5, '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.
2022-07-01 23:29:15 +02:00
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
Ludovic Courtès
00762a4c4c
import: pypi: Display a hint upon "no source release" errors.
Fixes <https://issues.guix.gnu.org/49083>.

* guix/import/pypi.scm (pypi->guix-package): Upon
'missing-source-error?', raise a compound condition with a hint.
2022-02-02 17:58:21 +01:00
Ludovic Courtès
31ca569ca5
import: pypi: Use 'with-error-handling'.
* guix/scripts/import/pypi.scm (guix-import-pypi): Wrap body in
'with-error-handling'.
2022-02-02 17:58:20 +01:00
Andrew Tropin
f38697f5f8
build-system: emacs: Ensure that package descriptions are generated.
This patch addresses the second part of <https://bugs.gnu.org/48331>.
While existing -pkg.el files were previously installed, no such files
were generated for packages lacking them, resulting in packages not
being listed as installed and not being available towards
“describe-package”.

* guix/build/emacs-build-system.scm (find-root-library-file)
(ensure-package-description): New variables.
(%standard-phases): Add ‘ensure-package-description’.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-01-29 08:45:06 +01:00
Ludovic Courtès
23ccfd3840
home: 'reconfigure' checks for potential downgrades.
* guix/scripts/home.scm (show-help, %options): Add "--allow-downgrades".
(%default-options): Remove 'build-mode'; add 'validate-reconfigure'.
(perform-action): Add #:validate-reconfigure.  Call
'check-forward-update' when ACTION is 'reconfigure.
(process-action): Pass #:validate-reconfigure to 'perform-action'.
* gnu/home/services.scm (home-provenance): Export.
* doc/guix.texi (Invoking guix home): Document '--allow-downgrades'.
2022-01-28 23:14:44 +01:00
Ludovic Courtès
e778910bdf
inferior: Move initialization bits away from 'inferior-eval-with-store'.
* guix/inferior.scm (port->inferior): In the inferior, define
'cached-store-connection', 'store-protocol-error?', and
'store-protocol-error-message'.
(inferior-eval-with-store): Use them.
2022-01-27 14:13:24 +01:00
Ludovic Courtès
c71910a095
inferior: Inferior caches store connections.
Fixes <https://issues.guix.gnu.org/48007>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

Previously, at each 'inferior-eval-with-store' call, the inferior would
create a new <store-connection> object with empty caches.  Consequently,
when repeatedly calling 'inferior-package-derivation', we would not
benefit from any caching and instead recompute all the derivations for
every package.  This patch fixes it by caching <store-connection>
objects in the inferior.

* guix/inferior.scm (port->inferior): Define '%store-table' in the inferior.
(inferior-eval-with-store): Cache store connections in %STORE-TABLE.
Remove now unneeded 'dynamic-wind' with 'close-port' call.
2022-01-27 14:13:24 +01:00
Ludovic Courtès
bd86bbd300
inferior: Keep the store bridge connected.
Previously, each 'inferior-eval-with-store' would lead the inferior to
connect to the named socket the parent is listening to.  With this
change, the connection is established once for all and reused
afterwards.

* guix/inferior.scm (<inferior>)[bridge-file-name]: Remove.
(open-bidirectional-pipe): New procedure.
(inferior-pipe): Use it instead of 'open-pipe*' and return two values.
(port->inferior): Adjust call to 'inferior'.
(open-inferior): Adjust to 'inferior-pipe' changes.
(close-inferior): Remove 'inferior-bridge-file-name' handling.
(open-store-bridge!): Switch back to 'call-with-temporary-directory'.
Define '%bridge-socket' in the inferior, connected to the caller.
(proxy): Change first argument to be an inferior.  Add 'reponse-port'
and call to 'drain-input'.  Pass 'reponse-port' to 'select' and use it
as a loop termination clause.
(inferior-eval-with-store): Remove 'socket' and 'connect' calls from the
inferior code, and use '%bridge-socket' instead.
2022-01-27 14:13:24 +01:00
Ludovic Courtès
10aad72110
inferior: Create the store proxy listening socket only once.
Previously, each 'inferior-eval-with-store' call would have the calling
process create a temporary directory with a listening socket in there.
Now that listening socket is created once and reused in subsequent
calls.

* guix/inferior.scm (<inferior>)[bridge-file-name, bridge-socket]: New
fields.
(port->inferior): Adjust accordingly.
(close-inferior): Close 'inferior-bridge-socket' and delete
'inferior-bridge-file-name' if set.
(open-store-bridge!, ensure-store-bridge!): New procedures.
(inferior-eval-with-store): Use them.
2022-01-27 14:13:24 +01:00
Efraim Flashner
0444be8689
gnu: Add %final-inputs-riscv64.
* gnu/packages/commencement.scm (%final-inputs-riscv64): New variable.
* guix/build-system/gnu.scm (standard-inputs): Use %final-inputs-riscv64
when targeting riscv64-linux.
2022-01-27 09:36:36 +02:00
Vivien Kraus
bac9f8302c
import: pypi: Convert hyphens to underscores in PyPI URLs if needed.
* guix/import/pypi.scm (find-project-url): New function.
(make-pypi-sexp): Use find-project-url.
* tests/pypi.scm (foo-json): New procedure.
(test-json-1, test-json-2): Define in terms of it.
("find-project-url, with numpy", "find-project-url, uWSGI"):
("find-project-url, flake8-array-spacing")
("find-project-url, foo/goo"): New tests.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-01-26 17:54:58 +01:00
Ludovic Courtès
a74d0cc209
utils: 'edit-expression' reads and conses less when not modifying.
* guix/utils.scm (edit-expression): Delay call to 'get-bytevector-all'
until after (string=? str* str).
2022-01-26 17:54:58 +01:00
Ludovic Courtès
b8743fef8a
environment: '--check' does nothing when used with '--container'.
Partly fixes <https://issues.guix.gnu.org/53355>.
Reported by Chris Marusich <cmmarusich@gmail.com>.

* guix/scripts/environment.scm (guix-environment*): Warn and do nothing
when both '--check' and '--container' are used.
2022-01-25 23:54:43 +01:00
Reily Siegel
0f2df54f83
build-system/clojure: Support compiling Java.
* guix/build/clojure-build-system.scm (compile-java): New variable.
(build): Copy classes compiled from Java and optionally Java sources to
the final jar.
(%standard-phases): Add compile-java phase before build.
* guix/build/clojure-utils.scm (%java-source-dirs): New variable.
(%java-compile-dir): New variable.
* guix/build-system/clojure.scm (clojure-build): Include %java-source-dirs and
%java-compile-dir.
(builder): Include %java-source-dirs and %java-compile-dir.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-01-24 10:38:14 +01:00