mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-20 14:47:20 +01:00
packages: 'package-field-location' preserves the original file name.
Fixes <https://bugs.gnu.org/39425>. Reported by Alex ter Weele <alex.ter.weele@gmail.com>. * guix/packages.scm (package-field-location): Remove 'with-fluids' for '%file-port-name-canonicalization'. Change the 'file' field of the resulting location to FILE.
This commit is contained in:
parent
fe4a37276b
commit
f2b24f01f4
1 changed files with 18 additions and 19 deletions
|
@ -355,25 +355,24 @@ (define (goto port line column)
|
|||
(catch 'system-error
|
||||
(lambda ()
|
||||
;; 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))))))
|
||||
(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)
|
||||
(let ((props (source-properties value)))
|
||||
(and props
|
||||
;; Preserve the original file name, which may be a
|
||||
;; relative file name.
|
||||
(let ((loc (source-properties->location props)))
|
||||
(set-field loc (location-file) file)))))
|
||||
(_
|
||||
#f))))
|
||||
(_
|
||||
#f)))))
|
||||
(lambda _
|
||||
#f)))
|
||||
(_ #f)))
|
||||
|
|
Loading…
Reference in a new issue