From 05f5b6e455d4daf4fcdf951fb49bae0a81a77c02 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sun, 15 Feb 2015 12:57:53 +0100 Subject: [PATCH] perl: update to 5.20.2 and make the soname versioned (#871). - Merged some patches from Gentoo for misc fixes/tweaks and versioned soname. - Update common/shlibs with libperl.so.5.20 soname. --- common/shlibs | 2 +- srcpkgs/perl/patches/D-SHA-CFLAGS.diff | 32 +++++ srcpkgs/perl/patches/cleanup-paths.diff | 111 ++++++++++++++++++ .../perl/patches/create_libperl_soname.diff | 58 +++++++++ .../perl/patches/drop_fstack_protector.diff | 66 +++++++++++ srcpkgs/perl/patches/perldoc-less-R.diff | 30 +++++ srcpkgs/perl/patches/usr_local.diff | 75 ++++++++++++ srcpkgs/perl/template | 17 ++- 8 files changed, 384 insertions(+), 7 deletions(-) create mode 100644 srcpkgs/perl/patches/D-SHA-CFLAGS.diff create mode 100644 srcpkgs/perl/patches/cleanup-paths.diff create mode 100644 srcpkgs/perl/patches/create_libperl_soname.diff create mode 100644 srcpkgs/perl/patches/drop_fstack_protector.diff create mode 100644 srcpkgs/perl/patches/perldoc-less-R.diff create mode 100644 srcpkgs/perl/patches/usr_local.diff diff --git a/common/shlibs b/common/shlibs index 2eb7500b202..592c71c0a13 100644 --- a/common/shlibs +++ b/common/shlibs @@ -54,7 +54,7 @@ libgcc_s.so.1 libgcc-4.4.0_1 libgcj.so.15 libgcj-4.9.0_1 libgcj-tools.so.15 libgcj-4.9.0_1 libgij.so.15 libgcj-4.9.0_1 -libperl.so perl-5.20.1_1 +libperl.so.5.20 perl-5.20.2_1 libmp.so.3 gmp-5.0.1_1 libgmp.so.10 gmp-5.0.1_1 libgmpxx.so.4 gmpxx-6.0.0_2 diff --git a/srcpkgs/perl/patches/D-SHA-CFLAGS.diff b/srcpkgs/perl/patches/D-SHA-CFLAGS.diff new file mode 100644 index 00000000000..aeb1fe842d9 --- /dev/null +++ b/srcpkgs/perl/patches/D-SHA-CFLAGS.diff @@ -0,0 +1,32 @@ +From a6a9d8165ffe93c36e0643c4557155fb10df8c4a Mon Sep 17 00:00:00 2001 +From: Matthias Maier +Date: Sat, 29 Nov 2014 00:34:14 +0100 +Subject: [PATCH] Do not set custom CFLAGS in cpan/Digest-SHA + +Bug-Gentoo: https://bugs.gentoo.org/506818 + +Patch-Name: gentoo/D-SHA-CFLAGS.diff +--- + cpan/Digest-SHA/Makefile.PL | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/cpan/Digest-SHA/Makefile.PL b/cpan/Digest-SHA/Makefile.PL +index 3d83865..f0d08a1 100644 +--- cpan/Digest-SHA/Makefile.PL ++++ cpan/Digest-SHA/Makefile.PL +@@ -27,12 +27,6 @@ if ($^O eq 'VMS') { + } + } + +- # Enhance performance on Intel when using gcc +- +-if ($Config{archname} =~ /^i[3456]86/ && $Config{ccname} eq 'gcc') { +- push(@extra, OPTIMIZE => '-O1 -fomit-frame-pointer'); +-} +- + my %att = ( + 'NAME' => 'Digest::SHA', + 'VERSION_FROM' => $PM, +-- +2.1.3 + diff --git a/srcpkgs/perl/patches/cleanup-paths.diff b/srcpkgs/perl/patches/cleanup-paths.diff new file mode 100644 index 00000000000..e11af39544b --- /dev/null +++ b/srcpkgs/perl/patches/cleanup-paths.diff @@ -0,0 +1,111 @@ +From bd709251a971ce7855857ba230123605cfa710e7 Mon Sep 17 00:00:00 2001 +From: Vladimir Smirnov +Date: Mon, 19 May 2014 19:54:51 +0400 +Subject: [PATCH] Cleanup PATH and shrpenv + +cut the crap of inventing paths, or adding search paths that we don't +use + +Patch-Name: gentoo/cleanup-paths.diff +Original-By: Torsten Veller +--- + Configure | 79 --------------------------------------------------------------- + 1 file changed, 79 deletions(-) + +diff --git a/Configure b/Configure +index b221390..63b8848 100755 +--- Configure ++++ Configure +@@ -105,28 +105,6 @@ if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then + fi + fi + +-: Proper PATH setting +-paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin' +-paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin" +-paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin" +-paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin" +-paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb" +-paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin" +-paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib" +-paths="$paths /sbin /usr/sbin /usr/libexec" +-paths="$paths /system/gnu_library/bin" +- +-for p in $paths +-do +- case "$p_$PATH$p_" in +- *$p_$p$p_*) ;; +- *) test -d $p && PATH=$PATH$p_$p ;; +- esac +-done +- +-PATH=.$p_$PATH +-export PATH +- + : shall we be using ksh? + inksh='' + needksh='' +@@ -8500,60 +8478,6 @@ EOM + ;; + esac + +-# How will the perl executable find the installed shared $libperl? +-# Add $xxx to ccdlflags. +-# If we can't figure out a command-line option, use $shrpenv to +-# set env LD_RUN_PATH. The main perl makefile uses this. +-shrpdir=$archlibexp/CORE +-xxx='' +-tmp_shrpenv='' +-if "$useshrplib"; then +- case "$osname" in +- aix) +- # We'll set it in Makefile.SH... +- ;; +- solaris) +- xxx="-R $shrpdir" +- ;; +- freebsd|mirbsd|netbsd|openbsd|interix|dragonfly|bitrig) +- xxx="-Wl,-R$shrpdir" +- ;; +- bsdos|linux|irix*|dec_osf|gnu*|haiku) +- xxx="-Wl,-rpath,$shrpdir" +- ;; +- next) +- # next doesn't like the default... +- ;; +- hpux*) +- # hpux doesn't like the default, either. +- tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\"" +- ;; +- cygwin) +- # cygwin needs only ldlibpth +- ;; +- *) +- tmp_shrpenv="env LD_RUN_PATH=$shrpdir" +- ;; +- esac +- case "$xxx" in +- '') ;; +- *) +- # Only add $xxx if it isn't already in ccdlflags. +- case " $ccdlflags " in +- *" $xxx "*) ;; +- *) ccdlflags="$ccdlflags $xxx" +- cat <&4 +- +-Adding $xxx to the flags +-passed to $ld so that the perl executable will find the +-installed shared $libperl. +- +-EOM +- ;; +- esac +- ;; +- esac +-fi + # Fix ccdlflags in AIX for building external extensions. + # (For building Perl itself bare -bE:perl.exp is needed, + # Makefile.SH takes care of this.) +-- +1.9.3 + diff --git a/srcpkgs/perl/patches/create_libperl_soname.diff b/srcpkgs/perl/patches/create_libperl_soname.diff new file mode 100644 index 00000000000..621ef8a5bdb --- /dev/null +++ b/srcpkgs/perl/patches/create_libperl_soname.diff @@ -0,0 +1,58 @@ +From eb67d0bdd774241d93c7aad72fa894da725020aa Mon Sep 17 00:00:00 2001 +From: Vladimir Smirnov +Date: Mon, 19 May 2014 19:41:49 +0400 +Subject: [PATCH] Set libperl soname + +Bug-Gentoo: https://bugs.gentoo.org/286840 + +Patch-Name: gentoo/create_libperl_soname.diff + +Ported to Perl 5.20 +--- + Makefile.SH | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/Makefile.SH b/Makefile.SH +index b65a7f3..a8b838f 100755 +--- Makefile.SH ++++ Makefile.SH +@@ -59,7 +59,7 @@ true) + ${api_revision}.${api_version}.${api_subversion} \ + -current_version \ + ${revision}.${patchlevel}.${subversion} \ +- -install_name \$(shrpdir)/\$@" ++ -install_name \$(shrpdir)/libperl.${revision}.${patchlevel}.dylib" + ;; + cygwin*) + shrpldflags="$shrpldflags -Wl,--out-implib=libperl.dll.a -Wl,--image-base,0x52000000" +@@ -67,13 +67,15 @@ true) + ;; + sunos*) + linklibperl="-lperl" ++ shrpldflags="$shrpldflags -Wl,-soname -Wl,libperl.so.${revision}.${patchlevel}" + ;; +- netbsd*|freebsd[234]*|openbsd*|dragonfly*|bitrig*) ++ netbsd*|freebsd*|openbsd*|dragonfly*|bitrig*) + linklibperl="-L. -lperl" ++ shrpldflags="$shrpldflags -Wl,-soname -Wl,libperl.so.${revision}.${patchlevel}" + ;; + interix*) + linklibperl="-L. -lperl" +- shrpldflags="$shrpldflags -Wl,--image-base,0x57000000" ++ shrpldflags="$shrpldflags -Wl,--image-base,0x57000000 -Wl,-soname -Wl,libperl.so.${revision}.${patchlevel}" + ;; + aix*) + case "$cc" in +@@ -111,6 +113,9 @@ true) + linklibperl='libperl.x' + DPERL_EXTERNAL_GLOB='' + ;; ++ linux*) ++ shrpldflags="$shrpldflags -Wl,-soname -Wl,libperl.so.${revision}.${patchlevel}" ++ ;; + esac + case "$ldlibpthname" in + '') ;; +-- +1.9.3 + diff --git a/srcpkgs/perl/patches/drop_fstack_protector.diff b/srcpkgs/perl/patches/drop_fstack_protector.diff new file mode 100644 index 00000000000..baf43509284 --- /dev/null +++ b/srcpkgs/perl/patches/drop_fstack_protector.diff @@ -0,0 +1,66 @@ +From 423890b1db83fce87d1283293a3d207e8f18aff4 Mon Sep 17 00:00:00 2001 +From: Vladimir Smirnov +Date: Mon, 19 May 2014 19:44:44 +0400 +Subject: [PATCH] Don't force -fstack-protector on everyone + +Bug-Gentoo: https://bugs.gentoo.org/348557 + +Patch-Name: gentoo/drop_fstack_protector.diff + +Original by Torsten Veller, ported to perl 5.20 +--- + Configure | 24 ------------------------ + 1 file changed, 24 deletions(-) + +diff --git a/Configure b/Configure +index 293ef61..b221390 100755 +--- Configure ++++ Configure +@@ -5364,12 +5364,6 @@ default|recommended) + # is to add the flag to the flags passed to the compiler at link time, + # as that way the compiler can do the right implementation dependant + # thing. (NWC) +- case "$gccversion" in +- ?*) set stack-protector -fstack-protector +- eval $checkccflag +- ;; +- esac +- ;; + esac + + case "$mips_type" in +@@ -5507,15 +5501,6 @@ case "$ldflags" in + ;; + *) dflt="$ldflags";; + esac +-# See note above about -fstack-protector +-case "$ccflags" in +-*-fstack-protector*) +- case "$dflt" in +- *-fstack-protector*) ;; # Don't add it again +- *) dflt="$dflt -fstack-protector" ;; +- esac +- ;; +-esac + + : Try to guess additional flags to pick up local libraries. + for thislibdir in $libpth; do +@@ -8292,15 +8277,6 @@ EOM + ''|' ') dflt='none' ;; + esac + +- case "$ldflags" in +- *-fstack-protector*) +- case "$dflt" in +- *-fstack-protector*) ;; # Don't add it again +- *) dflt="$dflt -fstack-protector" ;; +- esac +- ;; +- esac +- + rp="Any special flags to pass to $ld to create a dynamically loaded library?" + . ./myread + case "$ans" in +-- +1.9.3 + diff --git a/srcpkgs/perl/patches/perldoc-less-R.diff b/srcpkgs/perl/patches/perldoc-less-R.diff new file mode 100644 index 00000000000..8837dc2a98f --- /dev/null +++ b/srcpkgs/perl/patches/perldoc-less-R.diff @@ -0,0 +1,30 @@ +From 6ec80ea3574a990f02aebbeed5cf051b96cb939d Mon Sep 17 00:00:00 2001 +From: Niko Tyni +Date: Sat, 23 Aug 2014 18:46:43 -0700 +Subject: Tell the 'less' pager to allow terminal escape sequences + +The 'ToTerm' backend generates terminal escape sequences that +the 'less' pager does not display by default. The "-R" option +controls this, so pass it in the LESS environment variable +to avoid disturbing other pager invocations. + +Bug-Debian: https://bugs.debian.org/758689 +Patch-Name: debian/perldoc-less-R.diff +--- + cpan/Pod-Perldoc/lib/Pod/Perldoc.pm | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm b/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm +index 6ddd21d..1089f5b 100644 +--- cpan/Pod-Perldoc/lib/Pod/Perldoc.pm ++++ cpan/Pod-Perldoc/lib/Pod/Perldoc.pm +@@ -1892,6 +1892,9 @@ sub page { # apply a pager to the output file + if ($self->is_vms) { + last if system("$pager $output") == 0; + } else { ++ # fix visible escape codes in ToTerm output ++ # https://bugs.debian.org/758689 ++ local $ENV{LESS} = defined $ENV{LESS} ? "$ENV{LESS} -R" : "-R"; + last if system("$pager \"$output\"") == 0; + } + } diff --git a/srcpkgs/perl/patches/usr_local.diff b/srcpkgs/perl/patches/usr_local.diff new file mode 100644 index 00000000000..bc2135f0ba4 --- /dev/null +++ b/srcpkgs/perl/patches/usr_local.diff @@ -0,0 +1,75 @@ +From 1b9950c255b7d5f13b8c65bde26151908f30fc10 Mon Sep 17 00:00:00 2001 +From: Vladimir Smirnov +Date: Mon, 19 May 2014 19:58:00 +0400 +Subject: [PATCH] Remove /usr/local paths + +remove /usr/local paths from all stuff thats used +in Configure script + +Patch-Name: gentoo/usr_local.diff +Original-By: Torsten Veller +--- + Configure | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +diff --git a/Configure b/Configure +index 63b8848..d0a3c28 100755 +--- Configure ++++ Configure +@@ -1315,8 +1315,7 @@ archobjs='' + archname='' + : Possible local include directories to search. + : Set locincpth to "" in a hint file to defeat local include searches. +-locincpth="/usr/local/include /opt/local/include /usr/gnu/include" +-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include" ++locincpth="" + : + : no include file wanted by default + inclwanted='' +@@ -1329,12 +1328,11 @@ libnames='' + : change the next line if compiling for Xenix/286 on Xenix/386 + xlibpth='/usr/lib/386 /lib/386' + : Possible local library directories to search. +-loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib" +-loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib" ++loclibpth="" + + : general looking path for locating libraries + glibpth="/lib /usr/lib $xlibpth" +-glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib" ++glibpth="$glibpth /usr/ccs/lib /usr/ucblib" + test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth" + test -f /shlib/libc.so && glibpth="/shlib $glibpth" + test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64" +@@ -4914,7 +4912,7 @@ esac + : Set private lib path + case "$plibpth" in + '') if ./mips; then +- plibpth="$incpath/usr/lib $sysroot/usr/local/lib $sysroot/usr/ccs/lib" ++ plibpth="$incpath/usr/lib $sysroot/usr/ccs/lib" + fi;; + esac + case "$libpth" in +@@ -20513,7 +20511,7 @@ else + case "$ranlib" in + :) ranlib='';; + '') +- ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin` ++ ranlib=`./loc ranlib X /usr/bin /bin` + $test -f $ranlib || ranlib='' + ;; + esac +@@ -23566,8 +23564,8 @@ lkflags='$lkflags' + ln='$ln' + lns='$lns' + localtime_r_proto='$localtime_r_proto' +-locincpth='$locincpth' +-loclibpth='$loclibpth' ++locincpth="" ++loclibpth="" + longdblsize='$longdblsize' + longlongsize='$longlongsize' + longsize='$longsize' +-- +1.9.3 + diff --git a/srcpkgs/perl/template b/srcpkgs/perl/template index c0878d3f4f0..0b0ddd4ebb8 100644 --- a/srcpkgs/perl/template +++ b/srcpkgs/perl/template @@ -1,6 +1,6 @@ # Template build file for 'perl'. pkgname=perl -version=5.20.1 +version=5.20.2 revision=1 hostmakedepends="less" makedepends="zlib-devel bzip2-devel gdbm-devel db-devel>=5.3" @@ -9,7 +9,7 @@ maintainer="Juan RP " homepage="http://www.perl.org" license="Artistic, GPL-1" distfiles="http://www.cpan.org/src/5.0/perl-${version}.tar.gz" -checksum=fef10210f9e6f4dc2d190be0aee8e1fa2af664630f1d415868d33eebca26d4b5 +checksum=b1a43992a717d506095856d370550caa11dba8132a4fdaa186a1ae7e1fbd9b9d provides="perl-Archive-Tar-1.96_1 perl-Attribute-Handlers-0.96_1 @@ -158,6 +158,8 @@ do_configure() { -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3" + ln -s libperl.so.${version%.*} libperl.so + if [ "$CROSS_BUILD" ]; then cp -f ${FILESDIR}/cross/* . cp -f ${FILESDIR}/Configure.cross . @@ -173,7 +175,8 @@ do_configure() { sh ./Configure.cross perl -Ilib make_patchnum.pl else - ./Configure -des ${_args} -Dcccdlflags="-fPIC" -Doptimize="$CFLAGS" + ./Configure -des ${_args} -Dlibperl="libperl.so.${version%.*}" \ + -Dcccdlflags="-fPIC" -Doptimize="$CFLAGS" fi } @@ -185,8 +188,8 @@ do_build() { export LIB=$XBPS_CROSS_BASE/usr/lib export INCLUDE=$XBPS_CROSS_BASE/usr/include - make SHRPLDFLAGS='-shared -Wl,-soname,libperl.so' \ - CROSS_PERL=$HOST_PERL libperl.so ${makejobs} + make SHRPLDFLAGS='-shared -Wl,-soname,libperl.so.${revision}.${patchlevel}' \ + CROSS_PERL=$HOST_PERL libperl.so.${version%.*} ${makejobs} cp -fr $HOST_PERL_LIBS/auto/* lib/auto/ mkdir -p lib/$XBPS_CROSS_TRIPLET @@ -247,5 +250,7 @@ do_install() { find ${DESTDIR} -name .packlist -delete # Make a symlink so that libperl.so is accesible. - ln -sfr ${DESTDIR}/usr/lib/perl5/core_perl/CORE/libperl.so ${DESTDIR}/usr/lib/libperl.so + rm -f ${DESTDIR}/usr/lib/perl5/core_perl/CORE/libperl.so + ln -sfr ${DESTDIR}/usr/lib/perl5/core_perl/CORE/libperl.so.${version%.*} \ + ${DESTDIR}/usr/lib/libperl.so.${version%.*} }