Re: Investigation of the failing build of gnat-4.9 using fakeroot-hurd
On Tue, 2015-02-03 at 12:10 +0100, Justus Winter wrote:
> Hello :)
>
> Quoting Svante Signell (2015-02-02 12:26:06)
> > Confusing thing is: Printouts in
> > libnetfs/dir-lookup.c:netfs_S_dir_lookup() are not triggered, but
> > libdiskfs/dir-lookup.c:diskfs_S_dir_lookup are.
> > libnetfs is built into fakeroot itself, but not libdiskfs, which is
> > built into ext2fs.static. libdiskfs functions does not seem to be faked.
>
> That's not so surprising. fakeroot does not fake all functions, any
> message it does not understand is passed through as-is. Also, in the
> case of dir_lookup, fakeroot does some of the dir_lookup-related stuff
> (like retries) on behalf of the client. That could explain why you
> see messages from libdiskfs and not from libnetfs. I don't see why
> that could cause problems though.
>
> In your particular case, did you check whether the error is right,
> i.e. it tried to do something to the file on the ext2fs that the user
> is not allowed to do ?
Well, the printouts from libdiskfs shows a uid and gid of 1000, i.e they
are not faked. Nevertheless, libdiskfs logs show:
Block 1:
libdiskfs/diskfs_S_dir_lookup: check perms on existing node
libdiskfs/diskfs_S_dir_lookup: np->dn_stat.st_uid=1000,
np->dn_stat.st_gid=1000
libdiskfs/diskfs_S-dir_lookup: np->dn_stat.st_mode=100444
libdiskfs/diskfs_S-dir_lookup: idvec_contain gotit (op)=0
Block 2:
libdiskfs/diskfs_S_dir_lookup: check perms on existing node
libdiskfs/diskfs_S_dir_lookup: np->dn_stat.st_uid=1000,
np->dn_stat.st_gid=1000
libdiskfs/diskfs_S-dir_lookup: np->dn_stat.st_mode=100444
libdiskfs/diskfs_S-dir_lookup: idvec_contain gotit (op)=0
libdiskfs/diskfs_S_dir_lookup: flags & O_WRITE
libdiskfs/diskfs_S_dir_lookup: flags & O_READ=1, flags & O_WRITE=2,
flags & O_EXEC=0
libdiskfs/diskfs_S-dir_lookup: np->dn_stat.st_mode=100444
libdiskfs/diskfs_S_dir_lookup: error = Permission denied
(and so on)
when issuing /usr/bin/fakeroot-hurd sh -c "debian/rules binary"
(fails): Block 1 + Block 2
but not with /usr/bin/fakeroot-hurd sh -c "make"
(succeeds): Block 1
cat Makefile
default:
dh_md5sums -plibgnatvsn4.9-dev
and dh_md5sums is python code issuing:
cd debian/libgnatvsn4.9-dev >/dev/null; find . -type f ! -regex
'./DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum >
DEBIAN/md5sums
As Block 2 above shows "dir_lookup flags & O_WRITE !=0" and the test
if (!error && (flags & O_WRITE)) causes the EACCESS error.
So the flags are not correctly set??
The files are moved from debian/tmp/usr/lib/ada/adalib/gnatvsn/ to
debian/libgnatvsn4.9-dev/usr/lib/ada/adalib/gnatvsn with a previous
dh_movefiles command. All files *.ali have file mode 10444 e.g.
-r--r--r-- 1 srs srs 2267 Dec 18 00:38 alloc.ali
There are other permission denied messages later on in the build, I've
just recreated a subset of the package build process.
Reply to: