[tlbuild] build failure: texk/web2c/configure.ac tests for stat64 function but not for "struct stat64"

Vladimir Volovich vvv at vsu.ru
Thu May 27 18:15:40 CEST 2010


Hi!

i've got a build failure on AIX:

source='luatexdir/luafilesystem/src/lfs.c' object='libluamisc_a-lfs.o' libtool=no \
        DEPDIR=.deps depmode=aix /bin/bash ../../../texk/web2c/../../build-aux/depcomp \
        xlc -DHAVE_CONFIG_H -I. -I../../../texk/web2c -I/usr/local/vvv/src/source/Work/texk -I/usr/local/vvv/src/source/texk -I/usr/local/vvv/src/source/Work/libs/zlib/include -I/usr/local/vvv/src/source/Work/libs/zziplib/include -I../../../texk/web2c/luatexdir/lua51 -I/opt/freeware/include -DUSE_STDLIB_WORKAROUNDS  -O2 -qmaxmem=262144 -qarch=com -qlanglvl=extended -qcpluscmt -c -o libluamisc_a-lfs.o `test -f 'luatexdir/luafilesystem/src/lfs.c' || echo '../../../texk/web2c/'`luatexdir/luafilesystem/src/lfs.c
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 527.41: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 531.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 535.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 539.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 543.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 547.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 551.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 555.28: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 559.28: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 563.28: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 567.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 571.41: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 576.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 580.40: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 586.3: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 598.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 599.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 600.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 601.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 602.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 603.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 604.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 605.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 606.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 607.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 608.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 609.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 611.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 612.27: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 614.17: 1506-196 (W) Initialization between types "void(*)(struct lua_State*,struct stat64*)" and "void(*)(struct lua_State*,struct stat64*)" is not allowed.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 622.9: 1506-007 (S) "struct stat64" is undefined.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 684.32: 1506-045 (S) Undeclared identifier stat64.
"../../../texk/web2c/luatexdir/luafilesystem/src/lfs.c", line 692.32: 1506-045 (S) Undeclared identifier lstat64.
gmake[5]: *** [libluamisc_a-lfs.o] Error 1

which seems to be caused by the check in texk/web2c/configure.ac:

AC_CHECK_FUNCS([access atoi fmax ftime gettimeofday mkdtemp setlocale snprintf stat64 strerror strlcat strlcpy])

which results in "#define HAVE_STAT64 1" in Work/texk/web2c/c-auto.h
but despite the presence of the stat64() function, neither it, nor the
"struct stat64" is defined in the headers in the current build environment.
(one would need to specially define some macros to enable this API. i
did not do that, since we're building 32-bit binaries, and there's no
need for 64-bit I/O).

it seems that for better portability, texk/web2c/configure.ac should
also test whether the "struct stat64" is defined in <sys/stat.h>.

i've manually changed
#define HAVE_STAT64 1
to
#undef HAVE_STAT64
in Work/texk/web2c/c-auto.h
to continue the build.

Best,
v.


More information about the tlbuild mailing list