Commit Graph

5865 Commits

Author SHA1 Message Date
Mathieu Othacehe
a068ed6a5f
scripts: substitute: Cache connection when looking for narinfos.
The process-substitution procedure is opening two distinct connections. The
first one when looking for narinfo by calling lookup-narinfo and the other one
when fetching nar files.

Cache the connection when looking for narinfos so that process-substitution
only opens one connection.

* guix/scripts/substitute.scm (lookup-narinfo): Cache connection by using
open-connection-for-uri/cached.
2021-06-06 18:54:29 +02:00
Maxime Devos
82b0e27de1
lint: tests-true: Check if tests are enabled when cross-compiling.
* guix/lint.scm (check-tests-true): New linter.
(%local-checkers)[tests-true]: Add it.
* tests/lint.scm ("tests-true: #:tests? must not be set to #t")
("tests-true: absent #:tests? is acceptable")
("tests-true: #:tests? #f is acceptable")
("tests-true: #:tests? #t acceptable when compiling natively"): Test it.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-06-06 18:49:12 +02:00
Xinglu Chen
aaafd19bd1
hg-download: Add helpers for defining packages.
Hg followup to commit ee17a9e06e.

* guix/hg-download.scm (hg-version, hg-file-name): New procedures.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2021-06-05 23:39:29 +02:00
Ludovic Courtès
2ac5e07a89
profiles: 'check-for-collisions' filters out more non-collisions upfront.
When running:

  GUIX_PROFILING="gc object-cache" ./pre-inst-env \
    guix install gnome -p /tmp/sdsdfsd --no-grafts -n

this reduces the number of object cache lookup from 115K to 96K, with a
slight CPU and memory usage reduction as well.

* guix/profiles.scm (check-for-collisions)[candidates]: Exclude entries
if their 'item' fields are eq?.
2021-06-05 23:39:25 +02:00
Ricardo Wurmus
c343c3bc1f
guix: Update to Bioconductor 3.13.
* guix/build-system/r.scm (bioconductor-uri): Update version.
* guix/import/cran.scm (%bioconductor-version): Update.
2021-06-05 09:12:39 +02:00
Xinglu Chen
7e16321560
licenses: Add BSD-1-Clause license.
* licenses.scm (bsd-1): New variable.
2021-06-03 21:53:05 +02:00
Xinglu Chen
bdc298ecee
import: Add CHICKEN egg importer.
* guix/import/egg.scm: New file.
* guix/scripts/import/egg.scm: New file.
* tests/egg.scm: New file.
* Makefile.am (MODULES, SCM_TESTS): Register them.
* po/guix/POTFILES.in: Likewise.
* guix/scripts/import.scm (importers): Add egg importer.
* doc/guix.texi (Invoking guix import, Invoking guix refresh): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-03 13:05:18 +02:00
Ludovic Courtès
1e8ebb16c9
gnu-maintenance: 'generic-html' computes the right source URL.
Fixes a regression introduced in
84f8bae0f8, whereby the URL computed for
the new ffmpeg (for instance) would be:

  https://ffmpeg.org/ffmpeg-4.4.tar.xz

instead of:

  https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz

Reported by Maxim Cournoyer.

* guix/gnu-maintenance.scm (latest-html-release)[url->release]: Adjust
computation in the case of a URI-reference with a relative path.
2021-06-03 13:04:20 +02:00
Ludovic Courtès
5bcb4f8a58
ui, lint: Simplify exception handling in Guile 3 style.
* guix/lint.scm (check-derivation)[try]: Remove "catch #t" wrapping.
* guix/ui.scm (call-with-error-handling): Remove "catch 'system-error"
and move 'system-error handling to the &exception-with-kind-and-args
clause.
2021-06-01 23:26:07 +02:00
Ludovic Courtès
82d8ab01f5
maint: Require Guile 3.0.
* configure.ac: Require Guile 3.0.
* doc/guix.texi (Requirements): Adjust accordingly.
* gnu/packages/package-management.scm (guile2.2-guix): Remove.
* guix/lint.scm (exception-with-kind-and-args?): Remove 'cond-expand'.
* guix/scripts/deploy.scm (deploy-machine*): Likewise.
* guix/store.scm (call-with-store): Likewise.
* guix/swh.scm (http-get*, http-post*): Likewise.
* guix/ui.scm (without-compiler-optimizations, guard*)
(call-with-error-handling): Likewise.
2021-06-01 23:26:07 +02:00
Mathieu Othacehe
0b8fa24bbd
publish: Add keep-alive support when sending nar.
The default Guile web server implementation supports the keep alive
mechanism. However, in our custom http-write implementation, the connection
is unconditionally close after sending nar files.

To prevent that, when supported, add the client port to the server poll set so
that further requests can be handled without closing the connection.

* guix/scripts/publish.scm (nar-response-port): Rename it into ...
(nar-compressed-port): ... this procedure. Operate directly on a given PORT.
(http-write): Add keep-alive support when sending nar files.
* guix/scripts/substitute.scm (process-substitution): Pass the download size
to the progress-report-port procedure so that it doesn't block reading from
the input port when keep-alive is supported.
2021-06-01 09:10:32 +02:00
Mathieu Othacehe
2acc114a96
publish: Preserve the request connection header.
The Guile web server is reading the response connection header to decide
whether to close the connection. However, as the request connection header is
not forwarded to the response, this mechanism cannot work.

* guix/scripts/publish.scm (add-extra-headers): New procedure.
(make-request-handler): Use it to forward the request connection header to the
response.
2021-06-01 09:10:32 +02:00
Mathieu Othacehe
4f2fa2f980
progress: Add a download-size argument to progress-report-port.
* guix/progress.scm (progress-report-port): Add a download-size argument.
2021-06-01 09:10:32 +02:00
Ludovic Courtès
84f8bae0f8
gnu-maintenance: 'generic-html' correctly handles relative release URLs.
* guix/gnu-maintenance.scm (latest-html-release)[url->release]: Fix
source URL construction in cases where URL is a possibly relative path.
2021-05-28 23:04:44 +02:00
Ludovic Courtès
d7c356edb9
gnu-maintenance: 'release-file?' accepts 'v' prefix as in "PKG-v1.2.tgz".
* guix/gnu-maintenance.scm (%tarball-rx, %package-name-rx): Accept 'v'
and 'V' prefixes.  Accept ".tgz" extension.
* tests/gnu-maintenance.scm ("release-file?"): Add test.
2021-05-28 23:04:44 +02:00
Ludovic Courtès
a44fa3742c
guix build: Emit "nothing to do" warning only when needed.
This is a followup to 681af1fb78.

