[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#35776: Test guix-pack-localstatedir.sh and guix-pack-relocatable.sh
From: |
Ting-Wei Lan |
Subject: |
bug#35776: Test guix-pack-localstatedir.sh and guix-pack-relocatable.sh crash when /gnu/store doesn't exist |
Date: |
Fri, 17 May 2019 21:47:17 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
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
Description: Text Data
- bug#35776: Test guix-pack-localstatedir.sh and guix-pack-relocatable.sh crash when /gnu/store doesn't exist,
Ting-Wei Lan <=