Package: ruby-bluecloth Version: 2.2.0-4 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 -shared -o bluecloth_ext.so bluecloth.o markdown.o html5.o mkdio.o version.o xml.o generate.o css.o setup.o xmlpage.o tags.o emmatch.o docheader.o resource.o Csio.o -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -L/build/ruby2.1-R1fHdQ/ruby2.1-2.1.2/debian/lib -fstack-protector -rdynamic -Wl,-export-dynamic -lruby-2.1 -lpthread -lgmp -ldl -lcrypt -lm -lc error: conflicting function declarations "mkd_compile" old definition in module bluecloth file mkdio.h line 23 signed int (void *, unsigned int) new definition in module markdown file markdown.c line 1211 signed int (struct document *doc, unsigned long int flags) error: conflicting function declarations "mkd_string" old definition in module bluecloth file mkdio.h line 13 void * (const char *, signed int, unsigned int) new definition in module mkdio file mkdio.c line 173 struct document * (const char *buf, signed int len, unsigned long int flags) Makefile:232: recipe for target 'bluecloth_ext.so' failed make[1]: *** [bluecloth_ext.so] Error 64 make[1]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-ruby-bluecloth/ruby-bluecloth-2.2.0/ext' For any platform with sizeof(unsigned int)<sizeof(unsigned long int) the behaviour will be undefined in at least one of two ways: several bytes will take an undefined value; for big endian systems, the wrong set of bytes will be extracted. On review of the code, it seems some cleanup of typedefs is required: mkdio.h uses mkd_flag_t while mkdio.c uses DWORD: http://sources.debian.net/src/ruby-bluecloth/2.2.0-4/ext/mkdio.h?hl=13#L13 http://sources.debian.net/src/ruby-bluecloth/2.2.0-4/ext/mkdio.c?hl=173#L173 Best, Michael
pgpSUZKOs3VMH.pgp
Description: PGP signature