* guix/scripts/build.scm (guix-build): Emit "nothing to do" warning only
when both DRV and ITEMS are null.
2021-05-28 23:04:43 +02:00
Ludovic Courtès
f8c4437f0f
guix package: Do not warn about "missing arguments" when there's nothing to do.
In some cases, running "guix upgrade" can trigger this warning, and
"missing arguments" is misleading then.

Reported by flatwhatson on #guix.

* guix/scripts/package.scm (process-actions): Change warning to "nothing
to do".
2021-05-28 23:04:43 +02:00
Xinglu Chen
3f5bc6cbb3
import: opam: Generate license for package.
* guix/import/opam.scm (opam->guix-package): Generate license for the
‘license’ field.
* tests/opam.scm (test-opam-file): Update accordingly.
("opam->guix-package"): Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-05-28 11:36:03 +02:00
Andrew Whatson
ebbfee880c
git-download: Support submodules in 'git-predicate'.
* guix/git-download.scm (git-file-list): Add prefix and recursive?
arguments.  Recurse into submodules when requested.
(git-predicate): Add recursive? argument.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-05-28 11:36:02 +02:00
Ludovic Courtès
50d5bb1f3e
git-download: 'git-predicate' now ignores deleted files.
When git-predicate is used on an active worktree, some files in the
index might not exist on the filesystem.  Instead of failing with "No
such file or directory", these should be ignored.

* guix/git-download.scm (git-predicate): Wrap 'lstat' call in
'false-if-exception'.  Return RESULT when STAT is #f.

Co-authored-by: Andrew Whatson <whatson@gmail.com>
2021-05-28 11:36:02 +02:00
Ludovic Courtès
681af1fb78
scripts: Commands warn when passed zero arguments.
This is a followup to 3f8326237d.

* guix/scripts/archive.scm (export-from-store): Warn then FILES is
empty.
* guix/scripts/build.scm (guix-build): Likewise.
* guix/scripts/copy.scm (warn-if-empty): New procedure.
(send-to-remote-host, retrieve-from-remote-host): Call it.
* guix/scripts/edit.scm (guix-edit): Warn when SPECS is empty.
* guix/scripts/environment.scm (guix-environment): Warn when MANIFEST
has zero entries.
* guix/scripts/graph.scm (guix-graph): Warn then ITEMS is empty.
* guix/scripts/package.scm (process-actions): Warn when FILES and TRANS
are both empty.
2021-05-28 11:36:02 +02:00
Ludovic Courtès
7243a8c7ec
deploy: Error out when the FILE argument is missing.
* guix/scripts/deploy.scm (guix-deploy): Error out when FILE is false.
2021-05-28 11:36:02 +02:00
Mathieu Othacehe
316d9e0817
guix: ci: Add spec support to latest-evaluations.
* guix/ci.scm (latest-evaluations): Add spec parameter support.
2021-05-26 15:29:32 +02:00
Mathieu Othacehe
a2155f41f5
guix: ci: Fix evaluation complete? field.
* guix/ci.scm (<evaluation>): Fix evaluation complete? field.
2021-05-26 15:29:32 +02:00
Xinglu Chen
cfec09a992
import: hackage: Prefix licenses with 'license:'.
* guix/import/hackage.scm (string->license): Prefix the value of the license
field with ‘license:’.
* tests/hackage.scm (match-ghc-foo, match-ghc-foo-6, match-ghc-foo-revision):
Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-05-22 23:39:27 +02:00
Ludovic Courtès
bc4d81d267
lint: archival: Lookup content in Disarchive database.
* guix/lint.scm (lookup-disarchive-spec): New procedure.
(check-archival): When 'lookup-content' returns #f, call
'lookup-disarchive-spec'.  Call 'lookup-directory' on the result of
'lookup-directory'.
* guix/download.scm (%disarchive-mirrors): Make public.
* tests/lint.scm ("archival: missing content"): Set
'%disarchive-mirrors'.
("archival: content unavailable but disarchive available"): New test.
2021-05-22 23:13:11 +02:00
Mathieu Othacehe
7003b2db52
scripts: discover: Report Avahi errors.
Fixes: <https://issues.guix.gnu.org/48561>.

* guix/scripts/discover (guix-discover): Report Avahi errors.
2021-05-22 14:04:19 +02:00
Ricardo Wurmus
bd8e7621b8
guix: Build texlive-configuration only when texlive-base is present.
Fixes <https://bugs.gnu.org/48519>.

* guix/profiles.scm (texlive-configuration): Build only if texlive-base is
present in the profile's manifest.
2021-05-20 16:29:41 +02:00
Mathieu Othacehe
0471024acc
scripts: challenge: Fix regression.
This is a follow-up of 3cde5231aa that fixes the
challenge test.

When dealing with uncompressed NAR, the file size is false. Propagate it to
progress-reporter/file as it used to be the case.

* guix/scripts/challenge.scm (call-with-nar): Accept false size.
2021-05-20 11:44:35 +02:00
Ludovic Courtès
a0ad636167
ui: 'load*' compiles with '-O1'.
With this change, the wall-clock time of:

  guix system build --no-grafts -d gnu/system/install.scm

goes from 5.0s to 2.3s on Guile 3.0.5.

* guix/ui.scm (without-compiler-optimizations): New macro.
(load*): Use it.
2021-05-17 23:59:58 +02:00
Ludovic Courtès
4288806111
ui: Remove Guile 2.2.3 workaround.
This became dead code with commit
4f621a2b00.

* guix/ui.scm (load*): Remove Guile 2.2.3 workaround.
2021-05-17 23:59:58 +02:00
Ludovic Courtès
938ffcbb05
publish: Add '--negative-ttl'.
* guix/scripts/publish.scm (show-help, %options): Add '--negative-ttl'.
(render-narinfo, render-narinfo/cached, make-request-handler): Add #:negative-ttl
and honor it.
(run-publish-server): Add #:narinfo-negative-ttl and honor it.
(guix-publish): Honor '--negative-ttl'.
* tests/publish.scm ("negative TTL", "no negative TTL"): New tests.
2021-05-16 23:28:11 +02:00
Ludovic Courtès
dc3504913d
substitutes: Reduce negative TTLs.
* guix/substitutes.scm (%narinfo-negative-ttl): Change to 15mn.
(%narinfo-transient-error-ttl): Halve.
2021-05-16 23:28:11 +02:00
Christopher Baines
97d615b176
inferior: Support querying package replacements.
I'm looking at this to help with adding support for looking up package
replacements to store in the Guix Data Service.

