summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
Diffstat (limited to 'guix')
-rw-r--r--guix/build/po.scm17
-rw-r--r--guix/build/qt-utils.scm5
-rw-r--r--guix/build/syscalls.scm5
-rw-r--r--guix/import/cpan.scm3
-rw-r--r--guix/import/elpa.scm3
-rw-r--r--guix/import/hackage.scm2
-rw-r--r--guix/import/minetest.scm3
-rw-r--r--guix/import/opam.scm10
-rw-r--r--guix/import/stackage.scm2
-rw-r--r--guix/import/texlive.scm55
-rw-r--r--guix/lint.scm14
-rw-r--r--guix/packages.scm9
-rw-r--r--guix/scripts/environment.scm66
-rw-r--r--guix/scripts/import/opam.scm4
-rw-r--r--guix/scripts/refresh.scm4
-rw-r--r--guix/scripts/shell.scm2
-rw-r--r--guix/substitutes.scm10
-rw-r--r--guix/svn-download.scm6
18 files changed, 155 insertions, 65 deletions
diff --git a/guix/build/po.scm b/guix/build/po.scm
index 7f88164cd8..62362e933e 100644
--- a/guix/build/po.scm
+++ b/guix/build/po.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2021 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2023 Florian Pelz <pelzflorian@pelzflorian.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -123,7 +124,15 @@ and the value is the msgstr. The result only contains non fuzzy strings."
(define xref-regexp
;; Texinfo cross-reference regexp.
- (make-regexp "@(px|x)?ref\\{([^,}]+)"))
+ (make-regexp
+ (string-append "@(px|x)?ref\\{([^,}]+)("
+ "\\}" ;Match xref with one argument
+ "|,[^,}]*\\}" ;or two arguments
+ "|,[^,}]*,[^,}]*\\}" ;or three arguments
+ ;; or with an *empty* fourth argument:
+ "|,[^,}]*,[^,}]*, *,"
+ "|,[^,}]*,[^,}]*, *\\}"
+ ")")))
(define (translate-cross-references texi pofile)
"Translate the cross-references that appear in @var{texi}, the initial
@@ -157,13 +166,15 @@ translation of a Texinfo file, using the msgid/msgstr pairs from @var{pofile}."
(cons (string-drop content offset) result)))
((head . tail)
(let ((prefix (match:substring head 1))
- (ref (canonicalize-whitespace (match:substring head 2))))
+ (ref (canonicalize-whitespace (match:substring head 2)))
+ (rest (match:substring head 3)))
(define translated
(string-append "@" (or prefix "")
"ref{"
(match (vhash-assoc ref translation-map)
(#f ref)
- ((_ . str) str))))
+ ((_ . str) str))
+ (or rest "")))
(loop tail
(match:end head)
diff --git a/guix/build/qt-utils.scm b/guix/build/qt-utils.scm
index b8ecfedd43..f52e3f7af5 100644
--- a/guix/build/qt-utils.scm
+++ b/guix/build/qt-utils.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
;;;
;;; This file is part of GNU Guix.
@@ -87,9 +88,7 @@
"/applications" "/cursors" "/fonts" "/icons" "/glib-2.0/schemas"
"/mime" "/sounds" "/themes" "/wallpapers")
'("XDG_CONFIG_DIRS" suffix directory "/etc/xdg")
- ;; We wrap exactly to avoid potentially mixing Qt5/Qt6 components, which
- ;; would cause warnings, perhaps problems.
- `("QT_PLUGIN_PATH" = directory
+ `("QT_PLUGIN_PATH" prefix directory
,(format #f "/lib/qt~a/plugins" qt-major-version))
`("QML2_IMPORT_PATH" = directory
,(format #f "/lib/qt~a/qml" qt-major-version))
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index df9b9f6ac7..d947b010d3 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -970,7 +970,10 @@ backend device."
(string->pointer key)
(string->pointer "")
0)))
- (cond ((< size 0) #f)
+ (cond ((< size 0)
+ (throw 'system-error "getxattr" "~S: ~A"
+ (list file key (strerror err))
+ (list err)))
((zero? size) "")
;; Get VALUE in buffer of SIZE. XXX actual size can race.
(else (let*-values (((buf) (make-bytevector size))
diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm
index eeb142a9b8..da47018c35 100644
--- a/guix/import/cpan.scm
+++ b/guix/import/cpan.scm
@@ -28,6 +28,7 @@
#:use-module ((ice-9 rdelim) #:select (read-line))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-34)
#:use-module (json)
#:use-module (gcrypt hash)
#:use-module (guix diagnostics)
@@ -310,7 +311,7 @@ in RELEASE, a <cpan-release> record."
(define* (latest-release package #:key (version #f))
"Return an <upstream-source> for the latest release of PACKAGE."
(when version
- (error
+ (raise
(formatted-message
(G_ "~a updater doesn't support updating to a specific version, sorry.")
"cpan")))
diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm
index f71e758db4..8ebebcafb3 100644
--- a/guix/import/elpa.scm
+++ b/guix/import/elpa.scm
@@ -34,6 +34,7 @@
#:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (guix i18n)
#:use-module (guix diagnostics)
@@ -405,7 +406,7 @@ type '<elpa-package>'."
(define repo (elpa-repository package))
(when version
- (error
+ (raise
(formatted-message
(G_ "~a updater doesn't support updating to a specific version, sorry.")
"elpa")))
diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm
index 83ad85f3fe..56c8696ad7 100644
--- a/guix/import/hackage.scm
+++ b/guix/import/hackage.scm
@@ -356,7 +356,7 @@ respectively."
(define* (latest-release package #:key (version #f))
"Return an <upstream-source> for the latest release of PACKAGE."
(when version
- (error
+ (raise
(formatted-message
(G_ "~a updater doesn't support updating to a specific version, sorry.")
"hackage")))
diff --git a/guix/import/minetest.scm b/guix/import/minetest.scm
index 7e7b6dd6ac..5ea6e023ce 100644
--- a/guix/import/minetest.scm
+++ b/guix/import/minetest.scm
@@ -22,6 +22,7 @@
#:use-module (ice-9 threads)
#:use-module (ice-9 hash-table)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-34)
#:use-module (guix diagnostics)
#:use-module ((guix packages) #:prefix package:)
#:use-module (guix upstream)
@@ -492,7 +493,7 @@ or #false if the latest release couldn't be determined."
(define source (package:package-source pkg))
(when version
- (error
+ (raise
(formatted-message
(G_ "~a updater doesn't support updating to a specific version, sorry.")
"minetest")))
diff --git a/guix/import/opam.scm b/guix/import/opam.scm
index e336936306..e67146e593 100644
--- a/guix/import/opam.scm
+++ b/guix/import/opam.scm
@@ -29,6 +29,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-2)
#:use-module ((srfi srfi-26) #:select (cut))
+ #:use-module (srfi srfi-34)
#:use-module ((web uri) #:select (string->uri uri->string))
#:use-module ((guix build utils) #:select (dump-port find-files mkdir-p))
#:use-module (guix build-system)
@@ -335,10 +336,9 @@ path to the repository."
(sha256 (base32 ,(guix-hash-url temp)))))))
'no-source-information)))
-(define* (opam->guix-package name #:key (repo 'opam) version #:allow-other-keys)
- "Import OPAM package NAME from REPOSITORY (a directory name) or, if
-REPOSITORY is #f, from the official OPAM repository. Return a 'package' sexp
-or #f on failure."
+(define* (opam->guix-package name #:key (repo '("opam")) version #:allow-other-keys)
+ "Import OPAM package NAME from REPO, a list of repository names, URLs, or
+file names. Return a 'package' sexp or #f on failure."
(and-let* ((with-opam (if (member "opam" repo) repo (cons "opam" repo)))
(opam-file (opam-fetch name with-opam))
(version (assoc-ref opam-file "version"))
@@ -417,7 +417,7 @@ package in OPAM."
(define* (latest-release package #:key (version #f))
"Return an <upstream-source> for the latest release of PACKAGE."
(when version
- (error
+ (raise
(formatted-message
(G_ "~a updater doesn't support updating to a specific version, sorry.")
"opam")))
diff --git a/guix/import/stackage.scm b/guix/import/stackage.scm
index 735eeb75f7..f98b86c334 100644
--- a/guix/import/stackage.scm
+++ b/guix/import/stackage.scm
@@ -145,7 +145,7 @@ included in the Stackage LTS release."
"Return an <upstream-source> for the latest Stackage LTS release of
PACKAGE or #f if the package is not included in the Stackage LTS release."
(when version
- (error
+ (raise
(formatted-message
(G_ "~a updater doesn't support updating to a specific version, sorry.")
"stackage")))
diff --git a/guix/import/texlive.scm b/guix/import/texlive.scm
index 82014ee568..086cd363a9 100644
--- a/guix/import/texlive.scm
+++ b/guix/import/texlive.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -246,11 +246,15 @@ of those files are returned that are unexpectedly installed."
(define (tlpdb->package name version package-database)
(and-let* ((data (assoc-ref package-database name))
(dirs (files->directories
- (map (lambda (dir)
- (string-drop dir (string-length "texmf-dist/")))
- (append (or (assoc-ref data 'docfiles) (list))
- (or (assoc-ref data 'runfiles) (list))
- (or (assoc-ref data 'srcfiles) (list))))))
+ (filter-map (lambda (dir)
+ ;; Ignore any file not starting with the
+ ;; expected prefix. Nothing good can come
+ ;; from this.
+ (and (string-prefix? "texmf-dist/" dir)
+ (string-drop dir (string-length "texmf-dist/"))))
+ (append (or (assoc-ref data 'docfiles) (list))
+ (or (assoc-ref data 'runfiles) (list))
+ (or (assoc-ref data 'srcfiles) (list))))))
(name (guix-name name))
;; TODO: we're ignoring the VERSION argument because that
;; information is distributed across %texlive-tag and
@@ -260,6 +264,12 @@ of those files are returned that are unexpectedly installed."
%texlive-tag "/Master/texmf-dist"))
(locations dirs)
(revision %texlive-revision)))
+ ;; Ignore arch-dependent packages.
+ (filtered-depends
+ (or (and=> (assoc-ref data 'depend)
+ (lambda (inputs)
+ (remove (cut string-suffix? ".ARCH" <>) inputs)))
+ '()))
(source (with-store store
(download-multi-svn-to-store
store ref (string-append name "-svn-multi-checkout")))))
@@ -278,24 +288,25 @@ of those files are returned that are unexpectedly installed."
;; package->definition in (guix import utils) expects to see a
;; version field.
(version ,version)
- ,@(or (and=> (assoc-ref data 'depend)
- (lambda (inputs)
- `((propagated-inputs
- (list ,@(map (lambda (tex-name)
- (let ((name (guix-name tex-name)))
- (string->symbol name)))
- inputs))))))
- '())
- ,@(or (and=> (assoc-ref data 'catalogue-ctan)
- (lambda (url)
- `((home-page ,(string-append "https://ctan.org" url)))))
+ ,@(match filtered-depends
+ (() '())
+ (inputs
+ `((propagated-inputs
+ (list ,@(map
+ (lambda (tex-name)
+ (let ((name (guix-name tex-name)))
+ (string->symbol name)))
+ inputs))))))
+ ,@(or (and=> (assoc-ref data 'name)
+ (lambda (name)
+ `((home-page ,(string-append "https://ctan.org/pkg/"
+ name)))))
'((home-page "https://www.tug.org/texlive/")))
(synopsis ,(assoc-ref data 'shortdesc))
- (description ,(beautify-description
- (assoc-ref data 'longdesc)))
- (license ,(string->license
- (assoc-ref data 'catalogue-license))))
- (or (assoc-ref data 'depend) (list)))))
+ (description ,(and=> (assoc-ref data 'longdesc) beautify-description))
+ (license ,(and=> (assoc-ref data 'catalogue-license)
+ string->license)))
+ filtered-depends)))
(define texlive->guix-package
(memoize
diff --git a/guix/lint.scm b/guix/lint.scm
index ea43a15141..0ed5b8dc98 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -1484,6 +1484,9 @@ the NIST server non-fatal."
(package-version package))))
((force lookup) name version)))))
+;; Prevent Guile 3 from inlining this procedure so we can mock it in tests.
+(set! package-vulnerabilities package-vulnerabilities)
+
(define* (check-vulnerabilities package
#:optional (package-vulnerabilities
package-vulnerabilities))
@@ -1862,6 +1865,10 @@ them for PACKAGE."
(description "Validate package descriptions")
(check check-description-style))
(lint-checker
+ (name 'synopsis)
+ (description "Validate package synopses")
+ (check check-synopsis-style))
+ (lint-checker
(name 'inputs-should-be-native)
(description "Identify inputs that should be native inputs")
(check check-inputs-should-be-native))
@@ -1925,10 +1932,7 @@ or a list thereof")
(define %network-dependent-checkers
(list
- (lint-checker
- (name 'synopsis)
- (description "Validate package synopses")
- (check check-synopsis-style))
+
(lint-checker
(name 'gnu-description)
(description "Validate synopsis & description of GNU packages")
diff --git a/guix/packages.scm b/guix/packages.scm
index 4c0c194652..2d33212f44 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -74,7 +74,6 @@
origin-uri
origin-method
origin-hash
- origin-sha256 ;deprecated
origin-file-name
origin-actual-file-name
origin-patches
@@ -346,14 +345,6 @@ as base32. Otherwise, it must be a bytevector."
specifications to 'hash'."
(origin-compatibility-helper (fields ...) ()))
-(define-deprecated (origin-sha256 origin)
- origin-hash
- (let ((hash (origin-hash origin)))
- (unless (eq? (content-hash-algorithm hash) 'sha256)
- (raise (condition (&message
- (message (G_ "no SHA256 hash for origin"))))))
- (content-hash-value hash)))
-
(define (print-origin origin port)
"Write a concise representation of ORIGIN to PORT."
(match origin
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index a4939ea63c..ebfc05731c 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -31,6 +31,8 @@
#:use-module (guix build utils)
#:use-module (guix monads)
#:use-module ((guix gexp) #:select (lower-object))
+ #:autoload (guix describe) (current-profile current-channels)
+ #:autoload (guix channels) (guix-channel? channel-commit)
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:autoload (guix scripts pack) (symlink-spec-option-parser)
@@ -49,9 +51,11 @@
#:autoload (gnu packages) (specification->package+output)
#:autoload (gnu packages bash) (bash)
#:autoload (gnu packages bootstrap) (bootstrap-executable %bootstrap-guile)
+ #:autoload (gnu packages package-management) (guix)
#:use-module (ice-9 match)
#:autoload (ice-9 rdelim) (read-line)
#:use-module (ice-9 vlist)
+ #:autoload (web uri) (string->uri uri-scheme)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
@@ -108,6 +112,8 @@ shell'."
-P, --link-profile link environment profile to ~/.guix-profile within
an isolated container"))
(display (G_ "
+ -W, --nesting make Guix available within the container"))
+ (display (G_ "
-u, --user=USER instead of copying the name and home of the current
user into an isolated container, use the name USER
with home directory /home/USER"))
@@ -238,6 +244,9 @@ use '--preserve' instead~%"))
(option '(#\N "network") #f #f
(lambda (opt name arg result)
(alist-cons 'network? #t result)))
+ (option '(#\W "nesting") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'nesting? #t result)))
(option '(#\P "link-profile") #f #f
(lambda (opt name arg result)
(alist-cons 'link-profile? #t result)))
@@ -342,6 +351,26 @@ for the corresponding packages."
(packages->outputs (load* file module) mode)))
(('manifest . file)
(manifest-entries (load-manifest file)))
+ (('nesting? . #t)
+ (if (assoc-ref opts 'profile)
+ '()
+ (let ((profile (and=> (current-profile) readlink*)))
+ (if (or (not profile) (not (store-path? profile)))
+ (begin
+ (warning (G_ "\
+could not add current Guix to the profile~%"))
+ '())
+ (list (manifest-entry
+ (name "guix")
+ (version
+ (or (any (lambda (channel)
+ (and (guix-channel? channel)
+ (channel-commit channel)))
+ (current-channels))
+ "0"))
+ (item profile)
+ (search-paths
+ (package-native-search-paths guix))))))))
(_ '()))
opts)
manifest-entry=?)))
@@ -688,7 +717,8 @@ regexps in WHITE-LIST."
(define* (launch-environment/container #:key command bash user user-mappings
profile manifest link-profile? network?
- map-cwd? emulate-fhs? (setup-hook #f)
+ map-cwd? emulate-fhs? nesting?
+ (setup-hook #f)
(symlinks '()) (white-list '()))
"Run COMMAND within a container that features the software in PROFILE.
Environment variables are set according to the search paths of MANIFEST. The
@@ -704,6 +734,9 @@ Standard and provide a glibc that reads the cache from /etc/ld.so.cache.
SETUP-HOOK is an additional setup procedure to be called, currently only used
with the EMULATE-FHS? option.
+When NESTING? is true, share all the store with the container and add Guix to
+its profile, allowing its use from within the container.
+
LINK-PROFILE? creates a symbolic link from ~/.guix-profile to the
environment profile.
@@ -731,8 +764,26 @@ WHILE-LIST."
("/libexec" . "/usr/libexec")
("/share" . "/usr/share"))))
- (mlet %store-monad ((reqs (inputs->requisites
- (list (direct-store-path bash) profile))))
+ (define (nesting-mappings)
+ ;; Files shared with the host when enabling nesting.
+ (cons* (file-system-mapping
+ (source (%store-prefix))
+ (target source))
+ (file-system-mapping
+ (source (cache-directory))
+ (target source)
+ (writable? #t))
+ (let ((uri (string->uri (%daemon-socket-uri))))
+ (if (or (not uri) (eq? 'file (uri-scheme uri)))
+ (list (file-system-mapping
+ (source (%daemon-socket-uri))
+ (target source)))
+ '()))))
+
+ (mlet %store-monad ((reqs (if nesting?
+ (return '())
+ (inputs->requisites
+ (list (direct-store-path bash) profile)))))
(return
(let* ((cwd (getcwd))
(home (getenv "HOME"))
@@ -795,11 +846,14 @@ WHILE-LIST."
(filter-map optional-mapping->fs
%network-file-mappings)
'())
- ;; Mappings for an FHS container.
(if emulate-fhs?
(filter-map optional-mapping->fs
fhs-mappings)
'())
+ (if nesting?
+ (filter-map optional-mapping->fs
+ (nesting-mappings))
+ '())
(map file-system-mapping->bind-mount
mappings))))
(exit/status
@@ -1013,6 +1067,7 @@ command-line option processing with 'parse-command-line'."
(network? (assoc-ref opts 'network?))
(no-cwd? (assoc-ref opts 'no-cwd?))
(emulate-fhs? (assoc-ref opts 'emulate-fhs?))
+ (nesting? (assoc-ref opts 'nesting?))
(user (assoc-ref opts 'user))
(bootstrap? (assoc-ref opts 'bootstrap?))
(system (assoc-ref opts 'system))
@@ -1059,6 +1114,8 @@ command-line option processing with 'parse-command-line'."
(leave (G_ "--no-cwd cannot be used without '--container'~%")))
(when emulate-fhs?
(leave (G_ "'--emulate-fhs' cannot be used without '--container~%'")))
+ (when nesting?
+ (leave (G_ "'--nesting' cannot be used without '--container~%'")))
(when (pair? symlinks)
(leave (G_ "'--symlink' cannot be used without '--container~%'"))))
@@ -1141,6 +1198,7 @@ when using '--container'; doing nothing~%"))
#:network? network?
#:map-cwd? (not no-cwd?)
#:emulate-fhs? emulate-fhs?
+ #:nesting? nesting?
#:symlinks symlinks
#:setup-hook
(and emulate-fhs?
diff --git a/guix/scripts/import/opam.scm b/guix/scripts/import/opam.scm
index 834ac34cb0..5bc7ad2122 100644
--- a/guix/scripts/import/opam.scm
+++ b/guix/scripts/import/opam.scm
@@ -47,8 +47,8 @@ Import and convert the opam package for PACKAGE-NAME.\n"))
(display (G_ "
-r, --recursive import packages recursively"))
(display (G_ "
- --repo import packages from this opam repository (name, URL or local path)
- can be used more than once"))
+ --repo=REPOSITORY import packages from REPOSITORY (name, URL, or
+ file name); can be used more than once"))
(display (G_ "
-V, --version display version information and exit"))
(newline)
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index ee94ed29a1..bc6c24967a 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -98,7 +98,7 @@
(option '(#\r "recursive") #f #f
(lambda (opt name arg result)
(alist-cons 'recursive? #t result)))
- (option '("list-transitive") #f #f
+ (option '(#\T "list-transitive") #f #f
(lambda (opt name arg result)
(alist-cons 'list-transitive? #t result)))
@@ -156,7 +156,7 @@ specified with `--select'.\n"))
(display (G_ "
-r, --recursive check the PACKAGE and its inputs for upgrades"))
(display (G_ "
- --list-transitive list all the packages that PACKAGE depends on"))
+ -T, --list-transitive list all the packages that PACKAGE depends on"))
(newline)
(display (G_ "
--keyring=FILE use FILE as the keyring of upstream OpenPGP keys"))
diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm
index 92bbfb04d0..1b42cc2af0 100644
--- a/guix/scripts/shell.scm
+++ b/guix/scripts/shell.scm
@@ -389,6 +389,8 @@ return #f and #f."
(if (not file)
(loop rest system file (cons spec specs))
(values #f #f)))
+ ((('nesting? . #t) . rest)
+ (loop rest system file (append specs '("nested guix"))))
((('load . ('package candidate)) . rest)
(if (and (not file) (null? specs))
(loop rest system candidate specs)
diff --git a/guix/substitutes.scm b/guix/substitutes.scm
index 84c7be83ca..e732096933 100644
--- a/guix/substitutes.scm
+++ b/guix/substitutes.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2018 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2020 Christopher Baines <mail@cbaines.net>
@@ -35,6 +35,7 @@
#:select ((open-connection-for-uri
. guix:open-connection-for-uri)
resolve-uri-reference))
+ #:autoload (gnutls) (error->string error/premature-termination)
#:use-module (guix progress)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
@@ -152,6 +153,13 @@ indicates that PATH is unavailable at CACHE-URL."
(strerror
(system-error-errno `(system-error ,@args)))))
#f)
+ (('gnutls-error error proc . rest)
+ (if (eq? error error/premature-termination)
+ (begin
+ (warning (G_ "~a: TLS connection failed: in ~a: ~a~%") host
+ proc (error->string error))
+ #f)
+ (apply throw 'gnutls-error error proc rest)))
(args
(apply throw args)))))
diff --git a/guix/svn-download.scm b/guix/svn-download.scm
index e0a26b73ee..769571b5f6 100644
--- a/guix/svn-download.scm
+++ b/guix/svn-download.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014-2016, 2019, 2021-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2016, 2019, 2021-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
;;; Copyright © 2017, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
;;;
@@ -63,7 +63,7 @@
svn-reference?
(url svn-reference-url) ; string
(revision svn-reference-revision) ; number
- (recursive? svn-reference-recursive? (default #t))
+ (recursive? svn-reference-recursive? (default #f))
(user-name svn-reference-user-name (default #f))
(password svn-reference-password (default #f)))
@@ -132,7 +132,7 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
(url svn-multi-reference-url) ; string
(revision svn-multi-reference-revision) ; number
(locations svn-multi-reference-locations) ; list of strings
- (recursive? svn-multi-reference-recursive? (default #t))
+ (recursive? svn-multi-reference-recursive? (default #f))
(user-name svn-multi-reference-user-name (default #f))
(password svn-multi-reference-password (default #f)))