Hi, Building gnat-4.9 fails currently with EACCES errors when building some of the .debs, specifically libgnatvsn4.9-dev, libgnatprj4.9-dev. The failing commands are dh_movefiles and dh_md5sums, and the failures are happening due to the files being processed have mode r--r--r--. Common is also that the processing is via pipes, see below for dh_md5sums. (the failures are also somewhat random, sometimes the build of the .deb succeeds, sometimes not. A race condition/something not properly initialized?)
Invoking .../fakeroot-hurd sh -c 'command' results in different code paths. How to track the code paths properly? It seems to be very non-deterministic. Maybe not, but I have problems to find out which functions are expected to be called. Here command = 1) direct, 2) using a shell script, 3) with make issuing the script, 4) using make issuing dh_md5sums command, and 5) finally debian/rules binary. 1) command =(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) 2) command = ./test.sh shell script: test.sh containing the above 3,4) command = make cat Makefile default: ./test.sh or dh_md5sums -plibgnatvsn4.9-dev 5) command = debian/rules binary The only invocation that fails is the last one, and that calls dir-lookup.c and fails there on the write access test since the files have access 444: r--r--r--. It should not fail since we are running under fakeroot-hurd. The fakeroot-hurd script is using the built binaries with printout code added, via /usr/bin/env LD_LIBRARY_PATH=... see below: exec /my_chroot/DEBs/test_fakeroot-hurd/settrans --chroot \ /usr/bin/env LD_LIBRARY_PATH=/my_chroot/DEBs/test_fakeroot-hurd/libs \ /my_chroot/DEBs/test_fakeroot-hurd/fakeauth \ /bin/sh -c 'cd "$1" || exit ; shift ; exec "$@"' \ "$1" "$PWD" "$@" \ -- / /usr/bin/env LD_LIBRARY_PATH=/my_chroot/DEBs/test_fakeroot-hurd/libs\ /my_chroot/DEBs/test_fakeroot-hurd/fakeroot The built ext2fs.static is used to mount a directory located in a file: settrans -ca ./test_ext2fs ./ext2fs.static test.fs printouts are in different parts of the code, especially in trans/fakeroot.c, libdiskfs/{file-set-trans.c,dir-lookup.c} and libnetfs/{file-set-translator.c,file-chmod.c,file-chown.c} for the test cases above, printouts when running are from: 1) trans/fakeroot.c:set_faked_attribute 2) trans/fakeroot.c:set_faked_attribute 3) trans/fakeroot.c:set_faked_attribute 4) trans/fakeroot.c:set_faked_attribute, libdiskfs/file-set-trans.c:diskfs_S_file_set_translator, libnetfs/{file-chown.c:netfs_S_file_chown,file-chmod.c:netfs_S_file_chmod} 5) Case 4 above and libnetfs/file-set-translator.c:netfs_S_file_set_translator libnetfs/dir-mkfile.c:netfs_S_dir_mkfile libnetfs/dir-link.c:netfs_S_dir_link libdiskfs/dir-lookup:diskfs_S_dir_lookup. Here we get the failures with EACCES: Permission denied