* guix/inferior.scm (inferior-package-replacement): New procedure.
* tests/inferior.scm ("inferior-package-replacement"): New test.
2021-05-15 12:14:47 +01:00
Ludovic Courtès
46eac03e72
swh: 'lookup-origin-revision' ignores partial visits.
* guix/swh.scm (lookup-origin-revision): Filter out visits with a status
different from 'full.
2021-05-14 23:25:09 +02:00
Ludovic Courtès
67bf612554
self: Add dependency on Disarchive.
This enables the Disarchive fallback implemented in commit
fbc2a52a32 (on foreign distros).

* guix/self.scm (specification->package): Add "disarchive".
(compiled-guix): Add DISARCHIVE to DEPENDENCIES in the #:dependencies
argument to 'guix-command'.
2021-05-14 23:24:08 +02:00
Zheng Junjie
d456232712
import: go: Fix goproxy option argument's format.
Commit a8b927a562 Added new procedure go-module-available-versions use
'string-append' to GOPROXY, but 'string->symbol' let GOPROXY is a symbol (it
must be a string), which would lead to wrong-type-arg errors in the
'string-append' procedure.

* guix/scripts/import/go.scm (%options)[goproxy]: Remove call to
'string->symbol'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-05-14 14:47:16 +02:00
Ludovic Courtès
3cde5231aa
challenge: Be defensive in the size passed to the progress reporter.
Possibly fixes <https://bugs.gnu.org/48045>.
Reported by Bone Baboon <bone.baboon@disroot.org>.

* guix/scripts/challenge.scm (call-with-nar): Rename second value
returned by 'http-fetch' to match reality.  Change second argument to
'progress-reporter/file'.
2021-05-13 00:19:58 +02:00
Ludovic Courtès
0aef94e7bc
self: Build with 'guile-3.0-latest'.
* guix/self.scm (specification->package): Use 'guile-3.0-latest' instead
of 'guile-3.0/libgc-7'.
2021-05-13 00:19:58 +02:00
Christopher Baines
34985fb6ae
channels: Add a #:system argument to channel-instances->manifest.
This allows computing a manifest for a specific system. Previously this was
possible, but only through changing %current-system, which caused the
derivation to be computed using that system as well (so computing a derivation
for aarch64-linux on x86_64-linux would require running aarch64-linux code).

This new argument adds the possibility of computing derivations for non-native
systems, without having to run non-native code.

I'm looking at this as it will enable the Guix Data Service to compute channel
instance derivations without relying on QEMU emulation for non-native
systems (it should be faster as well).

* guix/channels.scm (build-from-source): Add #:system argument and pass to
build.
(build-channel-instance): Add system argument and pass to build-from-source.
(channel-instance-derivations): Add #:system argument and pass to
build-channel-instance, also rename system to current-system-value.
(channel-instances->manifest): Add #:system argument and pass to
channel-instance-derivations.
2021-05-12 08:34:07 +01:00
Maxim Cournoyer
b7cbca221f
Merge branch 'version-1.3.0' 2021-05-11 22:42:59 -04:00
Ludovic Courtès
da28efef36
ssh: Fix type that broke offloading.
Reported by Simon Streit <simon@netpanic.org>.
Regression introduced in 3270308eeb.

* guix/ssh.scm (remote-daemon-channel)[redirect]: Unquote SOCKET-NAME.
2021-05-11 12:49:53 +02:00
Roel Janssen
ce3d05cc08
guix: scripts system: Increase the size for generating Docker container images.
* guix/scripts/system.scm: Override the default of 256.
2021-05-10 09:43:12 +02:00
Ludovic Courtès
8a154c2915
describe: Gracefully handle profiles that lack provenance info.
Fixes <https://bugs.gnu.org/48313>.

Previously, 'current-channels' would return the empty list when
'current-profile' is true but the profile lacks provenance info.

* guix/describe.scm (current-channels)[build-time-metadata]: New
procedure.  Call it when 'manifest-entry-channel' returns #f for all of
ENTRIES.
* guix/scripts/describe.scm (guix-describe): When PROFILE is true, pass
third argument to 'display-profile-info'.
2021-05-09 23:46:46 +02:00
Ludovic Courtès
9562a2eb61
diagnostics, ui: Adjust to 'read-error' and 'syntax-error' in Guile 3.0.6.
* guix/diagnostics.scm (source-properties->location): Add clause for
vectors.
* guix/ui.scm (report-load-error): Tweak 'read-error' handling for 3.0.6.
* tests/guix-package.sh: Relax regexp for the "unbound variable"
diagnostic check.
* tests/guix-system.sh: Adjust "missing closing paren" check for 3.0.6.
* tests/records.scm (location-alist): New procedure.
("define-record-type* & wrong field specifier")
("define-record-type* & wrong field specifier, identifier")
("define-record-type* & duplicate initializers"): Use it.
2021-05-09 23:45:36 +02:00
Ludovic Courtès
3270308eeb
ssh: Honor GUIX_DAEMON_SOCKET on the target machine.
Fixes <https://bugs.gnu.org/48240>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

* guix/ssh.scm (remote-daemon-channel)[redirect]: Define
'connect-to-daemon'.  Use the same-named procedure from (guix store)
when available, and honor GUIX_DAEMON_SOCKET.
2021-05-08 14:55:51 +02:00
Ludovic Courtès
dd14678b9b
store: Export 'connect-to-daemon'.
* guix/store.scm (connect-to-daemon): Make public.  Improve docstring.
2021-05-08 14:55:51 +02:00
Ludovic Courtès
e2f4a5704b
ssh: 'connect-to-remote-daemon' raises a nicer message upon error.
* guix/ssh.scm (connect-to-remote-daemon): Catch
'store-connection-error?' and rethrow.
2021-05-08 14:55:51 +02:00
Ludovic Courtès
e3e0886c2d
store: 'open-connection' never returns #f.
* guix/store.scm (open-connection)[handshake-error]: New procedure.
Call it in code paths that would previously return #f.
2021-05-08 14:55:50 +02:00
Ludovic Courtès
5b0afe2420
weather: '--display-missing' shows the system type of missing items.
* guix/scripts/weather.scm (store-item-system): New procedure.
(report-server-coverage): Use it to print the system type of each
missing item.
2021-05-08 14:55:50 +02:00
Guillaume Le Vaillant
2fa8fd4af5
build-system: asdf: Work around package-name->name+version bug.
This patch modifies how the name of the main Common Lisp system is extracted
from the full Guix package name to work around bug#48225 concerning the
'package-name->name+version' function.

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

