Commit graph

6991 commits

Author SHA1 Message Date
John Kehayias
c7ba5f38b8
environment: Add '--emulate-fhs'.
* guix/scripts/environment.scm (show-environment-options-help, %options): Add
'--emulate-fhs'.
(setup-fhs): New procedure.  Setup for the Filesystem Hierarchy Standard (FHS)
container.  Defines and uses FHS-SYMLINKS and LINK-CONTENTS to create FHS
expected directories and creates /etc/ld.so.conf.
(launch-environment): Add 'emulate-fhs?' key and implement it to set $PATH and
generate /etc/ld.so.cache before calling COMMAND.
(launch-environment/container): Add 'emulate-fhs?' and 'setup-hook' keys and
implement them.  Define and use FHS-MAPPINGS, to set up additional bind mounts
in the container to follow FHS expectations.
(guix-environment*): Add glibc-for-fhs to the container packages when
'emulate-fhs?' key is in OPTS.
* doc/guix.texi (Invoking guix shell): Document '--emulate-fhs'.
(Invoking guix environment): Document '--emulate-fhs'.
* tests/guix-environment-container.sh: Add tests for '--emulate-fhs'.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-10-13 09:19:08 +02:00
Ludovic Courtès
22b9734b67
Revert "guix system: Remove unused 'read-operating-system' procedure."
This reverts commit d11a432adf.

The 'read-operating-system' is used in Emacs-Guix.
2022-10-11 16:05:31 +02:00
Ludovic Courtès
602527ab97
git: Factorize 'commit-id?' predicate.
* guix/git.scm (commit-id?): New procedure, copied from (guix swh).
(resolve-reference): Use it instead of inline code.
* guix/inferior.scm (channel-full-commit): Likewise.
2022-10-11 16:05:31 +02:00
Ludovic Courtès
7d9fd1d7b7
guix import: Add a blank line after each package definition.
Starting from commit 371a83b764, 'guix
import crate -r' (or similar) would no longer print a blank line in
between definitions.  This patch fixes it.

Reported by jgart <jgart@dismail.de>.

* guix/scripts/import.scm (guix-import): Add second 'newline' call.
2022-10-11 16:05:31 +02:00
Ludovic Courtès
b6bc4c109b
packages: Raise an exception for invalid 'license' values.
This is written in such a way that the type check turns into a no-op at
macro-expansion time for trivial cases:

  > ,optimize (validate-license gpl3+)
  $18 = gpl3+
  > ,optimize (validate-license (list gpl3+ gpl2+))
  $19 = (list gpl3+ gpl2+)

* guix/packages.scm (valid-license-value?, validate-license): New
macros.
(<package>)[license]: Add 'sanitize' option.
(&package-license-error): New error condition type.
* tests/packages.scm ("license type checking"): New test.
2022-10-10 11:16:07 +02:00
Ludovic Courtès
79b390a207
licenses: Let 'license?' expand to #t in trivial cases.
With this change, we have:

  > ,expand (license? gpl3+)
  $2 = #t
  > ,expand (license? something-else)
  $3 = (let ((obj something-else))
    (and ((@@ (srfi srfi-9) struct?) obj)
	 ((@@ (srfi srfi-9) eq?)
	  ((@@ (srfi srfi-9) struct-vtable) obj)
	  (@@ (guix licenses) <license>))))

* guix/licenses.scm (define-license-predicate)
(begin-license-definitions): New macros
<top level>: Wrap definitions in 'begin-license-definitions'.
2022-10-10 11:16:06 +02:00
Ricardo Wurmus
7d04f3ad28
import/utils: beautify-description: Update to pass tests.
* guix/import/utils.scm (beautify-description): Remove single quote wrapping;
escape @; exclude common abbreviations and titles from double-spacing; detect
more sentence fragments.
2022-10-05 23:59:48 +02:00
Ludovic Courtès
5bc4b8e8e3
channels: Warn about missing introductions.
* guix/channels.scm (latest-channel-instance): Warn when CHANNEL has no
introduction and CHECKOUT contains '.guix-authorizations'.
2022-10-04 18:15:35 +02:00
Andrew Tropin
64213a0b66
deploy: Fix error message.
* guix/scripts/deploy.scm (guix-deploy): Fix error message.
2022-10-04 16:46:33 +04:00
Maxim Cournoyer
9945f9419d
gnu-maintenance: Remove retired 'gforge.inria.fr' site.
* guix/gnu-maintenance.scm (html-updatable-package?): Remove "gforge.inria.fr".
2022-10-03 11:16:13 -04:00
Ludovic Courtès
4bd75d79e5
read-print: Fix indentation rule for 'match-lambda*'.
Fixes <https://issues.guix.gnu.org/58040>.
Reported by Maxime Devos <maximedevos@telenet.be>.

* guix/read-print.scm (%special-forms): Set 'match-lambda*' parameter
count to 1.
2022-10-02 22:27:55 +02:00
Ludovic Courtès
6a04bc8a6d
transformations: Switch to SRFI-71.
* guix/transformations.scm (package-with-source)
(evaluate-source-replacement-specs): Use SRFI-71 'let' instead of
'let-values'.
2022-10-02 22:14:45 +02:00
Zhu Zihao
9022b942ec
scripts: build: Format strings before calling display-hint.
* guix/scripts/build.scm(%standard-cross-build-options): Format hint string.
%standard-cross-build-options: Ditto.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-09-30 16:04:46 +02:00
Ludovic Courtès
28ade1bab2
transformations: '--with-source' now operates in depth.
The '--with-source' option is the first one that was implemented, and
it's the only one that would operate only on leaf packages rather than
traversing the dependency graph.  This change makes it consistent with
the rest of the transformation options.

* guix/transformations.scm (evaluate-source-replacement-specs): New
procedure.
(transform-package-source): Rewrite using it.
* tests/transformations.scm ("options->transformation, with-source, no
matches"): Rewrite since we no longer get a warning.
("options->transformation, with-source, in depth"): New test.
* doc/guix.texi (Package Transformation Options): Adjust examples.
2022-09-29 22:59:49 +02:00
itd
8b2119a5e4
import: print: Quasiquote properties
* guix/import/print.scm (package->code): Quasiquote properties.
* tests/print.scm (pkg-with-properties, pkg-with-properties-source):
New variables.
("package with properties"): New test

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-29 22:59:48 +02:00
itd
61bd7bf469
import/utils: alist->package: Include properties.
* guix/import/utils.scm (alist->package): Process properties field in input
data and include it in the generated package.
* tests/import-utils.scm ("alist->package with properties"): New test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-29 22:59:48 +02:00
Ludovic Courtès
8bd4126917
substitute: Retry downloading when a nar is unavailable.
Fixes <https://issues.guix.gnu.org/57978>
Reported by Attila Lendvai <attila@lendvai.name>.

Previously, if a narinfo was available but its corresponding nar was
missing (for instance because the narinfo was cached and the server
became unreachable in the meantime), 'guix substitute --substitute'
would try to download the nar from its preferred location and abort when
that fails.  This change forces one retry with each of the URLs.

* guix/scripts/substitute.scm (download-nar): Do not catch
'http-get-error?' exceptions.
(system-error?, network-error?, process-substitution/fallback): New
procedures.
(process-substitution): Call 'process-substitution/fallback' upon
'network-error?'.
* tests/substitute.scm ("substitute, first URL has narinfo but lacks nar, second URL unauthorized")
("substitute, first URL has narinfo but nar is 404, both URLs authorized")
("substitute, first URL has narinfo but nar is 404, one URL authorized")
("substitute, narinfo is available but nar is missing"): New tests.
2022-09-28 22:28:27 +02:00
Ludovic Courtès
f75592533e
substitute: Split nar download.
* guix/scripts/substitute.scm (download-nar): New procedure, with most
of the code moved from...
(process-substitution): ... here.  Call it.
2022-09-28 22:28:24 +02:00
Ricardo Wurmus
afcc6d636f
import/cran: Process more complex license strings.
* guix/import/cran.scm (string->license): Add more match clauses.
(string->licenses): Split license conjunctions at "|" and apply
string->license on each license.
(description->package): Use string->licenses.
2022-09-28 22:10:33 +02:00
Ricardo Wurmus
19ea75aa4f
import/cran: Use beautify-synopsis.
* guix/import/cran.scm (description->package): Use beautify-synopsis.
2022-09-28 22:10:33 +02:00
Ricardo Wurmus
7ea6e9f79f
import/utils: Add beautify-synopsis.
* guix/import/utils.scm (beautify-synopsis): New procedure.
2022-09-28 22:10:33 +02:00
Ricardo Wurmus
e761ed7384
import/cran: Transform external package names to Guix names.
* guix/import/cran.scm (transform-sysname): New procedure.
(description->package): Use it on inputs that are derived from "sysdepends".
2022-09-28 22:10:33 +02:00
Ricardo Wurmus
9d86052c22
import/cran: Add more strings to invalid-packages.
* guix/import/cran.scm (invalid-packages): Add none, windows, and xcode.
2022-09-28 22:10:33 +02:00
jgart
172207924e
debug-link: Clarify what CRC is.
* guix/build/debug-link.scm: Clarify "CRC"; update bug URL.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:37 +02:00
Maxime Devos
55d4200002
gnu-maintenance: Remove unused procedures.
* guix/gnu-maintenance.scm (url-prefix-rewrite, adjusted-upstream-source):
Remove.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:37 +02:00
Maxime Devos
d9b8169a9f
gnu-maintenance: Simplify latest-kernel.org-release.
As latest-html-release now produces mirror:// URIs where possible,
the additional post-processing is not necessary anymore.

As a test, revert the dtc package back to 1.6.0 and try updating 'gash',
the mirror:// URI remains.

* gnu-maintenance.scm (latest-kernel.org-release): Do not call
adjusted-upstream-source on the result.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:37 +02:00
Maxime Devos
60474b5291
download: Add a kernel.org mirror.
Add the mirror from (guix gnu-maintenance) to make the simplified
linux.org updater (of a later commit) work.

* download.scm (%mirrors)[kernel.org]: Add mirrors.edge.kernel.org mirror.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:36 +02:00
Maxime Devos
e96f380fd4
gnu-maintenance: Simplify latest-savannah-release.
As latest-html-release now produces mirror:// URIs where possible,
the additional post-processing is not necessary anymore.

As a test, try updating 'gash', the mirror:// URI remains.

* gnu-maintenance.scm (latest-savannah-release): Do not call
adjusted-upstream-source on the result.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:36 +02:00
Maxime Devos
6c16de72de
download: Switch savannah mirrors to HTTPS URLs.
The URI scheme used for nongnu.freemirror.org needs to be consistent
between (guix download) and (guix gnu-maintenance) to make the simplified
savannah-updater (of a later commit) work.  While we're at it, switch the
other mirrors to https as well.

http://download.savannah.gnu.org/releases-noredirect/ is left unmodified
because it 404s

* download.scm (%mirrors)[savannah]: Switch from http to https where possible.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:36 +02:00
Maxime Devos
11ec14ff0e
gnu-maintenance: Produce mirror:// URIs in latest-html-release.
Partially fixes <https://issues.guix.gnu.org/57477>.

I'm not aware of a package using both latest-html-release and mirrors, so it
has not been completely tested.  However, updating "yt-dlp" appears to work
(except for git-fetch not being supported yet).  The expression for the
signature-urls field had to be tweaked to not call uri-mirror-rewrite on #false.

* guix/gnu-maintenance.scm (latest-html-release)[url->research]{urls,signature-urls}:
Call uri-mirror-rewrite on the URLs.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:36 +02:00
Maxime Devos
d877dc098b
gnu-maintenance: Produce mirror:// URIs in latest-ftp-release.
Partially fixes <https://issues.guix.gnu.org/57477>.

As a test, try updating gnupg.  Before the patch, a ftp:// URL was produced,
now the mirror:// is preserved.

* guix/gnu-maintenance.scm (latest-ftp-release)[file->source]{urls,signature-urls}:
Call uri-mirror-rewrite on the URLs.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:36 +02:00
Maxime Devos
fc5c4ce4ec
lint: Extract logic of 'check-mirror-url'.
It will be useful for fixing <https://issues.guix.gnu.org/57477>.

* guix/lint.scm (check-mirror-url): Extract mirror://-constructing code to ...
* guix/gnu-maintenance.scm (uri-mirror-rewrite): ... here, tweaking the API
and implementation in anticipation of future users.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-09-26 23:29:36 +02:00
Maxime Devos
9e4d8c7518
build-system/go: Respect #:imported-modules when cross-compiling.
Previously, #:imported-modules was ignored, causing cross-compilation
failures.  This bug seems seems to have been introduced in
e37dcf63dc.

After this commit, there remain other cross-compilation problems,
e.g. <https://issues.guix.gnu.org/51981> fixes one of them.

* guix/build-system/go.scm (go-cross-build)[builder]: Wrap in
with-imported-modules.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-24 17:59:05 +02:00
Ludovic Courtès
95e06bc3e1
narinfo: Fix misleading docstring.
The misleading docstring had been here from the start, in commit
cdea30e061.

* guix/narinfo.scm (valid-narinfo?): Fix docstring.
2022-09-24 17:59:04 +02:00
Mathieu Othacehe
ebe9d660a5
gnu: Add compression module.
Move the compression record to a dedicated module so that it can be used
outside (guix scripts pack) module.

* guix/scripts/pack.scm (<compressor>, %compressors, lookup-compressor): Move
it to ...
* gnu/compression.scm: ... this new file.
* gnu/ci.scm: Adapt it.
* local.mk (GNU_SYSTEM_MODULES): Add it.
2022-09-24 14:49:09 +02:00
Mathieu Othacehe
08a7eb187f
platforms: x86: Rename Hurd hurd to i586-gnu.
* guix/platforms/x86.scm (hurd): Rename it to ...
(i586-gnu): ... this variable.
* gnu/system/images/hurd.scm (hurd-disk-image, hurd-barebones-disk-image,
hurd-barebones-qcow2-image): Adapt those.
2022-09-24 14:49:07 +02:00
Ludovic Courtès
76c58ed59c
home: import: Use (guix read-print) to render the config file.
* guix/scripts/home/import.scm (manifest+configuration-files->code):
Insert calls to 'comment' and 'vertical-space'.
(import-manifest): Use 'pretty-print-with-comments/splice' instead of a
loop on 'pretty-print'.
* tests/home-import.scm (remove-recursively): New procedure.
(eval-test-with-home-environment): Use it.
2022-09-20 19:24:31 +02:00
Ludovic Courtès
d0a1e48944
read-print: Add rule for 'home-bash-configuration'.
* guix/read-print.scm (%newline-forms): Add 'home-bash-configuration'.
2022-09-20 19:24:31 +02:00
Ludovic Courtès
7a698da0d0
read-print: Correctly support multiple same-named newline forms.
Previously (home-environment (services ...)) would not be considered a
"newline form".  This fixes it.

* guix/read-print.scm (newline-form?): Use 'vhash-foldq*' instead of
'vhash-assq' and iterate over candidates.
* tests/read-print.scm: Add test.
2022-09-20 19:24:31 +02:00
Ludovic Courtès
818220f1cc
weather: Actually show the weather.
* guix/scripts/weather.scm (report-server-coverage): Show a weather icon.
2022-09-20 19:24:31 +02:00
Ricardo Wurmus
ec92bcaadd
import/cran: description->package: Use COND and computed booleans.
* guix/import/cran.scm (description->package): Use COND with previously
computed booleans instead of using CASE on REPOSITORY.
2022-09-20 17:02:33 +02:00
Ricardo Wurmus
8c620a6036
import/cran: download: Accept optional REF argument.
* guix/import/cran.scm (download): Accept REF argument for git downloads.
2022-09-20 17:02:33 +02:00
Maxime Devos
c967d1153c
gnu-maintenance: Support // URLs in latest-html-release.
This makes "./pre-inst-env guix refresh -u" download the release tarball from
the right place -- previously, it downloaded from

https://www.libreoffice.org//download.documentfoundation.org/libreoffice/src/7.4.0/libreoffice-7.4.0.3.tar.xz?idx=1

whereas it should download from

https://download.documentfoundation.org/libreoffice/src/7.4.0/libreoffice-7.4.0.3.tar.xz?idx=1

instead.

* guix/gnu-maintenance.scm (latest-html-release)[url-release]: Adjust
computation in the case of an absolute URI-reference without a scheme.
* tests/gnu-maintenance.scm ("latest-html-release, scheme-less URIs"):
Test it.

Signed-off-by: Christopher Baines <mail@cbaines.net>
2022-09-17 19:09:45 +02:00
Taiju HIGASHI
5d22261db3
import: gem: Support importing a specific version of a gem.
* guix/import/gem.scm: (rubygems-fetch, gem->guix-package)
(gem-recursive-import): Fix to fetch the specified version of the gem.
* guix/scripts/import/gem.scm (show-help): Update the help message.
(guix-import-gem): Modify so the version number to be passed to subsequent
procedures.
* tests/gem.scm: Add tests.
* doc/guix.texi (Invoking guix import): Document.

Signed-off-by: Christopher Baines <mail@cbaines.net>
2022-09-17 19:09:27 +02:00
Maxim Cournoyer
5dd3acd0a0
import: gnome: Improve version handling logic.
Before this change, we'd get:

    $ guix refresh gedit
    updating from version 40.1 to version 43.alpha...

This is because the new GNOME version scheme introduced in 2021 with GNOME 40
was not treated correctly.  Also, no longer ignore odd numbered minor
versions, as this appears to be a declining practice in GNOME.

* guix/import/gnome.scm (latest-gnome-release)
<pre-release-text?>: New predicate.
<even-minor-version?>: Rename to...
<release-version?>: ...this.  Return #f in case the version corresponds to a
development release.
* guix/import/gnome.scm (latest-gnome-release): Adjust accordingly.
2022-09-13 02:04:36 -04:00
Morgan Smith
58d0453aa7
build-system: emacs: Use new function for autoloads generation
* guix/build/emacs-utils.scm (emacs-generate-autoloads): Use
'loaddefs-generate' to create autoloads instead of
'update-directory-autoloads' if we are using a new enough Emacs

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-09-11 15:46:32 +02:00
Liliana Marie Prikler
630c9b6e01
build-system: emacs: Use native compilation.
* guix/build/emacs-build-system.scm (add-install-to-native-load-path):
New variable.
(build): Replace ‘emacs-byte-compile-directory’ with ‘emacs-compile-directory’.
Delete already compiled files in the working directory prior to compilation.
(%standard-phases): Add ‘add-install-to-native-load-path’ after
‘expand-load-path’.
2022-09-11 15:46:32 +02:00
Liliana Marie Prikler
b54724b2ac
guix: emacs-utils: Add emacs-compile-directory.
* guix/build/emacs-utils.scm (emacs-compile-directory): New variable.
2022-09-11 15:46:32 +02:00
Ludovic Courtès
8f53630f2f
syscalls: Avoid repeated calls to 'syscall->procedure'.
Commit 7df4d3465d and others changed
'mount', 'umount', & co. so they would call 'syscall->procedure' at each
call.  This change reverts to the previous behavior, where
'syscall->procedure' is called once.

* guix/build/syscalls.scm (mount, umount, reboot, load-linux-module):
Call 'syscall->procedure' only once.
2022-09-08 16:22:21 +02:00
Ludovic Courtès
392e97ed08
import: gnome: Reject version strings such as "43.alpha".
Reported by Maxim Cournoyer.
This is a followup to 61b63e7fa7.

* guix/import/gnome.scm (latest-gnome-release)[even-minor-version?]:
Reject VERSION is the minor or micro part is not an integer.
2022-09-08 16:22:21 +02:00
Ludovic Courtès
69d72c553f
search-paths: Tweak $SSL_CERT_DIR comment.
* guix/search-paths.scm ($SSL_CERT_DIR): Fix typos and tweak comment.
2022-09-08 16:22:21 +02:00
Ludovic Courtès
2f5f539b60
search-paths: Clarify $GUIX_EXTENSIONS_PATH comment.
* guix/search-paths.scm ($GUIX_EXTENSIONS_PATH): Clarify comment.
2022-09-08 16:22:21 +02:00
Ludovic Courtès
e7b8e83670
search-paths: Remove redundant uses of 'define-public'.
* guix/search-paths.scm ($GUIX_EXTENSIONS_PATH, $SSL_CERT_DIR,
$SSL_CERT_FILE): Use 'define', not 'define-public'.
2022-09-08 16:22:20 +02:00
Mathieu Othacehe
e0c1124a48
guix: platform: Use #false instead of #f.
* guix/platform.scm (<platform>): Adapt it.
2022-09-07 14:24:52 +02:00
(unmatched-parenthesis
bbc1735be2
profiles: Implicitly set GUIX_EXTENSIONS_PATH.
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths):
Always return a search path for GUIX_EXTENSIONS_PATH.
* guix/search-paths.scm ($GUIX_EXTENSIONS_PATH): New variable.

This allows Guix to find extensions without any need for users to
set GUIX_EXTENSIONS_PATH manually.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2022-09-07 11:30:31 +03:00
Ludovic Courtès
61b63e7fa7
import: gnome: Do not require even minor for two-number version strings.
That way, "guix refresh gnome-keyring" will properly return "42.1"
instead of "42.0".

Reported by Maxim Cournoyer.

* guix/import/gnome.scm (latest-gnome-release)[even-minor-version?]:
Tweak for GNOME applications.
2022-09-06 16:58:12 +02:00
Ludovic Courtès
7a2acbdc5a
store: Open daemon connections with SOCK_CLOEXEC.
Previously, 'guix shell' for example would leak the socket that's
connected to the daemon.

* guix/store.scm (open-unix-domain-socket, open-inet-socket): Pass
SOCK_CLOEXEC to 'socket'.
* tests/guix-shell.sh: Add test.
2022-09-04 23:10:10 +02:00
Ludovic Courtès
2028419e30
store: Remove unused variable and 'socket' call.
* guix/store.scm (open-inet-socket): Remove unused 'sock' variable.
2022-09-04 23:10:10 +02:00
Ludovic Courtès
aaf7820d57
read-print: Improve declaration of integer bases.
This is a followup to c3b1cfe76b.

* guix/read-print.scm (%symbols-followed-by-octal-integers)
(%symbols-followed-by-hexadecimal-integers): Remove.
* guix/read-print.scm (%integer-forms): New variable.
(integer->string)[form-base, octal?]: New procedures.
Rewrite accordingly.
2022-09-02 10:49:35 +02:00
Ludovic Courtès
82968362ea
read-print: Define forms for which \n, \t, etc. are not escaped.
Previously, the pretty-printer would unconditionally leave everything
but double-quotes and backslashes unescaped when rendering a string.
With this change, the previous behavior only applies to forms listed in
%NATURAL-WHITESPACE-STRING-FORMS.

* guix/read-print.scm (%natural-whitespace-string-forms): New variable.
(printed-string): New procedure.
(pretty-print-with-comments): Use it instead of 'escaped-string'.
* tests/read-print.scm: Add test.
2022-09-02 10:49:35 +02:00
Ludovic Courtès
c3b1cfe76b
read-print: Guess the base to use for integers being printed.
Fixes <https://issues.guix.gnu.org/57090>.
Reported by Christopher Rodriguez <yewscion@gmail.com>.

* guix/read-print.scm (%symbols-followed-by-octal-integers)
(%symbols-followed-by-hexadecimal-integers): New variables.
* guix/read-print.scm (integer->string): New procedure.
(pretty-print-with-comments): Use it.
* tests/read-print.scm: Add test.
2022-09-01 18:31:26 +02:00
Ludovic Courtès
67a6828b2b
pull: Create a version 3 manifest.
This makes the profile readable by older Guix instances.  This is a
followup to c9fbd40785.

Fixes <https://issues.guix.gnu.org/57306>.
Reported by Arun Isaac <arunisaac@systemreboot.net>.

* guix/profiles.scm (%manifest-format-version): Export.
* guix/scripts/package.scm (build-and-use-profile): Add #:format-version
and pass it to 'profile-derivation'.
* guix/scripts/pull.scm (build-and-install): Pass #:format-version 3.
2022-08-31 12:34:10 +02:00
Ludovic Courtès
270e1b9e1e
reconfigure: Use 'current-channels' to obtain provenance data.
This reinstates a modified version of
b08439809f, which contained a thinko.

Previously, build-time metadata from (guix config) would be ignored when
available--e.g., when running /run/current-system/profile/bin/guix.

This is a followup to 316fc2acbb.

* guix/scripts/system/reconfigure.scm (check-forward-update): Use
'current-channels' rather than 'current-profile' + 'profile-channels'.
2022-08-31 11:40:06 +02:00
Mathieu Othacehe
6454164412
scripts: system: Check the image operating-system.
* guix/scripts/system.scm (process-action): Check that the provided image has
a defined operating-system.
2022-08-30 19:29:58 +02:00
Thiago Jung Bauermann
65ce5fe2fb
guix system: Use standard cross and native build options.
This change prevents guix system from erroring out with an ugly backtrace
when it's passed an invalid value to the “--system” or “--target”
option. It also adds the “--list-systems” and “--list-targets” options.

The manual section about guix system doesn't mention the “--target” option,
so add it there.

* guix/scripts/system (show-help): Call show-cross-build-options-help and
show-native-build-options-help.
(%options): Remove own implementation of “system” and “target” options and
use the ones in %standard-cross-build-options and
%standard-native-build-options.
* doc/guix.texi (Invoking guix system): Document “--target” option.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-08-30 08:55:16 +02:00
宋文武
e214e87cc5
Revert "reconfigure: Use 'current-channels' to obtain provenance data."
This fixes <https://issues.guix.gnu.org/57480>.

This reverts commit b08439809f.
2022-08-30 14:44:07 +08:00
Ludovic Courtès
b08439809f
reconfigure: Use 'current-channels' to obtain provenance data.
Previously, build-time metadata from (guix config) would be ignored when
available--e.g., when running /run/current-system/profile/bin/guix.

This is a followup to 316fc2acbb.

* guix/scripts/system/reconfigure.scm (check-forward-update): Use
'current-channels' rather than 'current-profile' + 'profile-channels'.
2022-08-30 00:40:04 +02:00
Maxim Cournoyer
ba0dbe3bf2
gexp: directory-union: Fix documentation.
* guix/gexp.scm (directory-union): Fix documentation.
2022-08-28 21:14:18 -04:00
Marius Bakke
ada35de38f
gnu: scons: Move to (gnu packages build-tools).
* gnu/packages/python-xyz.scm (scons, scons-python2): Move from here ...
* gnu/packages/build-tools.scm (scons, scons-python2): ... to here.
* gnu/packages/direct-connect.scm, gnu/packages/disk.scm,
gnu/packages/game-development.scm, gnu/packages/gps.scm,
gnu/packages/image.scm, gnu/packages/installers.scm, gnu/packages/web.scm,
gnu/packages/xdisorg.scm: Adjust module imports accordingly.
* guix/build-system/scons.scm (default-scons): Likewise.
2022-08-27 23:48:56 +02:00
Ricardo Wurmus
b0c9f03248
import/utils: beautify-description: Add case for "Implements".
* guix/import/utils.scm (beautify-description): Add case to transform
sentences beginning with "Implements".
2022-08-25 11:55:12 +02:00
Andrew Tropin
aac1065930
build-system/gnu: Fix docstring.
* guix/build-system/gnu.scm (dist-package): Fix docstring.
2022-08-19 18:55:42 +03:00
Liliana Marie Prikler
37cd553679
ui: Describe package outputs.
* guix/ui.scm (package->recutils): Output outputs with their descriptions,
one per line.
* po/packages/Makevars (XGETTEXT_OPTIONS): Add ‘output-synopsis’ as keyword.
2022-08-16 21:25:25 +02:00
Ludovic Courtès
a817064947
build-system/channel: Correctly handle store file name from (gnu ci).
This is a followup to cf60a0a906.

Reported by Mathieu Othacehe <othacehe@gnu.org>.

* guix/build-system/channel.scm (build-channels): Add 'string?' case.
2022-08-11 15:57:35 +02:00
Ludovic Courtès
b21d05d232
read-print: Remove unused procedure.
* guix/read-print.scm (combine-vertical-space): Remove.
2022-08-10 16:53:58 +02:00
Ludovic Courtès
ebda12e1d2
read-print: Report missing closing parens instead of looping.
Fixes <https://issues.guix.gnu.org/57093>.
Reported by Mohammed AMAR-BENSABER <renken@shione.net>.

Previously 'read-with-comments' would enter an infinite loop.

* guix/read-print.scm (read-with-comments)[missing-closing-paren-error]:
New procedure.
Call it when 'loop' as called from 'liip' returns EOF.
* tests/read-print.scm ("read-with-comments: missing closing paren"):
New test.
2022-08-10 16:53:58 +02:00
Ludovic Courtès
06ce4e3c06
ssh: 'open-ssh-session' gracefully handles connection timeouts.
* guix/ssh.scm (open-ssh-session): Add case for 'again.
2022-08-10 16:53:58 +02:00
Oleg Pykhalov
4b49487838
gnu: system: file-systems: Add shared flag.
* gnu/build/file-systems.scm (mount-flags->bit-mask, mount-file-system):
Handle shared flag.
* gnu/system/file-systems.scm (invalid-file-system-flags): Add shared to known
flags.
* guix/build/syscalls.scm (MS_SHARED): New variable.
* doc/guix.texi (File Systems): Document shared flag.
2022-08-10 07:12:25 +03:00
Ludovic Courtès
60e0aae89c
channels: Consider news files as UTF-8-encoded by default.
Partly fixes <https://issues.guix.gnu.org/57039>.
Reported by Pierre-Henry Fröhring <contact@phfrohring.com>.

Previously, news file would be read using the current locale encoding.
This could lead to a test failure in 'tests/channels.scm' (in a test
that expects some Unicode-capable encoding) in case tests were run in a
non-Unicode locale.

* guix/channels.scm (channel-news-for-commit): Make port for NEWS-FILE
UTF-8 by default.
2022-08-09 15:59:09 +02:00
Ludovic Courtès
e1b8bace8c
tests: git: Write files as UTF-8.
* guix/tests/git.scm (populate-git-repository): Add call to
'set-port-encoding!' in 'add' case.
2022-08-09 15:58:14 +02:00
Ludovic Courtès
64a070717c
channels: Add 'repository->guix-channel'.
* guix/channels.scm (repository->guix-channel): New procedure.
* guix/scripts/describe.scm (display-checkout-info): Use it instead of
the (git) interface, and adjust accordingly.
2022-08-09 15:16:06 +02:00
Ludovic Courtès
cf60a0a906
build-system/channel: Accept a channel or instance as the source.
* guix/build-system/channel.scm (latest-channel-instances*): New
variable.
(build-channels): New procedure, with code formerly in
'channel-build-system', augmented with clauses for when SOURCE is a
channel instance or a channel.
* doc/guix.texi (Build Systems): Adjust accordingly.
2022-08-09 15:16:06 +02:00
Ludovic Courtès
5bce4c8242
build-system: Add 'channel-build-system'.
* gnu/ci.scm (channel-build-system, channel-source->package): Remove.
* gnu/packages/package-management.scm (channel-source->package): New
procedure, moved from (gnu ci).
* guix/build-system/channel.scm: New file, with code moved from (gnu ci).
* doc/guix.texi (Build Systems): Document it.
2022-08-09 15:16:06 +02:00
Ludovic Courtès
6db3b34d72
read-print: Add 'case' and 'cond' special forms.
* guix/read-print.scm (%special-forms): Add 'case' and 'cond'.
* tests/read-print.scm: Add tests.
2022-08-08 11:54:25 +02:00
Ludovic Courtès
445a0d134c
read-print: Support printing multi-line comments.
* guix/read-print.scm (%not-newline): New variable.
(print-multi-line-comment): New procedure.
(pretty-print-with-comments): Use it.
* tests/read-print.scm ("pretty-print-with-comments, multi-line
comment"): New test.
2022-08-08 11:54:24 +02:00
Ludovic Courtès
a15542d26d
style: Add '--whole-file' option.
* guix/scripts/style.scm (format-whole-file): New procedure.
(%options, show-help): Add '--whole-file'.
(guix-style): Honor it.
* tests/guix-style.sh: New file.
* Makefile.am (SH_TESTS): Add it.
* doc/guix.texi (Invoking guix style): Document it.
2022-08-08 11:53:33 +02:00
Ludovic Courtès
90ef692e9b
read-print: 'canonicalize-comment' leaves top-level comments unchanged.
This lets users use three leading semicolons, for instance, in top-level
comments.

* guix/read-print.scm (canonicalize-comment): Add INDENT parameter and
honor it.
(pretty-print-with-comments): Change default value of #:format-comment.
Call FORMAT-COMMENT with INDENT as the second argument.
* tests/read-print.scm: Adjust test accordingly.
2022-08-08 11:22:32 +02:00
Ludovic Courtès
9b00c97de4
read-print: Add code to read and write sequences of expressions/blanks.
* guix/read-print.scm (read-with-comments): Add #:blank-line? and honor it.
(read-with-comments/sequence, pretty-print-with-comments/splice): New
procedures.
* tests/read-print.scm (test-pretty-print/sequence): New macro.
Add tests using it.
2022-08-08 11:22:32 +02:00
Ludovic Courtès
077324a16f
read-print: Recognize page breaks.
* guix/read-print.scm (<page-break>, page-break?, page-break)
(char-set:whitespace-sans-page-break): New variables.
(space?): New procedure.
(read-vertical-space): Use it.
(read-until-end-of-line): New procedure.
(read-with-comments): Add #\page case.
(pretty-print-with-comments): Add 'page-break?' case.
* tests/read-print.scm ("read-with-comments: top-level page break"): New
test.
Add round-trip test with page break within an sexp.
2022-08-08 11:22:32 +02:00
Ludovic Courtès
f687e27e03
read-print: Read and render vertical space.
* guix/read-print.scm (<vertical-space>, vertical-space?)
(vertical-space, vertical-space-height): New variables.
(combine-vertical-space, canonicalize-vertical-space)
(read-vertical-space): New procedures.
(read-with-comments): Use it in the #\newline case.
(pretty-print-with-comments): Add #:format-vertical-space and honor it.
Add case for 'vertical-space?'.
* guix/scripts/style.scm (format-package-definition): Pass
 #:format-vertical-space to 'object->string*'.
* tests/read-print.scm ("read-with-comments: list with blank line")
("read-with-comments: list with multiple blank lines")
("read-with-comments: top-level blank lines")
("pretty-print-with-comments, canonicalize-vertical-space"): New tests.
Add a couple of additional round-trip tests.
2022-08-08 11:22:32 +02:00
Ludovic Courtès
5b273e7c77
read-print: Introduce <blank> parent class of <comment>.
* guix/read-print.scm (<blank>, blank?): New record type.
(<comment>): Redefine using the record interface.
(read-with-comments, pretty-print-with-comments): Change some uses of
'comment?' to 'blank?'.
* guix/scripts/style.scm (simplify-inputs)[simplify-expressions]: Use
'blank?' instead of 'comment?'.
2022-08-08 11:22:32 +02:00
Ludovic Courtès
38f1fb843c
read-print: Expose comment constructor.
* guix/read-print.scm (<comment>): Rename constructor to
'string->comment'.
(comment): New procedure.
(read-with-comments, canonicalize-comment): Use 'string->comment'
instead of 'comment'.
2022-08-08 11:22:32 +02:00
Ludovic Courtès
632d4ccc0b
read-print: Add System and Home special forms.
* guix/read-print.scm (%special-forms): Add System and Home forms.
(%newline-forms): Add 'services'.
2022-08-08 11:22:31 +02:00
Ludovic Courtès
5817e222fa
style: Move reader and printer to (guix read-print).
* guix/scripts/style.scm (<comment>, read-with-comments)
(vhashq, %special-forms, %newline-forms, prefix?)
(special-form-lead, newline-form?, escaped-string)
(string-width, canonicalize-comment, pretty-print-with-comments)
(object->string*): Move to...
* guix/read-print.scm: ... here.  New file.
* guix/scripts/import.scm: Adjust accordingly.
* tests/style.scm: Move 'test-pretty-print' and tests to...
* tests/read-print.scm: ... here.  New file.
* Makefile.am (MODULES): Add 'guix/read-print.scm'.
(SCM_TESTS): Add 'tests/read-print.scm'.
2022-08-08 11:22:31 +02:00
Ludovic Courtès
ad8beb6325
lint: Add '-e'.
* guix/scripts/lint.scm (show-help, %options): Add '-e'.
(guix-lint): Call 'specification->package' while traversing OPTS.  Add
case for 'expression pair.  Adjust 'for-each' loop to expect packages.
* doc/guix.texi (Invoking guix lint): Document it.
2022-08-08 11:22:31 +02:00
Maxime Devos
74fbbb1661
build-system/perl: Support cross-compilation of some Perl packages.
* guix/build-system/perl.scm: Add info on cross-compilation.
(lower)[private-keywords]: Remove #:target when cross-compiling.
(lower)[target]: Set.
(host-inputs)[perl]: New entry.
(host-inputs)[(standard-packages)]: Move to ...
(build-inputs)[(standard-packages)]: ... here when cross-compiling.
(build-inputs)[standard-cross-packages]: Add when cross-compiling.
(target-inputs): New entry when cross-compiling.
(build): Use perl-cross-build when cross-compiling.
(perl-cross-build): New procedure.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-08-06 18:21:12 +02:00
Ludovic Courtès
d11a432adf
guix system: Remove unused 'read-operating-system' procedure.
* guix/scripts/system.scm (read-operating-system): Remove.
* gnu/ci.scm: Remove unused (guix scripts system) import.
2022-08-05 15:28:05 +02:00
Vivien Kraus
94e0fb1eb7
utils: Add target-mips64el?.
* guix/utils.scm (target-mips64el?): New function. It detects whether the
target system is mips64el.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-08-05 00:14:30 +02:00
Antero Mejr
68edaf467f
utils: Add as-for-target.
* guix/utils.scm (as-for-target): New function.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-08-05 00:14:29 +02:00
Maxim Cournoyer
a956c7df87
build: qt-utils: Fix another regression.
This fixes another regression introduced with
1f466ed6be, which affected the packages bitmask,
hime, hime, nimf and vorta.

The fix is to provide a default qt-major-version when #:qtbase is missing,
such as when borrowing the qt-wrap phase in a package not using the Qt build
system.

* guix/build/qt-utils.scm (wrap-all-qt-programs)[qt-major-version]: Fall-back
to %default-qt-major-version when #:qtbase is #f.

Reported-by: John Kehayias <john.kehayias@protonmail.com> and others.
2022-08-04 12:06:17 -04:00
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