GNU bug report logs -
#77570
Build failures on core packages following daemon changes
Previous Next
Full log
View this message in rfc822 format
Hello Ludo',
On 07/04/2025 2:22 pm, Ludovic Courtès wrote:
> Hello Ada,
>
> (Cc: Reepca, who followed these developments.)
>
> The build discrepancies you report are serious enough that we need to
> find a strategy other than re-mounting the root directory MS_RDONLY so
> we get EPERM and not EROFS on /.
>
> I think we can go with the solution Reepca outlined in
> <https://issues.guix.gnu.org/75810#14-lineno78>: expose
> chrootRootDir/top inside the build environment (with permissions 0555
> but still user-owned). I’ll work on it.
Thank you for looking into this!
>
>
> Below are details about the failures you reported, Ada, reproduced with
> commit 6af680670bf9055b90e6f8b63c4c2ab7b08e7c56 and a recent guix-daemon
> where the build environment root is remounted read-only.
>
> For scons, I get:
>
> --8<---------------cut here---------------start------------->8---
> ERROR: test_PathIsDirCreate (__main__.PathVariableTestCase)
> Test the PathIsDirCreate validator
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/tmp/guix-build-scons-4.4.0.drv-0/source/SCons/Variables/PathVariableTests.py", line 129, in test_PathIsDirCreate
> o.validator('X', f, {})
> File "/tmp/guix-build-scons-4.4.0.drv-0/source/SCons/Variables/PathVariable.py", line 105, in PathIsDirCreate
> os.makedirs(val, exist_ok=True)
> File "/gnu/store/nla5820scsv7ibvr3kwpgkm9wr4prf0q-python-3.10.7/lib/python3.10/os.py", line 215, in makedirs
> makedirs(head, exist_ok=exist_ok)
> File "/gnu/store/nla5820scsv7ibvr3kwpgkm9wr4prf0q-python-3.10.7/lib/python3.10/os.py", line 225, in makedirs
> mkdir(name, mode)
> OSError: [Errno 30] Read-only file system: '/yyy'
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "/tmp/guix-build-scons-4.4.0.drv-0/source/SCons/Variables/PathVariableTests.py", line 133, in test_PathIsDirCreate
> raise Exception("did not catch expected UserError") from e
> Exception: did not catch expected UserError
> […]
> build of /gnu/store/jwsp6vz0hxriiylfl53wg2m98npwv8iy-scons-4.4.0.drv failed
> --8<---------------cut here---------------end--------------->8---
>
> And indeed, the code in question expects EEXIST or EPERM, but not EROFS:
>
> --8<---------------cut here---------------start------------->8---
> def PathIsDirCreate(key, val, env) -> None:
> """Validator to check if Path is a directory,
> creating it if it does not exist."""
> try:
> os.makedirs(val, exist_ok=True)
> except FileExistsError:
> m = 'Path for option %s is a file, not a directory: %s'
> raise SCons.Errors.UserError(m % (key, val))
> except PermissionError:
> m = 'Path for option %s could not be created: %s'
> raise SCons.Errors.UserError(m % (key, val))
> --8<---------------cut here---------------end--------------->8---
>
> For Ruby, I get:
>
> --8<---------------cut here---------------start------------->8---
> make[1]: Leaving directory '/tmp/guix-build-ruby-3.3.3.drv-0/ruby-3.3.3'
> Generating RDoc documentation
> uh-oh! RDoc had a problem:
> Read-only file system @ dir_s_mkdir - /homeless-shelter
>
> run with --debug for full backtrace
> make: *** [uncommon.mk:665: rdoc] Error 1
> error: in phase 'build': uncaught exception:
> %exception #<&invoke-error program: "make" arguments: ("-j" "4") exit-status: 2 term-signal: #f stop-signal: #f>
> phase `build' failed after 232.1 seconds
> command "make" "-j" "4" failed with status 2
> build process 6 exited with status 256
> note: keeping build directory `/tmp/guix-build-ruby-3.3.3.drv-0'
> builder for `/gnu/store/n7zsjg0gm4kz74f2hp6k22iw42zwn5kn-ruby-3.3.3.drv' failed with exit code 1
> --8<---------------cut here---------------end--------------->8---
>
> Not sure how it would deal with that unwritable $HOME previously.
>
> However, /gnu/store/jyrmg3qkii4mb51ca1f3j9mv6knicr8a-go-1.23.5.drv
> builds fine for me (no test failures).
It appears I was building the full bootstrap chain for go, and it is the
bootstrap go that is failing. Running this command will produce the
failing build: `guix build --no-substitutes --no-grafts
go <at> 1.4-bootstrap-20171003`.
>
> Ludo’.
--
Warmly,
Ada
This bug report was last modified 37 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.