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

Re: Bug#610749: fakeroot fails ownership with kfreebsd systems



reassign 610749 eglibc
severity 610749 serious
thanks

The problems is triggered by the new version of tar that is present only
in sid, squeeze is not affected. However given the packages are built in
a sid chroot, we might be in trouble, especially given the package has
been uploaded almost 50 days ago...


Ok, I have finally understood the problem:
1) in eglibc we implement at* functions, but mark them as stub as the
  emulation for FreeBSD 7.x kernels is not perfect. FreeBSD 8.x have
  this syscalls natively, and thus don't need emulation.
2) newer versions of tar start to use the fstatat syscall.
3) fakeroot doesn't emulate this syscall because it is marked as stub
  in eglibc.

Even if testing is not affected, it's a serious problem as packages are
in unstable before moving to testing. This is way we have roughly 300
broken binary packages in the archive.

Therefore I think it should be fixed as soon as possible. IMHO the best
way to fix that is to remove the stub for at* functions as we don't want
to support 7.x kernel anymore.

This fix is long-term-fix. But I do not agree to do it now, for squeeze glibc. The other packages behaviour/code_path might be altered by this change significantly.

Better would be to override *at stubs only for fakeroot now.

Something like add in fakeroot's configure/configure.ac after
AC_CHECK_FUNCS(fchmodat fchownat fstatat mkdirat mknodat openat renameat unlinkat)

-------------
case $target_os in
        kfreebsd*)
        for ac_func in fchmodat fchownat fstatat mkdirat mknodat openat renameat unlinkat
        do
          cat >>confdefs.h << _ACEOF
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
        done
        ;;
esac
-------------


The change in eglibc should be synced with 2.12 (2.13) upload.

Petr


Reply to: