GNU bug report logs -
#35776
Test guix-pack-localstatedir.sh and guix-pack-relocatable.sh crash when /gnu/store doesn't exist
Previous Next
Reported by: Ting-Wei Lan <lantw44 <at> gmail.com>
Date: Fri, 17 May 2019 13:48:01 UTC
Severity: normal
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 35776 in the body.
You can then email your comments to 35776 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-guix <at> gnu.org
:
bug#35776
; Package
guix
.
(Fri, 17 May 2019 13:48:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Ting-Wei Lan <lantw44 <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-guix <at> gnu.org
.
(Fri, 17 May 2019 13:48:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
When running these two tests in a clean environment without having Guix
installed first, they crash when trying to obtain the value of
localstatedir.
+ guix pack --version
guix pack (GNU Guix) 1.0.0.711-f52e8-dirty
Copyright (C) 2019 the Guix authors
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
++ guile2.2 -c '(use-modules (guix config))(display %storedir)'
+ NIX_STORE_DIR=/gnu/store
++ guile2.2 -c '(use-modules (guix config))(display %localstatedir)'
Backtrace:
In ice-9/eval.scm:
619:8 19 (_ #(#(#<directory (guile-user) 564bef205140>)))
In ice-9/command-line.scm:
181:18 18 (_ #<input: string 564bef21ca80>)
In unknown file:
17 (eval (use-modules (guix config)) #<directory (guile-us…>)
In ice-9/eval.scm:
721:20 16 (primitive-eval (use-modules (guix config)))
In ice-9/psyntax.scm:
1235:36 15 (expand-top-sequence ((use-modules (guix config))) _ _ # …)
1182:24 14 (parse _ (("placeholder" placeholder)) ((top) #(# # …)) …)
285:10 13 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) …)
In ice-9/boot-9.scm:
3377:20 12 (process-use-modules _)
222:17 11 (map1 (((guix config))))
3378:31 10 (_ ((guix config)))
2800:17 9 (resolve-interface (guix config) #:select _ #:hide _ # _ …)
In ice-9/threads.scm:
390:8 8 (_ _)
In ice-9/boot-9.scm:
2726:13 7 (_)
In ice-9/threads.scm:
390:8 6 (_ _)
In ice-9/boot-9.scm:
2994:20 5 (_)
2312:4 4 (save-module-excursion #<procedure 564bef1bf1b0 at ice-…>)
3014:26 3 (_)
In unknown file:
2 (primitive-load-path "guix/config" #<procedure 564bef15…>)
In guix/config.scm:
71:6 1 (_)
In unknown file:
0 (canonicalize-path "/gnu/store")
ERROR: In procedure canonicalize-path:
In procedure canonicalize-path: No such file or directory
+ localstatedir=
FAIL tests/guix-pack-localstatedir.sh (exit status: 1)
It seems to me that the reason is that NIX_STORE_DIR is exported by
test-env script, so the line
NIX_STORE_DIR="`guile -c '(use-modules (guix config))(display %storedir)'`"
not only changes the value of shell variable NIX_STORE_DIR but also
exports it to the environment.
Therefore, the next line
localstatedir="`guile -c '(use-modules (guix config))(display
%localstatedir)'`"
crashes at guix/config.scm when running the code
(define %store-directory
(or (and=> (getenv "NIX_STORE_DIR") canonicalize-path)
%storedir))
because NIX_STORE_DIR points to a non-existent path /gnu/store.
I attached a patch to avoid the crash by delaying the modification
to NIX_STORE_DIR, but I am not sure if it is correct to do so.
[guix-1.0.0-tests-guix-pack-localstatedir.patch (text/x-patch, attachment)]
Reply sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
You have taken responsibility.
(Sat, 18 May 2019 10:30:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Ting-Wei Lan <lantw44 <at> gmail.com>
:
bug acknowledged by developer.
(Sat, 18 May 2019 10:30:03 GMT)
Full text and
rfc822 format available.
Message #10 received at 35776-done <at> debbugs.gnu.org (full text, mbox):
Ting-Wei Lan <lantw44 <at> gmail.com> skribis:
> It seems to me that the reason is that NIX_STORE_DIR is exported by
> test-env script, so the line
> NIX_STORE_DIR="`guile -c '(use-modules (guix config))(display %storedir)'`"
> not only changes the value of shell variable NIX_STORE_DIR but also
> exports it to the environment.
> Therefore, the next line
> localstatedir="`guile -c '(use-modules (guix config))(display
> %localstatedir)'`"
> crashes at guix/config.scm when running the code
> (define %store-directory
> (or (and=> (getenv "NIX_STORE_DIR") canonicalize-path)
> %storedir))
> because NIX_STORE_DIR points to a non-existent path /gnu/store.
> I attached a patch to avoid the crash by delaying the modification
> to NIX_STORE_DIR, but I am not sure if it is correct to do so.
Indeed. Pushed as baab87ac49e3f0f873e17eb16db9781189b1f2d1, thanks!
Ludo’.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sat, 15 Jun 2019 11:24:05 GMT)
Full text and
rfc822 format available.
This bug report was last modified 5 years and 302 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.