Subject: multiple packages fail check phases due to read-only file system root

From: keinflue <[email-masked]>
Date: Sat, 05 Apr 2025 09:41:37 +0000

Hi everyone,

probably since commit 40f69b586a several packages including shepherd, go 
(bootstrap), ruby and scons fail their check phases.

They all fail with EROFS "read-only file system" errors. The pattern 
seems to be that these packages attempt to remove non-existent files 
under /, e.g. /does-not-exist for the pid-file.sh test case in shepherd. 
They expect the unlink/unlinkat syscall to fail with ENOENT, but the 
linux kernel produces EROFS if the file system is read-only, even if the 
file doesn't exist, and glibc does not modify this behavior for the C 
library functions.

On one hand this is probably not POSIX-conforming behavior of 
linux/glibc and there was a patch rectifying this in version 3.2 (commit 
e6bc45d65d) of the kernel, but that regressed with 3.6 (commit 
c30dabfe5d) from what I can tell.

On the the other hand, I do not think that attempting to delete 
arbitrary files on the file system root with the assumption that it will 
fail in specific ways is a good idea either and that the files do not 
actually exist is not a good idea either.

Not sure what the correct approach to fixing this would be.