The interesting part of my buildlog: ... powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c re.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c regex.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c ruby.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c signal.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c sprintf.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c st.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c string.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c struct.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c time.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c util.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c variable.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c version.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c dmyext.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -I. -I. -c main.c powerpc-gentoo-linux-uclibc-ar rcu libruby18-static.a array.o bignum.o class.o compar.o dir.o dln.o enum.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o powerpc-gentoo-linux-uclibc-gcc main.o libruby18-static.a -ldl -lcrypt -lm -o miniruby -O2 -mcpu=603e -pipe -ggdb -fPIC -DRUBY_EXPORT -Wl,-z,relro -rdynamic -Wl,-export-dynamic powerpc-gentoo-linux-uclibc-gcc -shared -Wl,-soname,libruby18.so.1.8 array.o bignum.o class.o compar.o dir.o dln.o enum.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o -ldl -lcrypt -lm -o libruby18.so.1.8.5 rbconfig.rb updated /var/tmp/portage/dev-lang/ruby-1.8.5_p2-r1/work/ruby-1.8.5-p2/lib/mkmf.rb:8: uninitialized constant Config (NameError) from ./ext/extmk.rb:31:in `require' from ./ext/extmk.rb:31 make: *** [all] Error 1 !!! ERROR: dev-lang/ruby-1.8.5_p2-r1 failed. Call stack: ebuild.sh, line 1621: Called dyn_compile ebuild.sh, line 973: Called qa_call 'src_compile' ebuild.sh, line 44: Called src_compile ruby-1.8.5_p2-r1.ebuild, line 87: Called die !!! emake failed !!! If you need support, post the topmost build error, and the call stack if relevant. !!! A complete build log is located at '/var/tmp/portage/dev-lang/ruby-1.8.5_p2-r1/temp/build.log'. emerge --info: Portage 2.1.2.9 (uclibc/ppc/hardened, gcc-3.4.6, uclibc-0.9.28.3-r0, 2.6.20-hardened-r3-muttley-3 ppc) ================================================================= System uname: 2.6.20-hardened-r3-muttley-3 ppc G2_LE Gentoo Base System release 1.12.9 Timestamp of tree: Sun, 15 Jul 2007 22:50:01 +0000 dev-lang/python: 2.4.4-r4 dev-python/pycrypto: 2.0.1-r5 sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.61 sys-devel/automake: 1.6.3, 1.9.6-r2, 1.10 sys-devel/binutils: 2.17 sys-devel/gcc-config: 1.3.16 sys-devel/libtool: 1.5.23b virtual/os-headers: 2.6.20-r2 ACCEPT_KEYWORDS="ppc" AUTOCLEAN="yes" CBUILD="powerpc-gentoo-linux-uclibc" CFLAGS="-O2 -mcpu=603e -pipe -ggdb" CHOST="powerpc-gentoo-linux-uclibc" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo" CXXFLAGS="-O2 -mcpu=603e -pipe -ggdb" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig distlocks fixpackages metadata-transfer nostrip parallel-fetch sandbox sfperms strict" GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo" LDFLAGS="-Wl,-z,relro" MAKEOPTS="-j2" 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/portage" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="alsa bitmap-fonts bzip2 cgi cli cracklib dri embedded fastcgi gd hardened ipv6 mudflap mysql ncurses openmp pcre php pic ppc readline reflection session spl ssl syslog truetype-fonts type1-fonts uclibc unicode xorg zlib" 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" ELIBC="uclibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="dummy fbdev v4l" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS I get this same error with both ruby-1.8.5_p2-r1 and ruby-1.8.6-r1. (Apols if this is a dupe, I did search, but I seem to keep posting them recently...)
Tested it with a couple of other versions - the earliest and the latest available in Portage. At the time of writing, these are 1.8.4-r3 and 1.8.6_p36-r3. The following happened: (dev-lang/ruby-1.8.4-r3) ... powerpc-gentoo-linux-uclibc-gcc -shared -Wl,-soname,libruby18.so.1.8 array.o bignum.o class.o compar.o dir.o dln.o enum.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o -ldl -lcrypt -lm -o libruby18.so.1.8.4 rbconfig.rb updated /var/tmp/portage/dev-lang/ruby-1.8.4-r3/work/ruby-1.8.4/lib/mkmf.rb:8: uninitialized constant Config (NameError) from ./ext/extmk.rb:32 make: *** [all] Error 1 (dev-lang/ruby-1.8.6_p36-r3) ... powerpc-gentoo-linux-uclibc-gcc -shared -Wl,-soname,libruby18.so.1.8 array.o bignum.o class.o compar.o dir.o dln.o enum.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o -ldl -lcrypt -lm -o libruby18.so.1.8.6 rbconfig.rb updated /var/tmp/portage/dev-lang/ruby-1.8.6_p36-r3/work/ruby-1.8.6-p36/lib/mkmf.rb:8: uninitialized constant Config (NameError) from ./ext/extmk.rb:37:in `require' from ./ext/extmk.rb:37 make: *** [all] Error 1 Points of interest: > PPC architecture > Hardened toolchain > uClibc I'd test more, but I see little point - and besides, on this machine it takes about 15 minutes even to get to the point where it fails...
The Config stuff is normally defined in rbconfig.rb. Can you check what this file looks like for you? It can be found in the top-level work directory, e.g. /var/tmp/portage/dev-lang/ruby-<version>/work/ruby-<version>
Created attachment 125397 [details] rbconfig.rb from build directory, as requested
I'm afraid I'm not a big Ruby guru (yet), so I wouldn't know what to look for within this file...
Hmm, for me the line with "rbconfig.rb updated" gets printed before the shared library is linked. That might indicate a race condition in the build process, even though I'm also using MAKEOPTS="j2". Could you try with -j1 just to see if this might be the issue? The rbconfig.rb looks fine, so there is something else going on.
I'm afraid it doesn't seem to have helped: (I turned off the debugging options too, just in case they were causing problems.) powerpc-gentoo-linux-uclibc-ar rcu libruby18-static.a array.o bignum.o class.o compar.o dir.o dln.o enum.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -fno-strict-aliasing -fPIC -DRUBY_EXPORT -I. -I. -c main.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -fno-strict-aliasing -fPIC -DRUBY_EXPORT -L. -Wl,-z,relro -rdynamic -Wl,-export-dynamic main.o libruby18-static.a -ldl -lcrypt -lm -o miniruby rbconfig.rb updated powerpc-gentoo-linux-uclibc-gcc -shared -Wl,-soname,libruby18.so.1.8 array.o bignum.o class.o compar.o dir.o dln.o enum.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o -ldl -lcrypt -lm -o libruby18.so.1.8.6 /var/tmp/portage/dev-lang/ruby-1.8.6_p36-r3/work/ruby-1.8.6-p36/lib/mkmf.rb:8: uninitialized constant Config (NameError) from ./ext/extmk.rb:37:in `require' from ./ext/extmk.rb:37 make: *** [all] Error 1 !!! ERROR: dev-lang/ruby-1.8.6_p36-r3 failed. Call stack: ebuild.sh, line 1621: Called dyn_compile ebuild.sh, line 973: Called qa_call 'src_compile' ebuild.sh, line 44: Called src_compile ruby-1.8.6_p36-r3.ebuild, line 94: Called die
Well, the -j 1 helped in that rbconfig.rb is now built in the same place where it is built on my machine, but obviously that's not the cause. The only other thing that comes to mind is a new incarnation of bug 161566. I am not familiar with uclibc so I'm not sure how likely this is. In order to verify this, downgrade autoconf to a previous version (like 2.59) and try to emerge ruby again.
Genius! It's installed now! I used autoconf-2.59-r7, and got this: ... powerpc-gentoo-linux-uclibc-ar rcu libruby18-static.a array.o bignum.o class.o compar.o dir.o dln.o enum.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -fno-strict-aliasing -fPIC -DRUBY_EXPORT -I. -I. -c main.c powerpc-gentoo-linux-uclibc-gcc -O2 -mcpu=603e -pipe -fno-strict-aliasing -fPIC -DRUBY_EXPORT -L. -Wl,-z,relro -rdynamic -Wl,-export-dynamic main.o libruby18-static.a -ldl -lcrypt -lm -o miniruby rbconfig.rb updated powerpc-gentoo-linux-uclibc-gcc -shared -Wl,-soname,libruby18.so.1.8 array.o bignum.o class.o compar.o dir.o dln.o enum.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o -ldl -lcrypt -lm -o libruby18.so.1.8.6 compiling Win32API compiling bigdecimal make[1]: Entering directory `/var/tmp/portage/dev-lang/ruby-1.8.6_p36-r3/work/ruby-1.8.6-p36/ext/bigdecimal' mkdir -p ../../.ext/powerpc-linux-uclibc powerpc-gentoo-linux-uclibc-gcc -I. -I../.. -I../../. -I../.././ext/bigdecimal -fPIC -O2 -mcpu=603e -pipe -fno-strict-aliasing -fPIC -c bigdecimal.c powerpc-gentoo-linux-uclibc-gcc -shared -o ../../.ext/powerpc-linux-uclibc/bigdecimal.so bigdecimal.o -L'.' -L'../..' -L. -Wl,-z,relro -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/usr/lib -L. -L/usr/lib -lruby18 -ldl -lcrypt -lm -lc mkdir -p ../../.ext/common/bigdecimal cp ../.././ext/bigdecimal/lib/bigdecimal/ludcmp.rb ../../.ext/common/bigdecimal cp ../.././ext/bigdecimal/lib/bigdecimal/newton.rb ../../.ext/common/bigdecimal cp ../.././ext/bigdecimal/lib/bigdecimal/jacobian.rb ../../.ext/common/bigdecimal cp ../.././ext/bigdecimal/lib/bigdecimal/math.rb ../../.ext/common/bigdecimal cp ../.././ext/bigdecimal/lib/bigdecimal/util.rb ../../.ext/common/bigdecimal make[1]: Leaving directory `/var/tmp/portage/dev-lang/ruby-1.8.6_p36-r3/work/ruby-1.8.6-p36/ext/bigdecimal' ... So I guess this bug is some sort of weird duplicate, no? ...Thanks for helping me install! :D
Update: It also works with the current stable Ruby (1.8.6-r1), and autoconf-2.60.
Duplicate, yes, but not really weird. The problem with the bug is that the file seek functions get clobbered in some cases, so reading from files suddenly causes weird side effects, such as the read marker being reset to the beginning of the file, or the read marker being set to a high value, thus pretending the file is empty. That seems to be what is going on here. *** This bug has been marked as a duplicate of bug 161566 ***