Date: Sat, 30 Apr 2016 23:06:45 -0700 From: Mark Millard <markmi@dsl-only.net> To: mat@FreeBSD.org Cc: freebsd-ports@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r414355: perl5 5.22.2 build broken, at least on powerpc64, powerpc, arm; e.g.: . . ./lang/perl5.22/work/perl-5.22.2/perl --version reports 5.22.1 ; more Message-ID: <AA609933-219F-4C45-8902-AA5A39F7E44F@dsl-only.net>
next in thread | raw e-mail | index | archive | help
[Trying MAKE_JOBS_UNSAFE=3Dyes did not change the below, other than the = detailed order. The text quoted from the logs are mostly the originals = with -j4 in use.] As of /usr/ports -r414369 attempting to update perl5.22 to perl5.22.2 = from 5.22.1 produces a perl executable that says it is 5.22.1, which = results in: > --- pod/perltoc.pod --- > = LD_LIBRARY_PATH=3D/usr/obj/portswork/usr/ports/lang/perl5.22/work/perl\-5.= 22.2 ./perl -Ilib -f pod/buildtoc -q > pod/buildtoc: Perl lib version (5.22.2) doesn't match executable = '/usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/perl' = version (5.22.1) at lib/Config.pm line 62. > Compilation failed in require at lib/locale.pm line 4. > BEGIN failed--compilation aborted at lib/locale.pm line 4. > Compilation failed in require at pod/buildtoc line 10. > BEGIN failed--compilation aborted at pod/buildtoc line 10. > *** [pod/perltoc.pod] Error code 255 >=20 > make[2]: stopped in = /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2 > 1 error (This was using portmaster.) > # /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/perl = --version >=20 > This is perl 5, version 22, subversion 1 (v5.22.1) built for = powerpc-freebsd-thread-multi >=20 > Copyright 1987-2015, Larry Wall >=20 > Perl may be copied only under the terms of either the Artistic License = or the > GNU General Public License, which may be found in the Perl 5 source = kit. >=20 > Complete documentation for Perl, including FAQ lists, should be found = on > this system using "man perl" or "perldoc perl". If you have access to = the > Internet, point your browser at http://www.perl.org/, the Perl Home = Page. An oddity of the command sequence shown in the logs is the = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE use for the "-o perl" related = command before that area has any chance of installing 5.22.2: when down = under under /usr/obj/portswork/usr/ports/lang/perl5.22/work/. . . > rm -f libperl.so.5.22.2 > /usr/local/bin/gcc49 -o libperl.so.5.22.2 -shared -L/usr/local/lib = -fstack-protector-strong -Wl,-soname,libperl.so.5.22 op.o perl.o gv.o = toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro > _core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o = pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o = globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pa > ck.o pp_sort.o caretx.o DynaLoader.o -lpthread -lm -lcrypt -lutil > /usr/local/bin/gcc49 -o perl -lpthread -Wl,-E = -fstack-protector-strong -L/usr/local/lib = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE perlmain.o libperl.so.5.22.2 = `cat ext.libs` -lpthread -lm -lcrypt -l > util For FreeBSD the use of the notation = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE (as seen in the log file) is = odd because of the dual use of -R in ld for FreeBSD: > if the -R option is > followed by a directory name, rather than a file name, it = is > treated as the -rpath option For the "gcc49 -o perl" -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE is = used but references a directory the contents of which have old 5.22.1 = files, such as (for the powerpc64 and powerpc example contexts in my = case): > # ls -l /usr/local/lib/perl5/5.22/mach/CORE/libperl.so* > lrwxr-xr-x 1 root wheel 17 Apr 23 22:40 = /usr/local/lib/perl5/5.22/mach/CORE/libperl.so -> libperl.so.5.22.1 > lrwxr-xr-x 1 root wheel 17 Apr 23 22:40 = /usr/local/lib/perl5/5.22/mach/CORE/libperl.so.5.22 -> libperl.so.5.22.1 > -r--r--r-- 1 root wheel 5379880 Apr 23 22:38 = /usr/local/lib/perl5/5.22/mach/CORE/libperl.so.5.22.1 (This was powerpc64 using gcc49. For powerpc I used gcc5 but the "gcc5 = -o perl" got the same sort of result.) Looking around with find and grep shows various uses of = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE notation: > # find /usr/obj/portswork/usr/ports/lang/perl5.22/ -exec grep Wl,-R {} = \; -print | more > . . . (most are omitted but some interesting ones follow) . . . > -L*|-R*|-Wl,-R*) > xxx=3D"-Wl,-R$shrpdir" > = /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/Configure.orig= > -L*|-R*|-Wl,-R*) > xxx=3D"-Wl,-R$shrpdir" > = /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/Configure.bak > ccdlflags=3D' -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE' > /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/config.sh > CCDLFLAGS =3D -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE > /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/Makefile > dlsrc=3Ddl_dlopen.xs, dlext=3Dso, d_dlsymun=3Dundef, ccdlflags=3D' = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE' > /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/myconfig > CCDLFLAGS =3D -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE > /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/makefile > CCDLFLAGS =3D -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE > = /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/makefile.old Supporting Details. . . > # svnlite info /usr/ports > Path: /usr/ports > Working Copy Root Path: /usr/ports > URL: https://svn0.us-west.freebsd.org/ports/head > Relative URL: ^/head > Repository Root: https://svn0.us-west.freebsd.org/ports > Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5 > Revision: 414369 > Node Kind: directory > Schedule: normal > Last Changed Author: mm > Last Changed Rev: 414369 > Last Changed Date: 2016-04-30 15:14:07 -0700 (Sat, 30 Apr 2016) The same sort of thing is seen on both of the below (powerpc64 and = powerpc of different 11.0-CURRENT vintages): > # uname -aKU > FreeBSD FBSDG5C0 11.0-CURRENT FreeBSD 11.0-CURRENT #32 r298518M: Sat = Apr 23 20:01:08 PDT 2016 = root@FBSDG5C0:/usr/obj/xtoolchain/powerpc.powerpc64/usr/src/sys/GENERIC64v= tsc-NODEBUG powerpc 1100106 1100106 > # uname -aKU > FreeBSD FBSDG4C1 11.0-CURRENT FreeBSD 11.0-CURRENT #9 r297048M: Sat = Mar 19 17:33:56 PDT 2016 = markmi@FreeBSDx64:/usr/obj/clang_gcc421/powerpc.powerpc/usr/src/sys/GENERI= Cvtsc-NODEBUG powerpc 1100103 1100103 For the powerpc64 context (using gcc49): > # more /etc/make.conf=20 > DEFAULT_VERSIONS+=3Dperl5=3D5.22 > WRKDIRPREFIX=3D/usr/obj/portswork > WITH_DEBUG=3D > WITH_DEBUG_FILES=3D > MALLOC_PRODUCTION=3D > CC=3D/usr/local/bin/gcc49 > CXX=3D/usr/local/bin/g++49 > CPP=3D/usr/local/bin/cpp49 > CROSS_BINUTILS_PREFIX=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/ > AS=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/as > AR=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/ar > LD=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/ld > NM=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/nm > OBJCOPY=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/objcopy > OBJDUMP=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/objdump > RANLIB=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/ranlib > SIZE=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/size > #NO-SUCH: STRINGS=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/strings= > STRINGS=3D/usr/local/bin/strings For the powerpc context (using gcc5): > # more /etc/make.conf=20 > DEFAULT_VERSIONS+=3Dperl5=3D5.22 > WRKDIRPREFIX=3D/usr/obj/portswork > WITH_DEBUG=3D > WITH_DEBUG_FILES=3D > MALLOC_PRODUCTION=3D > CC=3D/usr/local/bin/gcc5 > CXX=3D/usr/local/bin/g++5 > CPP=3D/usr/local/bin/cpp5 > CROSS_BINUTILS_PREFIX=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/ > AS=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/as > AR=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/ar > LD=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/ld > NM=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/nm > OBJCOPY=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/objcopy > OBJDUMP=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/objdump > RANLIB=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/ranlib > SIZE=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/size > #NO-SUCH: STRINGS=3D/usr/local/powerpc64-portbld-freebsd11.0/bin/strings= > STRINGS=3D/usr/local/bin/strings Another oddity that I expect also traces back to = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE use . . . When I try to build perl5.22 for the first time ever (in a rpi2 armv7a = context as it happens) the attempt results in: > --- perl --- > /usr/bin/clang -target armv6--freebsd11.0-gnueabi -march=3Darmv7-a = -mcpu=3Dcortex-a7 -mfloat-abi=3Dsoftfp -mno-unaligned-access -o perl = -lpthread -Wl,-E -fstack-protector-strong -L/usr/local/lib = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE perlmain.o libperl.so.5.22.2 = `cat ext.libs` -lpthread -lm -lcrypt -lutil > --- MANIFEST.srt --- > --- extras.make --- > --- MANIFEST.srt --- > Shared object "libperl.so.5.22" not found, required by "perl" > WARNING: re-sorting MANIFEST > Shared object "libperl.so.5.22" not found, required by "perl" > *** [MANIFEST.srt] Error code 1 >=20 > make[2]: stopped in = /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2 Reminder: For FreeBSD the use of the notation = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE (as seen in the log file) is = odd because of the dual use of -R in ld for FreeBSD: > if the -R option is > followed by a directory name, rather than a file name, it = is > treated as the -rpath option So which interpretation does -R get when = /usr/local/lib/perl5/5.22/mach/CORE does not exist yet because 5.22 has = yet to even be created in /usr/local/. . .? = /usr/local/lib/perl5/5.22/mach/CORE is then neither a directory nor a = named file name that can supply symbols. But in contexts where the directory /usr/local/lib/perl5/5.22/mach/CORE = already exists and contains a older libperl.so.5.22 beforehand (such as = it referencing libperl.so.5.22.1 ) it does not get the specific = not-found errors at this point because it then uses the older = libperl.so.5.22 instead. > # ls -l /usr/local/lib/perl5/5.22/mach/CORE/libperl.so* > lrwxr-xr-x 1 root wheel 17 Apr 23 22:40 = /usr/local/lib/perl5/5.22/mach/CORE/libperl.so -> libperl.so.5.22.1 > lrwxr-xr-x 1 root wheel 17 Apr 23 22:40 = /usr/local/lib/perl5/5.22/mach/CORE/libperl.so.5.22 -> libperl.so.5.22.1 > -r--r--r-- 1 root wheel 5379880 Apr 23 22:38 = /usr/local/lib/perl5/5.22/mach/CORE/libperl.so.5.22.1 This was the type of context for the powerpc64 and powerpc examples = noted earlier. Again: this appears to trace back to what the earlier = find-with-grep showed: >=20 > # find /usr/obj/portswork/usr/ports/lang/perl5.22/ -exec grep Wl,-R {} = \; -print | more > . . . (most are omitted but some interesting ones follow) . . . > -L*|-R*|-Wl,-R*) > xxx=3D"-Wl,-R$shrpdir" > = /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/Configure.orig= > -L*|-R*|-Wl,-R*) > xxx=3D"-Wl,-R$shrpdir" > = /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/Configure.bak > ccdlflags=3D' -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE' > /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/config.sh > CCDLFLAGS =3D -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE > /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/Makefile > dlsrc=3Ddl_dlopen.xs, dlext=3Dso, d_dlsymun=3Dundef, ccdlflags=3D' = -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE' > /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/myconfig > CCDLFLAGS =3D -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE > /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/makefile > CCDLFLAGS =3D -Wl,-R/usr/local/lib/perl5/5.22/mach/CORE > = /usr/obj/portswork/usr/ports/lang/perl5.22/work/perl-5.22.2/makefile.old =3D=3D=3D Mark Millard markmi at dsl-only.net
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AA609933-219F-4C45-8902-AA5A39F7E44F>