mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
packages: 'package-field-location' returns a relative file name.
* guix/packages.scm (package-field-location): Set %FILE-PORT-NAME-CANONICALIZATION. * tests/packages.scm ("package-field-location, relative file name"): New test.
This commit is contained in:
parent
ac5de156ae
commit
0b8749b7bd
2 changed files with 26 additions and 18 deletions
|
@ -221,24 +221,26 @@ (define (goto port line column)
|
|||
(($ <location> file line column)
|
||||
(catch 'system
|
||||
(lambda ()
|
||||
(call-with-input-file (search-path %load-path file)
|
||||
(lambda (port)
|
||||
(goto port line column)
|
||||
(match (read port)
|
||||
(('package inits ...)
|
||||
(let ((field (assoc field inits)))
|
||||
(match field
|
||||
((_ value)
|
||||
;; Put the `or' here, and not in the first argument of
|
||||
;; `and=>', to work around a compiler bug in 2.0.5.
|
||||
(or (and=> (source-properties value)
|
||||
source-properties->location)
|
||||
(and=> (source-properties field)
|
||||
source-properties->location)))
|
||||
(_
|
||||
#f))))
|
||||
(_
|
||||
#f)))))
|
||||
;; In general we want to keep relative file names for modules.
|
||||
(with-fluids ((%file-port-name-canonicalization 'relative))
|
||||
(call-with-input-file (search-path %load-path file)
|
||||
(lambda (port)
|
||||
(goto port line column)
|
||||
(match (read port)
|
||||
(('package inits ...)
|
||||
(let ((field (assoc field inits)))
|
||||
(match field
|
||||
((_ value)
|
||||
;; Put the `or' here, and not in the first argument of
|
||||
;; `and=>', to work around a compiler bug in 2.0.5.
|
||||
(or (and=> (source-properties value)
|
||||
source-properties->location)
|
||||
(and=> (source-properties field)
|
||||
source-properties->location)))
|
||||
(_
|
||||
#f))))
|
||||
(_
|
||||
#f))))))
|
||||
(lambda _
|
||||
#f)))
|
||||
(_ #f)))
|
||||
|
|
|
@ -81,6 +81,12 @@ (define read-at
|
|||
(list version `(version ,version))))
|
||||
(not (package-field-location %bootstrap-guile 'does-not-exist)))))
|
||||
|
||||
;; Make sure we don't change the file name to an absolute file name.
|
||||
(test-equal "package-field-location, relative file name"
|
||||
(location-file (package-location %bootstrap-guile))
|
||||
(with-fluids ((%file-port-name-canonicalization 'absolute))
|
||||
(location-file (package-field-location %bootstrap-guile 'version))))
|
||||
|
||||
(test-assert "package-transitive-inputs"
|
||||
(let* ((a (dummy-package "a"))
|
||||
(b (dummy-package "b"
|
||||
|
|
Loading…
Reference in a new issue