Hi,
On 03/06/14 00:55, Michael Tautschnig wrote:
> 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.
This is really cool stuff!
Thanks a lot for reporting and for the followup investigation too.
> This is a bit of a guess, but I think it's the missing
>
> #include <sys/stat.h>
Yes, I think it's related to that. On many __GLIBC__ platforms, it will
declare _STATBUF_ST_NSEC to indicate nanosecond-resolution timestamps
are available. So depending whether it was included before, the struct
member for mtime may be left out of here:
> typedef struct _node {
> [...]
> #ifdef __GLIBC__
> # ifdef _STATBUF_ST_NSEC
> # define ST_MTIM st_mtim
> # endif
> #else
> # define ST_MTIM st_mtimespec
> #endif
> #ifdef ST_MTIM
> struct timespec ST_MTIM; /* last modification time */
> #endif
[note to self: #ifdef within struct definition in header considered
harmful; I'm curious how difficult it is to detect bugs like this at
compile time]
We could include <sys/stat.h> from mtree.h to fix this, but it's likely
unnecessary, or there could be still other problems.
These #ifdefs don't come from the upstream FreeBSD source, they were
added by a Debian patch written in 2004 to build this code on
linux-alpha! ( http://bugs.debian.org/240023 ). And it could be
unnecessary from glibc 2.3.4.
I couldn't see any problems running mtree on kfreebsd. If there is a
problem it might be only symptomatic on Linux builds. I'll try it some
other time.
It seems to build fine on at least kfreebsd with the ST_MTIM patches
removed so that is probably what will happen.
Thank again,
Regards,
--
Steven Chamberlain
steven@pyro.eu.org
Attachment:
signature.asc
Description: OpenPGP digital signature