Package: cuba
Version: 3.0+20111124-2
Severity: wishlist
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.

[...]
gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat 
-Werror=format-security -DHAVE_CONFIG_H -I./src/common -I. -I. -fPIC -o demo-c 
./demo/demo-c.c libcuba.a -lm

error: conflicting function declarations "Vegas"
old definition in module demo-c file ./cuba.h line 24
void (const signed int, const signed int, signed int (*)(const signed int 
*ndim, const double *x, const signed int *ncomp, double *f, void *userdata), 
void *, const double, const double, const signed int, const signed int, const 
signed int, const signed int, const signed int, const signed int, const signed 
int, const signed int, const char *, signed int *, signed int *, double *, 
double *, double *)
new definition in module Vegas file ./src/vegas/Vegas.c line 22
void (const signed int ndim, const signed int ncomp, signed int 
(*integrand)(const signed int *, const double *, const signed int *, double *, 
void *, const double *, const signed int *), void *userdata, const double 
epsrel, const double epsabs, const signed int flags, const signed int seed, 
const signed int mineval, const signed int maxeval, const signed int nstart, 
const signed int nincrease, const signed int nbatch, const signed int gridno, 
const char *statefile, signed int *pneval, signed int *pfail, double *integral, 
double *error, double *prob)
makefile:225: recipe for target 'demo-c' failed
make[2]: *** [demo-c] Error 64
make[2]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-cuba/cuba-3.0+20111124'
dh_auto_build: make -j1 returned exit code 2
debian/rules:20: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2

So the issue here is the number of parameters of the function pointer integrand
(the third parameter of Vegas). cuba.h exports this declaration towards demo-c:

http://sources.debian.net/src/cuba/3.0+20111124-2/cuba.h?hl=18#L18

But Vegas.c uses

http://sources.debian.net/src/cuba/3.0+20111124-2/src/vegas/decl.h?hl=31#L31

Hence demo-c appears to pass in a function of wrong type.

Best,
Michael

Attachment: pgpzk9lyQBQ2m.pgp
Description: PGP signature

Reply via email to