hi i have multiple machines here for which the update from perl-5.8.8-r2 to perl-5.8.8-r4 breaks... see attachments for build logs and emerge --info
Created attachment 139413 [details] perl-5.8.8-r4 build errors on "europa"
Created attachment 139414 [details] emerge --info of "europa"
Created attachment 139416 [details] perl-5.8.8-r4 build errors on "io"
Created attachment 139417 [details] emerge --info of "io"
Created attachment 139418 [details] perl-5.8.8-r4 build errors of "it23"
Created attachment 139420 [details] emerge --info of "it23"
If you enable/disable ithreads USE flag, you need to re-emerge *all* perl packages, *including* sys-devel/libperl (using `perl-cleaner reallyall` or whatever)
Hi On all machines there were no changes to the USE flags when trying to update perl. I did run "perl-cleaner reallyall" but the problem persists. Any hints?
emerge -pv perl libperl output please.
On all 3 machines the same packages (same versions, same useflags) --8<-- [ebuild R ] sys-devel/libperl-5.8.8-r1 USE="-berkdb -debug -gdbm -ithreads" 0 kB [ebuild U ] dev-lang/perl-5.8.8-r4 [5.8.8-r2] USE="-berkdb -build -debug -doc -gdbm -ithreads -perlsuid" 0 kB --8<-- thanks for your help
All x86 systems were upgraded to perl-5.8.8-r4 by a binpkg from another system. This leaves me with the amd64 host. As this is a hardened system i tried to disable the hardened gcc by switching the gcc profile using "gcc-config". but that didn't help. I cannot recompile any of the dev-lang/perl packages (tried perl-5.8.8-r2.ebuild, perl-5.8.8-r3.ebuild). This is the output of the failed libperl emerge: [ebuild R ] sys-devel/libperl-5.8.8-r1 USE="-berkdb -debug -gdbm -ithreads" 0 kB --8<-- [...] `sh cflags "optimize='-O2 -march=k8 -pipe'" pp_sort.o` -fPIC pp_sort.c CCCMD = x86_64-pc-linux-gnu-gcc -DPERL_CORE -c -fno-strict-aliasing - pipe -Wdeclaration-after-statement -I/usr/include/gdbm -O2 -march=k8 -pipe -Wal l x86_64-pc-linux-gnu-gcc -o libperl.so.1.5.8 perl.o gv.o toke.o perly.o op.o pa d.o regcomp.o dump.o util.o mg.o reentr.o hv.o av.o run.o pp_hot.o sv.o pp.o sco pe.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o locale.o pp_pack.o pp_sort.o - lnsl -ldl -lm -lcrypt -lutil -lc -lbsd -Wl,-soname -Wl,libperl.so.`echo libperl .so.1.5.8 | cut -d. -f3` /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/../../../../lib64/Scrt1.o: In function `_ start': (.text+0x20): undefined reference to `main' collect2: ld returned 1 exit status make: *** [libperl.so.1.5.8] Error 1 [...] --8<-- I am pretty clueless right now.
I did a from scratch installation on the amd64 host in a chroot using "stage3-amd64-hardened-2007.0.tar.bz2". The perl update fails too. --8<-- [ebuild U ] dev-lang/perl-5.8.8-r4 [5.8.8-r2] USE="-berkdb* -build -debug -doc -gdbm -ithreads -perlsuid" 0 kB [...] make[2]: Entering directory `/local/portage/build/portage/dev-lang/perl-5.8.8-r4/work/perl-5.8.8/ext/B/C' ../../../miniperl "-I../../../lib" "-I../../../lib" ../../../lib/ExtUtils/xsubpp -typemap ../../../lib/ExtUtils/typemap C.xs > C.xsc && mv C.xsc C.c x86_64-pc-linux-gnu-gcc -c -fno-strict-aliasing -pipe -Wdeclaration-after-statement -O2 -march=k8 -pipe -DVERSION=\"1.04_01\" -DXS_VERSION=\"1.04_01\" -fPIC "-I../../.." C.c Running Mkbootstrap for B::C () chmod 644 C.bs rm -f ../../../lib/auto/B/C/C.so x86_64-pc-linux-gnu-gcc -L/usr/local/lib64 C.o -o ../../../lib/auto/B/C/C.so \ \ /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/../../../../lib64/Scrt1.o: In function `_start': init.c:(.text+0x21): undefined reference to `main' C.o: In function `my_runops': C.c:(.text+0x26): undefined reference to `Perl_get_hv' C.c:(.text+0x30): undefined reference to `Perl_newSViv' C.c:(.text+0x43): undefined reference to `PL_op' C.c:(.text+0x65): undefined reference to `PL_sig_pending' C.c:(.text+0x70): undefined reference to `Perl_despatch_signals' C.c:(.text+0x77): undefined reference to `PL_op' C.c:(.text+0x8d): undefined reference to `Perl_newSViv' C.c:(.text+0x9a): undefined reference to `Perl_safesysmalloc' C.c:(.text+0x159): undefined reference to `Perl_sv_setiv' C.c:(.text+0x16b): undefined reference to `Perl_sv_setref_iv' C.c:(.text+0x17b): undefined reference to `Perl_hv_store_ent' C.c:(.text+0x197): undefined reference to `Perl_sv_free' C.c:(.text+0x19e): undefined reference to `PL_tainted' C.o: In function `boot_B(void) const': C.c:(.text+0x1f7): undefined reference to `PL_markstack_ptr' C.c:(.text+0x206): undefined reference to `PL_stack_sp' C.c:(.text+0x21a): undefined reference to `PL_stack_base' C.c:(.text+0x258): undefined reference to `PL_stack_base' C.c:(.text+0x2e0): undefined reference to `Perl_croak' C.c:(.text+0x2e7): undefined reference to `PL_runops' C.c:(.text+0x2ee): undefined reference to `PL_stack_base' C.c:(.text+0x302): undefined reference to `PL_sv_yes' C.c:(.text+0x314): undefined reference to `PL_stack_sp' C.c:(.text+0x358): undefined reference to `Perl_form' C.c:(.text+0x362): undefined reference to `Perl_get_sv' C.c:(.text+0x392): undefined reference to `Perl_form' C.c:(.text+0x39c): undefined reference to `Perl_get_sv' C.c:(.text+0x3b0): undefined reference to `Perl_sv_2pv_flags' C.c:(.text+0x3cb): undefined reference to `Perl_sv_2pv_flags' collect2: ld returned 1 exit status make[2]: *** [../../../lib/auto/B/C/C.so] Error 1 make[2]: Leaving directory `/local/portage/build/portage/dev-lang/perl-5.8.8-r4/work/perl-5.8.8/ext/B/C' make[1]: *** [subdirs] Error 2 make[1]: Leaving directory `/local/portage/build/portage/dev-lang/perl-5.8.8-r4/work/perl-5.8.8/ext/B' make: *** [lib/auto/B/B.so] Error 2 --8<--
I am unable to replicate this, either with the 2007.0 stage-3 amd64 tarball or the current (from barfoo.org) amd64 hardened stage-3 tarball. Georg: can you clarify what modifications you're making to the system before running 'emerge perl' or the like?
Sorry for the spam, also cannot replicate with tarball mentioned in comment #12. Definitely need clarification on modifications Georg's making.
It's been 30 days with no clarification and no further info...
Sorry for taking me so long. What exactly do you mean by "modifications" ? Right now i can only report that i fail to update to sys-devel/libperl-5.8.8-r2 and dev-lang/perl-5.8.8-r5. I will reinstall the system in the next days (using 2008 beta). I will report back with (hopefully) success or failure information. Anyway thanks for your time and patience.
Your 'emerge --info' output doesn't seem to indicate you've done anything untoward in your configuration, but I couldn't replicate your error with any of the unmodified, published stage3 tarballs. That would seem to indicate that something you're setting in make.conf, your profile, or elsewhere is/was causing the issue.
i cannot update all the other machines to perl-5.8.8-r5 i've previously updated via binary packages. ;-) This is the used profile. The profile is unchanged. root@io:/etc # ls -la make.profile lrwxrwxrwx 1 root root 41 2006-10-29 19:52 make.profile -> ../usr/portage/profiles/hardened/x86/2.6/ This is the /etc/make.conf of "io". the make.conf of the other hosts looks the same. --8<-- ## portage directories ## =================== BASEDIR=/local/portage PORTDIR=${BASEDIR}/tree DISTDIR=${BASEDIR}/distfiles PKGDIR=${BASEDIR}/packages PORTAGE_TMPDIR=${BASEDIR}/build PORTDIR_OVERLAY=${BASEDIR}/overlay #PORT_LOGDIR=/var/log/portage ## advanced features ## ================= MAKEOPTS="-j3" PORTAGE_NICENESS="3" AUTOCLEAN="yes" CLEAN_DELAY="0" FEATURES="sandbox userpriv userfetch" #stricter test" #CCACHE_SIZE="2G" #DISTCC_DIR="${PORT_TMPDIR}/.distcc" MISDN_CARDS="hfcpci" ALSA_CARDS="" APACHE2_MODULES="" VIDEO_CARDS="" LCD_DEVICES="" INPUT_DEVICES="" ALSA_PCM_PLUGINS="" ## portage log ## =========== PORTAGE_ELOG_CLASSES="*" PORTAGE_ELOG_SYSTEM="echo syslog mail" PORTAGE_ELOG_MAILSUBJECT="portage: merged \${PACKAGE}" ## host setting ## ============ CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium3 -O2" CXXFLAGS="${CFLAGS}" ## global use flags ## router profile ## ================ USE="-* hardened pic nptl nptlonly mmx sse acpi unicode nls utf8 readline ssl crypt caps usb acl zlib bzip2 pam ipv6 logrotate bash-completion activefilter " # fetching files ## ============== FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp \${URI} -P \${DISTDIR}" RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp \${URI} -P \${DISTDIR}" GENTOO_MIRRORS="http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo" #PORTAGE_BINHOST="ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp/" #PORTAGE_BINHOST="http://grp.mirror.site/gentoo/grp/1.4/i686/athlon-xp/" ## synchronizing portage ## ===================== SYNC="rsync://rsync.de.gentoo.org/gentoo-portage" #RSYNC_RETRIES="3" #RSYNC_TIMEOUT=180 --8<--
Ok. I finally found whats causing the build to fail. All those hosts have a special kernel-release number "uname -r" (wt CONFIG_LOCALVERSION) which perls configure script fails to parse correctly. For example: --8<-- gweiss@io:~> uname -r 2.6.24-hardened-r2=io-gw03 --8<-- If i remove the "equal" character or replace it with "minus" the build process runs fine. I understand this is a special issue. Upstream might still be interested in fixing it. I'm not aware that the CONFIG_LOCALVERSION is restricted to only a subset of characters.
The same error occurs if you have an '=' in your host name. Just change your hostname from foo to HOSTNAME=foo and emerge libperl will fail in the same place with the same error, no kernel rebuild required. Thanks George for opening this bug and giving me a clue. Something I thought was a minor niggle to deal with "later" turned out to be the problem.
(In reply to comment #20) > The same error occurs if you have an '=' in your host name. Just change your > hostname from foo to HOSTNAME=foo and emerge libperl will fail in the same > place with the same error, no kernel rebuild required. So the bug lays in libperl or: http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=8 cat /etc/hostname HOSTNAME="kim" make[2]: Entering directory `/var/tmp/portage/sys-devel/libperl-5.8.8-r2/work/perl-5.8.8/x2p' echo Makefile.SH cflags.SH | tr ' ' '\n' >.shlist make[2]: Leaving directory `/var/tmp/portage/sys-devel/libperl-5.8.8-r2/work/perl-5.8.8/x2p' Updating makefile... make[1]: Leaving directory `/var/tmp/portage/sys-devel/libperl-5.8.8-r2/work/perl-5.8.8/x2p' make -j2 -j1 -f Makefile LDFLAGS=-Wl,-O1 LIBPERL=libperl.so.1.5.8 libperl.so.1.5.8 `sh cflags "optimize='-O2 -mtune=i686 -pipe'" perl.o` -fPIC perl.c CCCMD = i486-pc-linux-gnu-gcc -DPERL_CORE -c -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/include/gdbm -O2 -mtune=i686 -pipe -Wall perl.c: In function 'S_parse_body': perl.c:1920: error: expected ')' before 'kim' perl.c: In function 'S_init_predump_symbols': perl.c:4552: error: expected ')' before 'kim' make: *** [perl.o] Error 1 etc.
doc suggested you set hostname in /etc/conf.d/hostname not /etc/hostname !
perl-5.10.1 sets -Dmyhostname='localhost' I hope this fixes the problem too.