mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
packages: 'package-field-location' handles 'search-path' returning #f.
Fixes <https://bugs.gnu.org/46390>.
Reported by zimoun <zimon.toutoune@gmail.com>.
This is similar to the fix in d10474c38d
.
* guix/packages.scm (package-field-location): Handle FILE not in %LOAD-PATH.
* tests/guix-lint.sh: Add test.
This commit is contained in:
parent
03235402df
commit
9a38bed2cf
2 changed files with 33 additions and 23 deletions
|
@ -475,29 +475,34 @@ (define (goto port line column)
|
||||||
|
|
||||||
(match (package-location package)
|
(match (package-location package)
|
||||||
(($ <location> file line column)
|
(($ <location> file line column)
|
||||||
(catch 'system-error
|
(match (search-path %load-path file)
|
||||||
(lambda ()
|
((? string? file)
|
||||||
;; In general we want to keep relative file names for modules.
|
(catch 'system-error
|
||||||
(call-with-input-file (search-path %load-path file)
|
(lambda ()
|
||||||
(lambda (port)
|
;; In general we want to keep relative file names for modules.
|
||||||
(goto port line column)
|
(call-with-input-file file
|
||||||
(match (read port)
|
(lambda (port)
|
||||||
(('package inits ...)
|
(goto port line column)
|
||||||
(let ((field (assoc field inits)))
|
(match (read port)
|
||||||
(match field
|
(('package inits ...)
|
||||||
((_ value)
|
(let ((field (assoc field inits)))
|
||||||
(let ((loc (and=> (source-properties value)
|
(match field
|
||||||
source-properties->location)))
|
((_ value)
|
||||||
(and loc
|
(let ((loc (and=> (source-properties value)
|
||||||
;; Preserve the original file name, which may be a
|
source-properties->location)))
|
||||||
;; relative file name.
|
(and loc
|
||||||
(set-field loc (location-file) file))))
|
;; Preserve the original file name, which may be a
|
||||||
(_
|
;; relative file name.
|
||||||
#f))))
|
(set-field loc (location-file) file))))
|
||||||
(_
|
(_
|
||||||
#f)))))
|
#f))))
|
||||||
(lambda _
|
(_
|
||||||
#f)))
|
#f)))))
|
||||||
|
(lambda _
|
||||||
|
#f)))
|
||||||
|
(#f
|
||||||
|
;; FILE could not be found in %LOAD-PATH.
|
||||||
|
#f)))
|
||||||
(_ #f)))
|
(_ #f)))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -90,3 +90,8 @@ guix lint -L $module_dir -c inputs-should-be-native dummy dummy@42 dummy
|
||||||
# that it does find it anyway. See <https://bugs.gnu.org/42543>.
|
# that it does find it anyway. See <https://bugs.gnu.org/42543>.
|
||||||
(cd "$module_dir"/.. ; guix lint -c formatting -L "$(basename "$module_dir")" dummy@42) 2>&1 > "$module_dir/out"
|
(cd "$module_dir"/.. ; guix lint -c formatting -L "$(basename "$module_dir")" dummy@42) 2>&1 > "$module_dir/out"
|
||||||
test -z "$(cat "$module_dir/out")"
|
test -z "$(cat "$module_dir/out")"
|
||||||
|
|
||||||
|
# Likewise, when there's a warning, 'package-field-location' used to crash
|
||||||
|
# because it can't find "t-xyz/foo.scm". See <https://bugs.gnu.org/46390>.
|
||||||
|
(cd "$module_dir"/.. ; guix lint -c synopsis -L "$(basename "$module_dir")" dummy@42) 2>&1 > "$module_dir/out"
|
||||||
|
grep_warning "`cat "$module_dir/out"`"
|
||||||
|
|
Loading…
Reference in a new issue