* guix/build-system/asdf.scm (asdf-build): Fix 'systems' function.
* guix/build/asdf-build-system.scm (main-system-name): Fix it.
2021-05-08 13:42:38 +02:00
Timothy Sample
7262619d6f
download: Restore error reporting.
Normal error reporting was disrupted by the introduction of
Disarchive in commit fbc2a52a32.  In
particular, running 'guix download' would succeed with a partially
downloaded file.

* guix/build/download.scm (disarchive-fetch/any): Return '#f' when
Disarchive cannot be found, the specification cannot be found, or
Disarchive fails due to an error.
2021-05-05 23:20:36 -04:00
Ludovic Courtès
626e619590
swh: Adjust for compatibility with Guile 2.2's (web client).
Guile <= 2.2.7 did not support #:verify-certificate? so work around it.

* guix/swh.scm (http-get*, http-post*) [! guile-3]: Add variant for
Guile 2.2.
2021-05-05 23:44:48 +02:00
Konrad Hinsen
d87a0efeeb
cvs-download: Fix module exports
* guix/cvs-download.scm: Remove non-existent export cvs-reference-url,
  add cvs-reference-root-directory and cvs-reference-module

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-05-05 16:56:43 +02:00
Ludovic Courtès
e069611866
swh: Adjust for compatibility with Guile 2.2's (web client).
Guile <= 2.2.7 did not support #:verify-certificate? so work around it.

* guix/swh.scm (http-get*, http-post*) [! guile-3]: Add variant for
Guile 2.2.
2021-05-05 16:56:43 +02:00
Ricardo Wurmus
56e4d7204b
profiles: texlive-configuration: Handle updmap.cfg conflict.
The profile hook would fail when preparing an environment for a package using
texlive-union, because the union already had a updmap.cfg file.

Reported-by: Lars-Dominik Braun <ldb@leibniz-psychology.org>.

* guix/profiles.scm (texlive-configuration): Delete updmap.cfg if it exists.
2021-05-05 14:50:04 +02:00
Leo Prikler
0f116d7f90
build-system: emacs: Clarify %install-dir.
The old comment is no longer adequate, see
<https://lists.gnu.org/archive/html/guix-patches/2021-05/msg00113.html>.

* guix/build/emacs-build-system.scm (%install-dir): Adjust comment to better
reflect usage of this variable.
2021-05-05 10:01:48 +02:00
Maxim Cournoyer
afec278417
ui: Suggest installing glibc-locales, not glibc-utf8-locales.
Users (both old and new) struggling with locale warnings is a recurrent theme;
part of it may be due to the glibc-utf8-locales package being misleading, as
it only includes a subset of the UTF-8 locales.  To prevent confusion, suggest
installing the glibc-locales package instead.

* guix/ui.scm (install-locale): Do not mention glibc-utf8-locales in the hint
message.  Use glibc-locales instead of glibc-utf8-locales in the provided
example.
2021-05-05 00:44:17 -04:00
Ludovic Courtès
a47f40b30d
status: Avoid abbreviation in messages.
This is a followup to 68228d80dd.

* guix/status.scm (hook-message): Spell out "sub-directories".
2021-05-05 00:57:35 +02:00
Ricardo Wurmus
a6b8794c69
profiles: texlive-configuration: Refresh font maps.
* guix/profiles.scm (texlive-configuration): Run updmap to generate font maps
necessary for pdflatex and other tools.
2021-05-03 15:36:14 +02:00
Mathieu Othacehe
fd5527407f
android-repo-download: Add guile-json extension.
This partially fixes: <https://issues.guix.gnu.org/48152>.

The (guix build download-nar) module drags the (guix build download) module
that autoloads (guix swh).

