Package: dbus-python Version: 1.2.0-2 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/abstract.o .libs/bus.o
.libs/bytes.o .libs/conn.o .libs/conn-methods.o .libs/containers.o
.libs/debug.o .libs/exceptions.o .libs/float.o .libs/generic.o .libs/int.o
.libs/unixfd.o .libs/libdbusconn.o .libs/mainloop.o .libs/message-append.o
.libs/message.o .libs/message-get-args.o .libs/module.o .libs/pending-call.o
.libs/server.o .libs/signature.o .libs/string.o .libs/validation.o -ldbus-1
-O2 -Wl,-z -Wl,relro -Wl,-soname -Wl,_dbus_bindings.so -Wl,-version-script
-Wl,.libs/_dbus_bindings.ver -o .libs/_dbus_bindings.so
error: conflicting function declarations "stat"
old definition in module abstract file /usr/include/x86_64-linux-gnu/sys/stat.h
line 453
signed int (const char *__path, struct stat *__statbuf)
new definition in module message-append file
/usr/include/x86_64-linux-gnu/sys/stat.h line 453
signed int (const char *__path, struct stat *__statbuf)
reason for conflict at __statbuf in types listed below (struct/struct):
composite type component counts differ (15/18)
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;
}
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;
}
Makefile:466: recipe for target '_dbus_bindings.la' failed
make[4]: *** [_dbus_bindings.la] Error 64
make[4]: Leaving directory
'/srv/jenkins-slave/workspace/sid-goto-cc-dbus-python/dbus-python-1.2.0/build-2.7-dbg/_dbus_bindings'
Makefile:648: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
Such a type conflict is usually caused by an inconsistent use of _GNU_SOURCE;
this is the case here as well, but it is well hidden: message-append.c includes
a system header file before (transitively) loading pyconfig.h:
http://sources.debian.net/src/dbus-python/1.2.0-2/_dbus_bindings/message-append.c?hl=29#L29
Once #include <assert.h> is moved after #include "message-internal.h", the type
conflict is resolved.
Best,
Michael
pgpf8XZDenS6y.pgp
Description: PGP signature

