[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#639073: ghostscript: FTBFS: ./base/time_.h:49:8: error: redefinition of 'struct timeval'



tags 639073 + help
thanks

On 11-08-23 at 11:16pm, Philippe Le Brouster wrote:
> During a rebuild of all packages in sid, your package failed to build 
> on amd64.
> 
> Relevant part:
> > gcc  -DHAVE_MKSTEMP -DHAVE_HYPOT -DHAVE_FILE64 -DHAVE_MKSTEMP64 -DHAVE_FONTCONFIG -DHAVE_LIBIDN -DHAVE_SETLOCALE -DHAVE_SSE2  -fPIC  -O2 -fPIC -Wall -Wstrict-prototypes -Wundef -Wmissing-declarations -Wmissing-prototypes -Wwrite-strings -Wno-strict-aliasing -Wdeclaration-after-statement -fno-builtin -fno-common -DHAVE_STDINT_H -DGX_COLOR_INDEX_TYPE="unsigned long int" -g -O2 -g -O2 -Wall -fPIC -DUSE_LIBPAPER -DGS_DEVS_SHARED -DGS_DEVS_SHARED_DIR=\"/usr/lib/ghostscript/9.02\" -I./obj/../soobj -I./base  -g -O2 -g -O2 -Wall -fPIC -DUSE_LIBPAPER   -o ./obj/../soobj/gp_unix.o -c ./base/gp_unix.c
> > In file included from ./base/gp_unix.c:17:0:
> > ./base/pipe_.h:39:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
> > In file included from ./base/gp_unix.c:19:0:
> > ./base/time_.h:49:8: error: redefinition of 'struct timeval'
> > /usr/include/x86_64-linux-gnu/bits/time.h:75:8: note: originally defined here
> > ./base/gp_unix.c: In function 'gp_get_realtime':
> > ./base/gp_unix.c:148:9: warning: implicit declaration of function 'gettimeofday' [-Wimplicit-function-declaration]
> > make[2]: *** [obj/../soobj/gp_unix.o] Error 1

Problem is tied to multiarch: ghostscript uses autoconf, but then 
ignores the results and instead use its own too simple checks instead.

base/Makefile.in contains this:

> # defines from autoconf; note that we don't use these at present.
> ACDEFS=@DEFS@

...and base/unix-aux.mak contains this:

> 	if ( test -f $(INCLUDE)/sys/time.h ); then [...]


Ubuntu use as workaround to explicitly include "-DHAVE_SYS_TIME_H=1" in 
CFLAGS, but I feel that is wrong: A whole range of other headers 
similarly gets wrongly treated as missing on multiarch systems, possibly 
causing problems other than FTBFS.


I imagine the proper (i.e. least intrusive) aproach is to check each use 
of $(INCLUDE) and if relocated on multiarch systems then replace with a 
multiarch path resolved at build time.

I could use some help here!


 - Jonas

-- 
 * Jonas Smedegaard - idealist & Internet-arkitekt
 * Tlf.: +45 40843136  Website: http://dr.jones.dk/

 [x] quote me freely  [ ] ask before reusing  [ ] keep private

Attachment: signature.asc
Description: Digital signature


Reply to: