[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: