diff options
Diffstat (limited to 'guix')
-rw-r--r-- | guix/derivations.scm | 10 | ||||
-rw-r--r-- | guix/import/cran.scm | 6 | ||||
-rw-r--r-- | guix/read-print.scm | 22 | ||||
-rwxr-xr-x | guix/scripts/substitute.scm | 10 |
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 |