Package: fakechroot
Version: 2.17.2-1
Usertags: goto-cc

During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder
and pbuilder) the build failed with the following error. Please note that we
use our research compiler tool-chain (using tools from the cbmc package), which
permits extended reporting on type inconsistencies at link time.

[...]
libtool: link: gcc -shared  -fPIC -DPIC  .libs/__fxstatat.o 
.libs/__fxstatat64.o .libs/__getcwd_chk.o .libs/__getwd_chk.o .libs/__lxstat.o 
.libs/__lxstat64.o .libs/__open.o .libs/__open64.o .libs/__open64_2.o 
.libs/__open_2.o .libs/__openat64_2.o .libs/__openat_2.o .libs/__opendir2.o 
.libs/__readlink_chk.o .libs/__readlinkat_chk.o .libs/__realpath_chk.o 
.libs/__statfs.o .libs/__xmknod.o .libs/__xmknodat.o .libs/__xstat.o 
.libs/__xstat64.o .libs/_xftw.o .libs/_xftw64.o .libs/access.o .libs/acct.o 
.libs/bind.o .libs/bindtextdomain.o .libs/canonicalize_file_name.o 
.libs/chdir.o .libs/chmod.o .libs/chown.o .libs/chroot.o .libs/clearenv.o 
.libs/connect.o .libs/creat.o .libs/creat64.o .libs/dedotdot.o .libs/dlmopen.o 
.libs/dlopen.o .libs/eaccess.o .libs/euidaccess.o .libs/execl.o .libs/execle.o 
.libs/execlp.o .libs/execv.o .libs/execve.o .libs/execvp.o .libs/faccessat.o 
.libs/fchmodat.o .libs/fchownat.o .libs/fopen.o .libs/fopen64.o .libs/freopen.o 
.libs/freopen64.o .libs/fts.o .libs/ftw.o .libs/ftw64.o .libs/futimesat.o 
.libs/get_current_dir_name.o .libs/getcwd.o .libs/getcwd_real.o 
.libs/getpeername.o .libs/getsockname.o .libs/getwd.o .libs/getxattr.o 
.libs/glob.o .libs/glob64.o .libs/glob_pattern_p.o .libs/inotify_add_watch.o 
.libs/lchmod.o .libs/lchown.o .libs/lckpwdf.o .libs/lgetxattr.o 
.libs/libfakechroot.o .libs/link.o .libs/linkat.o .libs/listxattr.o 
.libs/llistxattr.o .libs/lremovexattr.o .libs/lsetxattr.o .libs/lstat.o 
.libs/lstat64.o .libs/lutimes.o .libs/mkdir.o .libs/mkdirat.o .libs/mkdtemp.o 
.libs/mkfifo.o .libs/mkfifoat.o .libs/mknod.o .libs/mknodat.o .libs/mkostemp.o 
.libs/mkostemp64.o .libs/mkostemps.o .libs/mkostemps64.o .libs/mkstemp.o 
.libs/mkstemp64.o .libs/mkstemps.o .libs/mkstemps64.o .libs/mktemp.o 
.libs/open.o .libs/open64.o .libs/openat.o .libs/openat64.o .libs/opendir.o 
.libs/pathconf.o .libs/popen.o .libs/rawmemchr.o .libs/readlink.o 
.libs/readlinkat.o .libs/realpath.o .libs/rel2abs.o .libs/rel2absat.o 
.libs/remove.o .libs/removexattr.o .libs/rename.o .libs/renameat.o 
.libs/revoke.o .libs/rmdir.o .libs/rpl_lstat.o .libs/scandir.o 
.libs/scandir64.o .libs/setenv.o .libs/setxattr.o .libs/stat.o .libs/stat64.o 
.libs/statfs.o .libs/statfs64.o .libs/statvfs.o .libs/statvfs64.o 
.libs/stpcpy.o .libs/strchrnul.o .libs/strlcpy.o .libs/symlink.o 
.libs/symlinkat.o .libs/system.o .libs/tempnam.o .libs/tmpnam.o 
.libs/truncate.o .libs/truncate64.o .libs/ulckpwdf.o .libs/unlink.o 
.libs/unlinkat.o .libs/utime.o .libs/utimensat.o .libs/utimes.o   -ldl  -O2 
-Wl,-z -Wl,relro   -Wl,-soname -Wl,libfakechroot.so -o .libs/libfakechroot.so

error: conflicting function declarations "__lxstat"
old definition in module __lxstat file __lxstat.c line 35
signed int (signed int ver, const char *filename, struct stat *buf)
new definition in module fts file /usr/include/x86_64-linux-gnu/sys/stat.h line 
403
signed int (signed int, const char *, struct stat *)

reason for conflict in types listed below (struct/struct):
composite type component counts differ (18/15)
struct stat {
  unsigned long int st_dev;
  unsigned long int st_ino;
  unsigned long int st_nlink;
  unsigned int st_mode;
  unsigned int st_uid;
  unsigned int st_gid;
  signed int __pad0;
  unsigned long int st_rdev;
  signed long int st_size;
  signed long int st_blksize;
  signed long int st_blocks;
  signed long int st_atime;
  unsigned long int st_atimensec;
  signed long int st_mtime;
  unsigned long int st_mtimensec;
  signed long int st_ctime;
  unsigned long int st_ctimensec;
  signed long int [3l] __unused;
}
struct stat {
  unsigned long int st_dev;
  unsigned long int st_ino;
  unsigned long int st_nlink;
  unsigned int st_mode;
  unsigned int st_uid;
  unsigned int st_gid;
  signed int __pad0;
  unsigned long int st_rdev;
  signed long int st_size;
  signed long int st_blksize;
  signed long int st_blocks;
  struct timespec st_atim;
  struct timespec st_mtim;
  struct timespec st_ctim;
  signed long int [3l] __unused;
}
Makefile:608: recipe for target 'libfakechroot.la' failed
make[3]: *** [libfakechroot.la] Error 64
make[3]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-fakechroot/fakechroot-2.17.2/src'
Makefile:420: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1

The above inconsistency of types is caused by a mix of macros being in place:

http://sources.debian.net/src/fakechroot/2.17.2-1/src/fts.c?hl=34#L34
http://sources.debian.net/src/fakechroot/2.17.2-1/src/__lxstat.c?hl=26#L26

Likely these should all be sorted out via the common config.h rather than
risking those inconsistencies.

Best,
Michael

Attachment: pgpOBczMmDs73.pgp
Description: PGP signature

Reply via email to