# Template build file for 'perl'.
pkgname=perl
version=5.24.1
revision=4
_perl_cross_version=1.1.4
build_style=gnu-configure
hostmakedepends="less"
makedepends="zlib-devel bzip2-devel gdbm-devel db-devel"
depends="less"
short_desc="Practical Extraction and Report Language"
maintainer="Juan RP <xtraeme@voidlinux.eu>"
homepage="http://www.perl.org"
license="Artistic, GPL-1"
distfiles="http://www.cpan.org/src/5.0/perl-${version}.tar.gz
 https://github.com/arsv/perl-cross/releases/download/${_perl_cross_version}/perl-cross-${_perl_cross_version}.tar.gz"
checksum="e6c185c9b09bdb3f1b13f678999050c639859a7ef39c8cad418448075f5918af
 c840a327d5464ca271cac40d52e2d199330875527bf1003c28a6e550fb7bcc57"
disable_parallel_build=yes

# Before updating this package to a new major version, run ${FILESDIR}/provides.pl
# against ${wrksrc} to find the list of built in packages.

provides="perl-Archive-Tar-2.04_01_1
          perl-Attribute-Handlers-0.99_1
          perl-AutoLoader-5.74_1
          perl-B-Debug-1.23_1
          perl-CPAN-2.11_01_1
          perl-CPAN-Meta-2.150005_1
          perl-CPAN-Meta-Requirements-2.140_1
          perl-CPAN-Meta-YAML-0.018_1
          perl-Carp-1.40_1
          perl-Compress-Raw-Bzip2-2.069_1
          perl-Compress-Raw-Zlib-2.069_1
          perl-Config-Perl-V-0.25_1
          perl-DB_File-1.835_1
          perl-Data-Dumper-2.160_1
          perl-Devel-PPPort-3.32_1
          perl-Devel-SelfStubber-1.05_1
          perl-Digest-1.17_01_1
          perl-Digest-MD5-2.54_1
          perl-Digest-SHA-5.95_01_1
          perl-Dumpvalue-1.18_1
          perl-Encode-2.80_01_1
          perl-Env-1.04_1
          perl-Exporter-5.72_1
          perl-ExtUtils-CBuilder-0.280225_1
          perl-ExtUtils-Constant-0.23_1
          perl-ExtUtils-Install-2.04_1
          perl-ExtUtils-MakeMaker-7.10_02_1
          perl-ExtUtils-Manifest-1.70_1
          perl-ExtUtils-ParseXS-3.31_1
          perl-File-Fetch-0.48_01_1
          perl-File-Path-2.12_01_1
          perl-File-Temp-0.2304_1
          perl-Filter-Simple-0.92_1
          perl-Filter-Util-Call-1.55_1
          perl-Getopt-Long-2.48_1
          perl-HTTP-Tiny-0.056_001_1
          perl-I18N-Collate-1.02_1
          perl-I18N-LangTags-0.40_1
          perl-IO-1.36_01_1
          perl-IO-Compress-2.069_001_1
          perl-IO-Socket-IP-0.37_1
          perl-IO-Zlib-1.10_1
          perl-IPC-Cmd-0.92_01_1
          perl-IPC-SysV-2.06_01_1
          perl-JSON-PP-2.27300_01_1
          perl-Locale-Codes-3.37_1
          perl-Locale-Maketext-1.26_01_1
          perl-Locale-Maketext-Simple-0.21_01_1
          perl-MIME-Base64-3.15_1
          perl-Math-BigInt-1.999715_1
          perl-Math-BigInt-FastCalc-0.40_1
          perl-Math-BigRat-0.260802_1
          perl-Math-Complex-1.59_1
          perl-Memoize-1.03_01_1
          perl-Module-CoreList-5.20170114_24_1
          perl-Module-Load-0.32_1
          perl-Module-Load-Conditional-0.64_1
          perl-Module-Loaded-0.08_1
          perl-Module-Metadata-1.000031_1
          perl-NEXT-0.65_1
          perl-Net-Ping-2.43_01_1
          perl-Params-Check-0.38_1
          perl-Parse-CPAN-Meta-1.4417_001_1
          perl-PathTools-3.63_01_1
          perl-Perl-OSType-1.009_1
          perl-PerlIO-via-QuotedPrint-0.08_1
          perl-Pod-Checker-1.60_1
          perl-Pod-Escapes-1.07_1
          perl-Pod-Parser-1.63_1
          perl-Pod-Perldoc-3.25_03_1
          perl-Pod-Simple-3.32_1
          perl-Pod-Usage-1.68_1
          perl-Safe-2.39_1
          perl-Scalar-List-Utils-1.42_02_1
          perl-Search-Dict-1.07_1
          perl-SelfLoader-1.23_1
          perl-Socket-2.020_03_1
          perl-Storable-2.56_01_1
          perl-Sys-Syslog-0.33_01_1
          perl-Term-ANSIColor-4.04_1
          perl-Term-Cap-1.17_1
          perl-Term-Complete-1.403_1
          perl-Term-ReadLine-1.15_1
          perl-Test-1.28_01_1
          perl-Test-Harness-3.36_01_1
          perl-Test-Simple-1.001014_1
          perl-Text-Abbrev-1.02_1
          perl-Text-Balanced-2.03_1
          perl-Text-ParseWords-3.30_1
          perl-Text-Tabs-2013.0523_1
          perl-Thread-Queue-3.09_1
          perl-Thread-Semaphore-2.12_1
          perl-Tie-File-1.02_1
          perl-Tie-RefHash-1.39_1
          perl-Time-HiRes-1.9733_1
          perl-Time-Local-1.2300_1
          perl-Time-Piece-1.31_1
          perl-Unicode-Collate-1.14_1
          perl-Unicode-Normalize-1.25_1
          perl-Win32-0.52_1
          perl-Win32API-File-0.1203_1
          perl-XSLoader-0.22_1
          perl-autodie-2.29_1
          perl-autouse-1.11_1
          perl-base-2.23_1
          perl-bignum-0.42_01_1
          perl-constant-1.33_1
          perl-encoding-warnings-0.12_1
          perl-experimental-0.016_1
          perl-if-0.0606_1
          perl-lib-0.63_1
          perl-libnet-3.08_1
          perl-parent-0.234_1
          perl-perlfaq-5.021010_1
          perl-podlators-5.006_1
          perl-threads-2.07_1
          perl-threads-shared-1.51_1
          perl-version-0.9916_1"

