# [glibc]compilazione fallita[sorpresa: colpa eselect-compiler

## cloc3

emerge ha proposto una ricompilazione non richiesta di glibc e la ha fallita.

il problema compare tanto sulla versione ~, 2.7 quanto sulla 2.6.1 che è attualmente presente nel mio sistema.

nel messaggio di errore compare anche uno strano riferimento ad un ABI che mi infastidisce un po'.

provo a postarlo, casomai servisse a qualcosa:

```

/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `__fork':

(.text+0x7b8ef): undefined reference to `__sync_bool_compare_and_swap_4'

/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `nscd_getpw_r':

nscd_getpw_r.c:(.text+0xddd37): undefined reference to `__sync_fetch_and_add_4'

nscd_getpw_r.c:(.text+0xddd7b): undefined reference to `__sync_fetch_and_add_4'

/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `nscd_getgr_r':

nscd_getgr_r.c:(.text+0xde17b): undefined reference to `__sync_fetch_and_add_4'

nscd_getgr_r.c:(.text+0xde1c0): undefined reference to `__sync_fetch_and_add_4'

/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `nscd_gethst_r':

nscd_gethst_r.c:(.text+0xde82d): undefined reference to `__sync_fetch_and_add_4'

/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os:nscd_gethst_r.c:(.text+0xde874): more undefined references to `__sync_fetch_and_add_4' follow

/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `__nscd_get_map_ref':

(.text+0xe0880): undefined reference to `__sync_val_compare_and_swap_4'

/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `__GI___libc_freeres':

(__libc_freeres_fn+0x87e): undefined reference to `__sync_bool_compare_and_swap_4'

collect2: ld returned 1 exit status

make[1]: *** [/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc.so] Error 1

make[1]: Leaving directory `/var/tmp/portage/sys-libs/glibc-2.7/work/glibc-2.7'

make: *** [all] Error 2

 * 

 * ERROR: sys-libs/glibc-2.7 failed.

 * Call stack:

 *           ebuild.sh, line 1701:  Called dyn_compile

 *           ebuild.sh, line 1039:  Called qa_call 'src_compile'

 *           ebuild.sh, line   44:  Called src_compile

 *    glibc-2.7.ebuild, line  156:  Called eblit-run 'src_compile'

 *    glibc-2.7.ebuild, line  151:  Called eblit-glibc-src_compile

 *   src_compile.eblit, line  168:  Called src_compile

 *    glibc-2.7.ebuild, line  156:  Called eblit-run 'src_compile'

 *    glibc-2.7.ebuild, line  151:  Called eblit-glibc-src_compile

 *   src_compile.eblit, line  179:  Called toolchain-glibc_src_compile

 *   src_compile.eblit, line  122:  Called die

 * The specific snippet of code:

 *              make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed"

 *  The die message:

 *   make for x86 failed

 
```

----------

## randomaze

 *cloc3 wrote:*   

> 
> 
> ```
> 
> /var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `__fork':
> ...

 

Ti sta dicendo che gli manca una funzione che si aspettava di trovare.

Questo può accadere perché:

- una dipendenza é mancante/fallata (ma dato che sono le glibc mi sembra strano)

- l'ebuild ha dei problemi. 

Provato su bugzilla?

----------

## cloc3

 *randomaze wrote:*   

> 
> 
> Provato su bugzilla?
> 
> 

 

niente da fare.

su bugzilla non ho trovato nulla. per il momento preferisco pensare a un problema mio, piuttosto che segnalare un baco che probabilmente non c'è.

ho verificato su /var/db/pkg che le glibc attuali sono costruite con lo stesso make.conf.

l'unico difetto nel mio sistema è la presenza di una versione nuova dei linux-headers di un mese fa (stando a genlop), alla quale non è seguita l'immediata ricompilazione delle glibc, che risalgono ad agosto.

non se questo può essere sufficiente a determinare l'incongruenza.

in alternativa, devo supporre di avere un deterioramento nelle librerie.

ho provato a fare il downgrade dei linux-headers e del gcc (da 4.2.2 a 4.2.1), ma senza risultato. l'errore è identico.

forse potrei tentare un `emerge -e system`, ma non mi affatto di prendere questa strada.

quali scorciatoie potrei provare?

----------

## randomaze

 *cloc3 wrote:*   

> per il momento preferisco pensare a un problema mio

 

Secondo google la classificazione "solo tuo" non sembrerebbe proprio esatta:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28830

http://www.webservertalk.com/message2118746.html

(per la cronaca ho usato la keyword "sync_bool_compare_and_swap_4" )

----------

## cloc3

 *randomaze wrote:*   

> 
> 
> (per la cronaca ho usato la keyword "sync_bool_compare_and_swap_4" )

 

grazie.

mi passi la versione di guggol che usa il tuo pici?

purtroppo il primo link è una cosa di agosto già fissata cdiversa dal mio problema.

il secondo, invece, muore senza una vera discussione.

rimane l'impressione che ci sia di mezzo qualche pacchetto troppo in tilde, ma non sono riuscito a capire quale, nè a trovare un downgrade efficace.

----------

## francescofavero

Ciao a tutti!!

Parliamo di:

```
bla bla bla.../var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `__nscd_get_map_ref':

(.text+0xdf2de): undefined reference to `__sync_val_compare_and_swap_4'

/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc_pic.os: In function `__GI___libc_freeres':

