The ebuild tries to figure out the architecture in the src_configure section. This is what the test code returns on my machine: > echo >test.c > i686-apple-darwin9-gcc -c test.c -o test.o > file test.o test.o: data As a consequence, it dies with "failed to detect whether your arch is 64bits or 32bits, disable distcc if you're using it". If I override it with 'myconf="${myconf} --enable-64bit"', the ebuild installs just fine. Reproducible: Always Steps to Reproduce: Portage 2.2.01.17865-prefix (prefix/darwin/macos/10.5/x86, gcc-4.2.1, unavailable, 10.6.0 i386) ================================================================= System Settings ================================================================= System uname: Darwin-10.6.0-i386-32bit Timestamp of tree: Fri, 11 Feb 2011 09:12:17 +0000 distcc 3.1-toolwhip.1 i386-apple-darwin10.0 [disabled] app-shells/bash: 4.1_p7 dev-lang/python: 2.7.1-r00.1 dev-util/cmake: 2.8.3-r1 sys-devel/autoconf: 2.68 sys-devel/automake: 1.10.3, 1.11.1 sys-devel/gcc-config: 1.4.1-r00.2 sys-devel/libtool: 2.4-r1 sys-devel/make: 3.82 Repositories: gentoo_prefix bitcetera-prefix local Installed sets: @system ACCEPT_KEYWORDS="~x86-macos" ACCEPT_LICENSE="* -@EULA" CBUILD="i686-apple-darwin9" CFLAGS="-O2 -pipe -march=nocona" CHOST="i686-apple-darwin9" CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/eselect/postgresql /etc/gconf /etc/portage /etc/revdep-rebuild /etc/terminfo" CXXFLAGS="-O2 -pipe -march=nocona" DISTDIR="/Gentoo/usr/portage/distfiles" EMERGE_DEFAULT_OPTS="--with-bdeps=y" FEATURES="assume-digests binpkg-logs collision-protect distlocks fixlafiles fixpackages news nostrip parallel-fetch preserve-libs protect-owned sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" FFLAGS="" GENTOO_MIRRORS="http://distfiles.gentoo.org" LDFLAGS="-Wl,-dead_strip_dylibs" PKGDIR="/Gentoo/usr/portage/packages" PORTAGE_CONFIGROOT="/Gentoo/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/Gentoo/var/tmp" PORTDIR="/Gentoo/usr/portage" PORTDIR_OVERLAY="/Gentoo/var/lib/layman/bitcetera-prefix /Gentoo/usr/local/portage/local" SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix" USE="aqua coreaudio cracklib cxx mmx mmxext modules ncurses nls objc objc++ prefix readline sse sse2 ssl unicode x86-macos zlib" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="Darwin" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse" KERNEL="Darwin" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" PHP_TARGETS="php5-3" RUBY_TARGETS="ruby19" USERLAND="GNU" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, INSTALL_MASK, LANG, LC_ALL, LINGUAS, MAKEOPTS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
(In reply to comment #0) > If I override it with 'myconf="${myconf} --enable-64bit"', the ebuild installs > just fine. > <snip> > ACCEPT_KEYWORDS="~x86-macos" > CBUILD="i686-apple-darwin9" > CHOST="i686-apple-darwin9" This doesn't address the bug report, but I wonder why you want to "--enable-64bit" on a 32bit prefix...
(In reply to comment #1) > This doesn't address the bug report, but I wonder why you want to > "--enable-64bit" on a 32bit prefix... You're right, it compiles as well when I drop this enable.
@mozilla: could you agree with this change to solve this problem, which occasionally seems to me like a simplification as well? @Sven: could you test this patch if it works for you? =================================================================== RCS file: /var/cvsroot/gentoo-x86/dev-libs/nspr/nspr-4.8.7.ebuild,v retrieving revision 1.1 diff -u -r1.1 nspr-4.8.7.ebuild --- nspr-4.8.7.ebuild 14 Jan 2011 13:37:10 -0000 1.1 +++ nspr-4.8.7.ebuild 12 Feb 2011 13:00:19 -0000 @@ -43,9 +43,9 @@ echo > "${T}"/test.c $(tc-getCC) -c "${T}"/test.c -o "${T}"/test.o - case $(file "${T}"/test.o) in - *64-bit*|*ppc64*|*x86_64*) myconf="${myconf} --enable-64bit";; - *32-bit*|*ppc*|*i386*|*"RISC System/6000"*) ;; + case $(scanelf -BF'%M' "${T}"/test.o)$(scanmacho -BF'%M' "${T}"/test.o) in + ELFCLASS64*|POWERPC64*|X86_64*) myconf="${myconf} --enable-64bit";; + ELFCLASS32*|POWERPC*|I386*|ARM*) ;; *) die "Failed to detect whether your arch is 64bits or 32bits, disable distcc if you're using it, please";; esac cvs diff: Diffing files
The patch works for me, it enters the "ELFCLASS32*|POWERPC*|I386*|ARM*)" clause.
@mozilla: I went ahead and committed this change. I hope this is ok with you. If not, please revert and reopen this bug so we can find a solution that works for both of us. Thanks.
(In reply to comment #3) > - case $(file "${T}"/test.o) in > + case $(scanelf -BF'%M' "${T}"/test.o)$(scanmacho -BF'%M' "${T}"/test.o) in Not important enough to reopen ATM, just to note: There is no $(scanelf) or $(scanmacho) on AIX and others, so $(file) still feels necessary.