From 908778078736bd36f7a60a2d576d415cb8e000fa Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 22 May 2021 07:31:18 +0100 Subject: gentoo resync : 22.05.2021 --- dev-lang/perl/Manifest | 5 +- dev-lang/perl/perl-5.34.0.ebuild | 815 ++++++++++++++++++++++++++++++++++ dev-lang/perl/perl-5.34.0_rc1.ebuild | 816 ----------------------------------- 3 files changed, 818 insertions(+), 818 deletions(-) create mode 100644 dev-lang/perl/perl-5.34.0.ebuild delete mode 100644 dev-lang/perl/perl-5.34.0_rc1.ebuild (limited to 'dev-lang/perl') diff --git a/dev-lang/perl/Manifest b/dev-lang/perl/Manifest index de068d30dd5c..1fc59cca06b7 100644 --- a/dev-lang/perl/Manifest +++ b/dev-lang/perl/Manifest @@ -6,7 +6,8 @@ DIST perl-5.30.3.tar.xz 12375128 BLAKE2B ff0668c896e46ea35a1b8bd4a7d800c8668d699 DIST perl-5.32.0-patches-1.tar.xz 20220 BLAKE2B 46ebca5c74f59aa935ceec2a5807426c0e653ad7ba27de441d26e049e62dc67b17d58dfe5755f31bdd157e349d47fd46a98699207729f8f4f747930ed1064ba2 SHA512 42ed00f5f6be40af59e02691ff439a048cccd96fb970cca0976209faa921af98a773cc4cb1466e164328350d58cb46950ffa8c6f2fddabbeb3e8819349b06849 DIST perl-5.32.0.tar.xz 12717336 BLAKE2B 4abad9f1ddabaad5f2bbfe8ab6d061aeb8c558e458d4bf1bcf737a8ecc1cf20f7dffaddd0bc867578b457787ec284fa81be3fae1edd7f72d58aeec7b5cd744e5 SHA512 1540247415893bbd94dfeede7b4fba6052688dc0bf27ced817f448246fcdc6e9a6486abc34577dec5b00bf02ed607b2d24ccd4977c3b3c51e8e6edfc0b81c760 DIST perl-5.32.1.tar.xz 12610988 BLAKE2B 9f89bcf9cffb245a0f2cb0afa17c25f092c84cc2f29bb1c744294c2f0393c72dc3beb9fcbe256cf252677b33bc594b294b3f6a4774ad9e30b771aceed1f4f147 SHA512 3443c75aea91f0fe3712fee576239f1946d2301b8f7390b690e2f5d070fe71af8f9fa7769e42086c2d33d5f84370f80368fa9350b4f10cc0ac3e6c1f6209d8f9 -DIST perl-5.34.0-RC1.tar.xz 12881680 BLAKE2B acb26d65b3a439676cb7cf9477d2590e33f24bc4d0f7af6b2069c81aab2c74b047ceae349ef58fa49ce2ed8668cf7eec1922498bd2db144d08968a4fd1b7d9a3 SHA512 fdf686349c00f637eb95691efadb5042f15bce8ec1174595869815761e779f616504d19d01d52a6d13ec444974e7d90bfdb15a83aa36d2acb840bf1ff7dc97d6 +DIST perl-5.34.0-patches-1.tar.xz 20360 BLAKE2B e60074c49f357d4841708f58b5165a44201783238ff33ee81580bb83ba07d3d2dda447edd30a71ce8c9bafe5e5e0235b68e31a79081c3482bdd589231f0e898e SHA512 909e1fb22cda4ca769b51645b51a64df81b92210cfee388ac57834406bc13e404f0a1e6bad0888fafc73fc34b7fb224801fd02e87fb4c2f9145482ad74374e7b +DIST perl-5.34.0.tar.xz 12881416 BLAKE2B 4139e77fbb38b2b72671c0b130233cf5ed35112bbba3301b8ed724739c7ff96b041752aa505b938e257ef6ebf98a9b6dad1858e00f756c841a0520688d974e9a SHA512 691b4b31eacec357191fba777612b4e3eae59e946a22998a50766697c0d61db1d42a9b3bc1e41abf0d1ca1893e4a7c06d7bf3290480cf03d7f79befd7a8a3267 DIST perl-cross-1.3.2.tar.gz 108350 BLAKE2B ddb352fdbec66a04de62425f5cae1aaa3bc7251b9d6f4837b66a0bd79c53c60212fad3997dad4c38055774a2769d45b5b83927bf48b0fb00a130fee429eba702 SHA512 d61d25066a8d87c34aeacc5b9bd86fab964b33c4c65e84a89e4077fe1d8011c0bdf810a304631af44fae32edcffd6c99fc17b0c584ea83d1ce5ce492aaedfea5 DIST perl-cross-1.3.4.tar.gz 108461 BLAKE2B 28f207d235f51ebf681598cf85f7f16923574aafb593426a59d67578135ee3632efb12b9e1a672759195a79f80e49f5c929ec42b2b4571b1d36f5d8c8dceadc2 SHA512 7e1fc7b2b19d8c2e2fb8615e074e218b2e1a4d276b563ffabccfd0c7398bc8680fca96da89cc61d611993f38a2c67dfbb0201c58658e05437395ad8c00d31874 EBUILD perl-5.30.3-r1.ebuild 20690 BLAKE2B 036c53922ed6247d01828cf6ce7f47be06877c0e9d63158e37a9aba1f35c3e717c3f0cbe6fffadceb513a1d34f2ef300cce7e4a98ec601e359d9414dce882c14 SHA512 17793920606af30aab84d2300dabf07a60147f94865124ccbb7feae94a309768492364ac5b26ca8b0e99d1860856d6be54ab9a0812aa59180c28ffbebbad1d6f @@ -14,5 +15,5 @@ EBUILD perl-5.30.3-r2.ebuild 26146 BLAKE2B e0756d8250acfd3dbbdeac414f2515270820a EBUILD perl-5.30.3.ebuild 20132 BLAKE2B a244f590c7be7a1f078e8117d3b2745c4118c8a7ec264caf950a0e4c051090b38d4fae431187486fa4b527b7a5ba1cf7000134e9cc2a25bc1a8397b72bd882ac SHA512 d32292624e29ad20f41a9c688b663297246c868455bc4c3d079b12ff90f4fd89f88623e3ca270c58e92ffefe1fcdd6a38910da18efee5954fc1d24de0c104a87 EBUILD perl-5.32.0-r1.ebuild 25913 BLAKE2B a97f41da180ee9e0beeb163ffbbc1c1f944d8dae32954603c9a3a9bf24d9623db6146b8440917dc891ce24ddb41c6c782e04630e4cfa68649f526d7a3e57def3 SHA512 1223ca91df30ccdc247f8a9659376e4407920c1223753b00da91859935117f5361c128b3b1f5d38596f70a4d0ec0e6e6fda58f1b135525c67183fe906bbb2cd4 EBUILD perl-5.32.1.ebuild 25766 BLAKE2B fdb6aa92e7f88c273d918cc11ddf964ce9baa4b832c5dc7f6f2d68d1cfc6ee5121ba665747f6550192ddb4d3fe4c76be67809db333ccf6a4ace34b1022fe0048 SHA512 21b9d98f4166472dc869f8ef680fd09635e78a5b6e69fe5d042430e362ec25852e045e615dfced0e3fdf3328ee5445c337eb06050e55356b7410a4a8ed6892a0 -EBUILD perl-5.34.0_rc1.ebuild 25682 BLAKE2B b8ef0beb80ecc1c9f561cf0ff5ed183bd354815789117a51c5a4b8f13ddd8841e06a3e96d5a53aef5e671efcf37a55e5dbff3112d35d5d4ae75d70a0406851ce SHA512 80b072dd3805b832321c4b56758899ef72cdd664f389aa7f4111eef0a7c4c2f829d689019a4d3347f8ea42abcb9137a6ee6373fe40907d028388ad4640900299 +EBUILD perl-5.34.0.ebuild 25672 BLAKE2B aa0ba6b15d444973b0aa822933db672b136fb0d8601af1772f7593ae7840a63b109bd305fe9436e7be4c2262ad2eecc7bff086a8c6e992f560016550383ebbaf SHA512 07a66188031dcf5f112329fbe90aab217d36c9b46090b2b4119267e41169205a3740ccdde289d40e658761af345c14e091fc792f2be3bd4c676040280fda8df1 MISC metadata.xml 430 BLAKE2B 65949096d565c5754b25bb708f80ab17e95d21b252f6a3b7a1104b01bed26db1f9351c100d1cc59cbf4161d662bba6fb17d232d146165e97f82681c410feb98d SHA512 b3aaad1820fb62287c8da2806ad385e1ced8d8d2a05fbcd2448214120a4682d503c3dcba60d03a5d02cd8e1b4f5b13568759a096a5d8a3a5ecc5c35c5680b670 diff --git a/dev-lang/perl/perl-5.34.0.ebuild b/dev-lang/perl/perl-5.34.0.ebuild new file mode 100644 index 000000000000..e9e2eebedd4f --- /dev/null +++ b/dev-lang/perl/perl-5.34.0.ebuild @@ -0,0 +1,815 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit alternatives flag-o-matic toolchain-funcs multilib multiprocessing + +PATCH_VER=1 +CROSS_VER=1.3.4 +PATCH_BASE="perl-5.34.0-patches-${PATCH_VER}" +PATCH_DEV=dilfridge + +DIST_AUTHOR=XSAWYERX + +# 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="" + +# Yes we can. +PERL_SINGLE_SLOT=y + +if [[ "${PV##*.}" == "9999" ]]; then + DIST_VERSION=5.30.0 +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 + https://dev.gentoo.org/~${PATCH_DEV}/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" ]] && [[ "${PV/rc//}" == "${PV}" ]] ; then +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +fi + +IUSE="berkdb debug doc gdbm ithreads minimal" + +RDEPEND=" + berkdb? ( sys-libs/db:= ) + gdbm? ( >=sys-libs/gdbm-1.8.3:= ) + app-arch/bzip2 + sys-libs/zlib + virtual/libcrypt:= +" +DEPEND="${RDEPEND}" +BDEPEND="${RDEPEND}" + +PDEPEND=" + !minimal? ( + >=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.380.0 ptar ptardiff ptargrep + src_remove_dual perl-core/CPAN 2.280.0 cpan + src_remove_dual perl-core/Digest-SHA 6.20.0 shasum + src_remove_dual perl-core/Encode 3.80.0 enc2xs piconv + src_remove_dual perl-core/ExtUtils-MakeMaker 7.620.0 instmodsh + src_remove_dual perl-core/ExtUtils-ParseXS 3.430.0 xsubpp + src_remove_dual perl-core/IO-Compress 2.102.0 zipdetails + src_remove_dual perl-core/JSON-PP 4.60.0 json_pp + src_remove_dual perl-core/Module-CoreList 5.202.105.200 corelist + src_remove_dual perl-core/Pod-Checker 1.740.0 podchecker + src_remove_dual perl-core/Pod-Perldoc 3.280.100 perldoc + src_remove_dual perl-core/Pod-Usage 2.10.0 pod2usage + src_remove_dual perl-core/Test-Harness 3.430.0 prove + src_remove_dual perl-core/podlators 4.140.0 pod2man pod2text + src_remove_dual_man perl-core/podlators 4.140.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" ;; + *-solaris*) osname="solaris" ;; + *-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} )" + + # This ENV var tells perl to build with a directory like "5.30" + # regardless of its patch version. This is for experts only + # at this point. + if [[ -z "${PERL_SINGLE_SLOT}" ]]; then + 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}" + else + PRIV_LIB="${PRIV_BASE}/${SUBSLOT}" + ARCH_LIB="${PRIV_BASE}/${SUBSLOT}/${myarch}${mythreading}" + SITE_LIB="${SITE_BASE}/${SUBSLOT}" + SITE_ARCH="${SITE_BASE}/${SUBSLOT}/${myarch}${mythreading}" + VENDOR_LIB="${VENDOR_BASE}/${SUBSLOT}" + VENDOR_ARCH="${VENDOR_BASE}/${SUBSLOT}/${myarch}${mythreading}" + fi + + 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_perlcross() { + cp -a ../perl-cross-${CROSS_VER}/* . || 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 +} + +# Copy a patch into the patch series +# add_patch SRC_PATH DEST_NAME ['description'] ['bug'] ['bug'] +# - description is optional, but recommended +# - all arguments after descriptions are bug URLs +add_patch() { + local patchdir="${WORKDIR}/patches" + local infodir="${WORKDIR}/patch-info" + local src_name dest_name desc + src_name="$1" + dest_name="$2" + desc="$3" + shift; shift; shift; + einfo "Adding ${dest_name} to patch bundle" + cp "${src_name}" "${patchdir}/${dest_name}" || die "Couldn't copy ${src_name} to ${dest_name}" + if [[ -n "${desc}" ]]; then + printf "%s" "${desc}" > "${infodir}/${dest_name}.desc" || die "Couldn't write ${dest_name}.desc" + fi + if [[ $# -gt 0 ]]; then + # Note: when $@ is more than one element, this emits a + # line for each element + printf "%s\n" "$@" > "${infodir}/${dest_name}.bugs" || die "Couldn't write ${dest_name}.bugs" + fi +} +# Remove a patch using a glob expr +# eg: +# rm_patch *-darin-Use-CC* +# +rm_patch() { + local patchdir="${WORKDIR}/patches" + local expr="$1" + local patch="$( cd "${patchdir}"; echo $expr )" + einfo "Removing $patch ($expr) from patch bundle" + if [[ -e "${patchdir}/${patch}" ]]; then + rm -f "${patchdir}/${patch}" || die "Can't remove ${patch} ( $expr )" + else + ewarn "No ${expr} found in ${patchdir} to remove" + fi +} +# Yes, this is a reasonable amount of code for something seemingly simple +# but this is far easier to debug when things go wrong, and things went wrong +# multiple times while I was getting the exact number of slashes right, which +# requires circumnavigating both bash and sed escape mechanisms. +c_escape_string() { + local slash dquote + slash='\' + dquote='"' + re_slash="${slash}${slash}" + re_dquote="${slash}${dquote}" + + # Convert \ to \\, + # " to \" + echo "$1" |\ + sed "s|${re_slash}|${re_slash}${re_slash}|g" |\ + sed "s|${re_dquote}|${re_slash}${re_dquote}|g" +} +c_escape_file() { + c_escape_string "$(cat "$1")" +} + +apply_patchdir() { + local patchdir="${WORKDIR}/patches" + local infodir="${WORKDIR}/patch-info" + local patchoutput="patchlevel-gentoo.h" + + # Inject Patch-Level info into description for patchlevel.h patch + # to show in -V + local patch_expr="*List-packaged-patches*" + local patch="$( cd "${patchdir}"; echo $patch_expr )"; + einfo "Injecting patch-level info into ${patch}.desc ( $patch_expr )" + + if [[ -e "${patchdir}/${patch}" ]]; then + printf "List packaged patches for %s(%s) in patchlevel.h" "${PF}" "${PATCH_BASE}"\ + >"${infodir}/${patch}.desc" || die "Can't rewrite ${patch}.desc" + else + eerror "No $patch_expr found in ${patchdir}" + fi + + # Compute patch list to apply + # different name other than PATCHES to stop default + # reapplying it + # Single depth is currently only supported, as artifacts can reside + # from the old layout being multiple-directories, as well as it grossly + # simplifying the patchlevel_gentoo.h generation. + local PERL_PATCHES=($( + find "${patchdir}" -maxdepth 1 -mindepth 1 -type f -printf "%f\n" |\ + grep -E '[.](diff|patch)$' |\ + sort -n + )) + + for patch in "${PERL_PATCHES[@]}"; do + eapply "${WORKDIR}"/patches/${patch} + done + + einfo "Generating $patchoutput" + + # This code creates a header file, each iteration + # creates one-or-more-lines for each entry found in PERL_PATCHES + # and STDOUT is redirected to the .h file + for patch in "${PERL_PATCHES[@]}"; do + local desc_f="${infodir}/${patch}.desc" + local bugs_f="${infodir}/${patch}.bugs" + + printf ',"%s"\n' "${patch}" + if [[ ! -e "${desc_f}" ]]; then + ewarn "No description provided for ${patch} (expected: ${desc_f} )" + else + local desc="$(c_escape_file "${desc_f}")" + printf ',"- %s"\n' "${desc}" + fi + if [[ -e "${bugs_f}" ]]; then + while read -d $'\n' -r line; do + local esc_line="$(c_escape_string "${line}")" + printf ',"- Bug: %s"\n' "${esc_line}" + done <"${bugs_f}" + fi + done > "${S}/${patchoutput}" + printf "%s\n" "${patchoutput}" >> "${S}/MANIFEST" + +} +src_prepare() { + local patchdir="${WORKDIR}/patches" + + # Prepare Patch dir with additional patches / remove unwanted patches + # Inject bug/desc entries for perl -V + if use hppa ; then + # bug 634162 + add_patch "${FILESDIR}/${PN}-5.26.2-hppa.patch" "100-5.26.2-hppa.patch"\ + "Fix broken miniperl on hppa"\ + "https://bugs.debian.org/869122" "https://bugs.gentoo.org/634162" + fi + 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 + rm_patch "*-nsl-and-cl*" + fi + + apply_patchdir + + 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 && [[ -e "${EPREFIX}"/usr/include/errno.h ]] ; then + sed -i "/my..sysroot/s:'':'${EPREFIX}':" ext/Errno/Errno_pm.PL || die + fi + + if [[ ${CHOST} == *-solaris* ]] ; then + # set a soname, fix linking against just built libperl + sed -i -e 's/netbsd\*/netbsd*|solaris*/' Makefile.SH || die + fi + + if [[ ${CHOST} == *-darwin* ]] ; then + # fix install_name (soname) not to reference $D + sed -i -e '/install_name `pwd/s/`pwd`/\\$(shrpdir)/' Makefile.SH || die + fi + + default +} + +myconf() { + # the myconf array is declared in src_configure + myconf=( "${myconf[@]}" "$@" ) +} + +# Outputs a list of versions which have been seen in any of the +# primary perl @INC prefix paths, such as: +# /usr/lib64/perl5/ +# /usr/local/lib64/perl5/ +# /usr/lib64/perl5/vendor_perl/ +# +# All values of NUMBER must be like "5.x.y", unless PERL_SUPPORT_SINGLE_SLOT +# is enabled, where it will also allow numbers like "5.x" +# +# PERL_SUPPORT_SINGLE_SLOT should only be used to transition *away* from PERL_SINGLE_SLOT +# if you used that. +find_candidate_inc_versions() { + local regex='.*/5[.][0-9]+[.][0-9]+$'; + if [[ ! -z "${PERL_SUPPORT_SINGLE_SLOT}" || ! -z "${PERL_SINGLE_SLOT}" ]]; then + regex='.*/5[.][0-9]+\([.][0-9]+\|\)$' + fi + local dirs=( + "${EROOT}${PRIV_BASE}" + "${EROOT}${SITE_BASE}" + "${EROOT}${VENDOR_BASE}" + ) + for dir in "${dirs[@]}"; do + if [[ ! -e "${dir}" ]]; then + continue + fi + # Without access to readdir() on these dirs, find will not be able + # to reveal any @INC directories inside them, and will subsequently prune + # them from the built perl's @INC support, breaking our compatiblity options + # entirely. + if [[ ! -r "${dir}" || ! -x "${dir}" ]]; then + eerror "Bad permissions on ${dir}, this will probably break things" + eerror "Ensure ${dir} is +rx for at least uid=$EUID" + eerror "Recommended permission is +rx for all" + eerror "> chmod o+rx ${dir}" + fi + done + einfo "Scanning for old @INC dirs matching '$regex' in: ${dirs[*]}" + find "${dirs[@]}" -maxdepth 1 -mindepth 1 -type d -regex "${regex}" -printf "%f " 2>/dev/null +} +# Sort versions passed versiony-ly, remove self-version if present +# dedup. Takes each version as an argument +sanitize_inc_versions() { + local vexclude="${DIST_VERSION%-RC}" + if [[ ! -z "${PERL_SINGLE_SLOT}" ]]; then + vexclude="${SUBSLOT}" + fi + einfo "Normalizing/Sorting candidate list: $*" + einfo " to remove '${vexclude}'" + # Note, general numeric sort has to be used + # for the last component, or unique will convert + # 5.30.0 + 5.30 into just 5.30 + printf "%s\n" "$@" |\ + grep -vxF "${vexclude}" |\ + sort -u -nr -t'.' -k1,1rn -k2,2rn -k3,3rg +} + +versions_to_inclist() { + local oldv="${PERL_BIN_OLDVERSEN}" + if [[ ! -z "${PERL_SINGLE_SLOT}" ]]; then + oldv="${DIST_VERSION%-RC} ${PERL_BIN_OLDVERSEN}" + fi + for v; do + has "${v}" ${oldv} && echo -n "${v}/${myarch}${mythreading}/ "; + echo -n "${v}/ "; + done +} +versions_to_gentoolibdirs() { + local oldv="${PERL_BIN_OLDVERSEN}" + local root + local v + if [[ ! -z "${PERL_SINGLE_SLOT}" ]]; then + oldv="${DIST_VERSION%-RC} ${PERL_BIN_OLDVERSEN}" + fi + for v; do + for root in "${PRIV_BASE}" "${VENDOR_BASE}" "${SITE_BASE}"; do + local fullpath="${EROOT}${root}/${v}" + if [[ -e "${fullpath}" ]]; then + has "${v}" ${oldv} && printf "%s:" "${fullpath}/${myarch}${mythreading}"; + printf "%s:" "${fullpath}" + fi + done + done +} + +src_configure() { + declare -a myconf + + export LC_ALL="C" + [[ ${COLUMNS:-1} -ge 1 ]] || unset COLUMNS # bug #394091 + + # 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" + + # Generic LTO broken since 5.28, triggers EUMM failures + filter-flags "-flto" + + 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_candidate_inc_versions )" + fi + + # Fixup versions, removing self match, fixing order and dupes + PERL_OLDVERSEN="$( sanitize_inc_versions ${PERL_OLDVERSEN} )" + + # Experts who want a "Pure" install can set PERL_OLDVERSEN to an empty string + if [[ -n "${PERL_OLDVERSEN// }" ]]; then + local inclist="$( versions_to_inclist ${PERL_OLDVERSEN} )" + 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 " ${EROOT}${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}" + myconf -Dgentoolibdirs="$( versions_to_gentoolibdirs ${PERL_OLDVERSEN} )" + 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)" + + # Older macOS with non-Apple GCC chokes on inline in system headers + # using c89 mode as injected by cflags.SH + [[ ${CHOST} == *-darwin* && ${CHOST##*darwin} -le 9 ]] && tc-is-gcc && \ + append-cflags -Dinline=__inline__ + + # flock on 32-bit sparc Solaris is broken, fall back to fcntl + [[ ${CHOST} == sparc-*-solaris* ]] && \ + myconf -Ud_flock + + # 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})" + + # setting -Dld= to tc-getLD breaks perl and all perl things + # https://github.com/Perl/perl5/issues/17791#issuecomment-630145202 + myconf \ + -Duseshrplib \ + -Darchname="${myarch}" \ + -Dcc="$(tc-getCC)" \ + -Dar="$(tc-getAR)" \ + -Dnm="$(tc-getNM)" \ + -Dcpp="$(tc-getCPP)" \ + -Dranlib="$(tc-getRANLIB)" \ + -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; + export GENTOO_ASSUME_SANDBOXED="${GENTOO_ASSUME_SANDBOXED:-1}" + export GENTOO_NO_PORTING_TESTS="${GENTOO_NO_PORTING_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 ../../../../${LIBPERL} "${ED}"${coredir}/${LIBPERL} || die + ln -sf ../../../../${LIBPERL} "${ED}"${coredir}/libperl$(get_libname ${SHORT_PV}) || die + ln -sf ../../../../${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.34.0_rc1.ebuild b/dev-lang/perl/perl-5.34.0_rc1.ebuild deleted file mode 100644 index c9b82bfa8462..000000000000 --- a/dev-lang/perl/perl-5.34.0_rc1.ebuild +++ /dev/null @@ -1,816 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit alternatives flag-o-matic toolchain-funcs multilib multiprocessing - -PATCH_VER=1 -CROSS_VER=1.3.4 -PATCH_BASE="perl-5.32.0-patches-${PATCH_VER}" -PATCH_DEV=kentnl - -DIST_AUTHOR=XSAWYERX - -# 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="" - -# Yes we can. -PERL_SINGLE_SLOT=y - -if [[ "${PV##*.}" == "9999" ]]; then - DIST_VERSION=5.30.0 -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 - https://dev.gentoo.org/~${PATCH_DEV}/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" ]] && [[ "${PV/rc//}" == "${PV}" ]] ; then -#KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" -KEYWORDS="" -fi - -IUSE="berkdb debug doc gdbm ithreads minimal" - -RDEPEND=" - berkdb? ( sys-libs/db:= ) - gdbm? ( >=sys-libs/gdbm-1.8.3:= ) - app-arch/bzip2 - sys-libs/zlib - virtual/libcrypt:= -" -DEPEND="${RDEPEND}" -BDEPEND="${RDEPEND}" - -PDEPEND=" - !minimal? ( - >=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.360.0 ptar ptardiff ptargrep - src_remove_dual perl-core/CPAN 2.270.0 cpan - src_remove_dual perl-core/Digest-SHA 6.20.0 shasum - src_remove_dual perl-core/Encode 3.60.0 enc2xs piconv - src_remove_dual perl-core/ExtUtils-MakeMaker 7.440.0 instmodsh - src_remove_dual perl-core/ExtUtils-ParseXS 3.400.0 xsubpp - src_remove_dual perl-core/IO-Compress 2.93.0 zipdetails - src_remove_dual perl-core/JSON-PP 4.40.0 json_pp - src_remove_dual perl-core/Module-CoreList 5.202.101.23 corelist - src_remove_dual perl-core/Pod-Checker 1.730.0 podchecker - src_remove_dual perl-core/Pod-Perldoc 3.280.100 perldoc - src_remove_dual perl-core/Pod-Usage 1.690.0 pod2usage - src_remove_dual perl-core/Test-Harness 3.420.0 prove - src_remove_dual perl-core/podlators 4.140.0 pod2man pod2text - src_remove_dual_man perl-core/podlators 4.140.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" ;; - *-solaris*) osname="solaris" ;; - *-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} )" - - # This ENV var tells perl to build with a directory like "5.30" - # regardless of its patch version. This is for experts only - # at this point. - if [[ -z "${PERL_SINGLE_SLOT}" ]]; then - 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}" - else - PRIV_LIB="${PRIV_BASE}/${SUBSLOT}" - ARCH_LIB="${PRIV_BASE}/${SUBSLOT}/${myarch}${mythreading}" - SITE_LIB="${SITE_BASE}/${SUBSLOT}" - SITE_ARCH="${SITE_BASE}/${SUBSLOT}/${myarch}${mythreading}" - VENDOR_LIB="${VENDOR_BASE}/${SUBSLOT}" - VENDOR_ARCH="${VENDOR_BASE}/${SUBSLOT}/${myarch}${mythreading}" - fi - - 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_perlcross() { - cp -a ../perl-cross-${CROSS_VER}/* . || 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 -} - -# Copy a patch into the patch series -# add_patch SRC_PATH DEST_NAME ['description'] ['bug'] ['bug'] -# - description is optional, but recommended -# - all arguments after descriptions are bug URLs -add_patch() { - local patchdir="${WORKDIR}/patches" - local infodir="${WORKDIR}/patch-info" - local src_name dest_name desc - src_name="$1" - dest_name="$2" - desc="$3" - shift; shift; shift; - einfo "Adding ${dest_name} to patch bundle" - cp "${src_name}" "${patchdir}/${dest_name}" || die "Couldn't copy ${src_name} to ${dest_name}" - if [[ -n "${desc}" ]]; then - printf "%s" "${desc}" > "${infodir}/${dest_name}.desc" || die "Couldn't write ${dest_name}.desc" - fi - if [[ $# -gt 0 ]]; then - # Note: when $@ is more than one element, this emits a - # line for each element - printf "%s\n" "$@" > "${infodir}/${dest_name}.bugs" || die "Couldn't write ${dest_name}.bugs" - fi -} -# Remove a patch using a glob expr -# eg: -# rm_patch *-darin-Use-CC* -# -rm_patch() { - local patchdir="${WORKDIR}/patches" - local expr="$1" - local patch="$( cd "${patchdir}"; echo $expr )" - einfo "Removing $patch ($expr) from patch bundle" - if [[ -e "${patchdir}/${patch}" ]]; then - rm -f "${patchdir}/${patch}" || die "Can't remove ${patch} ( $expr )" - else - ewarn "No ${expr} found in ${patchdir} to remove" - fi -} -# Yes, this is a reasonable amount of code for something seemingly simple -# but this is far easier to debug when things go wrong, and things went wrong -# multiple times while I was getting the exact number of slashes right, which -# requires circumnavigating both bash and sed escape mechanisms. -c_escape_string() { - local slash dquote - slash='\' - dquote='"' - re_slash="${slash}${slash}" - re_dquote="${slash}${dquote}" - - # Convert \ to \\, - # " to \" - echo "$1" |\ - sed "s|${re_slash}|${re_slash}${re_slash}|g" |\ - sed "s|${re_dquote}|${re_slash}${re_dquote}|g" -} -c_escape_file() { - c_escape_string "$(cat "$1")" -} - -apply_patchdir() { - local patchdir="${WORKDIR}/patches" - local infodir="${WORKDIR}/patch-info" - local patchoutput="patchlevel-gentoo.h" - - # Inject Patch-Level info into description for patchlevel.h patch - # to show in -V - local patch_expr="*List-packaged-patches*" - local patch="$( cd "${patchdir}"; echo $patch_expr )"; - einfo "Injecting patch-level info into ${patch}.desc ( $patch_expr )" - - if [[ -e "${patchdir}/${patch}" ]]; then - printf "List packaged patches for %s(%s) in patchlevel.h" "${PF}" "${PATCH_BASE}"\ - >"${infodir}/${patch}.desc" || die "Can't rewrite ${patch}.desc" - else - eerror "No $patch_expr found in ${patchdir}" - fi - - # Compute patch list to apply - # different name other than PATCHES to stop default - # reapplying it - # Single depth is currently only supported, as artifacts can reside - # from the old layout being multiple-directories, as well as it grossly - # simplifying the patchlevel_gentoo.h generation. - local PERL_PATCHES=($( - find "${patchdir}" -maxdepth 1 -mindepth 1 -type f -printf "%f\n" |\ - grep -E '[.](diff|patch)$' |\ - sort -n - )) - - for patch in "${PERL_PATCHES[@]}"; do - eapply "${WORKDIR}"/patches/${patch} - done - - einfo "Generating $patchoutput" - - # This code creates a header file, each iteration - # creates one-or-more-lines for each entry found in PERL_PATCHES - # and STDOUT is redirected to the .h file - for patch in "${PERL_PATCHES[@]}"; do - local desc_f="${infodir}/${patch}.desc" - local bugs_f="${infodir}/${patch}.bugs" - - printf ',"%s"\n' "${patch}" - if [[ ! -e "${desc_f}" ]]; then - ewarn "No description provided for ${patch} (expected: ${desc_f} )" - else - local desc="$(c_escape_file "${desc_f}")" - printf ',"- %s"\n' "${desc}" - fi - if [[ -e "${bugs_f}" ]]; then - while read -d $'\n' -r line; do - local esc_line="$(c_escape_string "${line}")" - printf ',"- Bug: %s"\n' "${esc_line}" - done <"${bugs_f}" - fi - done > "${S}/${patchoutput}" - printf "%s\n" "${patchoutput}" >> "${S}/MANIFEST" - -} -src_prepare() { - local patchdir="${WORKDIR}/patches" - - # Prepare Patch dir with additional patches / remove unwanted patches - # Inject bug/desc entries for perl -V - if use hppa ; then - # bug 634162 - add_patch "${FILESDIR}/${PN}-5.26.2-hppa.patch" "100-5.26.2-hppa.patch"\ - "Fix broken miniperl on hppa"\ - "https://bugs.debian.org/869122" "https://bugs.gentoo.org/634162" - fi - 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 - rm_patch "*-nsl-and-cl*" - fi - - apply_patchdir - - 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 && [[ -e "${EPREFIX}"/usr/include/errno.h ]] ; then - sed -i "/my..sysroot/s:'':'${EPREFIX}':" ext/Errno/Errno_pm.PL || die - fi - - if [[ ${CHOST} == *-solaris* ]] ; then - # set a soname, fix linking against just built libperl - sed -i -e 's/netbsd\*/netbsd*|solaris*/' Makefile.SH || die - fi - - if [[ ${CHOST} == *-darwin* ]] ; then - # fix install_name (soname) not to reference $D - sed -i -e '/install_name `pwd/s/`pwd`/\\$(shrpdir)/' Makefile.SH || die - fi - - default -} - -myconf() { - # the myconf array is declared in src_configure - myconf=( "${myconf[@]}" "$@" ) -} - -# Outputs a list of versions which have been seen in any of the -# primary perl @INC prefix paths, such as: -# /usr/lib64/perl5/ -# /usr/local/lib64/perl5/ -# /usr/lib64/perl5/vendor_perl/ -# -# All values of NUMBER must be like "5.x.y", unless PERL_SUPPORT_SINGLE_SLOT -# is enabled, where it will also allow numbers like "5.x" -# -# PERL_SUPPORT_SINGLE_SLOT should only be used to transition *away* from PERL_SINGLE_SLOT -# if you used that. -find_candidate_inc_versions() { - local regex='.*/5[.][0-9]+[.][0-9]+$'; - if [[ ! -z "${PERL_SUPPORT_SINGLE_SLOT}" || ! -z "${PERL_SINGLE_SLOT}" ]]; then - regex='.*/5[.][0-9]+\([.][0-9]+\|\)$' - fi - local dirs=( - "${EROOT}${PRIV_BASE}" - "${EROOT}${SITE_BASE}" - "${EROOT}${VENDOR_BASE}" - ) - for dir in "${dirs[@]}"; do - if [[ ! -e "${dir}" ]]; then - continue - fi - # Without access to readdir() on these dirs, find will not be able - # to reveal any @INC directories inside them, and will subsequently prune - # them from the built perl's @INC support, breaking our compatiblity options - # entirely. - if [[ ! -r "${dir}" || ! -x "${dir}" ]]; then - eerror "Bad permissions on ${dir}, this will probably break things" - eerror "Ensure ${dir} is +rx for at least uid=$EUID" - eerror "Recommended permission is +rx for all" - eerror "> chmod o+rx ${dir}" - fi - done - einfo "Scanning for old @INC dirs matching '$regex' in: ${dirs[*]}" - find "${dirs[@]}" -maxdepth 1 -mindepth 1 -type d -regex "${regex}" -printf "%f " 2>/dev/null -} -# Sort versions passed versiony-ly, remove self-version if present -# dedup. Takes each version as an argument -sanitize_inc_versions() { - local vexclude="${DIST_VERSION%-RC}" - if [[ ! -z "${PERL_SINGLE_SLOT}" ]]; then - vexclude="${SUBSLOT}" - fi - einfo "Normalizing/Sorting candidate list: $*" - einfo " to remove '${vexclude}'" - # Note, general numeric sort has to be used - # for the last component, or unique will convert - # 5.30.0 + 5.30 into just 5.30 - printf "%s\n" "$@" |\ - grep -vxF "${vexclude}" |\ - sort -u -nr -t'.' -k1,1rn -k2,2rn -k3,3rg -} - -versions_to_inclist() { - local oldv="${PERL_BIN_OLDVERSEN}" - if [[ ! -z "${PERL_SINGLE_SLOT}" ]]; then - oldv="${DIST_VERSION%-RC} ${PERL_BIN_OLDVERSEN}" - fi - for v; do - has "${v}" ${oldv} && echo -n "${v}/${myarch}${mythreading}/ "; - echo -n "${v}/ "; - done -} -versions_to_gentoolibdirs() { - local oldv="${PERL_BIN_OLDVERSEN}" - local root - local v - if [[ ! -z "${PERL_SINGLE_SLOT}" ]]; then - oldv="${DIST_VERSION%-RC} ${PERL_BIN_OLDVERSEN}" - fi - for v; do - for root in "${PRIV_BASE}" "${VENDOR_BASE}" "${SITE_BASE}"; do - local fullpath="${EROOT}${root}/${v}" - if [[ -e "${fullpath}" ]]; then - has "${v}" ${oldv} && printf "%s:" "${fullpath}/${myarch}${mythreading}"; - printf "%s:" "${fullpath}" - fi - done - done -} - -src_configure() { - declare -a myconf - - export LC_ALL="C" - [[ ${COLUMNS:-1} -ge 1 ]] || unset COLUMNS # bug #394091 - - # 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" - - # Generic LTO broken since 5.28, triggers EUMM failures - filter-flags "-flto" - - 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_candidate_inc_versions )" - fi - - # Fixup versions, removing self match, fixing order and dupes - PERL_OLDVERSEN="$( sanitize_inc_versions ${PERL_OLDVERSEN} )" - - # Experts who want a "Pure" install can set PERL_OLDVERSEN to an empty string - if [[ -n "${PERL_OLDVERSEN// }" ]]; then - local inclist="$( versions_to_inclist ${PERL_OLDVERSEN} )" - 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 " ${EROOT}${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}" - myconf -Dgentoolibdirs="$( versions_to_gentoolibdirs ${PERL_OLDVERSEN} )" - 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)" - - # Older macOS with non-Apple GCC chokes on inline in system headers - # using c89 mode as injected by cflags.SH - [[ ${CHOST} == *-darwin* && ${CHOST##*darwin} -le 9 ]] && tc-is-gcc && \ - append-cflags -Dinline=__inline__ - - # flock on 32-bit sparc Solaris is broken, fall back to fcntl - [[ ${CHOST} == sparc-*-solaris* ]] && \ - myconf -Ud_flock - - # 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})" - - # setting -Dld= to tc-getLD breaks perl and all perl things - # https://github.com/Perl/perl5/issues/17791#issuecomment-630145202 - myconf \ - -Duseshrplib \ - -Darchname="${myarch}" \ - -Dcc="$(tc-getCC)" \ - -Dar="$(tc-getAR)" \ - -Dnm="$(tc-getNM)" \ - -Dcpp="$(tc-getCPP)" \ - -Dranlib="$(tc-getRANLIB)" \ - -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; - export GENTOO_ASSUME_SANDBOXED="${GENTOO_ASSUME_SANDBOXED:-1}" - export GENTOO_NO_PORTING_TESTS="${GENTOO_NO_PORTING_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 ../../../../${LIBPERL} "${ED}"${coredir}/${LIBPERL} || die - ln -sf ../../../../${LIBPERL} "${ED}"${coredir}/libperl$(get_libname ${SHORT_PV}) || die - ln -sf ../../../../${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 -} -- cgit v1.2.3