Subject: Re: kdebase2 broken on -current?
To: gillham@vaultron.com, Nick Hudson <skrll@netbsd.org>
From: Chris Gilbert <chris@paradox.demon.co.uk>
List: tech-pkg
Date: 03/19/2001 23:53:49
On Sunday 18 March 2001  9:02 pm, gillham@vaultron.com wrote:
> > Try adding
> >
> > 	CONFIGURE_ARGS+=	--enable-greet-lib
> >
> > to kdebase2/Makefile
>
> I actually just dumped XFree86 4.0.2, since it has the stupid palette
> problem anyway. :(
>
> If someone confirms that 4.0.3 fixes it (on NVidia chipsets), I'll gladly
> switch back, and rebuild every last package again. :-)
>
> Now the build of kdeutils2 is blowing up:
>
> /usr/X11R6/qt2/bin/moc ./disks.h -o disks.moc
> /bin/sh ../libtool --mode=compile --tag=CXX c++ -DHAVE_CONFIG_H -I. -I.
> -I.. -I/usr/X11R6/qt2/include -I/usr/X11R6/include  -I/usr/pkg/include
> -I/usr/X11R6/include    -O2 -fno-exceptions -fno-check-new -Wall -pedantic
> -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long
> -Wnon-virtual-dtor -fno-builtin -O2 -DQT_CLEAN_NAMESPACE -DQT_NO_COMPAT
> -DQT_NO_ASCII_CAST  -c disks.cpp c++ -DHAVE_CONFIG_H -I. -I. -I..
> -I/usr/X11R6/qt2/include -I/usr/X11R6/include -I/usr/pkg/include
> -I/usr/X11R6/include -O2 -fno-exceptions -fno-check-new -Wall -pedantic -W
> -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long
> -Wnon-virtual-dtor -fno-builtin -O2 -DQT_CLEAN_NAMESPACE -DQT_NO_COMPAT
> -DQT_NO_ASCII_CAST -c disks.cpp  -fPIC -DPIC -o .libs/disks.o disks.moc: In
> function `static class QMetaObject * DiskEntry::staticMetaObject()': In
> file included from disks.cpp:32:
> disks.moc:200: initialization to `void (DiskEntry::*)(DiskEntry *, int)'
> from `void (DiskEntry::*)(DiskEntry *, int * (*)())' disks.moc:200:
> conversion to `void (DiskEntry::*)(DiskEntry *, int)' from `void
> (DiskEntry::*)(DiskEntry *, int * (*)())' disks.moc: At top level:
> In file included from disks.cpp:32:
> disks.moc:261: prototype for `void DiskEntry::sysCallError(class DiskEntry
> *, int)' does not match any in class `DiskEntry' disks.h:85: candidate is:
> void DiskEntry::sysCallError(class DiskEntry *, int * (*)())

I got this, the clue is in the definition of sysCallError:
  void sysCallError(DiskEntry *disk, int errno); 
now a quick look over /usr/include/errno.h shows that errno may get defined 
to:
int *__errno __P((void));
#define errno (*__errno())

when it's not already defined, so that expands the prototype to being the 
bizarre thing that it is.

I'm only puzzled why it doesn't show when the code is compiled, perhaps moc's 
cpp isn't that good?  Anyway if you rename that variable to something more 
sane (or in fact remove it from the .h, it doesn't matter there it's only the 
prototype) it should work (busy recompiling kdeutils, I broke it when trying 
to find a solution :)

Cheers,
Chris