GNU bug report logs -
#77570
Build failures on core packages following daemon changes
Previous Next
Full log
View this message in rfc822 format
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.
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).
Ludo’.
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.