The gtklp-0.9m package doesn't emerge when the nls use flag is active. A compilation error apears. Reproducible: Always Steps to Reproduce: 1. emerge gtklp 2. 3. Actual Results: gcc -c -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" -DLIBDIR=\"/usr/lib\" -DHAVE_CONFIG_H -I.. -I. -I../intl -march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer plural.c gcc -c -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" -DLIBDIR=\"/usr/lib\" -DHAVE_CONFIG_H -I.. -I. -I../intl -march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer localcharset.c cp ./libgnuintl.h libintl.h /bin/sh ./config.charset 'i686-pc-linux-gnu' > t-charset.alias mv t-charset.alias charset.alias sed -e '/^#/d' -e 's/@''PACKAGE''@/gtklp/g' ref-add.sin > t-ref-add.sed mv t-ref-add.sed ref-add.sed sed -e '/^#/d' -e 's/@''PACKAGE''@/gtklp/g' ref-del.sin > t-ref-del.sed mv t-ref-del.sed ref-del.sed dcigettext.c: Dans la fonction
The gtklp-0.9m package doesn't emerge when the nls use flag is active. A compilation error apears. Reproducible: Always Steps to Reproduce: 1. emerge gtklp 2. 3. Actual Results: gcc -c -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" -DLIBDIR=\"/usr/lib\" -DHAVE_CONFIG_H -I.. -I. -I../intl -march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer plural.c gcc -c -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" -DLIBDIR=\"/usr/lib\" -DHAVE_CONFIG_H -I.. -I. -I../intl -march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer localcharset.c cp ./libgnuintl.h libintl.h /bin/sh ./config.charset 'i686-pc-linux-gnu' > t-charset.alias mv t-charset.alias charset.alias sed -e '/^#/d' -e 's/@''PACKAGE''@/gtklp/g' ref-add.sin > t-ref-add.sed mv t-ref-add.sed ref-add.sed sed -e '/^#/d' -e 's/@''PACKAGE''@/gtklp/g' ref-del.sin > t-ref-del.sed mv t-ref-del.sed ref-del.sed dcigettext.c: Dans la fonction « plural_lookup »: dcigettext.c:991: objet appelé n'est pas une fonction make[2]: *** [dcigettext.o] Erreur 1 make[2]: Leaving directory `/var/tmp/portage/gtklp-0.9m/work/gtklp-0.9m/intl' make[1]: *** [all-recursive] Erreur 1 make[1]: Leaving directory `/var/tmp/portage/gtklp-0.9m/work/gtklp-0.9m' make: *** [all] Erreur 2 !!! ERROR: net-print/gtklp-0.9m failed. !!! Function src_compile, Line 35, Exitcode 2 !!! parallel make failed Expected Results: The software should have been installed Here is the result of emerge info: Portage 2.0.48-r1 (default-x86-1.4, gcc-3.2.2, glibc-2.3.1-r4) ================================================================= System uname: 2.4.20-gentoo-r5 i686 Pentium III (Coppermine) GENTOO_MIRRORS="http://sunsite.cnlab-switch.ch/ftp/mirror/gentoo/ ftp://sunsite.cnlab-switch.ch/mirror/gentoo/" CONFIG_PROTECT="/etc /var/qmail/control /usr/share/config /usr/kde/2/share/config /usr/kde/3/share/config /usr/X11R6/lib/X11/xkb" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" PORTDIR="/usr/portage" DISTDIR="/usr/portage/distfiles" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR_OVERLAY="/usr/local/portage" USE="x86 oss apm avi crypt cups encode gif jpeg libg++ mikmod mmx mpeg ncurses nls pdflib png quicktime spell truetype xml2 xmms xv zlib directfb gtkhtml gdbm berkdb slang readline tetex aalib bonobo svga ggi tcltk java guile ruby mysql X sdl gpm tcpd pam libwww ssl perl python esd imlib oggvorbis gnome gtk qt motif opengl mozilla ldap snmp cdr scanner dga doc dvd ethereal evo flash gb gd gphoto2 gtk2 imap innodb junit lcms leim libgda moznocompose moznoirc moznomail mule pcmcia pda plotutils pnp samba sasl slp sse tiff usb wmf xface xml zeo -3dnow -arts -kde" COMPILER="gcc3" CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer" CXXFLAGS="-march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer" ACCEPT_KEYWORDS="x86" MAKEOPTS="-j2" AUTOCLEAN="yes" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" FEATURES="sandbox ccache" When I do a USE="-nls" emerge gtklp, the package emerges correctly
cant reproduce this behaviour, anyone can?
try to set LANG=C and reemerge
even after having done LANG=C it doesn't emerge. Here are the last lines of the compile: gcc -c -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" -DLIBDIR=\"/usr/lib\" -DHAVE_CONFIG_H -I.. -I. -I../intl -march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer dngettext.c gcc -c -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" -DLIBDIR=\"/usr/lib\" -DHAVE_CONFIG_H -I.. -I. -I../intl -march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer ngettext.c gcc -c -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" -DLIBDIR=\"/usr/lib\" -DHAVE_CONFIG_H -I.. -I. -I../intl -march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer plural.c gcc -c -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" -DLIBDIR=\"/usr/lib\" -DHAVE_CONFIG_H -I.. -I. -I../intl -march=pentium3 -Os -pipe -mfpmath=sse -fomit-frame-pointer localcharset.c cp ./libgnuintl.h libintl.h /bin/sh ./config.charset 'i686-pc-linux-gnu' > t-charset.alias mv t-charset.alias charset.alias sed -e '/^#/d' -e 's/@''PACKAGE''@/gtklp/g' ref-add.sin > t-ref-add.sed mv t-ref-add.sed ref-add.sed sed -e '/^#/d' -e 's/@''PACKAGE''@/gtklp/g' ref-del.sin > t-ref-del.sed mv t-ref-del.sed ref-del.sed dcigettext.c: In function `plural_lookup': dcigettext.c:991: called object is not a function make[2]: *** [dcigettext.o] Error 1 make[2]: Leaving directory `/var/tmp/portage/gtklp-0.9m/work/gtklp-0.9m/intl' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/gtklp-0.9m/work/gtklp-0.9m' make: *** [all] Error 2 !!! ERROR: net-print/gtklp-0.9m failed. !!! Function src_compile, Line 35, Exitcode 2 !!! parallel make failed
try to remerge gettext and/or revdep-rebuild
Tried that!!! Doesn't change anything :-(
tried both?
Yes... I re-emerged gettext and tried to emerge gtklp : it failed I did a revdep-rebuild, it had nothing that was needed to be re-emerged. Everything was fine with my system.
This error looks to be caused by bad code taking advantage of bad luck with header files. Lines 59-64 of dcigettext.c define 'strchr' if is has not been defined: #include <string.h> #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index <-- ouch! # endif #endif Then on line 975 we declare index as a variable: unsigned long int index; So when we get to line 991, the compiler rightly complains that 'strchr' (which has been replaced by the variable 'index') is not a fuction: p = strchr (p, '\0'); Clearly, this code is not correct. (Incidentally, some other packages that use dcigettext.c have fixed issue this e.g. gnupg-1.2.3). But this doesn't explain why the reporter's machine couldn't find and define strchr in the first place. On a properly set up Gentoo system, one would always expect us to find strchr without problem.
it's fixed in 0.9p, since this one does not use the included gettext version :)