[13/26] Loading './guix/swh.scm'...
;;; Failed to autoload swh-download-directory in (guix swh):
;;; no code for module (json)
Backtrace:
In srfi/srfi-1.scm:
   460:18 19 (fold #<procedure 7ffff2c50760 at ice-9/eval.scm:336:1?> ?)
In ice-9/eval.scm:
    619:8 18 (_ #(#(#<directory (guix build utils) 7ffff318fd20>) # ?))
In ice-9/boot-9.scm:
   2806:4 17 (save-module-excursion #<procedure 7ffff25b1a00 at ice-?>)
In unknown file:
          16 (primitive-load "./guix/swh.scm")
In ice-9/eval.scm:
   721:20 15 (primitive-eval (define-module (guix swh) #:use-module ?))
In ice-9/psyntax.scm:
  1241:36 14 (expand-top-sequence ((define-module (guix swh) # # ?)) ?)
  1233:19 13 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?)
   285:10 12 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) ?)
In ice-9/eval.scm:
   293:34 11 (_ #<directory (guix build utils) 7ffff318fd20>)
In ice-9/boot-9.scm:
   3380:4 10 (define-module* _ #:filename _ #:pure _ #:version _ # _ ?)
  2565:24  9 (call-with-deferred-observers #<procedure 7ffff2215230 ?>)
  3393:24  8 (_)
   222:29  7 (map1 (((guix base16)) ((guix build utils)) ((# ?) ?) ?))
   222:29  6 (map1 (((guix build utils)) ((guix build syscalls) ?) ?))
   222:29  5 (map1 (((guix build syscalls) #:select (mkdtemp!)) (#) ?))
   222:29  4 (map1 (((web uri)) ((web client)) ((web response)) (#) ?))
   222:29  3 (map1 (((web client)) ((web response)) ((json)) ((?)) ?))
   222:29  2 (map1 (((web response)) ((json)) ((srfi srfi-1)) ((?)) ?))
   222:17  1 (map1 (((json)) ((srfi srfi-1)) ((srfi srfi-9)) ((?)) ?))
   3300:6  0 (resolve-interface (json) #:select _ #:hide _ #:prefix _ ?)

ice-9/boot-9.scm:3300:6: In procedure resolve-interface:
no code for module (json)

* guix/android-repo-download.scm (android-repo-fetch): Add guile-json
extension.
2021-05-02 18:45:27 +02:00
Mathieu Othacehe
b8c080b388
cvs-download: Add guile-json and gnutls extensions.
This partially fixes: <https://issues.guix.gnu.org/48152>.

The (guix build download-nar) module drags the (guix build download) module
that autoloads (guix swh).

[13/26] Loading './guix/swh.scm'...
;;; Failed to autoload swh-download-directory in (guix swh):
;;; no code for module (json)
Backtrace:
In srfi/srfi-1.scm:
   460:18 19 (fold #<procedure 7ffff2c50760 at ice-9/eval.scm:336:1?> ?)
In ice-9/eval.scm:
    619:8 18 (_ #(#(#<directory (guix build utils) 7ffff318fd20>) # ?))
In ice-9/boot-9.scm:
   2806:4 17 (save-module-excursion #<procedure 7ffff25b1a00 at ice-?>)
In unknown file:
          16 (primitive-load "./guix/swh.scm")
In ice-9/eval.scm:
   721:20 15 (primitive-eval (define-module (guix swh) #:use-module ?))
In ice-9/psyntax.scm:
  1241:36 14 (expand-top-sequence ((define-module (guix swh) # # ?)) ?)
  1233:19 13 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?)
   285:10 12 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) ?)
In ice-9/eval.scm:
   293:34 11 (_ #<directory (guix build utils) 7ffff318fd20>)
In ice-9/boot-9.scm:
   3380:4 10 (define-module* _ #:filename _ #:pure _ #:version _ # _ ?)
  2565:24  9 (call-with-deferred-observers #<procedure 7ffff2215230 ?>)
  3393:24  8 (_)
   222:29  7 (map1 (((guix base16)) ((guix build utils)) ((# ?) ?) ?))
   222:29  6 (map1 (((guix build utils)) ((guix build syscalls) ?) ?))
   222:29  5 (map1 (((guix build syscalls) #:select (mkdtemp!)) (#) ?))
   222:29  4 (map1 (((web uri)) ((web client)) ((web response)) (#) ?))
   222:29  3 (map1 (((web client)) ((web response)) ((json)) ((?)) ?))
   222:29  2 (map1 (((web response)) ((json)) ((srfi srfi-1)) ((?)) ?))
   222:17  1 (map1 (((json)) ((srfi srfi-1)) ((srfi srfi-9)) ((?)) ?))
   3300:6  0 (resolve-interface (json) #:select _ #:hide _ #:prefix _ ?)

ice-9/boot-9.scm:3300:6: In procedure resolve-interface:
no code for module (json)

* guix/cvs-download.scm (cvs-fetch): Add guile-json and gnutls as extensions.
2021-05-02 18:43:32 +02:00
Mathieu Othacehe
d2b5bb5f9d
hg-download: Add guile-json and gnutls extensions.
This partially fixes: <https://issues.guix.gnu.org/48152>.

The (guix build download-nar) module drags the (guix build download) module
that autoloads (guix swh).

[13/26] Loading './guix/swh.scm'...
;;; Failed to autoload swh-download-directory in (guix swh):
;;; no code for module (json)
Backtrace:
In srfi/srfi-1.scm:
   460:18 19 (fold #<procedure 7ffff2c50760 at ice-9/eval.scm:336:1?> ?)
In ice-9/eval.scm:
    619:8 18 (_ #(#(#<directory (guix build utils) 7ffff318fd20>) # ?))
In ice-9/boot-9.scm:
   2806:4 17 (save-module-excursion #<procedure 7ffff25b1a00 at ice-?>)
In unknown file:
          16 (primitive-load "./guix/swh.scm")
In ice-9/eval.scm:
   721:20 15 (primitive-eval (define-module (guix swh) #:use-module ?))
In ice-9/psyntax.scm:
  1241:36 14 (expand-top-sequence ((define-module (guix swh) # # ?)) ?)
  1233:19 13 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?)
   285:10 12 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) ?)
In ice-9/eval.scm:
   293:34 11 (_ #<directory (guix build utils) 7ffff318fd20>)
In ice-9/boot-9.scm:
   3380:4 10 (define-module* _ #:filename _ #:pure _ #:version _ # _ ?)
  2565:24  9 (call-with-deferred-observers #<procedure 7ffff2215230 ?>)
  3393:24  8 (_)
   222:29  7 (map1 (((guix base16)) ((guix build utils)) ((# ?) ?) ?))
   222:29  6 (map1 (((guix build utils)) ((guix build syscalls) ?) ?))
   222:29  5 (map1 (((guix build syscalls) #:select (mkdtemp!)) (#) ?))
   222:29  4 (map1 (((web uri)) ((web client)) ((web response)) (#) ?))
   222:29  3 (map1 (((web client)) ((web response)) ((json)) ((?)) ?))
   222:29  2 (map1 (((web response)) ((json)) ((srfi srfi-1)) ((?)) ?))
   222:17  1 (map1 (((json)) ((srfi srfi-1)) ((srfi srfi-9)) ((?)) ?))
   3300:6  0 (resolve-interface (json) #:select _ #:hide _ #:prefix _ ?)

ice-9/boot-9.scm:3300:6: In procedure resolve-interface:
no code for module (json)

* guix/hg-download.scm (hg-fetch): Add guile-json and gnutls as extensions.
2021-05-02 18:42:11 +02:00
Leo Prikler
79cfe30f3e
build-system: emacs: Use subdirectories again.
With this, Emacs libraries are installed in the ELPA_NAME-VERSION subdirectory
of site-lisp and potential subdirectories should no longer collide.

* guix/build/emacs-build-system.scm (add-source-to-load-path): Rename to...
(expand-load-path): ... this.  Also expand lone subdirectories of site-lisp.
(%standard-phases): Adjust accordingly.
(elpa-directory): New variable.  Export it publicly for use in other build
systems.
(build, patch-el-files, make-autoloads): Use ELPA name and version to
construct subdirectories of %install-dir.
(install): Install in subdirectory.
2021-05-01 15:56:37 +02:00
Leo Prikler
68228d80dd
profiles: Add hook for Emacs subdirs.
* guix/profiles.scm (emacs-subdirs): New variable.
(%default-profile-hooks): Add it here.
* guix/status.scm (hook-message): Add a message for emacs-subdirs.
2021-05-01 15:56:36 +02:00
Timothy Sample
fbc2a52a32
download: Use Disarchive as a last resort.
This is a fixed version of 66b14dccdd,
which was reverted in e74250c3c5.

* guix/download.scm (%disarchive-mirrors): New variable.
(%disarchive-mirror-file): New variable.
(built-in-download): Add 'disarchive-mirrors' keyword argument and
pass its value along to the 'builtin:download' derivation.
(url-fetch): Pass '%disarchive-mirror-file' to 'built-in-download'.
* guix/scripts/perform-download.scm (perform-download): Read
Disarchive mirrors from the environment and pass them to
'url-fetch'.
* guix/build/download.scm (disarchive-fetch/any): New procedure.
(url-fetch): Add 'disarchive-mirrors' keyword argument, use it to
make a list of URIs, and use the new procedure to fetch the file if
all other methods fail.
* build-aux/build-self.scm (build-program)[select?]: Exclude '(guix
build download)'.
* guix/self.scm (compiled-guix)[*core-modules*]: Add 'guile-json' to
the list of extensions.
2021-04-29 11:24:48 -04:00
Ludovic Courtès
524c9800af
diagnostics, ui: Adjust to 'read-error' and 'syntax-error' in Guile 3.0.6.
* guix/diagnostics.scm (source-properties->location): Add clause for
vectors.
* guix/ui.scm (report-load-error): Tweak 'read-error' handling for 3.0.6.
* tests/guix-package.sh: Relax regexp for the "unbound variable"
diagnostic check.
* tests/guix-system.sh: Adjust "missing closing paren" check for 3.0.6.
* tests/records.scm (location-alist): New procedure.
("define-record-type* & wrong field specifier")
("define-record-type* & wrong field specifier, identifier")
("define-record-type* & duplicate initializers"): Use it.
2021-04-29 01:22:04 +02:00
Ludovic Courtès
0ce1b28151
packages: 'package-with-patches' preserves package location.
* guix/packages.scm (package-with-patches): Preserve the 'location'
field of ORIGINAL.
2021-04-29 01:22:04 +02:00
Timothy Sample
e74250c3c5
Revert "download: Use Disarchive as a last resort."
This reverts commit 66b14dccdd, which broke
'guix pull'.
2021-04-28 00:24:28 -04:00
Timothy Sample
66b14dccdd
download: Use Disarchive as a last resort.
* guix/download.scm (%disarchive-mirrors): New variable.
(%disarchive-mirror-file): New variable.
(built-in-download): Add 'disarchive-mirrors' keyword argument and
pass its value along to the 'builtin:download' derivation.
(url-fetch): Pass '%disarchive-mirror-file' to 'built-in-download'.
* guix/scripts/perform-download.scm (perform-download): Read
Disarchive mirrors from the environment and pass them to
'url-fetch'.
* guix/build/download.scm (disarchive-fetch/any): New procedure.
(url-fetch): Add 'disarchive-mirrors' keyword argument, use it to
make a list of URIs, and use the new procedure to fetch the file if
all other methods fail.
2021-04-27 21:27:02 -04:00
Timothy Sample
4f59ef3edb
swh: Add a directory download procedure.
* guix/swh.scm (swh-directory-download): New procedure (with
implementation extracted from 'swh-download').
(swh-download): Use it to download the revision directory.
2021-04-27 21:26:50 -04:00
Ludovic Courtès
15b6c2a965
http-client: Remove exception mishandling in 'http-multiple-get'.
Partly fixes <https://bugs.gnu.org/47867>.
Reported by Florian Pelz <pelzflorian@pelzflorian.de>.

The non-tail recursive call to 'connect' could cause requests to be
processed twice, with 'p' possibly closed the second time.

Regression introduced in 205833b72c and
carried over in 45fce38fb0.

* guix/http-client.scm (http-multiple-get): Remove call to 'close-port'
and recursive call to 'connect' when the 'write-request' block returns #f.
2021-04-25 14:36:45 +02:00
Ludovic Courtès
69ffe875c3
http-client, substitute: Gracefully handle GnuTLS EAGAIN/EINTR.
Partly fixes <https://bugs.gnu.org/47867>.
Reported by Florian Pelz <pelzflorian@pelzflorian.de>.

In GnuTLS up to 3.7.1 included, GNUTLS_E_AGAIN and GNUTLS_E_INTERRUPTED
are not handled by 'write_to_session_record_port' and could be thrown at
the caller.  This patch works around that by dropping connections
altogether and restarting when this happens.

* guix/http-client.scm (false-if-networking-error): Swallow ERROR/AGAIN
and ERROR/INTERRUPTED.
* guix/scripts/substitute.scm (call-with-cached-connection): Likewise.
2021-04-25 14:36:40 +02:00
Ludovic Courtès
ff74e2a1bc
cve: Gracefully handle bogus CVE entries.
Fixes <https://bugs.gnu.org/47941>.
Reported by Jack Hill <jackhill@jackhill.us>.

* guix/cve.scm (reference-data->cve-references): Gracefully handle lack
of "reference_data".
(cpe-match->cve-configuration): Gracefully handle lack of "cpe23Uri".
2021-04-25 14:35:42 +02:00
Ludovic Courtès
c59cc2383d
import: Remove Nix importer.
This importer has suffered from bitrot and no longer works with current
Nix and Nixpkgs.  See <https://bugs.gnu.org/32339> and
<https://bugs.gnu.org/36255>.

* guix/import/snix.scm, guix/scripts/import/nix.scm,
tests/snix.scm: Remove.
* Makefile.am (MODULES, SCM_TESTS): Remove them.
* guix/scripts/import.scm (importers): Remove "nix".
* build-aux/test-env.in: Remove NIXPKGS variable.
* configure.ac: Remove '--with-nixpkgs' option.
* doc/guix.texi (Invoking guix import): Remove bit about "guix import
nix".
* etc/completion/fish/guix.fish: Likewise.
2021-04-25 14:34:09 +02:00
Ludovic Courtès
c50db7156d
http-client: Remove exception mishandling in 'http-multiple-get'.
Partly fixes <https://bugs.gnu.org/47867>.
Reported by Florian Pelz <pelzflorian@pelzflorian.de>.

The non-tail recursive call to 'connect' could cause requests to be
processed twice, with 'p' possibly closed the second time.

Regression introduced in 205833b72c and
carried over in 45fce38fb0.

* guix/http-client.scm (http-multiple-get): Remove call to 'close-port'
and recursive call to 'connect' when the 'write-request' block returns #f.
2021-04-24 19:08:13 +02:00
Ludovic Courtès
02d62978f4
http-client, substitute: Gracefully handle GnuTLS EAGAIN/EINTR.
Partly fixes <https://bugs.gnu.org/47867>.
Reported by Florian Pelz <pelzflorian@pelzflorian.de>.

In GnuTLS up to 3.7.1 included, GNUTLS_E_AGAIN and GNUTLS_E_INTERRUPTED
are not handled by 'write_to_session_record_port' and could be thrown at
the caller.  This patch works around that by dropping connections
altogether and restarting when this happens.

* guix/http-client.scm (false-if-networking-error): Swallow ERROR/AGAIN
and ERROR/INTERRUPTED.
* guix/scripts/substitute.scm (call-with-cached-connection): Likewise.
2021-04-24 19:08:13 +02:00
Ludovic Courtès
68a4ca148b
import: go: Autoload (htmlprag).
Fixes <https://bugs.gnu.org/47924>.
Reported by Carl Dong <contact@carldong.me>.

* guix/import/go.scm: Autoload (htmlprag).
2021-04-23 23:39:34 -04:00
Ludovic Courtès
9406bb12ee
import: go: Do not set '%strict-tokenizer?' from the top level.
This avoids interference with other users of (htmlprag) and makes the
intent clearer.

* guix/import/go.scm <top level>: Remove call to '%strict-tokenizer?'.
(go-package-licenses, go-package-description)
(go-package-synopsis, fetch-module-meta-data): Pass #:strict? #t to
'html->sxml'.
2021-04-23 23:39:34 -04:00
Rovanion Luckey
9215f35b78
import: pypi: Clarify docstring of parse-requires.txt
* guix/import/pypi.scm (parse-requires.txt): Document the parameter more
explicitly.

Signed-off-by: Leo Famulari <leo@famulari.name>
2021-04-22 23:56:43 -04:00
Ludovic Courtès
64afc72962
status: Separate downloads upon '--verbosity=2'.
This is a followup to 1fa4aff1fb,
reintroducing the newline previously emitted by 'guix substitute' upon
download completion.

With this change, with '--verbosity=2', each download occupies three
lines again, like so:

--8<---------------cut here---------------start------------->8---
downloading from https://ci.guix.gnu.org/nar/lzip/…-jsoncpp-1.9.2 ...
 jsoncpp-1.9.2  93KiB                4.2MiB/s 00:00 [##################] 100.0%

--8<---------------cut here---------------end--------------->8---

This makes the output more readable.

* guix/status.scm (print-build-event): When PRINT-URLS? is true, print
a blank line after the download.
2021-04-23 00:32:30 +02:00
Ludovic Courtès
34db952a4b
import: go: Autoload (htmlprag).
Fixes <https://bugs.gnu.org/47924>.
Reported by Carl Dong <contact@carldong.me>.

* guix/import/go.scm: Autoload (htmlprag).
2021-04-23 00:32:30 +02:00
Ludovic Courtès
55e90e5558
import: go: Do not set '%strict-tokenizer?' from the top level.
This avoids interference with other users of (htmlprag) and makes the
intent clearer.

* guix/import/go.scm <top level>: Remove call to '%strict-tokenizer?'.
(go-package-licenses, go-package-description)
(go-package-synopsis, fetch-module-meta-data): Pass #:strict? #t to
'html->sxml'.
2021-04-23 00:32:30 +02:00
Ludovic Courtès
7dbc2fcb45
cve: Gracefully handle bogus CVE entries.
Fixes <https://bugs.gnu.org/47941>.
Reported by Jack Hill <jackhill@jackhill.us>.

* guix/cve.scm (reference-data->cve-references): Gracefully handle lack
of "reference_data".
(cpe-match->cve-configuration): Gracefully handle lack of "cpe23Uri".
2021-04-21 23:53:49 +02:00
Ludovic Courtès
d95168321f
import: Remove Nix importer.
This importer has suffered from bitrot and no longer works with current
Nix and Nixpkgs.  See <https://bugs.gnu.org/32339> and
<https://bugs.gnu.org/36255>.

* guix/import/snix.scm, guix/scripts/import/nix.scm,
tests/snix.scm: Remove.
* Makefile.am (MODULES, SCM_TESTS): Remove them.
* guix/scripts/import.scm (importers): Remove "nix".
* build-aux/test-env.in: Remove NIXPKGS variable.
* configure.ac: Remove '--with-nixpkgs' option.
* doc/guix.texi (Invoking guix import): Remove bit about "guix import
nix".
* etc/completion/fish/guix.fish: Likewise.
2021-04-20 12:13:16 +02:00
Mathieu Othacehe
935ede4f06
guix: ci: Rename the checkout 'input' field.
The checkout "input" field has been renamed "channel" in Cuirass 1.0 release.

* guix/ci.scm (<checkout>)[input]: Rename it into ...
[channel]: ... this new field.
2021-04-20 10:15:04 +02:00
Xinglu Chen
c68070e4ee
lint: Warn about underscores in package names.
As per section '16.4.2 Package Naming' in the manual, use hyphens
instead of underscores in package names.

* guix/lint.scm (check-name): Check whether the package name contains
underscores.
* tests/lint.scm ("name: use underscore in package name"): New test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-16 23:25:23 +02:00
Ludovic Courtès
5b35c9adc8
git-download: Call 'libgit2-init!'.
Fixes <https://bugs.gnu.org/47797>.
Reported by Ingo Ruhnke <grumbel@gmail.com>
and Nicolò Balzarotti <anothersms@gmail.com>.

Regression introduced in c1940fde43.

* guix/git-download.scm (git-predicate): Add call to 'libgit2-init!'.
2021-04-16 23:25:23 +02:00
Mark H Weaver
1bab9b9f17
grafts: Support rewriting UTF-16 and UTF-32 store references.
Partially fixes <https://bugs.gnu.org/33848>.

* guix/build/graft.scm (replace-store-references): Add support for
finding and rewriting UTF-16 and UTF-32 store references.
* tests/grafts.scm: Add tests.
2021-04-15 03:22:55 -04:00
Ludovic Courtès
fab8ab7617
git: Honor proxy settings when fetching submodules.
Fixes <https://bugs.gnu.org/44593>.

* guix/git.scm (update-submodules): Add #:fetch-options and honor it.
(update-cached-checkout): Pass #:fetch-options to 'update-submodules'.
* doc/guix.texi (Requirements): Adjust comment about Guile-Git.
2021-04-14 22:51:38 +02:00
Ludovic Courtès
a514b4ab19
channels: Build user channels with '-O1'.
This should noticeably speed up compilation for channels with many files.

* guix/channels.scm (standard-module-derivation)[build]: Define
'optimizations-for-level' and '-O1'.  Pass #:optimization-options to
'compile-files'.
2021-04-12 18:44:09 +02:00
Ludovic Courtès
b18f45c21f
Add (guix ipfs).
This module allows for communicating with the IPFS
gateway over the HTTP interface.  The commit has been
cherry-picked from <https://issues.guix.gnu.org/33899>.

The procedures for adding and restoring file trees have
been removed as according to a reply issue 33899, a different
format will be used.  The procedure 'add-data' has been
exported as it will be used in the system test for IPFS.

* guix/ipfs.scm: New file.
* Makefile.am (MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-12 18:42:22 +02:00
Mark H Weaver
e18e2e458f
scripts: system: Default to -v3 when building a system.
This is a followup to 8f9052d543.

* guix/scripts/system.scm (verbosity-level): Change the default
from 2 to 3 when building a system.
2021-04-11 22:13:17 -04:00
Kyle Meyer
cb41c15827
git: Update cached checkout to the remote HEAD by default.
Fixes <https://bugs.gnu.org/45187>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

update-cached-checkout hard codes "master" as the default branch, leading to a
failure when the clone doesn't have a "master" branch.  Instead use the remote
HEAD symref as an indicator of what the primary branch is.

* guix/git.scm (resolve-reference): Support resolving symrefs.
(update-cached-checkout, latest-repository-commit): Change the default for REF
to the empty list and translate it to the remote HEAD symref.
(<git-checkout>): Change branch field's default to #f.
(git-checkout-compiler): When branch and commit fields are both #f, call
latest-repository-commit* with the empty list as the ref.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-10 22:59:52 +02:00
Maxim Cournoyer
fed28a9632
build-system/qt: Fix wrapping with QTWEBENGINEPROCESS_PATH.
This is a follow up commit to 06eb21856f, which added QTWEBENGINEPROCESS_PATH
to the list of wrapped variables.  Unfortunately it wouldn't be set, as its
value is a plain file rather than a directory, and the code only checked for
directories.

* guix/build/qt-build-system.scm (variables-for-wrapping): Define a file type
entry for each variable definition, and use it to determine if we should look
for directories versus plain files.
2021-04-10 00:55:18 -04:00
Maxim Cournoyer
83f8b6d32c
import: go: Append version to symbol name in the pinned version mode.
This allows importing packages with complicated version specific dependency
chains without the package symbol names colliding.

* doc/guix.texi (Invoking guix import): Document the --pin-versions option.
Mention that a specific version can be imported.  Remove the experimental
warning.
* guix/import/go.scm (go-module->guix-package-name)[version]: Add optional
argument.  Rewrite the character translation in terms of string-map.
(go-module->guix-package): Conditionally use dependencies whose symbol include
their version, based no the value of the PIN-VERSIONS? argument.
* guix/import/utils.scm (package->definition): Add a new case where the full
version string is appended to the package symbol.
* guix/scripts/import.scm (guix-import): Correctly print forms starting
with '(define-public [...]'.
* guix/scripts/import/go.scm (guix-import-go): Conditionally include the
version in the package symbols defined.
2021-04-09 23:02:37 -04:00
Maxim Cournoyer
a8b927a562
import: go: Add an option to use pinned versions.
The ability to pin versions is handy when having to deal to packages that
bootstrap themselves through a chain of former versions.  Not using pinned
versions in these case could introduce dependency cycles.

* guix/build-system/go.scm (guix)
(%go-version-rx): Rename to...
(%go-pseudo-version-rx): ... this.  Simplify the regular expression, which in
turns makes it more robust.
* guix/build-system/go.scm (go-version->git-ref): Adjust following the above
rename.
(go-pseudo-version?): New predicate.
(go-module-latest-version): Rename to ...
(go-module-version-string): ... this.  Rename goproxy-url argument to just
goproxy.  Add a VERSION keyword argument, update docstring and adjust to have
it used.
(go-module-available-versions): New procedure.
(%go.mod-require-directive-rx): Document regexp.
(parse-go.mod): Harmonize the way dependencies are recorded to a list of lists
rather than a list of pairs, as done for other importers.  Rewrite to directly pass
multiple values rather than a record object.  Filter the replaced modules in a
functional style.
(go-module->guix-package): Add docstring.
[version, pin-versions?]: New arguments.  Rename the GOPROXY-URL argument to
GOPROXY.  Adjust to the new returned value of fetch-go.mod, which is a string.
Fail when the provided version doesn't exist.  Return a list dependencies and
their versions when in pinned versions mode, else just the dependencies.
(go-module-recursive-import)[version, pin-versions?]: New arguments.
Honor the new arguments and guard against network errors.
* guix/scripts/import/go.scm (%default-options): Register a default value for
the goproxy argument.
(show-help): Document that a version can be specified.  Remove the --version
argument and add a --pin-versions argument.
(%options)[version]: Remove option.
[pin-versions]: Add option.
(guix-import-go): Adjust so the version provided from the module name is
honored, along the new pin-versions? argument.
* tests/go.scm: Adjust and add new tests.
2021-04-09 22:41:32 -04:00
Maxim Cournoyer
6aee902eaf
import: go: Improve synopsis and description parsing.
* guix/import/go.scm (%strict-tokenizer?): Set parameter to #t.
(go-path-escape): Redefine to prevent inlining.
(http-get*): Replace by ...
(http-fetch*): this ...
(json-fetch*): New procedure.
(go.pkg.dev-info): Use http-fetch*.
(go-package-licenses): Rewrite in terms of go.pkg.dev-info.
(go-package-description): Likewise.
(go-package-synopsis): Likewise.
(fetch-go.mod): Use the memoized http-fetch*.
(parse-go.mod): Adjust to receive content as a string.
(fetch-module-meta-data): Adjust to use http-fetch*.
(go-module->guix-package): Adjust to the modified fetch-go.mod return value.
[inputs]: Use propagated inputs, which is the most common situations for Go
libraries.
[description]: Beautify description.
[licenses]: Do no check for #f.  The result of the license parsing is always a
list.
* tests/go.scm: Adjust following above changes.
2021-04-09 22:41:31 -04:00
Maxim Cournoyer
2446a112df
import: utils: Refactor maybe-inputs and add maybe-propagated-inputs.
* guix/import/utils.scm (maybe-inputs)[type]: New argument.  Update docstring.
The argument is used to derive the input field name to use.
(maybe-native-inputs): Adjust to use the above.
(maybe-propagated-inputs): New procedure.
2021-04-09 22:41:31 -04:00
Ludovic Courtès
2d73086262
daemon: 'guix substitute' replies on FD 4.
This avoids the situation where error messages would unintentionally go
to stderr and be wrongfully interpreted as a reply by the daemon.

Fixes <https://bugs.gnu.org/46362>.
This is a followup to ee3226e9d5.

* guix/scripts/substitute.scm (display-narinfo-data): Add 'port'
parameter and honor it.
(process-query): Likewise.
(process-substitution): Likewise.
(%error-to-file-descriptor-4?, with-redirected-error-port): Remove.
(%reply-file-descriptor): New variable.
(guix-substitute): Remove use of 'with-redirected-error-port'.  Define
'reply-port' and pass it to 'process-query' and 'process-substitution'.
* nix/libstore/build.cc (SubstitutionGoal::handleChildOutput): Swap
'builderOut' and 'fromAgent'.
* nix/libstore/local-store.cc (LocalStore::getLineFromSubstituter):
Likewise.
* tests/substitute.scm <top level>: Set '%reply-file-descriptor'
rather than '%error-to-file-descriptor-4?'.
2021-04-09 17:46:38 +02:00