Sun 13 Jun 2010 10:30:45 AM UTC, comment #1:
Wish I could tell you to upgrade to v0.4, but that won't be ready for a while ...
Regarding the problem, if you look into zlib.h (v1.2.5) at the line numbers the error spits out, you'll see:
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
where it defines one set of 64bit functions and then
#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0
# ifdef _LARGEFILE64_SOURCE
where it defines another, conflicting set. For some reason, it runs into both blocks because of the way the defines are set up. Obviously, we have
_LARGEFILE64_SOURCE=true
_LFS64_LARGEFILE=true
_FILE_OFFSET_BITS=64
ZLIB_INTERNAL=false
From my understanding, _LARGEFILE64_SOURCE and consorts are defined by glibc (if a 32bit OS should support large files). That's why you are seeing the problem on i686 only.
Since all this is internal to glibc/libz, there isn't anything we can do about this. The main question is, does the same problem happen on any other package using zlib (I would assume so) or is it just Adonthell that is affected. In latter case, it might be caused due to some unfortunate mix of libraries that might affect the state of those flags. In that case, shuffling the includes around might help.
As I do not have a 32bit system with large file support around for testing, I would ask you to check first if other packages exhibit the same issue. Might as well be a bug in recent libz. If not, I'll try to think of something.
|