Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 203458

Summary: dev-lang/perl-5.8.8-r4 update fails
Product: Gentoo Linux Reporter: Georg Weiss <gentoo>
Component: New packagesAssignee: Gentoo Perl team <perl>
Status: RESOLVED FIXED    
Severity: normal CC: aoz.syn, manifold
Priority: High    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: perl-5.8.8-r4 build errors on "europa"
emerge --info of "europa"
perl-5.8.8-r4 build errors on "io"
emerge --info of "io"
perl-5.8.8-r4 build errors of "it23"
emerge --info of "it23"

Description Georg Weiss 2007-12-27 14:11:24 UTC
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
Comment 1 Georg Weiss 2007-12-27 14:13:36 UTC
Created attachment 139413 [details]
perl-5.8.8-r4 build errors on "europa"
Comment 2 Georg Weiss 2007-12-27 14:14:27 UTC
Created attachment 139414 [details]
emerge --info of "europa"
Comment 3 Georg Weiss 2007-12-27 14:16:01 UTC
Created attachment 139416 [details]
perl-5.8.8-r4 build errors on "io"
Comment 4 Georg Weiss 2007-12-27 14:16:37 UTC
Created attachment 139417 [details]
emerge --info of "io"
Comment 5 Georg Weiss 2007-12-27 14:17:22 UTC
Created attachment 139418 [details]
perl-5.8.8-r4 build errors of "it23"
Comment 6 Georg Weiss 2007-12-27 14:18:06 UTC
Created attachment 139420 [details]
emerge --info of "it23"
Comment 7 Jakub Moc (RETIRED) gentoo-dev 2007-12-27 14:38:15 UTC
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)
Comment 8 Georg Weiss 2008-01-11 15:47:21 UTC
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?
Comment 9 Jakub Moc (RETIRED) gentoo-dev 2008-01-11 15:53:54 UTC
emerge -pv perl libperl output please.
Comment 10 Georg Weiss 2008-01-11 16:16:13 UTC
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
Comment 11 Georg Weiss 2008-01-28 13:09:42 UTC
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.
Comment 12 Georg Weiss 2008-02-06 10:27:16 UTC
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<--
Comment 13 RB 2008-03-25 21:15:58 UTC
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?
Comment 14 RB 2008-03-26 15:29:54 UTC
Sorry for the spam, also cannot replicate with tarball mentioned in comment #12.  Definitely need clarification on modifications Georg's making.
Comment 15 RB 2008-04-27 16:43:40 UTC
It's been 30 days with no clarification and no further info...
Comment 16 Georg Weiss 2008-05-21 17:06:27 UTC
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.
Comment 17 RB 2008-05-21 17:32:51 UTC
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.
Comment 18 Georg Weiss 2008-05-24 11:22:08 UTC
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<--
Comment 19 Georg Weiss 2008-05-27 21:41:46 UTC
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.
Comment 20 Robert Larkin 2008-07-18 14:52:26 UTC
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.
Comment 21 aparat2 2009-06-18 05:28:52 UTC
(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.
Comment 22 Sergiy Borodych 2009-06-18 12:12:55 UTC
doc suggested you set hostname in /etc/conf.d/hostname
not /etc/hostname !
Comment 23 Torsten Veller (RETIRED) gentoo-dev 2009-09-29 07:03:20 UTC
perl-5.10.1 sets
-Dmyhostname='localhost'

I hope this fixes the problem too.