Emerging Xorg server version 1.3.0.0 fails since a ft_isdigit symbol is missing in libXfont.so . Always fails on two Gentoo systems (a Core2 - amd64 - and a pentium4 - x86), same result. Successful on another one (opteron - amd64). Reproducible: Sometimes Steps to Reproduce: 1. emerge -1u =x11-base/xorg-server-1.3.0.0 2. 3. Actual Results: Error: creating libosandcommon.la (cd .libs && rm -f libosandcommon.la && ln -s ../libosandcommon.la libosandcommon.la) /bin/sh ../../libtool --tag=CC --mode=link x86_64-pc-linux-gnu-gcc -DHAVE_XORG_CONFIG_H -DXF86PM -Wall -Wpointer-arith -Wstri x86_64-pc-linux-gnu-gcc -DHAVE_XORG_CONFIG_H -DXF86PM -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissin /usr/lib64/libXfont.so: undefined reference to `ft_isdigit' collect2: ld returned 1 exit status make[4]: *** [Xorg] Error 1 make[4]: Leaving directory `/var/tmp/portage/x11-base/xorg-server-1.3.0.0/work/xorg-server-1.3.0.0/hw/xfree86' Expected Results: >>> x11-base/xorg-server-1.3.0.0 merged. Piece of output of "emerge -p1uv xorg-server": [ebuild U ] x11-base/xorg-server-1.3.0.0 [1.2.0-r3] USE="dri ipv6 nptl sdl xorg (-3dfx) -debug -dmx -kdrive -minimal -xprint" INPUT_DEVICES="evdev joystick keyboard mouse -acecad -aiptek -calcomp -citron -digitaledge -dmc -dynapro -elo2300 -elographics -fpit -hyperpen -jamstudio -magellan -microtouch -mutouch -palmax -penmount -spaceorb -summa -synaptics -tek4957 -ur98 -vmmouse -void -wacom" VIDEO_CARDS="apm fglrx radeon tga v4l vesa vga vmware -ark -chips -cirrus -cyrix -dummy -epson -fbdev -glint -i128 (-i740) -i810 (-impact) (-imstt) -mach64 -mga -neomagic (-newport) (-nsc) -nv -nvidia -r128 -rendition -s3 -s3virge -savage -siliconmotion -sis -sisusb (-sunbw2) (-suncg14) (-suncg3) (-suncg6) (-sunffb) (-sunleo) (-suntcx) -tdfx -trident -tseng -via -voodoo" 0 kB See attachment below for complete log and emerge information.
Created attachment 123965 [details] emerge --info from a failing Gentoo (P4)
Created attachment 123967 [details] emerge --info from a failing Gentoo (Core2)
Created attachment 123969 [details] emerge --info from a Gentoo where it worked (opteron)
Created attachment 123971 [details] Emerge log (2 MB, bzip2)
Discussion in reported URL points to the solution in employing libXfont 1.3.0 rather than 1.2.8 .
I can confirm that bumping to libXfont-1.3.0 resolves this problem on my core2 ~amd64 system.
I have tried xorg-server ebuild 1.2.0-r3 on the core2 machine, and the error is the same. I think the problem is actually on libXfree-1.2.8. On the P4 (x86, 32 bit): $ equery list libXfont [I--] [ ~] x11-libs/libXfont-1.2.8 (0) $ ldd -r /usr/lib/libXfont.so undefined symbol: ft_isdigit (/usr/lib/libXfont.so) linux-gate.so.1 => (0xb7f36000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7e19000) libz.so.1 => /lib/libz.so.1 (0xb7e05000) libm.so.6 => /lib/libm.so.6 (0xb7de1000) libfontenc.so.1 => /usr/lib/libfontenc.so.1 (0xb7ddb000) libc.so.6 => /lib/libc.so.6 (0xb7cb9000) /lib/ld-linux.so.2 (0x80000000) In both P4 and Core2 machines, the ft_isdigit symbol is not defined. Looking in source code, ft_isdigit is a #define, an alias for isdigit() function, and the former is not even expected to leave the local scope. Xorg server probably doesn't even use it, and the problem is just an unresolved symbol in libXfont. In the opteron machine (where all works just fine), no ft_isdigit symbol is present in the library file. By the way, the ChangeLog of libXfont mentions something related to this. Maybe a "backport" of changes in src/FreeType/fttools.c from 1.3.0 to 1.2.8 would solve this issue.
This breaks as x11-apps/bdftopcf as well, and like more; freetype-2.3.5 should be masked until this is solved.
A fix is to compile libXfont (any version has this problem) with CFLAGS='-Dft_isdigit=isdigit'
A rebuild of libXfont against the newer freetype should pretty much fix this. It's a conditional #define in libXfont that is a compatibility fix for freetype. In other words, if you built libXfont against old freetype and upgrade freetype without upgrading libXfont, things break. The code: /* backward compatibility hack */ #if (FREETYPE_VERSION < 2001008) # ifndef ft_isdigit # define ft_isdigit isdigit # endif #endif
I've added a postinst message to warn the user they should rebuild libXfont. That and the libXfont version bump today should catch most cases.
Marking fixed since we've done about all we can.