summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
Diffstat (limited to 'guix')
-rw-r--r--guix/derivations.scm10
-rw-r--r--guix/import/cran.scm6
-rw-r--r--guix/read-print.scm22
-rwxr-xr-xguix/scripts/substitute.scm10
4 files changed, 35 insertions, 13 deletions
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 354ec20e3f..0bb6a28147 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
;;;
;;; This file is part of GNU Guix.
@@ -484,17 +484,21 @@ things as appropriate and is thus more efficient."
(fold-right (lambda (output result)
(match output
((name path "" "")
+ ;; Regular derivation.
(alist-cons name
(make-derivation-output path #f #f #f)
result))
((name path hash-algo hash)
- ;; fixed-output
+ ;; Fixed-output, unless HASH is the empty string (in that
+ ;; case, HASH-ALGO must be preserved despite being
+ ;; unused).
(let* ((rec? (string-prefix? "r:" hash-algo))
(algo (string->symbol
(if rec?
(string-drop hash-algo 2)
hash-algo)))
- (hash (base16-string->bytevector hash)))
+ (hash (and (not (string-null? hash))
+ (base16-string->bytevector hash))))
(alist-cons name
(make-derivation-output path algo
hash rec?)
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index f6d24820a8..c4b36da12b 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
@@ -732,12 +732,12 @@ s-expression corresponding to that package, or #f on failure."
(define latest-version
(latest-bioconductor-package-version upstream-name))
- (and version
+ (and latest-version
;; Bioconductor does not provide signatures.
(upstream-source
(package (package-name pkg))
(version latest-version)
- (urls (bioconductor-uri upstream-name version))
+ (urls (bioconductor-uri upstream-name latest-version))
(input-changes
(changed-inputs
pkg
diff --git a/guix/read-print.scm b/guix/read-print.scm
index 8a720ef2ef..ccddca732d 100644
--- a/guix/read-print.scm
+++ b/guix/read-print.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2021-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021-2023 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -488,6 +488,19 @@ each line except the first one (they're assumed to be already there)."
(8 "#o"))
(number->string integer base)))
+(define %special-non-extended-symbols
+ ;; Special symbols that can be written without the #{...}# notation for
+ ;; extended symbols: 1+, 1-, 123/, etc.
+ (make-regexp "^[0-9]+[[:graph:]]+$" regexp/icase))
+
+(define (symbol->display-string symbol context)
+ "Return the most appropriate representation of SYMBOL, resorting to extended
+symbol notation only when strictly necessary."
+ (let ((str (symbol->string symbol)))
+ (if (regexp-exec %special-non-extended-symbols str)
+ str ;no need for the #{...}# notation
+ (object->string symbol))))
+
(define* (pretty-print-with-comments port obj
#:key
(format-comment
@@ -561,7 +574,8 @@ FORMAT-VERTICAL-SPACE; a useful value of 'canonicalize-vertical-space'."
((? string? str)
(>= (+ (string-width str) 2 indent) max-width))
((? symbol? symbol)
- (>= (+ (string-width (symbol->string symbol)) indent)
+ (>= (+ (string-width (symbol->display-string symbol context))
+ indent)
max-width))
((? boolean?)
(>= (+ 2 indent) max-width))
@@ -647,7 +661,7 @@ FORMAT-VERTICAL-SPACE; a useful value of 'canonicalize-vertical-space'."
;; and following arguments are less indented.
(let* ((lead (special-form-lead head context))
(context (cons head context))
- (head (symbol->string head))
+ (head (symbol->display-string head (cdr context)))
(total (length arguments)))
(unless delimited? (display " " port))
(display "(" port)
@@ -727,6 +741,8 @@ FORMAT-VERTICAL-SPACE; a useful value of 'canonicalize-vertical-space'."
(printed-string obj context))
((integer? obj)
(integer->string obj context))
+ ((symbol? obj)
+ (symbol->display-string obj context))
(else
(object->string obj))))
(len (string-width str)))
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 0efa61b0d7..fedb33019d 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-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>
@@ -706,10 +706,12 @@ substitutes may be unavailable\n")))))
(string-drop option=value (+ 1 equal-sign))))))
(string-tokenize newline-separated %not-newline)))))
-(define (find-daemon-option option)
- "Return the value of build daemon option OPTION, or #f if it could not be
+(define find-daemon-option
+ (let ((options (delay (daemon-options))))
+ (lambda (option)
+ "Return the value of build daemon option OPTION, or #f if it could not be
found."
- (assoc-ref (daemon-options) option))
+ (assoc-ref (force options) option))))
(define %default-substitute-urls
(match (and=> (or (find-daemon-option "untrusted-substitute-urls") ;client