guix-daemon doesn't cleanly error-out on case-sensitive file systems.

  • Open
  • quality assurance status badge
Details
2 participants
  • Brian Cully
  • Maxime Devos
Owner
unassigned
Submitted by
Brian Cully
Severity
normal
B
B
Brian Cully wrote on 22 May 2022 22:09
nar-error on pull
(address . bug-guix@gnu.org)
87o7zpfhpq.fsf@ditto.jhoto.spork.org
I’m getting an error when trying to pull inside a docker
container:

Toggle snippet (69 lines)
guix# guix pull
substitute: updating substitutes from
'https://ci.guix.gnu.org'... 100.0%
0.0 MB will be downloaded
le-certs-1 5KiB
552KiB/s 00:00 [##################] 100.0%Updating channel 'guix'
from Git repository at
'https://git.savannah.gnu.org/git/guix.git'...
Authenticating channel 'guix', commits 9edb3f6 to f0e9048 (92 new
commits)...
Building from this channel:
guix https://git.savannah.gnu.org/git/guix.git f0e9048
substitute: updating substitutes from
'https://ci.guix.gnu.org'... 100.0%

[…]

lz4-1.9.3 156KiB
libxft-2.3.3 45KiB
perl-5.34.0 15.1MiB
guix substitute: error: mkdir: File exists
Backtrace:
18 (primitive-load
"/gnu/store/p411j4q9hjk639rwcy1p3s6v89c9bxhr-comput
In ice-9/eval.scm:
155:9 17 (_ _)
159:9 16 (_ #(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#<directory
(guile-u?> ?) ?) ?)
In ice-9/boot-9.scm:
152:2 15 (with-fluid* _ _ _)
152:2 14 (with-fluid* _ _ _)
In ./guix/store.scm:
2155:24 13 (run-with-store #<store-connection 256.99
7fe9ea44c140> #<procedure
1983:8 12 (_ #<store-connection 256.99 7fe9ea44c140>)
In ./guix/gexp.scm:
300:22 11 (_ #<store-connection 256.99 7fe9ea44c140>)
1181:2 10 (_ #<store-connection 256.99 7fe9df0440f0>)
1047:2 9 (_ #<store-connection 256.99 7fe9df0440f0>)
893:4 8 (_ #<store-connection 256.99 7fe9df0440f0>)
In ./guix/store.scm:
2040:12 7 (_ #<store-connection 256.99 7fe9df0440f0>)
1395:13 6 (map/accumulate-builds #<store-connection 256.99
7fe9df0440f0> #<pr
1391:5 5 (map/accumulate-builds #<store-connection 256.99
7fe9df0440f0> #<pr
1406:15 4 (_ #<store-connection 256.99 7fe9df0440f0>
("/gnu/store/8v8y8rc4rwd
1406:15 3 (loop #f)
711:11 2 (process-stderr #<store-connection 256.99
7fe9df0440f0> _)
In ./guix/serialization.scm:
102:11 1 (read-int #<input-output: file 10>)
80:6 0 (get-bytevector-n* #<input-output: file 10> 8)

./guix/serialization.scm:80:6: In procedure get-bytevector-n*:
ERROR:
1. &nar-error:
file: #f
port: #<input-output: file 10>
guix pull: error: You found a bug: the program
'/gnu/store/p411j4q9hjk639rwcy1p3
failed to compute the derivation for Guix (version:
"f0e9048e98f0789aa98de88984f
host version: "1.3.0-27.598f728"; pull-version: 1).
Please report the COMPLETE output above by email to
<bug-guix@gnu.org>.

The container was made from this manifest:

Toggle snippet (32 lines)
(use-modules (gnu))
(use-package-modules shells)

(operating-system
(host-name "guix")
(timezone "America/New_York")

(bootloader (bootloader-configuration
(bootloader grub-bootloader)
(targets '("/dev/vda"))))

(file-systems (list
(file-system
(mount-point "/")
(device "/dev/vda1")
(type "ext4"))))

(packages (append (map specification->package
'("zsh"))
%base-packages))

(users (cons* (user-account
(name "bjc")
(group "users")
(comment "brian")
(shell (file-append zsh "/bin/zsh"))
(home-directory "/home/bjc")
(supplementary-groups
'("wheel" "netdev" "audio" "video")))
%base-user-accounts)))

With this command:

Toggle snippet (3 lines)
$ guix system image -t docker minimal-sysconf.scm

-bjc
M
M
Maxime Devos wrote on 22 May 2022 23:09
e0276176973d8857fd654651485797f25e9409ed.camel@telenet.be
retitle 55583 ‘error: mkdir: File exits’ during substitution
thanks

Brian Cully via Bug reports for GNU Guix schreef op zo 22-05-2022 om
16:09 [-0400]:
Toggle quote (8 lines)
>  lz4-1.9.3  156KiB
>  libxft-2.3.3  45KiB
>  perl-5.34.0  15.1MiB
> guix substitute: error: mkdir: File exists
> Backtrace:
> [...]
> ("gnu/store/8v8y8rc4rwd

This looks a bit different from the usual ‘failed to compute the
derivation’ errors so I've renamed it.

The relevant store item name has been truncated, could you run
"echo /gnu/store/8v8y8rc4rwd*" in a shell and report the output?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYoqmhBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7o/lAQCEGmXXlZsa9M6HcA7IBEnRpgjl
UiFSuj4SjPpUORsx4AD9E53AIcUyHgfYLR3vvW5cILaeVWT9r30BDlRvgnWp4AQ=
=YiOh
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 22 May 2022 23:12
2c34f5357f63c7e9601eedb1cb584d10d0c9d088.camel@telenet.be
retitle 55583 "error: mkdir: File exists" during substitution
thanks

(Debbugs rejected the previous title because of ‘non-printable’
characters, apparently it's not non-ASCII capable?)
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYoqnKBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7jXDAQDxX9OGdW6tOErrGC1bOKmTsnpQ
XOC8r/D4jdfU0Jg+5gD/Q5hzrl+EtwyUs5ZvY2rUNc5sSWejwg+BZOapZz2Y+wA=
=qyKA
-----END PGP SIGNATURE-----


B
B
Brian Cully wrote on 23 May 2022 01:06
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 55583@debbugs.gnu.org)
87fsl1f9kz.fsf@ditto.jhoto.spork.org
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (3 lines)
> The relevant store item name has been truncated, could you run
> "echo /gnu/store/8v8y8rc4rwd*" in a shell and report the output?

/gnu/store/8v8y8rc4rwdwx5kbkfr1w1rl8g3dxsa3-guile-avahi-0.4.0-1.6d43caf.drv

In case it matters, here’s its contents:

Toggle snippet (3 lines)
Derive([("out","/gnu/store/8ggx0372360592j1b0q0hd722m19yrvg-guile-avahi-0.4.0-1.6d43caf","","")],[("/gnu/store/08s1nz9bpv6k6a56idv6l7r2zjqphszl-file-5.39.drv",["out"]),("/gnu/store/1d8bi67rdpjisk3qy06mzg71g0zxj7ay-libgc-8.0.4.drv",["out"]),("/gnu/store/1x2g7ysm16xqnrpbkqdc4hhni1r42dgg-patch-2.7.6.drv",["out"]),("/gnu/store/3fy0f7gy85ddy6rpa4mmhjygns8qzk03-findutils-4.8.0.drv",["out"]),("/gnu/store/3xh80313ik5h410d9qn00w84ykck0ndh-ld-wrapper-0.drv",["out"]),("/gnu/store/45wsr6x878i3fyr12lf9v496cl9x5jh6-gzip-1.10.drv",["out"]),("/gnu/store/7fm542dl9f73pvw2n8y46mns9jqb0mai-glibc-2.33.drv",["out","static"]),("/gnu/store/812jrdyy4dvhy9j52bkjhj034ryysgnz-texinfo-6.7.drv",["out"]),("/gnu/store/8xf8nnfvvy13vhkygxwg49fwf8mqbk0d-libunistring-0.9.10.drv",["out"]),("/gnu/store/9iqh8mcqcssijac0i7hkbfp83fxcaxnk-pkg-config-0.29.2.drv",["out"]),("/gnu/store/ajk17vrxljb7x6h92pd590865wa4vj9p-gawk-5.1.0.drv",["out"]),("/gnu/store/bvv5bx3pj6s5b6ih10r7l9d18w8rzmkq-guile-3.0.7.drv",["out"]),("/gnu/store/csmcig21pcykhn1yg3ga6863s6b9k38c-gcc-10.3.0.drv",["out"]),("/gnu/store/fr7c3sylihc946096irz7s70m3hwcjav-xz-5.2.5.drv",["out"]),("/gnu/store/g73za4qfn4fffdqnqmywsh2ychjb92n2-linux-libre-headers-5.10.35.drv",["out"]),("/gnu/store/gkjk02msi4nwxh384md5c0w1db3rg71m-binutils-2.37.drv",["out"]),("/gnu/store/gmvmryrkvih05790hzzb0njj9q5xq4p5-glibc-utf8-locales-2.33.drv",["out"]),("/gnu/store/hxk4ckdlacwfwmnisjiimkc1vkglka32-autoconf-2.69.drv",["out"]),("/gnu/store/k5889v7ms3f5x1rjr3php71k4743fn19-bash-minimal-5.1.8.drv",["out"]),("/gnu/store/k77fsxpnpj5y16mnsxw7719lzgp4ks58-libtool-2.4.6.drv",["out"]),("/gnu/store/ldh1m27kvrwqgx5rmrc8j9xg3xmifx5n-avahi-0.8.drv",["out"]),("/gnu/store/mqyv8wj38m51wa9g3cb0p0qqsckx836j-grep-3.6.drv",["out"]),("/gnu/store/nd9ypg18kkh6bryfz458zym8xd4gaair-diffutils-3.8.drv",["out"]),("/gnu/store/ni7fpz4paf824s2nrhfcd5iqp0kbj4h1-m4-1.4.18.drv",["out"]),("/gnu/store/prwhkd8j57v07c0qlxxi708ccsh65vxp-bzip2-1.0.8.drv",["out"]),("/gnu/store/pv30dwfrly1h54dpdpck6wizma3x739x-guile-avahi-0.4.0-1.6d43caf-checkout.drv",["out"]),("/gnu/store/qpg6frs91vaajd5yjk9m46dlgn03sfi9-tar-1.34.drv",["out"]),("/gnu/store/rn11b92k2g90dhiwzgmazb5aqd426wg3-automake-1.16.3.drv",["out"]),("/gnu/store/vvkpaxrcic1dzmgpqb861jd8nix1n78j-module-import-compiled.drv",["out"]),("/gnu/store/xfm8z55ah263g4yvygqy7iph7vv5703v-guile-3.0.7.drv",["out"]),("/gnu/store/xk22lpxqh73rjaiaibsldmbrv6pxmcqm-make-4.3.drv",["out"]),("/gnu/store/xxyl6g6qclbwkfxinibrxd9ba48hgjff-coreutils-8.32.drv",["out"]),("/gnu/store/yb9zbq7d45cdx03z8q1j2w1ah2xqzd9p-sed-4.8.drv",["out"])],["/gnu/store/71jfcpb626wb4kpj4m5lsr68xm9ih50d-guile-avahi-0.4.0-1.6d43caf-builder","/gnu/store/dwvpffvh0cvm1v7j5bgmdh7j9mld1cx9-module-import"],"x86_64-linux","/gnu/store/1kws5vkl0glvpxg7arabsv6q9vazp0hx-guile-3.0.7/bin/guile",["--no-auto-compile","-L","/gnu/store/dwvpffvh0cvm1v7j5bgmdh7j9mld1cx9-module-import","-C","/gnu/store/0q6z17h9nfybhjgwgwwj81r3q9ik554x-module-import-compiled","/gnu/store/71jfcpb626wb4kpj4m5lsr68xm9ih50d-guile-avahi-0.4.0-1.6d43caf-builder"],[("out","/gnu/store/8ggx0372360592j1b0q0hd722m19yrvg-guile-avahi-0.4.0-1.6d43caf")])

-bjc
B
B
Brian Cully wrote on 23 May 2022 15:00
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 55583@debbugs.gnu.org)
87bkvoflmr.fsf@ditto.jhoto.spork.org
This bug was caused by having my Guix filesystem mounted on a
case-insensitive file system. Re-running pull within the Docker
container mounted on a case-sensitive file system works correctly.

This bug can be closed. Sorry for the noise.

-bjc
M
M
Maxime Devos wrote on 23 May 2022 16:25
guix-daemon doesn't cleanly error-out on case-insensitive file systems.
(name . Brian Cully)(address . bjc@spork.org)(address . 55583@debbugs.gnu.org)
daac9fc191f1c76351c1be1e222f5a1ec5ec66e3.camel@telenet.be
retitle 55583 guix-daemon doesn't cleanly error-out on case-sensitive file systems.
thanks

Brian Cully schreef op ma 23-05-2022 om 09:00 [-0400]:
This bug was caused by having my Guix filesystem mounted on a
case-insensitive file system. Re-running pull within the Docker
container mounted on a case-sensitive file system works correctly.

This bug can be closed. Sorry for the noise.

-bjc

Not sure how a case-insensitivity would cause this, but I think we
can keep this open -- wouldn't it be better if "guix-daemon" just says
‘nope, case-sensitivity is required (*), not continuing)?

(*) For reproducible builds, and apparently for substitution.

Greetings,
Maxime
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYouZbhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7oIyAP99/s1DRKH03Dj9+xagUR0U5HZ/
V1TRJe3cDAv035W9PgEA++GdnzLgUaYhHAmc019sLtT/zL/Q5o/GJv0NPGw1eAE=
=ZwGc
-----END PGP SIGNATURE-----


B
B
Brian Cully wrote on 23 May 2022 18:54
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 55583@debbugs.gnu.org)
8735h0falg.fsf@ditto.jhoto.spork.org
Maxime Devos <maximedevos@telenet.be> writes:
Toggle quote (8 lines)
> Not sure how a case-insensitivity would cause this, but I think
> we
> can keep this open -- wouldn't it be better if "guix-daemon"
> just says
> ‘nope, case-sensitivity is required (*), not continuing)?
>
> (*) For reproducible builds, and apparently for substitution.

The issue is wide-spread: there are a number of packages that will
install files who’s names only vary by case. It’s also
per-package; most work fine, but some will just break
randomly. Some don’t seem to break until you try to use them, and
then they yell and complain. This is something I run into often
enough that it’s familiar to me and know how to fix, but not often
enough to prevent my surprise when it happens.

Guix can’t fix it, unfortunately. Maybe checking case sensitivity
would be a worthwhile thing to do, just to warn people, but: I
don’t know of a good way to check this in a file-system
independent manner, and I honestly doubt it’s something that
actually happens that often. I’ve been trucking a ZFS storage pool
around since I first installed it on macOS about a decade ago, and
since macOS is case-insensitive, that’s how it was installed (case
sensitivity causes its own issues there). Short of running Guix on
Windows or macOS, I don’t see this being a problem.

-bjc
M
M
Maxime Devos wrote on 23 May 2022 19:19
(name . Brian Cully)(address . bjc@spork.org)(address . 55583@debbugs.gnu.org)
07d3aadd94ef35901fb4017bab17ddf7b437453a.camel@telenet.be
Brian Cully schreef op ma 23-05-2022 om 12:54 [-0400]:
Toggle quote (3 lines)
> I don’t know of a good way to check this in a file-system
> independent manner

Create a file /gnu/store/case-sensitivity-test (if it doesn't already
exist). Open /gnu/store/CASE-SENSITIVITY-TEST. If it succeeds, you
have a case-sensitive file system.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYovCCxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sLEAP9mchW9FWJJcCCoimStCd0IQ3u4
fKXg+TQ6RnbR0iiycgEAqfXq7gvKpGioekLJCw0sZH38BKKzVMTEdGlHQn9Tiw0=
=HmbL
-----END PGP SIGNATURE-----


B
B
Brian Cully wrote on 25 May 2022 00:54
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 55583@debbugs.gnu.org)
87ilpu5ych.fsf@ditto.jhoto.spork.org
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (6 lines)
> Create a file /gnu/store/case-sensitivity-test (if it doesn't
> already
> exist). Open /gnu/store/CASE-SENSITIVITY-TEST. If it succeeds,
> you
> have a case-sensitive file system.

Hah. I was so wrapped up in thinking about kernel or POSIX APIs I
missed the obvious thing. ;)

/If/ we go this route, though, I’d suggest a small change to
handle so-called “mixed-case” file-systems, where you can have two
files differentiated by case, but if there’s no ambiguity, then
one may address a file using any case:

- echo lower-case > case-sensitivity-test
- echo UPPER-CASE > CASE-SENSITIVITY-TEST
- test x$(cat CASE-SENSITIVITY-TEST) = xUPPER-CASE

-bjc
M
M
Maxime Devos wrote on 13 Jun 2022 09:46
(address . control@debbugs.gnu.org)(address . 55583@debbugs.gnu.org)
48abd52c3bd143f366de38c71f34b279ff701c22.camel@telenet.be
retitle 55583 guix-daemon doesn't cleanly error-out on case-sensitive file systems.
thanks

(previous command doesn't seem to have worked)
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYqbrXBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hUsAQDP88al/dayK8j0RvIxKuvS/BJV
ueFB9HFlu8VPore5iwD9GI8CeIzvMQBaNY4LQkenHtS22PXZgxrwKx4uHLCX/Qw=
=vHqX
-----END PGP SIGNATURE-----


?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 55583@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 55583
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch