Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 137652 - [cross-x86/glibc] crossdev glibc failure
Summary: [cross-x86/glibc] crossdev glibc failure
Status: RESOLVED WORKSFORME
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Unspecified (show other bugs)
Hardware: All Linux
: High minor (vote)
Assignee: Gentoo Toolchain Maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-06-22 13:40 UTC by Bryan Jacobs
Modified: 2006-09-22 12:44 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bryan Jacobs 2006-06-22 13:40:03 UTC
Command: crossdev -t i686 --kernel 2.6.16 --libc 2.4-r3

Excerpted from glibc.log:

make[2]: Leaving directory `/var/tmp/cross/i686-pc-linux-gnu/portage/glibc-2.4-r3/work/glibc-2.4/elf'
make[1]: Leaving directory `/var/tmp/cross/i686-pc-linux-gnu/portage/glibc-2.4-r3/work/glibc-2.4'
>>> Source compiled.
/portage-overlay/cross-i686-pc-linux-gnu/glibc/glibc-2.4-r3.ebuild: line 303: cd: /var/tmp/cross/i686-pc-linux-gnu/portage/glibc-2.4-r3/work/build-pos-i686-
pc-linux-gnu-nptl: No such file or directory
 * Checking GLIBC with NPTL...
Makeconfig:84: amd64/config.make: No such file or directory
Makerules:795: no file name for `include'
/bin/sh: line 0: cd: amd64: No such file or directory
The GNU C library has not been configured.
Run `configure' to configure it before building.
Try `configure --help' for more details.
make: *** [amd64/config.status] Error 1

Incidentally, the -l and -g flags mentioned in crossdev --help don't work.

Emerge --info:
Portage 2.1 (default-linux/amd64/2006.0, gcc-4.1.1, glibc-2.3.6-r3, 2.6.16-gentoo-r7 x86_64)
=================================================================
System uname: 2.6.16-gentoo-r7 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4600+
Gentoo Base System version 1.12.1
ccache version 2.3 [enabled]
dev-lang/python:     2.4.2
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     2.3
dev-util/confcache:  0.4.2-r1
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1
sys-devel/binutils:  2.16.1-r2
sys-devel/gcc-config: 1.3.13-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r2
ACCEPT_KEYWORDS="amd64"
AUTOCLEAN="yes"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -fomit-frame-pointer -march=k8"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/bind"
CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/revdep-rebuild /etc/splash /etc/terminfo"
CXXFLAGS="-O2 -pipe -fomit-frame-pointer -march=k8"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig ccache confcache distlocks fixpackages maketest metadata-transfer parallel-fetch sandbox sfperms strict test"
GENTOO_MIRRORS="http://gentoo.mirrors.pair.com/ http://gentoo.mirrors.easynews.com/linux/gentoo/ "
LC_ALL="en_US.UTF-8"
LINGUAS="en"
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'"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/portage-overlay"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="amd64 7zip X X509 a52 aac aalib acl acpi aim alsa amarok amazon amd amuled apache2 asf async authdaemond automount avi bash-completion bcmath bdf berkdb big-tables bootsplash branding browserplugin bzip2 cairo cap caps ccache cdda cddb cdinstall cdio cdparanoia cdr cdrom cg chroot cjk cli crypt css ctype cups curl curlwrappers cvs cvsgraph cyrus dbus dga dio directfb dlloader dlopen dmx dnd dnotify doc dpms dri dts dv dvd dvdr dvdread dxr3 edl eds emul-linux-x86 encode enscript escreen ethereal evo evolution exif exscalibar extensions fam fame fastcgi fbcon fbsplash festival ffmpeg firefox flac flash flatfile font-server foomaticdb ftp fuse gaim gd ggi gif gimp gimpprint glut gmail gmailtimestamps gmp gnome gnome-print gpgme gpm grammar graphicsmagick graphviz gs gssapi gstreamer gstreamer010 gtk gtk2 gtkhtml gtkspell gvim hal hou hpn httpd iconv id3 idled idn ieee1394 ifp imagemagick imap imlib inifile innodb insecure-savers iproute2 ipsec ipv6 irc ithreads j2ee jack java javascript jboss jce jcs jikes john joystick jpeg jpeg2k junit kde kerberos lame largeterminal latex lcms ldap ldapsam ldirectord libcaca libsamplerate libvisual lirc lm_sensors log4j logrotate lzw lzw-tiff mad maildir math matroska mbox mbrola md5sum mem-cache memcache menubar mime mjpeg mmap mng mod mod_python module mono moodbar mouse moznocompose moznoirc moznomail mp3 mp4 mp4live mpeg mpeg2 mplayer mpm-worker msdfs mudflap multiuser musepack musicbrainz mysql mysqli nas ncurses net nethack network nfs nls nocd nosrc nowin nptl nptlonly nsplugin ntfs ntlm nvidia nvtv objc objc++ odbc ogg oggvorbis opengl openssl oscar oss overlays pam pam_chroot pam_console passfile pcntl pcre pdf pdflib perl php player plotutils png pop pop3d ppds pppd python qemu-fast qt quicktime rar rdesktop readline reflection reiserfs remote rtc samba sample sasl screen sdl sensord server servlet-2.4 session sftp silvercity skey slang slp smartcard smarty smime smp smtp sockets socks5 sou spell spl sql srp sse-filters ssl startup-notification stream subtitles subversion svg swarmcache sysfs syslog tabs taglib tagwriting tcpd test tetex thesaurus threads tidy tiff timidity tokenizer toolbar transcode truetype truetype-fonts type1-fonts underscores unicode unzip urandom usb userlocales utf8 v4l v4l2 vcd vhosts vim vim-pager visualization vorbis webdav webkdc widescreen wifi winbind wma wma123 wmf wxwindows x264 xanim xcomposite xext xgetdefault xine xinerama xlockrc xml xml2 xmldoclet xmlreader xmlrpc xmlwriter xmms xorg xosd xpm xprint xrandr xscreensaver xsettings xv xvid xvmc yv12 zip zlib elibc_glibc input_devices_mouse input_devices_evdev input_devices_joystick input_devices_keyboard kernel_linux linguas_en userland_GNU video_cards_nvidia video_cards_vesa video_cards_fbdev"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS

Some other versions of glibc fail on the linux-headers version check (they say I have <2.6.9 despite my using 2.6.16).
Comment 1 Bryan Jacobs 2006-06-22 13:45:37 UTC
If it's any help, it should be cding to /var/tmp/cross/i686-pc-linux-gnu/portage/glibc-2.4-r3/work/build-default-i686-
pc-linux-gnu-nptl.

The ${ABI} environmental variable controls this command, IIRC.  Why is it trying for a posix glibc?
Comment 2 Jeremy Huddleston (RETIRED) gentoo-dev 2006-06-23 00:25:00 UTC
Where is it getting "pos" from?  This doesn't look like it has anything to do with eselect-compiler.

Any just curious... why are you pulling in a crossdev i686 toolchain on amd64 anyways?  You have one already...

I'll test this out, though...
Comment 3 Jeremy Huddleston (RETIRED) gentoo-dev 2006-06-23 00:42:39 UTC
Yeah... he doesn't even have eselect-compiler on is system.  He's using gcc-config.  so it can't be eselect-compiler related.
Comment 4 SpanKY gentoo-dev 2006-06-23 06:16:00 UTC
pos is coming from crossdev ... it was used to force ABI to something sane when using gcc-config-1.x as the ABI just broke cross-compilers horribly otherwise
Comment 5 Jeremy Huddleston (RETIRED) gentoo-dev 2006-06-23 10:47:16 UTC
Ok, well the sane value would be "default" or just unset it (in which case it would be "default").
Comment 6 Bryan Jacobs 2006-06-23 11:23:23 UTC
(In reply to comment #2)
> Where is it getting "pos" from?  This doesn't look like it has anything to do
> with eselect-compiler.
> 
> Any just curious... why are you pulling in a crossdev i686 toolchain on amd64
> anyways?  You have one already...
> 
> I'll test this out, though...
> 

I needed to build a 32-bit libusb to support some proprietary drivers I have, and all the Gentoo documentation pointed me to using crossdev.  Plus I was kind of curious about how well this worked b/c I often cross-compile things for arm (handhelds) and a genkernel-like tool for crosscompiling could be very useful :-P.

Is there some way to tell emerge to put things into /lib32 and /usr/lib32 and to allow a second installation of a package?  Or should I create a second ebuild for the 32bit version?

I just built the package from source with --host and --libdir...

Speaking of which, I got this to work with the command "crossdev -t i686" when I removed test and maketest from my FEATURES.  glibc was failing an nptl-related test because it tried to cd into the aforementioned incorrect directory.

So there are three (I think) problems here:
1. The ABI setting is wrong, causing some of the glibcs to fail
2. Some versions of glibc perform the linux-headers version check incorrectly
3. The options descriptions for crossdev are incorrect
Comment 7 Torsten Kaiser 2006-06-24 08:14:22 UTC
I just tried to emerge a arm-softfloat-linux-gnu environment to play with my zaurus.
It was a nearly comlete disaster, but i think I'm making slow progress.

The base system is an up todate ~x86 system, I used the latest crossdev with the following command:
crossdev -t arm-softfloat-linux-gnu
It failed when it tried to emerge glibc-2.4, because the glibc-configure complained about missing __thread-support.
From the log:
hecking for stdint.h... no
checking for unistd.h... no
checking for long double... no
checking size of long double... 0
running configure fragment for ports/sysdeps/arm/elf
checking for ARM TLS support... no
running configure fragment for nptl/sysdeps/pthread
configure: error: compiler support for __thread is required

!!! ERROR: cross-arm-softfloat-linux-gnu/glibc-2.4-r3 failed.

It seems that thread-support is needed from compiling nptl. But the stage1-gcc will not build thread-support if there is no glibc.
Chicken-Egg-Problem: 
* No glibc means no __thread in gcc
* No __thread in gcc means no nptl with means no glibc-2.4

I tried to emerge nearly all other <glibc-2.4 versions with the stage1-gcc-4.1. All failed in nptl-mode with above error, using only linuxthreads with severaly other erros. :(
The only way to get a arm-glibc was to emerge an additional 3.4.6-crossgcc. It will still fail build glibc-2.4 because of the chicken-egg-problem, but now I have a arm-glibc-2.3.6-r4.

Status for crossdev seems to be right now:
Broken for gcc-4*
Broken for glibc-2.4*

Is there some page where I can see working combinations of gcc/glibc for an architecture?
The homepage for crossdev only says 'www.gentoo.org' and the packages itself has no docs, but arm/glibc is called 'supported' in crossdev -t help

Thanks for any pointers to more docs.

I will report later, if building glibc2.4 is working, after I build a __thread-gcc with the glibc-2.3...
Comment 8 Torsten Kaiser 2006-06-24 09:30:07 UTC
Ok, glibc-2.4 still does not compile.
But as it has neither an arm nor an ~arm keyword, I should not complain about it.
Still it looks like a bug in emerge or crossdev that crossdev or a drirect emerge cross-arm-softfloat-linux-gnu/glibc will try to emerge it.
(packages.keywords contains the following lines, generated by crossdev:
cross-arm-softfloat-linux-gnu/binutils arm ~arm
cross-arm-softfloat-linux-gnu/gcc arm ~arm
cross-arm-softfloat-linux-gnu/linux-headers arm ~arm
cross-arm-softfloat-linux-gnu/glibc arm ~arm
cross-arm-softfloat-linux-gnu/gdb arm ~arm

My make.conf contains KEYWORDS="~x86")

I also found another bug, this one is much more serious:
ariolc ~ # eix -e glibc
eix: error while loading shared libraries: /usr/lib/gcc/arm-softfloat-linux-gnu/4.1.1/libgcc_s.so.1: ELF file OS ABI invalid

I do not know when this was first caused, but I made the following switches with eselect compiler:
Switching to cross-arm-softfloat-linux-gnu/gcc-3.4.6 after emerging it
Switching back to cross-arm-softfloat-linux-gnu/gcc-4.1.1 for the second try with glibc-2.4
Switching to sys-devel/gcc-4.1.1 to try to cure this error.

It did not help.

The cause is the following:
ld.so.conf contains:
...
/usr/lib/gcc/arm-softfloat-linux-gnu/4.1.1
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1
...

/etc/env.d/05compiler contains:
# Configuration file for eselect
# This file has been automatically generated.
INFOPATH="/usr/share/gcc-data/arm-softfloat-linux-gnu/4.1.1/info:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info"
MANPATH="/usr/share/gcc-data/arm-softfloat-linux-gnu/4.1.1/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man"
LDPATH="/usr/lib/gcc/arm-softfloat-linux-gnu/4.1.1:/usr/lib/gcc/i686-pc-linux-gnu/4.1.1"

/etc/env.d/gcc contains the following files:
rm-softfloat-linux-gnu-3.4.6
arm-softfloat-linux-gnu-3.4.6-hardenednopiessp
arm-softfloat-linux-gnu-4.1.1
config
config-
config-i686-pc-linux-gnu
i686-pc-linux-gnu-3.4.6
i686-pc-linux-gnu-3.4.6-hardened
i686-pc-linux-gnu-3.4.6-hardenednopie
i686-pc-linux-gnu-3.4.6-hardenednopiessp
i686-pc-linux-gnu-3.4.6-hardenednossp
i686-pc-linux-gnu-4.0.3
i686-pc-linux-gnu-4.1.1

So becaus [a]rm comes before [i]686, eselect seems to think I prefer using arm libraries on an x86 system. :(

I will fix this manually, but should I file a new bug about this?
Using the .so from another architecture seems to be a rather bad thing to do.
Comment 9 Jeremy Huddleston (RETIRED) gentoo-dev 2006-06-24 22:30:29 UTC
Torsten, your issue is unrelated to the one originally reported.  Can you please open a new one and assign it to me?  Thanks.
Comment 10 Torsten Kaiser 2006-06-25 02:11:44 UTC
Bugs filed as #137909 and #137917

But I could not assign them to you, as the assign-to-inputfield on the new-bug-page seems to be readonly in Konqueror.
Comment 11 SpanKY gentoo-dev 2006-09-03 16:59:17 UTC
latest stuff works for me ... considering the wierd error, looks like the source tree was deleted after building or something ...