(__libc_freeres_fn+0x89e): undefined reference to `__sync_bool_compare_and_swap_4'

collect2: ld returned 1 exit status

make[1]: *** [/var/tmp/portage/sys-libs/glibc-2.7/work/build-x86-x86_64-pc-linux-gnu-nptl/libc.so] Error 1

make[1]: Leaving directory `/var/tmp/portage/sys-libs/glibc-2.7/work/glibc-2.7'

make: *** [all] Error 2
```

ce l'ho anch'io  :Sad: 

sono ripassato a gcc-4.1.2 dalla 4.2.2 pensando di risolvere.. ma niente da fare... Sto finendo un emerge -e world ma non ho risolto ancora con glibc... Mi illudevo che magari  una lib alle spalle di glibc compilato con gcc4.2 fosse la causa, ma evidentemente non e' cosi'... 

il mio emerge --info:

```
Portage 2.1.3.19 (default-linux/amd64/2007.0, gcc-4.1.2/amd64-vanilla, glibc-2.7-r0, 2.6.23-phc-r1 x86_64)

=================================================================

System uname: 2.6.23-phc-r1 x86_64 Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz

Timestamp of tree: Thu, 15 Nov 2007 12:16:01 +0000

app-admin/eselect-compiler: 2.0.0_rc2-r1

app-shells/bash:     3.2_p17-r1

dev-java/java-config: 1.3.7, 2.1.2-r1

dev-lang/python:     2.5.1-r3

sys-apps/baselayout: 1.12.10-r5

sys-apps/sandbox:    1.2.18.1-r2

sys-devel/autoconf:  2.13, 2.61-r1

sys-devel/automake:  1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10

sys-devel/binutils:  2.18-r1

sys-devel/libtool:   1.5.24

virtual/os-headers:  2.6.23-r1

ACCEPT_KEYWORDS="amd64 ~amd64"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=nocona -O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc"

CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/eselect/compiler /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/udev/rules.d"

CXXFLAGS="-march=nocona -O2 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="assume-digests autoaddcvs ccache digest distcc distlocks metadata-transfer parallel-fetch sandbox sfperms strict unmerge-orphans userfetch"

GENTOO_MIRRORS=" ftp://ftp.unina.it/pub/linux/distributions/gentoo ftp://ftp.tu-clausthal.de/pub/linux/gentoo/  http://www.ibiblio.org/pub/Linux/distributions/gentoo"

LANG="it_IT.UTF-8"

LC_ALL="it_IT.UTF-8"

LINGUAS="it"

MAKEOPTS="-j3"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/overlays/portage /usr/local/overlays/xeffects-offline"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="acl acpi aiglx alsa amd64 berkdb bitmap-fonts branding cairo cli cracklib crypt cups dbus dri esd firefox flac fortran gdbm glitz gnome gpm gstreamer gtk hal iconv ipv6 isdnlog jpeg libnotify midi mmx mmxext mozbranding mp3 mp3rtp mudflap ncurses nls nptl nptlonly opengl openmp oss pam pcmcia pcre perl png pppd python readline reflection samba session spl sse sse2 ssl ssse3 svg tcpd threads tracker truetype truetype-fonts type1-fonts unicode usb v4l v4l2 xinerama xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" CAMERAS="samsung ptp2" ELIBC="glibc" INPUT_DEVICES="keyboard ps2mouse mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="it" USERLAND="GNU" VIDEO_CARDS="i810 vesa v4l vga"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
```

Spero che arrivi subito qualcuno con una soluzione   :Rolling Eyes: 

A presto!!

P.S: ho pure provato con CFLAGS="-pipe" ma niente...

Francesco

----------

## francescofavero

Risolto .. yuhu...

```
emerge -C eselect-compiler 
```

era un bug di eselect compiler.. mi piace eselect ma il buon vecchio gcc-config per ora fa il caso nostro...

```
emerge gcc-config

gcc-config -f 1

```

Per ora ho fatto con gcc-4.1.2 ma ora riprovo con gcc-4.2.2

Ciao!!!

----------

## francescofavero

diavolo di eselect-conpiler...

Anche slmodem che non riuscivo a compilare ora funziona perfettamente...

Sembra che anche con glibc-4.2.2 sia tutto a posto. Per pochi kb mi sono fatto un passaggio a vanilla 2.6.24, downgrade a 2.6.22.. un emerge -e world veramente inutile.. in piu' tutto con gcc-4.1.. per essere pignolo ora dovrei rifare l'emerge -e world con gcc-4.2.. mha.. 

Grazie e a presto!1

Francesco

----------

## cloc3

 *francescofavero wrote:*   

> Risolto .. yuhu...
> 
> 

 

cosa fai, bevi?

adesso provo.

ma giuro che se hai bevuto...

edit:

spiacente, a me non basta:

edit2:... rimosso

vedi sotto il perché

----------

## cloc3

sorbole. avevi ragione.

in un primo momento il mio sistema era sporcato dai downgrade sperimentali.

----------

## francescofavero

he he.. si non ci credevo neanche io... 

Probabilmente eselect fa confusione con le varie gcc nel caso di x86_64. 

alla fine meno male che era una cosa cosi' semplice. Il rischio e' sempre stravolgere il proprio sistema per risolvere i problemi.. 

Ciao!!

----------

