From a4e2a46beb5e4858ef27bdedbb0ff6d2ced430ad Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 28 Apr 2018 20:02:04 +0100 Subject: gentoo resync : 28.04.2018 --- dev-lang/perl/Manifest | 10 +- dev-lang/perl/perl-5.24.4.ebuild | 570 ++++++++++++++++++++++++++++++++ dev-lang/perl/perl-5.26.2.ebuild | 637 ++++++++++++++++++++++++++++++++++++ dev-lang/perl/perl-5.26.9999.ebuild | 22 +- 4 files changed, 1232 insertions(+), 7 deletions(-) create mode 100644 dev-lang/perl/perl-5.24.4.ebuild create mode 100644 dev-lang/perl/perl-5.26.2.ebuild (limited to 'dev-lang/perl') diff --git a/dev-lang/perl/Manifest b/dev-lang/perl/Manifest index c86055a23f90..0b0d6fb37a62 100644 --- a/dev-lang/perl/Manifest +++ b/dev-lang/perl/Manifest @@ -1,19 +1,25 @@ AUX perl-5.24-libnsl.patch 613 BLAKE2B 3d802f2d9203765630690a12dce5bc339dc0ec3531b47d23cb27877d1159d74b4c0c225fb21fb71257a3b125b72008f6a9b2d174fcd66e3b80f271abccc6f6f2 SHA512 19241053ecb83f5427a7361d222d87ba20c7cc59b2c6cdff011e4f9c59d828e703f0de17dcebb886772278c8dd269bf2b95978a2dededc0bf4ef9056733a3ed4 DIST perl-5.24.3-patches-2.tar.xz 23980 BLAKE2B 5de7ac2cc5238d0b8460a294ae2e8da1455f89a63691a4fc022d49756ed4c0e577672149de7bd475d10f4860b4a98dc1db0c6f32abaf80f8c04658f6ca706e11 SHA512 f13c5fac65e11d691b77231cc98b0a57b6ccabd66535835bc387410dc88c298d31fa471bcd9f4e86d4d51b0402483283c23dcd53d69e0dbabc77b9db6fea4936 DIST perl-5.24.3.tar.xz 11574740 BLAKE2B 79e719d1d0fcea3eea71653f276d0d093d8d1f6b1f981b053f25e6891c57af9ee1982f65ce4a31e4c5844eb11a7966f25c6b459cc7de51cf62b9127be96f6f25 SHA512 139c92c0ea0ee7bd5912ad52cc275e0732ceb0865d8b67c301e1fc5a96ae126a26432b4450a2bbc7fe65b8e1dd8adde92ea2cc91ee39cb13ec3c5096e8f787ec +DIST perl-5.24.4-patches-1.tar.xz 24244 BLAKE2B aa4557a887e57d584c738058ed147f1b4f80f491223e1476c16abdc371bbe133f5d99ea3be11e44101b5343680823ab29c5d26cc8a8ca222275ba4bc092cd5d9 SHA512 465f22269d6c07be5616de223c712ab57d7060fdb4fcc4d79ab23aae79fa61517dbed112bb3a2541d3368a02d046b769ef8fa50a7b91379ad03ca4bf3387e518 +DIST perl-5.24.4.tar.xz 11580256 BLAKE2B efdb9f0e52604207fc73e040c999f40e364f546e3e872dd6709cc6b5209179742fab083319238142581c324847d5e24a3e6a011decc901827d3eb213d00a1666 SHA512 a50bf162d9e62a558a4137d44383eb3fe2001e1eaa574aad7abae851b544dee1dacb849c101023db49b2740925691f5e367fa36ab5dda90634143076c8e4d2f3 DIST perl-5.25.11-patches-1.tar.xz 16776 BLAKE2B 424cfe4ecf5c0b5d857a694fb166dc78f45e0cad9a1f7605fc57c7bf7d16ee7261ba960cf5175525242a378a95ae7b5705ee1717813bc5327962e48b096e4a6b SHA512 ee340824746d3b626b41c76bfa901543869fb9560ef75ff6d338df017e5528e33c344a91ce7cbe9f2fa9e813bf61bbe9eb290433baceb05b832110e746ce9036 -DIST perl-5.26.1-RC1.tar.xz 11923212 BLAKE2B 0f07040bfa8e2ef8fff434d02f874e71b03013620ab79f5d2d04d254881d33753999c5cd1f7d64cc9887122328ae4fd6dcc904f6ff76e47a6d775e4d655faddc SHA512 036151303704e8d91db8cc22a9c8972499babca112d46f570e4f921fdad1b73919f6d038973896ff3d55b079080c4682609b3f73b962999bc5f5425b7b877084 DIST perl-5.26.1-patches-1.tar.xz 16764 BLAKE2B 95fb086d214bf27dedfdc96f927e11ca6e2a237aabc268b3e26ca9868eeede3916fe6adc9ab890bc6bbc9977fa4a3c200188f91d506652c1f45f7ebdda9857e2 SHA512 24d7f5e1344a768bbf170376b131498fa234881d10edc259ff7a31572467e2fe1084ce6a2a9ef4d4ec5924ca95488064235d6e02b83acba727a856cd1e4c9ebc DIST perl-5.26.1.tar.xz 11922848 BLAKE2B 8ba5ac50bc6bc3cea1ede7dbd9b41566bd3f62e432d9a1f5ee45837cc3051c1edc037a13d73d4c867edc7833f9dfa8a9d22216e14a19df179ba030a03d3acc07 SHA512 13faa7bcd7ed8c490c37e9032c115af06c9b8152b75f8062409dd72d263d1314480e8a9a883490de1b448b2e6d53b6a87d108e2eceb17de2524d5857c6a7d300 +DIST perl-5.26.2-patches-1.tar.xz 17100 BLAKE2B 681239e438945285e006ee1d1e2a9eb888fc9b425e6fbd4822e65e1fe1ced2216de76485b9792d3fee28783a588c09e1d34c294ef43d81055c4566af37fe9b6c SHA512 2a274150d2dba406c6efb67ec236f67032a51ff1788b30ea556e74b2f02fab68f5029ebd4b9d4daeb16b3a63fa7aa1744d323bf637a9d21946f19f33b69da245 +DIST perl-5.26.2.tar.xz 11931624 BLAKE2B 2d54b155ace7c70a33adbe9911ba5384281aa49a0f6d4f452f4249b4deb58804268b473457470488f7592e041221f552b09156eb55c10078002aae3715446d9a SHA512 fd54c90da250144c81b94587c01c49fa367f84c54406f1d360ddab4a41589a7b19efc1707f95c95d6357fae66fc3f6f00bf69dd7741db114c7034a14f52be65f DIST perl-5.27.7-patches-1.tar.xz 16276 BLAKE2B 81d6d4eb2459abd80d9dbf9a0300af3dac0e45f745ea844bd2d306b7fb816159470552179253d13ae13e20fe588e84b92bfae3a0189a76009b8cbb423b444209 SHA512 ef1084e307b57545de319248b8f9df6d7eae605604da9721e41b3f0f03e4c63b825e1cfee47eb0d52dc51f65ca2712d7c87f89a3e329d4bf7a6662f1fb08ce41 DIST perl-5.27.8.tar.xz 12103968 BLAKE2B d2145ddfb3be35bc23788616bc2a9133f6875db112d307f326e31a67345dc1abb0b11992d28974682f5a7831e2366b391ef1c84de76222d2a1780ec37fc965f6 SHA512 f710e89d36cbf24cfb78e6ae3a48f7dc0262504688d94fd6fbf6826444531f4843084b6b874759537968b926fa991e46462cd5c4d5199f6ebbbfc78f661cd1e9 DIST perl-cross-1.1.7.tar.gz 97622 BLAKE2B c58dd51492cfbda6fc58b43d9de45c35dd5ed5768ca8db61b5ac092ad6c0067386597875d6613c75671f026387ba474ce8c28789d6d77b9dcfc4cf4bf7227126 SHA512 b64d487129b295ec6d996606b8b8559de681e1cf7c3e3167d6d646d5d7a848d7929b1ab698d1f950e265213749772fc74d209cea5020b61e133c8f8851b7cfa0 DIST perl-cross-1.1.8.tar.gz 98686 BLAKE2B e4fa78e99cb0b93025468d6035dfa352e78867003847637e3730df7f3df252cd13370b71b8c724e4dcc9c0851a8e224402ba6880a1ac666521a64b9053a7e4c2 SHA512 00de89c4b4dbef4aede397c541ef5b9c5b1c2b8fecc7ea4b8d5d133dcceb65da6e834ff28609e7865d24e563f050de25c72ce3a88a162d8c88e87524aac5217f +DIST perl-cross-1.1.9.tar.gz 102939 BLAKE2B 438ea75a14c4d60fdf3cb2f3671c736d229a83af210ba4fe6e79b989c6c4b45500d0221ec65bc71e1d43d234ec1daa20b3a19be6ceb01e638810900dbe3664a7 SHA512 002441012bd31f1ea71341707d91f89b76266c187c9d28f947ed5eddbcc6e3155e8dfd4b1814331561c3557764fea25bf6a938f08bcd4adfb5895361ad5a269a EBUILD perl-5.24.3-r1.ebuild 17391 BLAKE2B f949cb73d7dfee03c2c6de54aa2f3a930008ff933f7ae99b20a6efa5e5f1c13936196cf54d55010c1b3f549ca295b3e8999108a492f8851ba753ea6cb1c1812d SHA512 d37a7eb134f93a8436ef35f09f9a9936044bfb26fbf24b72553d2c688e73852b241c19ba02ae6778f610c1f3b90dc36e76e198551fa28857a8bd5f51ce7c9c22 EBUILD perl-5.24.3.ebuild 17070 BLAKE2B 9e99b0f9064e85d7dbd935cc3ad72b91be4ea248cd1d74fcd2f4ec93ebcffeef3ad1c94a03c0b9a36ac9956496283891bd95421aa003eef0e1b22173deaa736a SHA512 150e72fbb0c05884b2c63e62cc76f42aa1f9f6e684f0d7bcb1169e80f970bef8aab5b3f9f82c6f81a54ad9232f72e2b3bff09927de57b60f1d6b835c012551e4 +EBUILD perl-5.24.4.ebuild 17361 BLAKE2B d29022f6b20d19dffe29a96dd61cf8c8602f4c863dd2f3a788845a4a556a9fc3fe13482a1493d6707e2e6448a07549abba15067b8c6f5dd6b555bc1b965c1e56 SHA512 da03ab3b488473b74c17d55bc03a9729c1084191e43666d09891b0af9b6e5886958237fa28acc1ef6dbe0804fa9504b0645e0eb9997dea26310df927e4d8c23d EBUILD perl-5.26.1-r1.ebuild 19253 BLAKE2B 3d192d2a79bb036593ba46bc02fa901ddfbf4b4e53692f6635fe4f94b530888aab7d5e82b3cd47a74c24828052e53647373d71749b0fce61d0756972500ca8b0 SHA512 650d1573aaf99c30f5df0cb1ca8830cdf23e43b2a20acc0b3d75a52777f5b69df874894e929802c728bdfa6c6a7017f379ee56745b1dcf43862c66564345c5a1 EBUILD perl-5.26.1-r2.ebuild 19666 BLAKE2B d89c12581fdd3c3ba285118745335e61dc26077aaf4ade12b0f875363c217f0029ccf432616c7ec2be337d0bf09c2be26c13f75171682d3d1d84de597f2238b0 SHA512 43877a272bfd106111a81eb89a4de94dadcd76571208ce198854f9822dbd0575ed4262d0e90e31fe65b27a3579ec25d3c7ba06ab8481d0fd49c9238b5a83c3be EBUILD perl-5.26.1.ebuild 18983 BLAKE2B ef92b27b06f0866a1e7e7a3d35f87d8378e1d6df1a42ab68e03682c978f35429f83f23beef2921a214382ecd84e706bddb4a49d1a218d5dc133b71f15faa327c SHA512 903eee39e82711ff898fc7b3628bd06baf7d5ce6ca0b685b7852991755cf7779cc869e076a14a13293eab549d60453026411d3dc2b277873184975ff9ff491c4 -EBUILD perl-5.26.9999.ebuild 19246 BLAKE2B 46e5b5a335ce98d2af68572a58453ba962c3aad3596cad0e88766f3d15c86a0fbebd00469ad90dc3f9c2cdacdc61a87392cc48ffab03cc6b86e42954ee9deff4 SHA512 2ac4f404c2080207756f74468a32c86ebceefff8c9b7b4f1b7ace2591c40f8aefe90b524d96b170f94c82f395c5fbe172a8e5f80ee83f1a1fc569ec65fa59f75 +EBUILD perl-5.26.2.ebuild 19678 BLAKE2B 75897bb1033fa031b7d0971758813b1b0456f8ec806e3cd40907d7c1d7d1cb296f5bb99016d336e5f5fafb4253a88c9d9487fc2dec77b42239d21f8239aa6646 SHA512 2b25c9e3e2a62185bf6f2948903111806bef9ebfacd724c4928d18ad70758f4207292b589f0b383de29c8cc2c364b4b502fd3fa1ba8a6b41f33dcacb88363fc6 +EBUILD perl-5.26.9999.ebuild 19678 BLAKE2B 75897bb1033fa031b7d0971758813b1b0456f8ec806e3cd40907d7c1d7d1cb296f5bb99016d336e5f5fafb4253a88c9d9487fc2dec77b42239d21f8239aa6646 SHA512 2b25c9e3e2a62185bf6f2948903111806bef9ebfacd724c4928d18ad70758f4207292b589f0b383de29c8cc2c364b4b502fd3fa1ba8a6b41f33dcacb88363fc6 EBUILD perl-5.28.9999.ebuild 19238 BLAKE2B 1c1ab72e0bfa03b353989e3eadfd12394a19fddef38ce694a63d0c87df4d99ab2c54d789faccd3b614711aeeb63a8146de74d373899af81c453fd46f8b00d4ef SHA512 70d8878281bcfa9d78d6ba87c8f62b575707777676f0f97e6406e2f3bad1b5ededf0e58f1b7c3b286f86291691643b7119cff4f32456c1148db32ceed3d21696 MISC metadata.xml 430 BLAKE2B 8625fd07f63a7943a85c3919d6ae6db622b752caa2803c56c72a22b270244261331fbab8b760e6d00acb8480770c9ef1d1beaaa22cc6044660821687c0cd8c33 SHA512 ca4c43e2016b7df707894713465700a90d2b8551b57fc4d660cff75edb1e8cc2456f9ae10431839ad6738f290d4f5911fae360eaa1d4670859d855de3d568583 diff --git a/dev-lang/perl/perl-5.24.4.ebuild b/dev-lang/perl/perl-5.24.4.ebuild new file mode 100644 index 000000000000..697fa5ea9fbe --- /dev/null +++ b/dev-lang/perl/perl-5.24.4.ebuild @@ -0,0 +1,570 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit eutils alternatives flag-o-matic toolchain-funcs multilib multiprocessing + +PATCH_VER=1 +CROSS_VER=1.1.9 +PATCH_BASE="perl-5.24.4-patches-${PATCH_VER}" + +PERL_OLDVERSEN="5.24.3 5.24.2 5.24.1 5.24.0" +DIST_AUTHOR=SHAY + +SHORT_PV="${PV%.*}" +MY_P="perl-${PV/_rc/-RC}" +MY_PV="${PV%_rc*}" + +DESCRIPTION="Larry Wall's Practical Extraction and Report Language" + +SRC_URI=" + mirror://cpan/src/5.0/${MY_P}.tar.xz + mirror://cpan/authors/id/${DIST_AUTHOR:0:1}/${DIST_AUTHOR:0:2}/${DIST_AUTHOR}/${MY_P}.tar.xz + https://github.com/gentoo-perl/perl-patchset/releases/download/${PATCH_BASE}/${PATCH_BASE}.tar.xz + mirror://gentoo/${PATCH_BASE}.tar.xz + https://dev.gentoo.org/~kentnl/distfiles/${PATCH_BASE}.tar.xz + https://github.com/arsv/perl-cross/releases/download/${CROSS_VER}/perl-cross-${CROSS_VER}.tar.gz +" +HOMEPAGE="https://www.perl.org/" + +LICENSE="|| ( Artistic GPL-1+ )" +SLOT="0/${SHORT_PV}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +IUSE="berkdb debug doc gdbm ithreads" + +RDEPEND=" + berkdb? ( sys-libs/db:= ) + gdbm? ( >=sys-libs/gdbm-1.8.3 ) + app-arch/bzip2 + sys-libs/zlib +" +DEPEND="${RDEPEND} + !prefix? ( elibc_FreeBSD? ( sys-freebsd/freebsd-mk-defs ) ) +" +PDEPEND=" + >=app-admin/perl-cleaner-2.5 + >=virtual/perl-File-Path-2.130.0 + >=virtual/perl-File-Temp-0.230.400-r2 + >=virtual/perl-Data-Dumper-2.154.0 + virtual/perl-Test-Harness +" +# bug 390719, bug 523624, bug 620304 +# virtual/perl-Test-Harness is here for the bundled ExtUtils::MakeMaker + +S="${WORKDIR}/${MY_P}" + +dual_scripts() { + src_remove_dual perl-core/Archive-Tar 2.40.100_rc ptar ptardiff ptargrep + src_remove_dual perl-core/CPAN 2.110.100_rc cpan + src_remove_dual perl-core/Digest-SHA 5.950.100_rc shasum + src_remove_dual perl-core/Encode 2.800.100_rc enc2xs piconv + src_remove_dual perl-core/ExtUtils-MakeMaker 7.100.200_rc instmodsh + src_remove_dual perl-core/ExtUtils-ParseXS 3.310.0 xsubpp + src_remove_dual perl-core/IO-Compress 2.69.1_rc zipdetails + src_remove_dual perl-core/JSON-PP 2.273.0.100_rc json_pp + src_remove_dual perl-core/Module-CoreList 5.201.804.142.400_rc corelist + src_remove_dual perl-core/Pod-Parser 1.630.0 pod2usage podchecker podselect + src_remove_dual perl-core/Pod-Perldoc 3.250.300_rc perldoc + src_remove_dual perl-core/Test-Harness 3.360.100_rc prove + src_remove_dual perl-core/podlators 4.70.0 pod2man pod2text + src_remove_dual_man perl-core/podlators 4.70.0 /usr/share/man/man1/perlpodstyle.1 +} + +check_rebuild() { + # Fresh install + if [[ -z "${REPLACING_VERSIONS}" ]]; then + return 0; + # Major Upgrade + # doesn't matter if there's multiple copies, it still needs a rebuild + # if the string is anything other than "5.CURRENTMAJOR" + elif [[ "${REPLACING_VERSIONS%.*}" != "${PV%.*}" ]]; then + echo "" + ewarn "UPDATE THE PERL MODULES:" + ewarn "After updating dev-lang/perl the installed Perl modules" + ewarn "have to be re-installed. In most cases, this is done automatically" + ewarn "by the package manager, but subsequent steps are still recommended" + ewarn "to ensure system consistency." + ewarn + ewarn "You should start with a depclean to remove any unused perl dependencies" + ewarn "that may confuse portage in future. Regular depcleans are also encouraged" + ewarn "as part of your regular update cycle, as that will keep perl upgrades working." + ewarn "Recommended: emerge --depclean -va" + ewarn + ewarn "You should then call perl-cleaner to clean up any old files and trigger any" + ewarn "remaining rebuilds portage may have missed." + ewarn "Use: perl-cleaner --all" + return 0; + + # Reinstall w/ USE Change + elif ( use ithreads && ! has_version dev-lang/perl[ithreads] ) || \ + ( ! use ithreads && has_version dev-lang/perl[ithreads] ) || \ + ( use debug && ! has_version dev-lang/perl[debug] ) || \ + ( ! use debug && has_version dev-lang/perl[debug] ) ; then + echo "" + ewarn "TOGGLED USE-FLAGS WARNING:" + ewarn "You changed one of the use-flags ithreads or debug." + ewarn "You must rebuild all perl-modules installed." + ewarn "Use: perl-cleaner --modules ; perl-cleaner --force --libperl" + fi +} + +pkg_setup() { + case ${CHOST} in + *-freebsd*) osname="freebsd" ;; + *-dragonfly*) osname="dragonfly" ;; + *-netbsd*) osname="netbsd" ;; + *-openbsd*) osname="openbsd" ;; + *-darwin*) osname="darwin" ;; + *-interix*) osname="interix" ;; + *-aix*) osname="aix" ;; + *-cygwin*) osname="cygwin" ;; + *) osname="linux" ;; + esac + + myarch="${CHOST%%-*}-${osname}" + if use debug ; then + myarch+="-debug" + fi + if use ithreads ; then + mythreading="-multi" + myarch+="-thread" + fi + + LIBPERL="libperl$(get_libname ${MY_PV} )" + PRIV_LIB="/usr/$(get_libdir)/perl5/${MY_PV}" + ARCH_LIB="/usr/$(get_libdir)/perl5/${MY_PV}/${myarch}${mythreading}" + SITE_LIB="/usr/local/$(get_libdir)/perl5/${MY_PV}" + SITE_ARCH="/usr/local/$(get_libdir)/perl5/${MY_PV}/${myarch}${mythreading}" + VENDOR_LIB="/usr/$(get_libdir)/perl5/vendor_perl/${MY_PV}" + VENDOR_ARCH="/usr/$(get_libdir)/perl5/vendor_perl/${MY_PV}/${myarch}${mythreading}" + + dual_scripts +} + +src_remove_dual_file() { + local i pkg ver + pkg="$1" + ver="$2" + shift 2 + case "${EBUILD_PHASE:-none}" in + postinst|postrm) + for i in "$@" ; do + alternatives_auto_makesym "${i}" "${i}-[0-9]*" + done + ;; + setup) + for i in "$@" ; do + if [[ -f ${EROOT}${i} && ! -h ${EROOT}${i} ]] ; then + has_version ${pkg} && ewarn "You must reinstall ${pkg} !" + break + fi + done + ;; + install) + for i in "$@" ; do + if ! [[ -f "${ED}"${i} ]] ; then + ewarn "${i} does not exist!" + continue + fi + mv "${ED}"${i}{,-${ver}-${P}} || die + done + ;; + esac +} + +src_remove_dual_man() { + local i pkg ver ff + pkg="$1" + ver="$2" + shift 2 + case "${EBUILD_PHASE:-none}" in + postinst|postrm) + for i in "$@" ; do + ff=`echo "${EROOT}${i%.[0-9]}-${ver}-${P}${i#${i%.[0-9]}}"*` + ff=${ff##*${i#${i%.[0-9]}}} + alternatives_auto_makesym "${i}${ff}" "${i%.[0-9]}-[0-9]*" + done + ;; + install) + for i in "$@" ; do + if ! [[ -f "${ED}"${i} ]] ; then + ewarn "${i} does not exist!" + continue + fi + mv "${ED}"${i} "${ED}"${i%.[0-9]}-${ver}-${P}${i#${i%.[0-9]}} || die + done + ;; + esac +} + +src_remove_dual() { + local i pkg ver + pkg="$1" + ver="$2" + shift 2 + for i in "$@" ; do + src_remove_dual_file "${pkg}" "${ver}" "/usr/bin/${i}" + src_remove_dual_man "${pkg}" "${ver}" "/usr/share/man/man1/${i}.1" + done +} + +src_prepare_update_patchlevel_h() { + # Copied and modified from debian: + # Copyright 2011 Niko Tyni + # This program is free software; you can redistribute it and/or modify + # it under the same terms as Perl itself. + local patchdir="${WORKDIR}/patches" + local prefix + local patchoutput="patchlevel-gentoo.h" + + [[ -f ${patchdir}/series ]] || return 0 + +while read patch +do + patchname=$(echo $patch | sed 's/\.diff$//') + < $patchdir/$patch sed -e '/^Subject:/ { N; s/\n / / }' | sed -n -e ' + + # massage the patch headers + s|^Bug: .*https\?://rt\.perl\.org/.*id=\(.*\).*|[perl #\1]|; tprepend; + s|^Bug: .*https\?://rt\.cpan\.org/.*id=\(.*\).*|[rt.cpan.org #\1]|; tprepend; + s|^Bug-Gentoo: ||; tprepend; + s/^\(Subject\|Description\): //; tappend; + s|^Origin: .*http://perl5\.git\.perl\.org/perl\.git/commit\(diff\)\?/\(.......\).*|[\2]|; tprepend; + + # post-process at the end of input + $ { x; + # include the version number in the patchlevel.h description (if available) + s/List packaged patches/&'" for ${PF}(#${PATCH_VER})"'/; + + # escape any backslashes and double quotes + s|\\|\\\\|g; s|"|\\"|g; + + # add a prefix + s|^|\t,"'"$prefix$patchname"' - |; + # newlines away + s/\n/ /g; s/ */ /g; + # add a suffix + s/ *$/"/; p + }; + # stop all processing + d; + # label: append to the hold space + :append H; d; + # label: prepend to the hold space + :prepend x; H; d; + ' +done < "${WORKDIR}"/patches/series > "${S}/${patchoutput}" +echo "${patchoutput}" >> "${S}/MANIFEST" +} + +src_prepare() { + local patch + EPATCH_OPTS+=" -p1" + einfo "Applying patches from ${MY_P}-${PATCH_VER} ..." + while read patch ; do + EPATCH_SINGLE_MSG=" ${patch} ..." + epatch "${WORKDIR}"/patches/${patch} + done < "${WORKDIR}"/patches/series + + src_prepare_update_patchlevel_h + + if tc-is-cross-compiler; then + cp -a ../perl-cross-${CROSS_VER}/* . || die + + sed -i \ + -e 's/(15 + $CLEANUP)/(13 + $CLEANUP)/' \ + cnf/diffs/perl5-${PV}/makemaker-test.patch || die + + sed -i \ + -e 's/MakeMaker\.pm .*/MakeMaker.pm bf9174c70a0e50ff2fee4552c7df89b37d292da1/' \ + -e 's/MM_Unix\.pm .*/MM_Unix.pm b0ec308fe2d7dcfcef5732880db0fae1f4ea80fa/' \ + cnf/diffs/perl5-${PV}/customized.patch || die + + sed -i \ + -e 's|^lib/unicore/CombiningClass.pl pod/perluniprops.pod:|lib/unicore/CombiningClass.pl pod/perluniprops.pod: $(CONFIGPM)|' \ + Makefile || die + + # bug 604072 + MAKEOPTS+=" -j1" + export MAKEOPTS + fi + + if ! tc-is-static-only ; then + ln -s ${LIBPERL} libperl$(get_libname ${SHORT_PV}) || die + ln -s ${LIBPERL} libperl$(get_libname ) || die + fi + + if use gdbm; then + sed -i "s:INC => .*:INC => \"-I${EROOT}usr/include/gdbm\":g" \ + ext/NDBM_File/Makefile.PL || die + fi + + default +} + +myconf() { + # the myconf array is declared in src_configure + myconf=( "${myconf[@]}" "$@" ) +} + +src_configure() { + declare -a myconf + + export LC_ALL="C" + [[ ${COLUMNS:-1} -ge 1 ]] || unset COLUMNS # bug #394091 + + # some arches and -O do not mix :) + use ppc && replace-flags -O? -O1 + + # Perl has problems compiling with -Os in your flags with glibc + use elibc_uclibc || replace-flags "-Os" "-O2" + + # xlocale.h is going away in glibc-2.26, so it's counterproductive + # if we use it and include it in CORE/perl.h ... Perl builds just + # fine with glibc and locale.h only. + # However, the darwin prefix people have no locale.h ... + use elibc_glibc && myconf -Ui_xlocale + + # This flag makes compiling crash in interesting ways + filter-flags "-malign-double" + + # Fixes bug #97645 + use ppc && filter-flags "-mpowerpc-gpopt" + + # Fixes bug #143895 on gcc-4.1.1 + filter-flags "-fsched2-use-superblocks" + + use sparc && myconf -Ud_longdbl + + export BUILD_BZIP2=0 + export BZIP2_INCLUDE=${EROOT}/usr/include + export BZIP2_LIB=${EROOT}/usr/$(get_libdir) + + export BUILD_ZLIB=False + export ZLIB_INCLUDE=${EROOT}/usr/include + export ZLIB_LIB=${EROOT}/usr/$(get_libdir) + + # allow either gdbm to provide ndbm (in ) or db1 + myndbm='U' + mygdbm='U' + mydb='U' + if use gdbm ; then + mygdbm='D' + if use berkdb ; then + myndbm='D' + fi + fi + if use berkdb ; then + mydb='D' + has_version '=sys-libs/db-1*' && myndbm='D' + fi + + myconf "-${myndbm}i_ndbm" "-${mygdbm}i_gdbm" "-${mydb}i_db" + + if use alpha && [[ "$(tc-getCC)" = "ccc" ]] ; then + ewarn "Perl will not be built with berkdb support, use gcc if you needed it..." + myconf -Ui_db -Ui_ndbm + fi + + use ithreads && myconf -Dusethreads + + if use debug ; then + append-cflags "-g" + myconf -DDEBUGGING + elif [[ ${CFLAGS} == *-g* ]] ; then + myconf -DDEBUGGING=-g + else + myconf -DDEBUGGING=none + fi + + if [[ -n ${PERL_OLDVERSEN} ]] ; then + local inclist=$(for v in ${PERL_OLDVERSEN}; do echo -n "${v}/${myarch}${mythreading} ${v} "; done ) + myconf -Dinc_version_list="${inclist}" + fi + + [[ ${ELIBC} == "FreeBSD" ]] && myconf "-Dlibc=/usr/$(get_libdir)/libc.a" + + # Make sure we can do the final link #523730, need to set deployment + # target to override hardcoded 10.3 which breaks on modern OSX + [[ ${CHOST} == *-darwin* ]] && \ + myconf "-Dld=env MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} $(tc-getCC)" + + # Prefix: the host system needs not to follow Gentoo multilib stuff, and in + # Prefix itself we don't do multilib either, so make sure perl can find + # something compatible. + if use prefix ; then + # Set a hook to check for each detected library whether it actually works. + export libscheck=" + ( echo 'main(){}' > '${T}'/conftest.c && + $(tc-getCC) -o '${T}'/conftest '${T}'/conftest.c -l\$thislib >/dev/null 2>/dev/null + ) || xxx=/dev/null" + + # Use all host paths that might contain useful stuff, the hook above will filter out bad choices. + local paths="/lib/*-linux-gnu /usr/lib/*-linux-gnu /lib64 /lib/64 /usr/lib64 /usr/lib/64 /lib32 /usr/lib32 /lib /usr/lib" + myconf "-Dlibpth=${EPREFIX}/$(get_libdir) ${EPREFIX}/usr/$(get_libdir) ${paths}" + elif [[ $(get_libdir) != "lib" ]] ; then + # We need to use " and not ', as the written config.sh use ' ... + myconf "-Dlibpth=/usr/local/$(get_libdir) /$(get_libdir) /usr/$(get_libdir)" + fi + + # don't try building ODBM, bug #354453 + disabled_extensions="ODBM_File" + + if ! use gdbm ; then + # workaround for bug #157774: don't try building GDBM related stuff with USE="-gdbm" + disabled_extensions="${disabled_extensions} GDBM_File NDBM_File" + fi + + myconf -Dnoextensions="${disabled_extensions}" + + [[ -n "${EXTRA_ECONF}" ]] && ewarn During Perl build, EXTRA_ECONF=${EXTRA_ECONF} + # allow fiddling via EXTRA_ECONF, bug 558070 + eval "local -a EXTRA_ECONF=(${EXTRA_ECONF})" + + myconf \ + -Duseshrplib \ + -Darchname="${myarch}" \ + -Dcc="$(tc-getCC)" \ + -Doptimize="${CFLAGS}" \ + -Dldflags="${LDFLAGS}" \ + -Dprefix="${EPREFIX}"'/usr' \ + -Dsiteprefix="${EPREFIX}"'/usr/local' \ + -Dvendorprefix="${EPREFIX}"'/usr' \ + -Dscriptdir="${EPREFIX}"'/usr/bin' \ + -Dprivlib="${EPREFIX}${PRIV_LIB}" \ + -Darchlib="${EPREFIX}${ARCH_LIB}" \ + -Dsitelib="${EPREFIX}${SITE_LIB}" \ + -Dsitearch="${EPREFIX}${SITE_ARCH}" \ + -Dvendorlib="${EPREFIX}${VENDOR_LIB}" \ + -Dvendorarch="${EPREFIX}${VENDOR_ARCH}" \ + -Dman1dir="${EPREFIX}"/usr/share/man/man1 \ + -Dman3dir="${EPREFIX}"/usr/share/man/man3 \ + -Dsiteman1dir="${EPREFIX}"/usr/local/man/man1 \ + -Dsiteman3dir="${EPREFIX}"/usr/local/man/man3 \ + -Dvendorman1dir="${EPREFIX}"/usr/share/man/man1 \ + -Dvendorman3dir="${EPREFIX}"/usr/share/man/man3 \ + -Dman1ext='1' \ + -Dman3ext='3pm' \ + -Dlibperl="${LIBPERL}" \ + -Dlocincpth="${EPREFIX}"'/usr/include ' \ + -Dglibpth="${EPREFIX}/$(get_libdir) ${EPREFIX}/usr/$(get_libdir)"' ' \ + -Duselargefiles \ + -Dd_semctl_semun \ + -Dcf_by='Gentoo' \ + -Dmyhostname='localhost' \ + -Dperladmin='root@localhost' \ + -Ud_csh \ + -Dsh="${EPREFIX}"/bin/sh \ + -Dtargetsh="${EPREFIX}"/bin/sh \ + -Uusenm \ + "${myconf[@]}" \ + "${EXTRA_ECONF[@]}" + + if tc-is-cross-compiler; then + ./configure \ + --target="${CHOST}" \ + --build="${CBUILD}" \ + -Dinstallprefix='' \ + -Dinstallusrbinperl='undef' \ + -Dusevendorprefix='define' \ + "${myconf[@]}" \ + || die "Unable to configure" + else + sh Configure \ + -des \ + -Dinstallprefix="${EPREFIX}"'/usr' \ + -Dinstallusrbinperl='n' \ + "${myconf[@]}" \ + || die "Unable to configure" + fi +} + +src_test() { + export NO_GENTOO_NETWORK_TESTS=1; + if [[ ${EUID} == 0 ]] ; then + ewarn "Test fails with a sandbox error (#328793) if run as root. Skipping tests..." + return 0 + fi + use elibc_uclibc && export MAKEOPTS+=" -j1" + TEST_JOBS="$(makeopts_jobs)" make test_harness || die "test failed" +} + +src_install() { + local i + local coredir="${ARCH_LIB}/CORE" + + emake DESTDIR="${D}" install + + rm -f "${ED}/usr/bin/perl${MY_PV}" + ln -s perl "${ED}"/usr/bin/perl${MY_PV} || die + + if ! tc-is-static-only ; then + dolib.so "${ED}"${coredir}/${LIBPERL} + rm -f "${ED}"${coredir}/${LIBPERL} + ln -sf ${LIBPERL} "${ED}"/usr/$(get_libdir)/libperl$(get_libname ${SHORT_PV}) || die + ln -sf ${LIBPERL} "${ED}"/usr/$(get_libdir)/libperl$(get_libname) || die + ln -sf ../../../../../$(get_libdir)/${LIBPERL} "${ED}"${coredir}/${LIBPERL} || die + ln -sf ../../../../../$(get_libdir)/${LIBPERL} "${ED}"${coredir}/libperl$(get_libname ${SHORT_PV}) || die + ln -sf ../../../../../$(get_libdir)/${LIBPERL} "${ED}"${coredir}/libperl$(get_libname) || die + fi + + rm -rf "${ED}"/usr/share/man/man3 || die "Unable to remove module man pages" + + # This removes ${D} from Config.pm + for i in $(find "${D}" -iname "Config.pm" ) ; do + einfo "Removing ${D} from ${i}..." + sed -i -e "s:${D}::" "${i}" || die "Sed failed" + done + + dodoc Changes* README AUTHORS + + if use doc ; then + # HTML Documentation + # We expect errors, warnings, and such with the following. + + dodir /usr/share/doc/${PF}/html + LD_LIBRARY_PATH=. ./perl installhtml \ + --podroot='.' \ + --podpath='lib:ext:pod:vms' \ + --recurse \ + --htmldir="${ED}/usr/share/doc/${PF}/html" + fi + + [[ -d ${ED}/usr/local ]] && rm -r "${ED}"/usr/local + + dual_scripts +} + +pkg_preinst() { + check_rebuild +} + +pkg_postinst() { + dual_scripts + + if [[ "${ROOT}" = "/" ]] ; then + local INC DIR file + INC=$(perl -e 'for $line (@INC) { next if $line eq "."; next if $line =~ m/'${SHORT_PV}'|etc|local|perl$/; print "$line\n" }') + einfo "Removing old .ph files" + for DIR in ${INC} ; do + if [[ -d "${DIR}" ]] ; then + for file in $(find "${DIR}" -name "*.ph" -type f ) ; do + rm -f "${file}" + einfo "<< ${file}" + done + fi + done + # Silently remove the now empty dirs + for DIR in ${INC} ; do + if [[ -d "${DIR}" ]] ; then + find "${DIR}" -depth -type d -print0 | xargs -0 -r rmdir &> /dev/null + fi + done + + fi +} + +pkg_postrm(){ + dual_scripts +} diff --git a/dev-lang/perl/perl-5.26.2.ebuild b/dev-lang/perl/perl-5.26.2.ebuild new file mode 100644 index 000000000000..2c84ddbd0ed9 --- /dev/null +++ b/dev-lang/perl/perl-5.26.2.ebuild @@ -0,0 +1,637 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit eutils alternatives flag-o-matic toolchain-funcs multilib multiprocessing + +PATCH_VER=1 +CROSS_VER=1.1.9 +PATCH_BASE="perl-5.26.2-patches-${PATCH_VER}" + +DIST_AUTHOR=SHAY + +# Greatest first, don't include yourself +# Devel point-releases are not ABI-intercompatible, but stable point releases are +# BIN_OLDVERSEN is contains only C-ABI-intercompatible versions +PERL_BIN_OLDVERSEN="5.26.1 5.26.0" +if [[ "${PV##*.}" == "9999" ]]; then + DIST_VERSION=5.26.2 +else + DIST_VERSION="${PV/_rc/-RC}" +fi +SHORT_PV="${DIST_VERSION%.*}" +# Even numbered major versions are ABI intercompatible +# Odd numbered major versions are not +if [[ $(( ${SHORT_PV#*.} % 2 )) == 1 ]]; then + SUBSLOT="${DIST_VERSION%-RC*}" +else + SUBSLOT="${DIST_VERSION%.*}" +fi +# Used only in tar paths +MY_P="perl-${DIST_VERSION}" +# Used in library paths +MY_PV="${DIST_VERSION%-RC*}" + +DESCRIPTION="Larry Wall's Practical Extraction and Report Language" + +SRC_URI=" + mirror://cpan/src/5.0/${MY_P}.tar.xz + mirror://cpan/authors/id/${DIST_AUTHOR:0:1}/${DIST_AUTHOR:0:2}/${DIST_AUTHOR}/${MY_P}.tar.xz + https://github.com/gentoo-perl/perl-patchset/releases/download/${PATCH_BASE}/${PATCH_BASE}.tar.xz + mirror://gentoo/${PATCH_BASE}.tar.xz + https://dev.gentoo.org/~kentnl/distfiles/${PATCH_BASE}.tar.xz + https://github.com/arsv/perl-cross/releases/download/${CROSS_VER}/perl-cross-${CROSS_VER}.tar.gz +" +HOMEPAGE="https://www.perl.org/" + +LICENSE="|| ( Artistic GPL-1+ )" +SLOT="0/${SUBSLOT}" + +if [[ "${PV##*.}" != "9999" ]]; then +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +fi + +IUSE="berkdb debug doc gdbm ithreads" + +RDEPEND=" + berkdb? ( sys-libs/db:= ) + gdbm? ( >=sys-libs/gdbm-1.8.3 ) + app-arch/bzip2 + sys-libs/zlib +" +DEPEND="${RDEPEND} + !prefix? ( elibc_FreeBSD? ( sys-freebsd/freebsd-mk-defs ) ) +" +PDEPEND=" + >=app-admin/perl-cleaner-2.5 + >=virtual/perl-File-Temp-0.230.400-r2 + >=virtual/perl-Data-Dumper-2.154.0 + virtual/perl-Test-Harness +" +# bug 390719, bug 523624 +# virtual/perl-Test-Harness is here for the bundled ExtUtils::MakeMaker + +S="${WORKDIR}/${MY_P}" + +dual_scripts() { + src_remove_dual perl-core/Archive-Tar 2.240.0 ptar ptardiff ptargrep + src_remove_dual perl-core/CPAN 2.180.0 cpan + src_remove_dual perl-core/Digest-SHA 5.960.0 shasum + src_remove_dual perl-core/Encode 2.880.0 enc2xs piconv + src_remove_dual perl-core/ExtUtils-MakeMaker 7.240.0 instmodsh + src_remove_dual perl-core/ExtUtils-ParseXS 3.340.0 xsubpp + src_remove_dual perl-core/IO-Compress 2.74.0 zipdetails + src_remove_dual perl-core/JSON-PP 2.274.0.200_rc json_pp + src_remove_dual perl-core/Module-CoreList 5.201.804.142.600_rc corelist + src_remove_dual perl-core/Pod-Parser 1.630.0 pod2usage podchecker podselect + src_remove_dual perl-core/Pod-Perldoc 3.280.0 perldoc + src_remove_dual perl-core/Test-Harness 3.380.0 prove + src_remove_dual perl-core/podlators 4.90.0 pod2man pod2text + src_remove_dual_man perl-core/podlators 4.90.0 /usr/share/man/man1/perlpodstyle.1 +} + +check_rebuild() { + # Fresh install + if [[ -z "${REPLACING_VERSIONS}" ]]; then + return 0; + # Major Upgrade + # doesn't matter if there's multiple copies, it still needs a rebuild + # if the string is anything other than "5.CURRENTMAJOR" + elif [[ "${REPLACING_VERSIONS%.*}" != "${PV%.*}" ]]; then + echo "" + ewarn "UPDATE THE PERL MODULES:" + ewarn "After updating dev-lang/perl the installed Perl modules" + ewarn "have to be re-installed. In most cases, this is done automatically" + ewarn "by the package manager, but subsequent steps are still recommended" + ewarn "to ensure system consistency." + ewarn + ewarn "You should start with a depclean to remove any unused perl dependencies" + ewarn "that may confuse portage in future. Regular depcleans are also encouraged" + ewarn "as part of your regular update cycle, as that will keep perl upgrades working." + ewarn "Recommended: emerge --depclean -va" + ewarn + ewarn "You should then call perl-cleaner to clean up any old files and trigger any" + ewarn "remaining rebuilds portage may have missed." + ewarn "Use: perl-cleaner --all" + return 0; + + # Reinstall w/ USE Change + elif ( use ithreads && ! has_version dev-lang/perl[ithreads] ) || \ + ( ! use ithreads && has_version dev-lang/perl[ithreads] ) || \ + ( use debug && ! has_version dev-lang/perl[debug] ) || \ + ( ! use debug && has_version dev-lang/perl[debug] ) ; then + echo "" + ewarn "TOGGLED USE-FLAGS WARNING:" + ewarn "You changed one of the use-flags ithreads or debug." + ewarn "You must rebuild all perl-modules installed." + ewarn "Use: perl-cleaner --modules ; perl-cleaner --force --libperl" + fi +} + +pkg_setup() { + case ${CHOST} in + *-freebsd*) osname="freebsd" ;; + *-dragonfly*) osname="dragonfly" ;; + *-netbsd*) osname="netbsd" ;; + *-openbsd*) osname="openbsd" ;; + *-darwin*) osname="darwin" ;; + *-interix*) osname="interix" ;; + *-aix*) osname="aix" ;; + *-cygwin*) osname="cygwin" ;; + *) osname="linux" ;; + esac + + myarch="${CHOST%%-*}-${osname}" + if use debug ; then + myarch+="-debug" + fi + if use ithreads ; then + mythreading="-multi" + myarch+="-thread" + fi + + PRIV_BASE="/usr/$(get_libdir)/perl5" + SITE_BASE="/usr/local/$(get_libdir)/perl5" + VENDOR_BASE="/usr/$(get_libdir)/perl5/vendor_perl" + + LIBPERL="libperl$(get_libname ${MY_PV} )" + PRIV_LIB="${PRIV_BASE}/${MY_PV}" + ARCH_LIB="${PRIV_BASE}/${MY_PV}/${myarch}${mythreading}" + SITE_LIB="${SITE_BASE}/${MY_PV}" + SITE_ARCH="${SITE_BASE}/${MY_PV}/${myarch}${mythreading}" + VENDOR_LIB="${VENDOR_BASE}/${MY_PV}" + VENDOR_ARCH="${VENDOR_BASE}/${MY_PV}/${myarch}${mythreading}" + + dual_scripts +} + +src_remove_dual_file() { + local i pkg ver + pkg="$1" + ver="$2" + shift 2 + case "${EBUILD_PHASE:-none}" in + postinst|postrm) + for i in "$@" ; do + alternatives_auto_makesym "${i}" "${i}-[0-9]*" + done + ;; + setup) + for i in "$@" ; do + if [[ -f ${EROOT}${i} && ! -h ${EROOT}${i} ]] ; then + has_version ${pkg} && ewarn "You must reinstall ${pkg} !" + break + fi + done + ;; + install) + for i in "$@" ; do + if ! [[ -f "${ED}"${i} ]] ; then + ewarn "${i} does not exist!" + continue + fi + mv "${ED}"${i}{,-${ver}-${P}} || die + done + ;; + esac +} + +src_remove_dual_man() { + local i pkg ver ff + pkg="$1" + ver="$2" + shift 2 + case "${EBUILD_PHASE:-none}" in + postinst|postrm) + for i in "$@" ; do + ff=`echo "${EROOT}${i%.[0-9]}-${ver}-${P}${i#${i%.[0-9]}}"*` + ff=${ff##*${i#${i%.[0-9]}}} + alternatives_auto_makesym "${i}${ff}" "${i%.[0-9]}-[0-9]*" + done + ;; + install) + for i in "$@" ; do + if ! [[ -f "${ED}"${i} ]] ; then + ewarn "${i} does not exist!" + continue + fi + mv "${ED}"${i} "${ED}"${i%.[0-9]}-${ver}-${P}${i#${i%.[0-9]}} || die + done + ;; + esac +} + +src_remove_dual() { + local i pkg ver + pkg="$1" + ver="$2" + shift 2 + for i in "$@" ; do + src_remove_dual_file "${pkg}" "${ver}" "/usr/bin/${i}" + src_remove_dual_man "${pkg}" "${ver}" "/usr/share/man/man1/${i}.1" + done +} + +src_prepare_update_patchlevel_h() { + # Copied and modified from debian: + # Copyright 2011 Niko Tyni + # This program is free software; you can redistribute it and/or modify + # it under the same terms as Perl itself. + local patchdir="${WORKDIR}/patches" + local prefix + local patchoutput="patchlevel-gentoo.h" + + [[ -f ${patchdir}/series ]] || return 0 + +while read patch +do + patchname=$(echo $patch | sed 's/\.diff$//') + < $patchdir/$patch sed -e '/^Subject:/ { N; s/\n / / }' | sed -n -e ' + + # massage the patch headers + s|^Bug: .*https\?://rt\.perl\.org/.*id=\(.*\).*|[perl #\1]|; tprepend; + s|^Bug: .*https\?://rt\.cpan\.org/.*id=\(.*\).*|[rt.cpan.org #\1]|; tprepend; + s|^Bug-Gentoo: ||; tprepend; + s/^\(Subject\|Description\): //; tappend; + s|^Origin: .*http://perl5\.git\.perl\.org/perl\.git/commit\(diff\)\?/\(.......\).*|[\2]|; tprepend; + + # post-process at the end of input + $ { x; + # include the version number in the patchlevel.h description (if available) + s/List packaged patches/&'" for ${PF}(#${PATCH_VER})"'/; + + # escape any backslashes and double quotes + s|\\|\\\\|g; s|"|\\"|g; + + # add a prefix + s|^|\t,"'"$prefix$patchname"' - |; + # newlines away + s/\n/ /g; s/ */ /g; + # add a suffix + s/ *$/"/; p + }; + # stop all processing + d; + # label: append to the hold space + :append H; d; + # label: prepend to the hold space + :prepend x; H; d; + ' +done < "${WORKDIR}"/patches/series > "${S}/${patchoutput}" +echo "${patchoutput}" >> "${S}/MANIFEST" +} + +src_prepare_perlcross() { + cp -a ../perl-cross-${CROSS_VER}/* . || die + + sed -i \ + -e 's/MakeMaker\.pm .*/MakeMaker.pm bf9174c70a0e50ff2fee4552c7df89b37d292da1/' \ + -e 's/MM_Unix\.pm .*/MM_Unix.pm b0ec308fe2d7dcfcef5732880db0fae1f4ea80fa/' \ + cnf/diffs/perl5-${PV}/customized.patch || die + + sed -i \ + -e 's|^lib/unicore/CombiningClass.pl pod/perluniprops.pod:|lib/unicore/CombiningClass.pl pod/perluniprops.pod: $(CONFIGPM)|' \ + Makefile || die + + # bug 604072 + MAKEOPTS+=" -j1" + export MAKEOPTS +} +src_prepare_dynamic() { + ln -s ${LIBPERL} libperl$(get_libname ${SHORT_PV}) || die + ln -s ${LIBPERL} libperl$(get_libname ) || die +} + +src_prepare() { + local patch + EPATCH_OPTS+=" -p1" + + if [[ ${CHOST} == *-solaris* ]] ; then + # do NOT mess with nsl, on Solaris this is always necessary, + # when -lsocket is used e.g. to get h_errno + sed -i '/gentoo\/no-nsl\.patch/d' "${WORKDIR}/patches/series" || die "Can't exclude libnsl patch" + fi + + einfo "Applying patches from ${PATCH_BASE} ..." + while read patch ; do + EPATCH_SINGLE_MSG=" ${patch} ..." + epatch "${WORKDIR}"/patches/${patch} + done < "${WORKDIR}"/patches/series + + src_prepare_update_patchlevel_h + + tc-is-cross-compiler && src_prepare_perlcross + + tc-is-static-only || src_prepare_dynamic + + if use gdbm; then + sed -i "s:INC => .*:INC => \"-I${EROOT}usr/include/gdbm\":g" \ + ext/NDBM_File/Makefile.PL || die + fi + + # Use errno.h from prefix rather than from host system, bug #645804 + if use prefix; then + sed -i "/my..sysroot/s:'':'${EPREFIX}':" ext/Errno/Errno_pm.PL || die + fi + + default +} + +myconf() { + # the myconf array is declared in src_configure + myconf=( "${myconf[@]}" "$@" ) +} + +src_configure() { + declare -a myconf + + export LC_ALL="C" + [[ ${COLUMNS:-1} -ge 1 ]] || unset COLUMNS # bug #394091 + + # some arches and -O do not mix :) + use ppc && replace-flags -O? -O1 + + # Perl has problems compiling with -Os in your flags with glibc + use elibc_uclibc || replace-flags "-Os" "-O2" + + # xlocale.h is going away in glibc-2.26, so it's counterproductive + # if we use it and include it in CORE/perl.h ... Perl builds just + # fine with glibc and locale.h only. + # However, the darwin prefix people have no locale.h ... + use elibc_glibc && myconf -Ui_xlocale + + # This flag makes compiling crash in interesting ways + filter-flags "-malign-double" + + # Fixes bug #97645 + use ppc && filter-flags "-mpowerpc-gpopt" + + # Fixes bug #143895 on gcc-4.1.1 + filter-flags "-fsched2-use-superblocks" + + use sparc && myconf -Ud_longdbl + + export BUILD_BZIP2=0 + export BZIP2_INCLUDE=${EROOT}/usr/include + export BZIP2_LIB=${EROOT}/usr/$(get_libdir) + + export BUILD_ZLIB=False + export ZLIB_INCLUDE=${EROOT}/usr/include + export ZLIB_LIB=${EROOT}/usr/$(get_libdir) + + # allow either gdbm to provide ndbm (in ) or db1 + myndbm='U' + mygdbm='U' + mydb='U' + if use gdbm ; then + mygdbm='D' + if use berkdb ; then + myndbm='D' + fi + fi + if use berkdb ; then + mydb='D' + has_version '=sys-libs/db-1*' && myndbm='D' + fi + + myconf "-${myndbm}i_ndbm" "-${mygdbm}i_gdbm" "-${mydb}i_db" + + if use alpha && [[ "$(tc-getCC)" = "ccc" ]] ; then + ewarn "Perl will not be built with berkdb support, use gcc if you needed it..." + myconf -Ui_db -Ui_ndbm + fi + + use ithreads && myconf -Dusethreads + + if use debug ; then + append-cflags "-g" + myconf -DDEBUGGING + elif [[ ${CFLAGS} == *-g* ]] ; then + myconf -DDEBUGGING=-g + else + myconf -DDEBUGGING=none + fi + + # Autodiscover all old version directories, some of them will even be newer + # if you downgrade + if [[ -z ${PERL_OLDVERSEN} ]]; then + PERL_OLDVERSEN="$( + find "${EROOT%/}${PRIV_BASE}" "${EROOT%/}${SITE_BASE}" "${EROOT%/}${VENDOR_BASE}" \ + -maxdepth 1 -mindepth 1 -type d -regex '.*/5[.][0-9]+[.][0-9]+$' \ + -printf "%f " 2>/dev/null )" + fi + # Fixup versions, removing self match, fixing order and dupes + PERL_OLDVERSEN="$( + echo "${PERL_OLDVERSEN}" |\ + tr " " "\n" |\ + grep -vF "${DIST_VERSION%-RC}" |\ + sort -u -nr -t'.' -k1,1 -k2,2 -k3,3 + )" + + # Experts who want a "Pure" install can set PERL_OLDVERSEN to an empty string + if [[ -n "${PERL_OLDVERSEN// }" ]]; then + local inclist="$( + for v in ${PERL_OLDVERSEN}; do + has "${v}" ${PERL_BIN_OLDVERSEN} && echo -n "${v}/${myarch}${mythreading} "; + echo -n "${v} "; + done )" + einfo "This version of perl may partially support modules previously" + einfo "installed in any of the following paths:" + for incpath in ${inclist}; do + [[ -e "${EROOT%/}${VENDOR_BASE}/${incpath}" ]] && einfo " ${EROOT%/}${VENDOR_BASE}/${incpath}" + [[ -e "${EROOT%/}${PRIV_BASE}/${incpath}" ]] && einfo " ${EROO%/T}${PRIV_BASE}/${incpath}" + [[ -e "${EROOT%/}${SITE_BASE}/${incpath}" ]] && einfo " ${EROOT%/}${SITE_BASE}/${incpath}" + done + einfo "This is a temporary measure and you should aim to cleanup these paths" + einfo "via world updates and perl-cleaner" + myconf -Dinc_version_list="${inclist}" + fi + + [[ ${ELIBC} == "FreeBSD" ]] && myconf "-Dlibc=/usr/$(get_libdir)/libc.a" + + # Make sure we can do the final link #523730, need to set deployment + # target to override hardcoded 10.3 which breaks on modern OSX + [[ ${CHOST} == *-darwin* ]] && \ + myconf "-Dld=env MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} $(tc-getCC)" + + # Prefix: the host system needs not to follow Gentoo multilib stuff, and in + # Prefix itself we don't do multilib either, so make sure perl can find + # something compatible. + if use prefix ; then + # Set a hook to check for each detected library whether it actually works. + export libscheck=" + ( echo 'main(){}' > '${T}'/conftest.c && + $(tc-getCC) -o '${T}'/conftest '${T}'/conftest.c -l\$thislib >/dev/null 2>/dev/null + ) || xxx=/dev/null" + + # Use all host paths that might contain useful stuff, the hook above will filter out bad choices. + local paths="/lib/*-linux-gnu /usr/lib/*-linux-gnu /lib64 /lib/64 /usr/lib64 /usr/lib/64 /lib32 /usr/lib32 /lib /usr/lib" + myconf "-Dlibpth=${EPREFIX}/$(get_libdir) ${EPREFIX}/usr/$(get_libdir) ${paths}" + elif [[ $(get_libdir) != "lib" ]] ; then + # We need to use " and not ', as the written config.sh use ' ... + myconf "-Dlibpth=/usr/local/$(get_libdir) /$(get_libdir) /usr/$(get_libdir)" + fi + + # don't try building ODBM, bug #354453 + disabled_extensions="ODBM_File" + + if ! use gdbm ; then + # workaround for bug #157774: don't try building GDBM related stuff with USE="-gdbm" + disabled_extensions="${disabled_extensions} GDBM_File NDBM_File" + fi + + myconf -Dnoextensions="${disabled_extensions}" + + [[ "${PV##*.}" == "9999" ]] && myconf -Dusedevel -Uversiononly + + [[ -n "${EXTRA_ECONF}" ]] && ewarn During Perl build, EXTRA_ECONF=${EXTRA_ECONF} + # allow fiddling via EXTRA_ECONF, bug 558070 + eval "local -a EXTRA_ECONF=(${EXTRA_ECONF})" + + myconf \ + -Duseshrplib \ + -Darchname="${myarch}" \ + -Dcc="$(tc-getCC)" \ + -Doptimize="${CFLAGS}" \ + -Dldflags="${LDFLAGS}" \ + -Dprefix="${EPREFIX}"'/usr' \ + -Dsiteprefix="${EPREFIX}"'/usr/local' \ + -Dvendorprefix="${EPREFIX}"'/usr' \ + -Dscriptdir="${EPREFIX}"'/usr/bin' \ + -Dprivlib="${EPREFIX}${PRIV_LIB}" \ + -Darchlib="${EPREFIX}${ARCH_LIB}" \ + -Dsitelib="${EPREFIX}${SITE_LIB}" \ + -Dsitearch="${EPREFIX}${SITE_ARCH}" \ + -Dvendorlib="${EPREFIX}${VENDOR_LIB}" \ + -Dvendorarch="${EPREFIX}${VENDOR_ARCH}" \ + -Dman1dir="${EPREFIX}"/usr/share/man/man1 \ + -Dman3dir="${EPREFIX}"/usr/share/man/man3 \ + -Dsiteman1dir="${EPREFIX}"/usr/local/man/man1 \ + -Dsiteman3dir="${EPREFIX}"/usr/local/man/man3 \ + -Dvendorman1dir="${EPREFIX}"/usr/share/man/man1 \ + -Dvendorman3dir="${EPREFIX}"/usr/share/man/man3 \ + -Dman1ext='1' \ + -Dman3ext='3pm' \ + -Dlibperl="${LIBPERL}" \ + -Dlocincpth="${EPREFIX}"'/usr/include ' \ + -Dglibpth="${EPREFIX}/$(get_libdir) ${EPREFIX}/usr/$(get_libdir)"' ' \ + -Duselargefiles \ + -Dd_semctl_semun \ + -Dcf_by='Gentoo' \ + -Dmyhostname='localhost' \ + -Dperladmin='root@localhost' \ + -Ud_csh \ + -Dsh="${EPREFIX}"/bin/sh \ + -Dtargetsh="${EPREFIX}"/bin/sh \ + -Uusenm \ + "${myconf[@]}" \ + "${EXTRA_ECONF[@]}" + + if tc-is-cross-compiler; then + ./configure \ + --target="${CHOST}" \ + --build="${CBUILD}" \ + -Dinstallprefix='' \ + -Dinstallusrbinperl='undef' \ + -Dusevendorprefix='define' \ + "${myconf[@]}" \ + || die "Unable to configure" + else + sh Configure \ + -des \ + -Dinstallprefix="${EPREFIX}"'/usr' \ + -Dinstallusrbinperl='n' \ + "${myconf[@]}" \ + || die "Unable to configure" + fi +} + +src_test() { + export NO_GENTOO_NETWORK_TESTS=1; + if [[ ${EUID} == 0 ]] ; then + ewarn "Test fails with a sandbox error (#328793) if run as root. Skipping tests..." + return 0 + fi + use elibc_uclibc && export MAKEOPTS+=" -j1" + TEST_JOBS="$(makeopts_jobs)" make test_harness || die "test failed" +} + +src_install() { + local i + local coredir="${ARCH_LIB}/CORE" + + emake DESTDIR="${D}" install + + rm -f "${ED}/usr/bin/perl${MY_PV}" + ln -s perl "${ED}"/usr/bin/perl${MY_PV} || die + + if ! tc-is-static-only ; then + dolib.so "${ED}"${coredir}/${LIBPERL} + rm -f "${ED}"${coredir}/${LIBPERL} + ln -sf ${LIBPERL} "${ED}"/usr/$(get_libdir)/libperl$(get_libname ${SHORT_PV}) || die + ln -sf ${LIBPERL} "${ED}"/usr/$(get_libdir)/libperl$(get_libname) || die + ln -sf ../../../../../$(get_libdir)/${LIBPERL} "${ED}"${coredir}/${LIBPERL} || die + ln -sf ../../../../../$(get_libdir)/${LIBPERL} "${ED}"${coredir}/libperl$(get_libname ${SHORT_PV}) || die + ln -sf ../../../../../$(get_libdir)/${LIBPERL} "${ED}"${coredir}/libperl$(get_libname) || die + fi + + rm -rf "${ED}"/usr/share/man/man3 || die "Unable to remove module man pages" + + # This removes ${D} from Config.pm + for i in $(find "${D}" -iname "Config.pm" ) ; do + einfo "Removing ${D} from ${i}..." + sed -i -e "s:${D}::" "${i}" || die "Sed failed" + done + + dodoc Changes* README AUTHORS + + if use doc ; then + # HTML Documentation + # We expect errors, warnings, and such with the following. + + dodir /usr/share/doc/${PF}/html + LD_LIBRARY_PATH=. ./perl installhtml \ + --podroot='.' \ + --podpath='lib:ext:pod:vms' \ + --recurse \ + --htmldir="${ED}/usr/share/doc/${PF}/html" + fi + + [[ -d ${ED}/usr/local ]] && rm -r "${ED}"/usr/local + + dual_scripts +} + +pkg_preinst() { + check_rebuild +} + +pkg_postinst() { + dual_scripts + + if [[ "${ROOT}" = "/" ]] ; then + local INC DIR file + INC=$(perl -e 'for $line (@INC) { next if $line eq "."; next if $line =~ m/'${SHORT_PV}'|etc|local|perl$/; print "$line\n" }') + einfo "Removing old .ph files" + for DIR in ${INC} ; do + if [[ -d "${DIR}" ]] ; then + for file in $(find "${DIR}" -name "*.ph" -type f ) ; do + rm -f "${file}" + einfo "<< ${file}" + done + fi + done + # Silently remove the now empty dirs + for DIR in ${INC} ; do + if [[ -d "${DIR}" ]] ; then + find "${DIR}" -depth -type d -print0 | xargs -0 -r rmdir &> /dev/null + fi + done + + fi +} + +pkg_postrm(){ + dual_scripts +} diff --git a/dev-lang/perl/perl-5.26.9999.ebuild b/dev-lang/perl/perl-5.26.9999.ebuild index f1cb393c0f39..2c84ddbd0ed9 100644 --- a/dev-lang/perl/perl-5.26.9999.ebuild +++ b/dev-lang/perl/perl-5.26.9999.ebuild @@ -6,17 +6,17 @@ EAPI=6 inherit eutils alternatives flag-o-matic toolchain-funcs multilib multiprocessing PATCH_VER=1 -CROSS_VER=1.1.7 -PATCH_BASE="perl-5.26.1-patches-${PATCH_VER}" +CROSS_VER=1.1.9 +PATCH_BASE="perl-5.26.2-patches-${PATCH_VER}" DIST_AUTHOR=SHAY # Greatest first, don't include yourself # Devel point-releases are not ABI-intercompatible, but stable point releases are # BIN_OLDVERSEN is contains only C-ABI-intercompatible versions -PERL_BIN_OLDVERSEN="5.26.0" +PERL_BIN_OLDVERSEN="5.26.1 5.26.0" if [[ "${PV##*.}" == "9999" ]]; then - DIST_VERSION=5.26.1-RC1 + DIST_VERSION=5.26.2 else DIST_VERSION="${PV/_rc/-RC}" fi @@ -83,7 +83,7 @@ dual_scripts() { src_remove_dual perl-core/ExtUtils-ParseXS 3.340.0 xsubpp src_remove_dual perl-core/IO-Compress 2.74.0 zipdetails src_remove_dual perl-core/JSON-PP 2.274.0.200_rc json_pp - src_remove_dual perl-core/Module-CoreList 5.201.709.220 corelist + src_remove_dual perl-core/Module-CoreList 5.201.804.142.600_rc corelist src_remove_dual perl-core/Pod-Parser 1.630.0 pod2usage podchecker podselect src_remove_dual perl-core/Pod-Perldoc 3.280.0 perldoc src_remove_dual perl-core/Test-Harness 3.380.0 prove @@ -306,6 +306,13 @@ src_prepare_dynamic() { src_prepare() { local patch EPATCH_OPTS+=" -p1" + + if [[ ${CHOST} == *-solaris* ]] ; then + # do NOT mess with nsl, on Solaris this is always necessary, + # when -lsocket is used e.g. to get h_errno + sed -i '/gentoo\/no-nsl\.patch/d' "${WORKDIR}/patches/series" || die "Can't exclude libnsl patch" + fi + einfo "Applying patches from ${PATCH_BASE} ..." while read patch ; do EPATCH_SINGLE_MSG=" ${patch} ..." @@ -323,6 +330,11 @@ src_prepare() { ext/NDBM_File/Makefile.PL || die fi + # Use errno.h from prefix rather than from host system, bug #645804 + if use prefix; then + sed -i "/my..sysroot/s:'':'${EPREFIX}':" ext/Errno/Errno_pm.PL || die + fi + default } -- cgit v1.2.3