diff options
author | Matt Turner <mattst88@gentoo.org> | 2024-12-21 08:32:03 -0500 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-12-21 20:30:44 +0000 |
commit | b136b63a86a434f995c6c8d111c4f87bc779d3a3 (patch) | |
tree | 39b37e74f87fd9426eaf9c38b8d13f72337e68c7 /dev-lang | |
parent | app-admin/perl-cleaner: Drop old versions (diff) | |
download | gentoo-b136b63a86a434f995c6c8d111c4f87bc779d3a3.tar.gz gentoo-b136b63a86a434f995c6c8d111c4f87bc779d3a3.tar.bz2 gentoo-b136b63a86a434f995c6c8d111c4f87bc779d3a3.zip |
dev-lang/perl: Drop old versions
Signed-off-by: Matt Turner <mattst88@gentoo.org>
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-lang')
-rw-r--r-- | dev-lang/perl/Manifest | 3 | ||||
-rw-r--r-- | dev-lang/perl/perl-5.38.2-r3.ebuild | 864 | ||||
-rw-r--r-- | dev-lang/perl/perl-5.38.2-r6.ebuild | 865 |
3 files changed, 0 insertions, 1732 deletions
diff --git a/dev-lang/perl/Manifest b/dev-lang/perl/Manifest index 6d0b574dea0c..e2626249b0c5 100644 --- a/dev-lang/perl/Manifest +++ b/dev-lang/perl/Manifest @@ -1,6 +1,3 @@ -DIST perl-5.38.0-patches-1.tar.gz 26047 BLAKE2B 809dd5242f9868e54525ae8056598d3252c889afc72ed6f122174f828947223399a5ba4dbc16dd43501f7138205991f8c102cbe0ed94175ae3353040c53a0162 SHA512 c66160e20095555aa21d3be70050dce934d62e55e01dcf0f716129b2faa390923958a48bc448b4fab6f55e5b097eb378f7a6409a92c024fe68c8b34fddcfc5e4 -DIST perl-5.38.2.tar.xz 13679524 BLAKE2B 74250e30dde76911902a787134808dae69113c07029cdf09ab4777e7bb4e6c389cdefb9cb08be87e106a4bcd40dacaf188907d7a62c5aca22c1e374741855b39 SHA512 0ca51e447c7a18639627c281a1c7ae6662c773745ea3c86bede46336d5514ecc97ded2c61166e1ac15635581489dc596368907aa3a775b34db225b76d7402d10 DIST perl-5.40.0-patches-2.tar.xz 17072 BLAKE2B 7cc1085a0a701f72cf1fce2b7f18ac949eb03a9e40716c37082396483045df577ef13bbca58ef06f20868e52e9c78e18fa5b8a3434ceea272ff49832a086a1f5 SHA512 d31a25894e3b34c8e80f439ebd423dd8f28eac056ce42d69376882c1655b1f7289ef22f8aa8d30147eaebbe6693f4d86d1570e153b55d58d7b30e5832e7bea60 DIST perl-5.40.0.tar.xz 13804184 BLAKE2B cf191c3ccaf6f395c0c7d08c2ad3456c1dd622d4fe78e7fb3a74c741e9a84f1d39a55f5bc6adbea54c9520b1b387e72e957f9a7544ab8f24968d233cd5b959ae SHA512 a2fb1a24c6367b4043f4e929b2d74fc3bad1415e53b791ed1f219f1701064ae21b2bd3164ba95fcf24eaf458bd54433024ccae43725c0bb82a1ec6a98dc7052d -DIST perl-cross-1.5.2.tar.gz 120097 BLAKE2B 8703816363b41ea5fe528b192ed28b169cf0bfc3c61a9332682240bdc02f6ef0208fc0202517ba03e7c177bfbb52783c833aacaf2d16583e0f90bd58805a03ff SHA512 fb16316add0a7458f087295077518402eddaa1c759da6e268742e9ba5439cb3f1db7adcd7ef769c4a613b7518ff9e48849f60b24bd2a6daaaf6e96b59bbf0ac8 DIST perl-cross-1.6.tar.gz 121973 BLAKE2B b3a17d92dd7621a3bc253a6c4e56eccd3adec2c2b52e606c956a08f48d786a16a3ac5beb056a732ba3df92227f210193b0f516fd9d73cac362a04ec52efab029 SHA512 980af804513ec126e40eb9d8200ca54ba805bbb13b38d20a45daaf8d98d6b257e2eebc1ecad56cd47f60e235fa1141f6df9518d748db4f18d5219180750ca615 diff --git a/dev-lang/perl/perl-5.38.2-r3.ebuild b/dev-lang/perl/perl-5.38.2-r3.ebuild deleted file mode 100644 index 68f4571a01e9..000000000000 --- a/dev-lang/perl/perl-5.38.2-r3.ebuild +++ /dev/null @@ -1,864 +0,0 @@ -# Copyright 1999-2024 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.5.2 -PATCH_BASE="perl-5.38.0-patches-${PATCH_VER}" -PATCH_DEV=dilfridge - -DIST_AUTHOR=PEVANS - -# Greatest first, don't include yourself -# Devel point-releases are not ABI-intercompatible, but stable point releases are -# BIN_OLDVERSEN contains only C-ABI-intercompatible versions -PERL_BIN_OLDVERSEN="" - -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" - -HOMEPAGE="https://www.perl.org/" - -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/archive/refs/tags/${PATCH_BASE}.tar.gz - https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${PATCH_BASE}.tar.gz - https://github.com/arsv/perl-cross/releases/download/${CROSS_VER}/perl-cross-${CROSS_VER}.tar.gz -" - -S="${WORKDIR}/${MY_P}" - -LICENSE="|| ( Artistic GPL-1+ )" - -SLOT="0/${SUBSLOT}" - -if [[ "${PV##*.}" != "9999" ]] && [[ "${PV/rc//}" == "${PV}" ]] ; then - KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -fi - -IUSE="berkdb perl_features_debug doc gdbm perl_features_ithreads minimal perl_features_quadmath" - -RDEPEND=" - berkdb? ( sys-libs/db:= ) - gdbm? ( >=sys-libs/gdbm-1.8.3:= ) - app-arch/bzip2 - >=sys-libs/zlib-1.2.12 - virtual/libcrypt:= -" -DEPEND="${RDEPEND}" -BDEPEND="${RDEPEND}" - -PDEPEND=" - >=app-admin/perl-cleaner-2.30 - !minimal? ( - >=virtual/perl-CPAN-2.290.0 - >=virtual/perl-Encode-3.120.0 - >=virtual/perl-File-Temp-0.230.400-r2 - >=virtual/perl-Data-Dumper-2.154.0 - >=virtual/perl-Math-BigInt-1.999.842 - virtual/perl-Test-Harness - ) -" -# bug 390719, bug 523624 -# virtual/perl-Test-Harness is here for the bundled ExtUtils::MakeMaker - -dual_scripts() { - src_remove_dual perl-core/Archive-Tar 2.400.0 ptar ptardiff ptargrep - src_remove_dual perl-core/CPAN 2.360.0 cpan - src_remove_dual perl-core/Digest-SHA 6.40.0 shasum - src_remove_dual perl-core/Encode 3.190.0 enc2xs piconv - src_remove_dual perl-core/ExtUtils-MakeMaker 7.700.0 instmodsh - src_remove_dual perl-core/ExtUtils-ParseXS 3.510.0 xsubpp - src_remove_dual perl-core/IO-Compress 2.204.0 zipdetails - src_remove_dual perl-core/JSON-PP 4.160.0 json_pp - src_remove_dual perl-core/Module-CoreList 5.202.311.290 corelist - src_remove_dual perl-core/Pod-Checker 1.750.0 podchecker - src_remove_dual perl-core/Pod-Perldoc 3.280.100 perldoc - src_remove_dual perl-core/Pod-Usage 2.30.0 pod2usage - src_remove_dual perl-core/Test-Harness 3.440.0 prove - src_remove_dual perl-core/podlators 5.10.0 pod2man pod2text - src_remove_dual_man perl-core/podlators 5.10.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 perl_features_ithreads && ( has_version '<dev-lang/perl-5.38.2-r3[-ithreads]' || has_version '>=dev-lang/perl-5.38.2-r3[-perl_features_ithreads]' ) ) || \ - ( ! use perl_features_ithreads && ( has_version '<dev-lang/perl-5.38.2-r3[ithreads]' || has_version '>=dev-lang/perl-5.38.2-r3[perl_features_ithreads]' ) ) || \ - ( use perl_features_quadmath && ( has_version '<dev-lang/perl-5.38.2-r3[-quadmath]' || has_version '>=dev-lang/perl-5.38.2-r3[-perl_features_quadmath]' ) ) || \ - ( ! use perl_features_quadmath && ( has_version '<dev-lang/perl-5.38.2-r3[quadmath]' || has_version '>=dev-lang/perl-5.38.2-r3[perl_features_quadmath]' ) ) || \ - ( use perl_features_debug && ( has_version '<dev-lang/perl-5.38.2-r3[-debug]' || has_version '>=dev-lang/perl-5.38.2-r3[-perl_features_debug]' ) ) || \ - ( ! use perl_features_debug && ( has_version '<dev-lang/perl-5.38.2-r3[debug]' || has_version '>=dev-lang/perl-5.38.2-r3[perl_features_debug]' ) ) ; then - echo "" - ewarn "TOGGLED PERL FEATURES WARNING:" - ewarn "You changed one of the PERL_FEATURES flags ithreads, quadmath, or debug." - ewarn "You must rebuild all perl-modules installed. Mostly this should be done automatically" - ewarn "via the flag changes of the packages. If the rebuild fails, use perl-cleaner." - ewarn "Use: perl-cleaner --modules ; perl-cleaner --force --libperl" - ewarn - ewarn "NOTE: Previous to perl-5.38.2-r3, these flags were useflags for dev-lang/perl." - ewarn "If you just upgraded and do not intend to change anything, carry the same settings over" - ewarn "into a global PERL_FEATURES variable set in make.conf. E.g., " - ewarn "dev-lang/perl[ithreads,quadmath] becomes PERL_FEATURES=\"ithreads quadmath\"" - fi -} - -pkg_pretend() { - if \ - ( use perl_features_ithreads && has_version '<dev-lang/perl-5.38.2-r3[-ithreads]' ) || \ - ( ! use perl_features_ithreads && has_version '<dev-lang/perl-5.38.2-r3[ithreads]' ) || \ - ( use perl_features_quadmath && has_version '<dev-lang/perl-5.38.2-r3[-quadmath]' ) || \ - ( ! use perl_features_quadmath && has_version '<dev-lang/perl-5.38.2-r3[quadmath]' ) || \ - ( use perl_features_debug && has_version '<dev-lang/perl-5.38.2-r3[-debug]' ) || \ - ( ! use perl_features_debug && has_version '<dev-lang/perl-5.38.2-r3[debug]' ) ; \ - then - echo "" - ewarn "As of dev-lang/perl-5.38.2-r3, the useflags debug, ithreads, quadmath move into" - ewarn "a use-expand variable PERL_FEATURES, which should be set globally in make.conf." - ewarn "It appears that you have not set this variable properly yet." - ewarn "" - ewarn "Giving you a chance to abort and read the corresponding news item now..." - for n in 10 9 8 7 6 5 4 3 2 1 ; do - echo -n "${n} " - sleep 2 - done; - echo "continuing." - fi -} - -pkg_setup() { - case ${CHOST} in - *-darwin*) osname="darwin" ;; - *-solaris*) osname="solaris" ;; - *) osname="linux" ;; - esac - - myarch="${CHOST%%-*}-${osname}" - if use perl_features_debug ; then - myarch+="-debug" - fi - if use perl_features_quadmath ; then - myarch+="-quadmath" - fi - if use perl_features_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}/${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}" - - 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 794463, needs further analysis what is exactly wrong here - eapply "${FILESDIR}/perl-5.34.0-crossfit.patch" - - # 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 *-darwin-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" - - mv -v "${WORKDIR}/perl-patchset-${PATCH_BASE}/patches" "${WORKDIR}/patches" || die - mv -v "${WORKDIR}/perl-patchset-${PATCH_BASE}/patch-info" "${WORKDIR}/patch-info" || die - - # Prepare Patch dir with additional patches / remove unwanted patches - # Inject bug/desc entries for perl -V - # Old example: - # 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" - add_patch "${FILESDIR}/${PN}-5.36.0-fix-configure-for-clang.patch" \ - "100-5.36.0-fix-configure-for-clang.patch" \ - "Fix clang check in configure" \ - "https://github.com/Perl/perl5/issues/21099" - - 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 - - # fix environ linkage absence (only a real issue on Darwin9) - if [[ ${CHOST##*-darwin} -le 9 ]] ; then - sed -i -e '/^PLDLFLAGS =/s/=/= -include crt_externs.h -Denviron="(*_NSGetEnviron())"/' \ - Makefile.SH || die - fi - 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/<NUMBER> -# /usr/local/lib64/perl5/<NUMBER> -# /usr/lib64/perl5/vendor_perl/<NUMBER> -# -# All values of NUMBER must be like "5.x.y" or like "5.x" -# -find_candidate_inc_versions() { - local regex='.*/5[.][0-9]+\([.][0-9]+\|\)$' - 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="${SUBSLOT}" - 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="${DIST_VERSION%-RC} ${PERL_BIN_OLDVERSEN}" - - for v; do - has "${v}" ${oldv} && echo -n "${v}/${myarch}${mythreading}/ "; - echo -n "${v}/ "; - done -} - -versions_to_gentoolibdirs() { - local oldv="${DIST_VERSION%-RC} ${PERL_BIN_OLDVERSEN}" - local root - local v - 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 - 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-lto - - # On musl we dont want to use largefile *64 types, since 1) normal - # types are 64bit / largefile anyway and 2) the *64 types are going - # away in 1.2.4... bug #911233 - use elibc_musl && myconf -Ud_off64_t - - use sparc && myconf -Ud_longdbl - - # This urgently needs debugging - on m68k, miniperl crashes during - # build otherwise.. - use m68k && append-ldflags -Wl,-z,norelro - - 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 <gdbm/ndbm.h>) 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 need it..." - myconf -Ui_db -Ui_ndbm - fi - - use perl_features_ithreads && myconf -Dusethreads - - use perl_features_quadmath && myconf -Dusequadmath - - if use perl_features_debug ; then - append-cflags "-g" - myconf -DDEBUGGING - elif [[ ${CFLAGS} == *-g* ]] ; then - myconf -DDEBUGGING=-g - else - myconf -DDEBUGGING=none - fi - - # modifying 'optimize' prevents cross configure script from appending required flags - if tc-is-cross-compiler; then - append-cflags "-fwrapv" - - # bug #913171 - export HOSTCFLAGS="${CFLAGS_FOR_BUILD} -D_GNU_SOURCE" - fi - - # bug #877659, bug #821577 - append-cflags -fno-strict-aliasing - - # 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, in addition, we override - # cflags, so we loose PERL_DARWIN which enables compat code that - # apparently on more recent macOS releases is no longer necessary - [[ ${CHOST} == *-darwin* && ${CHOST##*darwin} -le 9 ]] && tc-is-gcc && \ - append-cflags -Dinline=__inline__ -DPERL_DARWIN - - # 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 'int 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}" \ - -Dar="$(tc-getAR)" \ - -Dcc="$(tc-getCC)" \ - -Dcpp="$(tc-getCPP)" \ - -Dnm="$(tc-getNM)" \ - -Dranlib="$(tc-getRANLIB)" \ - -Accflags="${CFLAGS} -DNO_PERL_RAND_SEED" \ - -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 \ - "${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 - 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 [[ -z "${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.38.2-r6.ebuild b/dev-lang/perl/perl-5.38.2-r6.ebuild deleted file mode 100644 index 832d06a4cfe9..000000000000 --- a/dev-lang/perl/perl-5.38.2-r6.ebuild +++ /dev/null @@ -1,865 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit alternatives flag-o-matic toolchain-funcs multilib multiprocessing - -PATCH_VER=1 -CROSS_VER=1.5.2 -PATCH_BASE="perl-5.38.0-patches-${PATCH_VER}" -PATCH_DEV=dilfridge - -DIST_AUTHOR=PEVANS - -# Greatest first, don't include yourself -# Devel point-releases are not ABI-intercompatible, but stable point releases are -# BIN_OLDVERSEN contains only C-ABI-intercompatible versions -PERL_BIN_OLDVERSEN="" - -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" - -HOMEPAGE="https://www.perl.org/" - -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/archive/refs/tags/${PATCH_BASE}.tar.gz - https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${PATCH_BASE}.tar.gz - https://github.com/arsv/perl-cross/releases/download/${CROSS_VER}/perl-cross-${CROSS_VER}.tar.gz -" - -S="${WORKDIR}/${MY_P}" - -LICENSE="|| ( Artistic GPL-1+ )" - -SLOT="0/${SUBSLOT}" - -if [[ "${PV##*.}" != "9999" ]] && [[ "${PV/rc//}" == "${PV}" ]] ; then - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -fi - -IUSE="berkdb perl_features_debug doc gdbm perl_features_ithreads minimal perl_features_quadmath" - -RDEPEND=" - berkdb? ( sys-libs/db:= ) - gdbm? ( >=sys-libs/gdbm-1.8.3:= ) - app-arch/bzip2 - >=sys-libs/zlib-1.2.12 - virtual/libcrypt:= -" -DEPEND="${RDEPEND}" -BDEPEND="${RDEPEND}" -PDEPEND=" - !minimal? ( - >=app-admin/perl-cleaner-2.31 - >=virtual/perl-CPAN-2.290.0 - >=virtual/perl-Encode-3.120.0 - >=virtual/perl-File-Temp-0.230.400-r2 - >=virtual/perl-Data-Dumper-2.154.0 - >=virtual/perl-Math-BigInt-1.999.842 - virtual/perl-Test-Harness - ) -" -# bug 390719, bug 523624 -# virtual/perl-Test-Harness is here for the bundled ExtUtils::MakeMaker - -dual_scripts() { - src_remove_dual perl-core/Archive-Tar 2.400.0 ptar ptardiff ptargrep - src_remove_dual perl-core/CPAN 2.360.0 cpan - src_remove_dual perl-core/Digest-SHA 6.40.0 shasum - src_remove_dual perl-core/Encode 3.190.0 enc2xs piconv - src_remove_dual perl-core/ExtUtils-MakeMaker 7.700.0 instmodsh - src_remove_dual perl-core/ExtUtils-ParseXS 3.510.0 xsubpp - src_remove_dual perl-core/IO-Compress 2.204.0 zipdetails - src_remove_dual perl-core/JSON-PP 4.160.0 json_pp - src_remove_dual perl-core/Module-CoreList 5.202.311.290 corelist - src_remove_dual perl-core/Pod-Checker 1.750.0 podchecker - src_remove_dual perl-core/Pod-Perldoc 3.280.100 perldoc - src_remove_dual perl-core/Pod-Usage 2.30.0 pod2usage - src_remove_dual perl-core/Test-Harness 3.440.0 prove - src_remove_dual perl-core/podlators 5.10.0 pod2man pod2text - src_remove_dual_man perl-core/podlators 5.10.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 perl_features_ithreads && ( has_version '<dev-lang/perl-5.38.2-r3[-ithreads]' || has_version '>=dev-lang/perl-5.38.2-r3[-perl_features_ithreads]' ) ) || \ - ( ! use perl_features_ithreads && ( has_version '<dev-lang/perl-5.38.2-r3[ithreads]' || has_version '>=dev-lang/perl-5.38.2-r3[perl_features_ithreads]' ) ) || \ - ( use perl_features_quadmath && ( has_version '<dev-lang/perl-5.38.2-r3[-quadmath]' || has_version '>=dev-lang/perl-5.38.2-r3[-perl_features_quadmath]' ) ) || \ - ( ! use perl_features_quadmath && ( has_version '<dev-lang/perl-5.38.2-r3[quadmath]' || has_version '>=dev-lang/perl-5.38.2-r3[perl_features_quadmath]' ) ) || \ - ( use perl_features_debug && ( has_version '<dev-lang/perl-5.38.2-r3[-debug]' || has_version '>=dev-lang/perl-5.38.2-r3[-perl_features_debug]' ) ) || \ - ( ! use perl_features_debug && ( has_version '<dev-lang/perl-5.38.2-r3[debug]' || has_version '>=dev-lang/perl-5.38.2-r3[perl_features_debug]' ) ) ; then - echo "" - ewarn "TOGGLED PERL FEATURES WARNING:" - ewarn "You changed one of the PERL_FEATURES flags ithreads, quadmath, or debug." - ewarn "You must rebuild all perl-modules installed. Mostly this should be done automatically" - ewarn "via the flag changes of the packages. If the rebuild fails, use perl-cleaner." - ewarn "Use: perl-cleaner --modules ; perl-cleaner --force --libperl" - ewarn - ewarn "NOTE: Previous to perl-5.38.2-r3, these flags were useflags for dev-lang/perl." - ewarn "If you just upgraded and do not intend to change anything, carry the same settings over" - ewarn "into a global PERL_FEATURES variable set in make.conf. E.g., " - ewarn "dev-lang/perl[ithreads,quadmath] becomes PERL_FEATURES=\"ithreads quadmath\"" - fi -} - -pkg_pretend() { - if \ - ( use perl_features_ithreads && has_version '<dev-lang/perl-5.38.2-r3[-ithreads]' ) || \ - ( ! use perl_features_ithreads && has_version '<dev-lang/perl-5.38.2-r3[ithreads]' ) || \ - ( use perl_features_quadmath && has_version '<dev-lang/perl-5.38.2-r3[-quadmath]' ) || \ - ( ! use perl_features_quadmath && has_version '<dev-lang/perl-5.38.2-r3[quadmath]' ) || \ - ( use perl_features_debug && has_version '<dev-lang/perl-5.38.2-r3[-debug]' ) || \ - ( ! use perl_features_debug && has_version '<dev-lang/perl-5.38.2-r3[debug]' ) ; \ - then - echo "" - ewarn "As of dev-lang/perl-5.38.2-r3, the useflags debug, ithreads, quadmath move into" - ewarn "a use-expand variable PERL_FEATURES, which should be set globally in make.conf." - ewarn "It appears that you have not set this variable properly yet." - ewarn "" - ewarn "Giving you a chance to abort and read the corresponding news item now..." - for n in 10 9 8 7 6 5 4 3 2 1 ; do - echo -n "${n} " - sleep 2 - done; - echo "continuing." - fi -} - -pkg_setup() { - case ${CHOST} in - *-darwin*) osname="darwin" ;; - *-solaris*) osname="solaris" ;; - *) osname="linux" ;; - esac - - myarch="${CHOST%%-*}-${osname}" - if use perl_features_debug ; then - myarch+="-debug" - fi - if use perl_features_quadmath ; then - myarch+="-quadmath" - fi - if use perl_features_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}/${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}" - - 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 794463, needs further analysis what is exactly wrong here - eapply "${FILESDIR}/perl-5.34.0-crossfit.patch" - - # 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 *-darwin-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" - - mv -v "${WORKDIR}/perl-patchset-${PATCH_BASE}/patches" "${WORKDIR}/patches" || die - mv -v "${WORKDIR}/perl-patchset-${PATCH_BASE}/patch-info" "${WORKDIR}/patch-info" || die - - # Prepare Patch dir with additional patches / remove unwanted patches - # Inject bug/desc entries for perl -V - # Old example: - # 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" - add_patch "${FILESDIR}/${PN}-5.36.0-fix-configure-for-clang.patch" \ - "100-5.36.0-fix-configure-for-clang.patch" \ - "Fix clang check in configure" \ - "https://github.com/Perl/perl5/issues/21099" - - 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 - - # fix environ linkage absence (only a real issue on Darwin9) - if [[ ${CHOST##*-darwin} -le 9 ]] ; then - sed -i -e '/^PLDLFLAGS =/s/=/= -include crt_externs.h -Denviron="(*_NSGetEnviron())"/' \ - Makefile.SH || die - fi - 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/<NUMBER> -# /usr/local/lib64/perl5/<NUMBER> -# /usr/lib64/perl5/vendor_perl/<NUMBER> -# -# All values of NUMBER must be like "5.x.y" or like "5.x" -# -find_candidate_inc_versions() { - local regex='.*/5[.][0-9]+\([.][0-9]+\|\)$' - 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="${SUBSLOT}" - 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="${DIST_VERSION%-RC} ${PERL_BIN_OLDVERSEN}" - - for v; do - has "${v}" ${oldv} && echo -n "${v}/${myarch}${mythreading}/ "; - echo -n "${v}/ "; - done -} - -versions_to_gentoolibdirs() { - local oldv="${DIST_VERSION%-RC} ${PERL_BIN_OLDVERSEN}" - local root - local v - 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 - 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 - - # Perl relies on -fwrapv semantics - filter-flags -ftrapv - - # This flag makes compiling crash in interesting ways - filter-flags "-malign-double" - - # On musl we dont want to use largefile *64 types, since 1) normal - # types are 64bit / largefile anyway and 2) the *64 types are going - # away in 1.2.4... bug #911233 - use elibc_musl && myconf -Ud_off64_t - - use sparc && myconf -Ud_longdbl - - # This urgently needs debugging - on m68k, miniperl crashes during - # build otherwise.. - use m68k && append-ldflags -Wl,-z,norelro - - 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 <gdbm/ndbm.h>) 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 need it..." - myconf -Ui_db -Ui_ndbm - fi - - use perl_features_ithreads && myconf -Dusethreads - - use perl_features_quadmath && myconf -Dusequadmath - - if use perl_features_debug ; then - append-cflags "-g" - myconf -DDEBUGGING - elif [[ ${CFLAGS} == *-g* ]] ; then - myconf -DDEBUGGING=-g - else - myconf -DDEBUGGING=none - fi - - # modifying 'optimize' prevents cross configure script from appending required flags - if tc-is-cross-compiler; then - append-cflags "-fwrapv" - - # Needed for the CHOST build too (bug #932385) - export CFLAGS="${CFLAGS} -D_GNU_SOURCE" - - # bug #913171 - export HOSTCFLAGS="${CFLAGS_FOR_BUILD} -D_GNU_SOURCE" - fi - - # bug #877659, bug #821577 - append-cflags -fno-strict-aliasing - - # 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, in addition, we override - # cflags, so we loose PERL_DARWIN which enables compat code that - # apparently on more recent macOS releases is no longer necessary - [[ ${CHOST} == *-darwin* && ${CHOST##*darwin} -le 9 ]] && tc-is-gcc && \ - append-cflags -Dinline=__inline__ -DPERL_DARWIN - - # 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 'int 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}" \ - -Dar="$(tc-getAR)" \ - -Dcc="$(tc-getCC)" \ - -Dcpp="$(tc-getCPP)" \ - -Dld="$(tc-getCC)" \ - -Dnm="$(tc-getNM)" \ - -Dranlib="$(tc-getRANLIB)" \ - -Accflags="${CFLAGS} -DNO_PERL_RAND_SEED" \ - -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 \ - "${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 - 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 [[ -z "${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 -} |