Hi,
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: x86_64-linux-gnu-gcc -shared -fPIC -DPIC .libs/paradox.o .libs/px_head.o .libs/px_misc.o .libs/px_io.o .libs/px_memory.o .libs/px_memprof.o .libs/px_error.o .libs/px_encode.o .libs/px_crypt.o .libs/gregor.o -lgsf-1 -O2 -Wl,-soname -Wl,libpx.so.0 -o .libs/libpx.so.0.6.5
error: conflicting function declarations "get_px_head"
old definition in module paradox file px_head.h line 3
struct px_head * (struct px_doc *, struct px_stream *)
new definition in module px_head file px_head.c line 25
struct px_head * (struct px_doc *pxdoc, struct px_stream *pxs)
reason for conflict at pxs->px_stream->s in types listed below (union/union):
composite type component counts differ (4/2)
union {
struct _IO_FILE * fp;
void * stream;
struct _GsfInput * gsfin;
struct _GsfOutput * gsfout;
}
union {
struct _IO_FILE * fp;
void * stream;
}
So this will work fine, but it does highlight what might be unintentional: it seems px_head.c sees paradox.h without PX_HAVE_GSF being defined. This is due to the fact that PX_HAVE_GSF is defined in paradox-gsf.h rather than config.h. This may make things prone to errors, if not already causing one.
Best,
Michael
Also, the paradox-gsf.h header file should be installed only if pxlib supports gsf.
Note that the way used to detect gsf is not that good, pkg-config should be used instead.