for f in ${provides}; do
	replaces+=" $($XBPS_UHELPER_CMD getpkgname ${f})>=0"
done

post_extract() {
	cp -a ../perl-cross-${_perl_cross_version}/* .
}

do_configure() {
	local _args="-Dusethreads -Duseshrplib -Dusesoname -Dusevendorprefix
		-Dprefix=/usr -Dvendorprefix=/usr
		-Dprivlib=/usr/share/perl5/core_perl
		-Darchlib=/usr/lib/perl5/core_perl
		-Dsitelib=/usr/share/perl5/site_perl
		-Dsitearch=/usr/lib/perl5/site_perl
		-Dvendorlib=/usr/share/perl5/vendor_perl
		-Dvendorarch=/usr/lib/perl5/vendor_perl
		-Dscriptdir=/usr/bin -Dvendorscript=/usr/bin
		-Dinc_version_list=none -Dman1ext=1p -Dman3ext=3p
		-Dman1dir=/usr/share/man/man1
		-Dman3dir=/usr/share/man/man3
		-Dd_sockaddr_in6=define"

	if [ "$CROSS_BUILD" ]; then
		_args+=" --target=$XBPS_CROSS_TRIPLET"
	fi

	# perl-cross autodetection fails. Need perl -V:lseeksize = 8.
	# (default on musl.)
	case "$XBPS_TARGET_MACHINE" in
	i686|armv6l|armv7l)
		CFLAGS+=" -D_FILE_OFFSET_BITS=64 -DLARGE_FILE_SUPPORT "
	esac

	export LD="$CC"
	./configure --prefix=/usr $_args \
		-Dcccdlflags="-fPIC" \
		-Doptimize=" ${CFLAGS} " -Dccflags=" ${CFLAGS} " \
		-Dlddlflags="-shared ${LDFLAGS}" -Dldflags="${LDFLAGS}" \
		-Dperl_static_inline='static __inline__' -Dd_static_inline ||
	{
		cat ./config.log
		return 42
	}
}

post_install() {
	find ${DESTDIR}/usr/share -type f -exec chmod 644 {} \;
	find ${DESTDIR}/usr/lib -type f -exec chmod 644 {} \;

	# Make a symbolic link from perl to perl${version}.
	ln -sf perl ${DESTDIR}/usr/bin/perl${version}

	# Remove all pod files *except* those under
	# /usr/share/perl5/core_perl/pod/ (FS#16488)
	rm -f ${DESTDIR}/usr/share/perl5/core_perl/*.pod
	for d in ${DESTDIR}/usr/share/perl5/core_perl/*; do
		if [ -d $d -a $(basename $d) != "pod" ]; then
			find $d -name *.pod -delete
		fi
	done
	find ${DESTDIR}/usr/lib -name *.pod -delete
	find ${DESTDIR} -name .packlist -delete

	# Remove references to hardening -specs.
	sed -e "s|-specs=.*hardened-ld||g" -e "s|-specs=.*hardened-cc1||g" \
		-i ${DESTDIR}/usr/lib/perl5/core_perl/Config_heavy.pl
}
