| Name |
perl |
| Description |
Larry Wall's Practical Extraction and Report Language |
| Version |
5.40.3-r0 |
| Package Base |
perl |
| Homepage |
https://www.perl.org/ |
| Maintainers |
['Celeste <cielesti@protonmail.com>'] |
| Contributors |
['Leonardo Arena <rnalrd@alpinelinux.org>', 'Valery Kartel <valery.kartel@gmail.com>'] |
| Distro-repo |
https://gitlab.alpinelinux.org/alpine/aports/-/tree/3.22-stable/main/perl |
| Sources |
['digest-sha-cflags.patch', 'dont-write-packlist.patch', 'https://cpan.metacpan.org/authors/id/S/SH/SHAY/perl-5.40.3-r0.tar.xz', 'json-pp-options.patch', 'musl-skip-dst-test.patch', 'musl-stack-size.patch', 'perl-cross-$_cross.tar.gz.noauto::https://github.com/arsv/perl-cross/releases/download/$_cross/perl-cross-$_cross.tar.gz', 'skip-test-due-to-busybox-ps.patch'] |
| Dependencies |
['$pkgname', 'libbz2.so.1', 'libc.musl-x86_64.so.1', 'libz.so.1'] |
| Optional-Dependencies |
[] |
| Build-Dependencies |
[] |
| Provides |
['perl-scalar-list-utils=5.40.3-r0', 'so:libperl.so=0', 'cmd:perl5.40.3=5.40.3-r0', 'cmd:perl=5.40.3-r0', 'cmd:perldoc=5.40.3-r0', 'cmd:pod2html=5.40.3-r0', 'cmd:pod2man=5.40.3-r0', 'cmd:pod2text=5.40.3-r0', 'cmd:pod2usage=5.40.3-r0', 'cmd:podchecker=5.40.3-r0', 'cmd:streamzip=5.40.3-r0'] |
| Builddate |
03-08-2025 15:51:24 |
| Architecture |
x86_64 |
| Distro-Version |
v3.22 |
| Licenses |
['Artistic-1.0-Perl OR GPL-1.0-or-later'] |
| Hash |
Q1vTjSKUsEnG6YjN2O3lS2qLAkRXk= |
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: Celeste <cielesti@protonmail.com>
maintainer="Celeste <cielesti@protonmail.com>"
pkgname=perl
pkgver=5.40.3
pkgrel=0
_cross=1.6.2
pkgdesc="Larry Wall's Practical Extraction and Report Language"
url="https://www.perl.org/"
arch="all"
license="Artistic-1.0-Perl OR GPL-1.0-or-later"
depends_dev="perl-utils=$pkgver-r$pkgrel"
makedepends_host="bzip2-dev zlib-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-utils::noarch"
[ "$CBUILD" = "$CHOST" ] && subpackages="$subpackages miniperl"
#source="https://www.cpan.org/src/5.0/perl-$pkgver.tar.xz
source="https://cpan.metacpan.org/authors/id/S/SH/SHAY/perl-$pkgver.tar.xz
perl-cross-$_cross.tar.gz.noauto::https://github.com/arsv/perl-cross/releases/download/$_cross/perl-cross-$_cross.tar.gz
digest-sha-cflags.patch
dont-write-packlist.patch
json-pp-options.patch
musl-skip-dst-test.patch
musl-stack-size.patch
skip-test-due-to-busybox-ps.patch
"
# creates empty usr/local/{lib,share} for local sitedirs
options="!fhs"
# in perl core, removed from main/perl-scalar-list-utils
provides="
perl-scalar-list-utils=$pkgver-r$pkgrel
"
# secfixes:
# 5.40.1-r1:
# - CVE-2024-56406
# 5.38.1-r0:
# - CVE-2023-47038
# 5.34.0-r1:
# - CVE-2021-36770
# 5.30.3-r0:
# - CVE-2020-10543
# - CVE-2020-10878
# - CVE-2020-12723
# 5.26.3-r0:
# - CVE-2018-18311
# - CVE-2018-18312
# - CVE-2018-18313
# - CVE-2018-18314
# 5.26.2-r1:
# - CVE-2018-12015
# 5.26.2-r0:
# - CVE-2018-6797
# - CVE-2018-6798
# - CVE-2018-6913
# 5.26.1-r0:
# - CVE-2017-12837
# - CVE-2017-12883
_privlib=/usr/share/perl5/core_perl
_archlib=/usr/lib/perl5/core_perl
prepare() {
if [ "$CBUILD" != "$CHOST" ]; then
msg "Unpacking perl-cross-$_cross.tar.gz.noauto..."
tar --strip-components=1 -C "$builddir" \
-zxf "$srcdir"/perl-cross-$_cross.tar.gz.noauto
sed -Ei 's/\^(clang version)/^Alpine \1/' \
"$builddir"/cnf/configure_tool.sh
fi
# most sources are readonly but we patch some
chmod +w "$builddir"/*.c
default_prepare
# Ensure that we never accidentally bundle zlib or bzip2
rm -rf cpan/Compress-Raw-Zlib/zlib-src
rm -rf cpan/Compress-Raw-Bzip2/bzip2-src
sed -i '/\(bzip2\|zlib\)-src/d' MANIFEST
}
_configure() {
if [ "$CBUILD" != "$CHOST" ]; then
./configure \
--build=$CBUILD \
--target=$CHOST \
--sysroot=$CBUILDROOT \
--prefix=/usr \
--host-has\ perl_lc_all_uses_name_value_pairs=no \
--host-has\ perl_lc_all_separator=yes \
--host-set\ perl_lc_all_separator='";"' \
--host-has\ perl_lc_all_category_positions_init=yes \
--host-set\ perl_lc_all_category_positions_init='{0,1,2,3,4,5}' \
-Ud_perl_lc_all_uses_name_value_pairs \
-Dd_perl_lc_all_separator \
-Dperl_lc_all_separator='";"' \
-Dd_perl_lc_all_category_positions_init \
-Dperl_lc_all_category_positions_init='{ 0, 1, 2, 3, 4, 5 }' \
"$@"
else
./Configure \
-des \
-Dprefix=/usr \
"$@"
fi
}
build() {
export BUILD_ZLIB=0
export BUILD_BZIP2=0
export BZIP2_LIB="$CBUILDROOT/usr/lib"
export BZIP2_INCLUDE="$CBUILDROOT/usr/include"
# language runtime
export CFLAGS="${CFLAGS//-Os/-O2}"
if [ "$CBUILD" != "$CHOST" ]; then
CFLAGS="$CFLAGS -D_GNU_SOURCE" # memrchr
HOSTCFLAGS="$HOSTCFLAGS -D_GNU_SOURCE" # setresu/gid
else
CFLAGS="$CFLAGS -flto=auto"
fi
_configure \
-Dcccdlflags='-fPIC' \
-Dccdlflags='-rdynamic' \
-Dprivlib=$_privlib \
-Darchlib=$_archlib \
-Dvendorprefix=/usr \
-Dvendorlib=/usr/share/perl5/vendor_perl \
-Dvendorarch=/usr/lib/perl5/vendor_perl \
-Dsiteprefix=/usr/local \
-Dsitelib=/usr/local/share/perl5/site_perl \
-Dsitearch=/usr/local/lib/perl5/site_perl \
-Dlocincpth=' ' \
-Doptimize="$CFLAGS" \
-Duselargefiles \
-Dusethreads \
-Duseshrplib \
-Dd_semctl_semun \
-Dman1dir=/usr/share/man/man1 \
-Dman3dir=/usr/share/man/man3 \
-Dinstallman1dir=/usr/share/man/man1 \
-Dinstallman3dir=/usr/share/man/man3 \
-Dman1ext='1' \
-Dman3ext='3pm' \
-Dcf_by='Alpine' \
-Dcf_email='buildozer@alpinelinux.org' \
-Ud_csh \
-Ud_fpos64_t \
-Ud_off64_t \
-Dusenm \
-Duse64bitint
make libperl.so && make
}
check() {
export CI=true
export LC_ALL=C
# Perl tests HARNESS_OPTIONS against the regex
# /^j(\d*)$/, if $JOBS is unset, it defaults to 9
export HARNESS_OPTIONS=j"$JOBS"
export PERL_TEST_HARNESS_ASAP=1
make test_harness_notty
}
package() {
make DESTDIR="$pkgdir" install.perl
if subpackages_has "$pkgname-doc"; then
make install.man \
DESTDIR="$pkgdir" \
INSTALLFLAGS="--man3ext=3pm"
fi
# omit global flto afterward
# perl saves compile-time cflags and applies them to every future build
sed -i \
-e "s| -flto=auto||g" \
"$pkgdir"/usr/lib/perl5/core_perl/Config_heavy.pl
if [ -n "$(find "$pkgdir"/usr/local -type f)" ]; then
error "files found under /usr/local"
return 1
fi
}
miniperl() {
install -Dvm755 "$builddir"/miniperl \
-t "$subpkgdir"/usr/bin/
}
doc() {
local file; find "$pkgdir" -name "*.pod" | while read -r file; do
amove "${file#"$pkgdir"}"
done
default_doc
}
dev() {
amove \
$_archlib/Devel \
$_privlib/Encode \
usr/bin/h2xs \
usr/bin/perlivp \
usr/bin/enc2xs \
usr/bin/xsubpp
default_dev
}
utils() {
pkgdesc="$pkgdesc (misc utilities)"
depends="$pkgname=$pkgver-r$pkgrel"
amove \
usr/bin/corelist \
usr/bin/cpan \
usr/bin/encguess \
usr/bin/libnetcfg \
usr/bin/h2ph \
usr/bin/instmodsh \
usr/bin/json_pp \
usr/bin/perlbug \
usr/bin/perlthanks \
usr/bin/piconv \
usr/bin/pl2pm \
usr/bin/prove \
usr/bin/ptar \
usr/bin/ptardiff \
usr/bin/ptargrep \
usr/bin/shasum \
usr/bin/splain \
usr/bin/zipdetails
}
sha512sums="
53af3f7c31c0f3aea156206f1b9cc3a4855e5fedf01546df1c8458b86c76273d3a71cc397e76acdd6d354a4a4fe9571e925322f1c80d44c51fb9180d1bf064a7 perl-5.40.3.tar.xz
51b45bf972304634d706d09e27d457636e43f9f27f739004eca529b21245ba78612dcb08b54225fc7ca19511983642c37915939ea8aa1c1a4560093474d9e76b perl-cross-1.6.2.tar.gz.noauto
59afa4c166e4808d355e19cd70748540ffce9da5c6919c71648be7678de328409f9121ddea33415add73fc01a22e95ed9d9629f31b8ba20b3bbfc04dab926c63 digest-sha-cflags.patch
abae709290306a8fbc96b604b9b38fc09a46ae178f3e77944813f1b46c78e2e3654e5c3b3a6aca96684a2d1061e2871376d508fbe82604864055309156b4d0d8 dont-write-packlist.patch
4e8a655160e54a151e0bc4819fd1cd69e43c1e36844bcefbb9734f36130a2d9e1700b1aa64153a9d20a8deb875e904876dbe7b14dd278266b21a86a33d91eebd json-pp-options.patch
3eaec691bc38e208ba4f34130ae45e50b6c339fa50093d0b0f6d7f24cb5b7c2a3734ca714a279c4b51173f82e46a8e7a3e70bfc7d7471a18c55a2102140e4186 musl-skip-dst-test.patch
c004d6612ec754e5947255a2e2d15b5581f187c32495aeeec9f4fa286919bd9f40c72b63db61e3f4004b09288af2063a6a14b67e5c289e9a8b23ebd7c216e16f musl-stack-size.patch
ba9cb1ff4a6e8e4c31bf4ef132c071ac919ffe45842cf5e98c8ca72d78ef4803883b57a0e7b8037da0079561a6ce9e6bd8d127892ac1bcb047638cb3ba3157f6 skip-test-due-to-busybox-ps.patch
"