# Template build file for 'perl'.
pkgname=perl
version=5.20.1
revision=1
hostmakedepends="less"
makedepends="zlib-devel bzip2-devel gdbm-devel db-devel>=5.3"
short_desc="Practical Extraction and Report Language"
maintainer="Juan RP <xtraeme@gmail.com>"
homepage="http://www.perl.org"
license="Artistic, GPL-1"
distfiles="http://www.cpan.org/src/5.0/perl-${version}.tar.gz"
checksum=fef10210f9e6f4dc2d190be0aee8e1fa2af664630f1d415868d33eebca26d4b5

provides="perl-Archive-Tar-1.96_1
          perl-Attribute-Handlers-0.96_1
          perl-AutoLoader-5.74_1
          perl-B-Debug-1.19_1
          perl-CGI-3.65_1
          perl-CPAN-2.05_1
          perl-CPAN-Meta-2.140640_1
          perl-CPAN-Meta-Requirements-2.125_1
          perl-CPAN-Meta-YAML-0.012_1
          perl-Carp-1.3301_1
          perl-Compress-Raw-Bzip2-2.064_1
          perl-Compress-Raw-Zlib-2.065_1
          perl-Config-Perl-V-0.22_1
          perl-DB_File-1.831_1
          perl-Data-Dumper-2.151_1
          perl-Devel-PPPort-3.21_1
          perl-Devel-SelfStubber-1.05_1
          perl-Digest-1.17_1
          perl-Digest-MD5-2.53_1
          perl-Digest-SHA-5.88_1
          perl-Dumpvalue-1.17_1
          perl-Encode-2.60_1
          perl-Env-1.04_1
          perl-Exporter-5.71_1
          perl-ExtUtils-CBuilder-0.280217_1
          perl-ExtUtils-Command-1.18_1
          perl-ExtUtils-Constant-0.23_1
          perl-ExtUtils-Install-1.67_1
          perl-ExtUtils-MakeMaker-6.98_1
          perl-ExtUtils-Manifest-1.63_1
          perl-ExtUtils-ParseXS-3.24_1
          perl-File-Fetch-0.48_1
          perl-File-Path-2.09_1
          perl-File-Temp-0.2304_1
          perl-Filter-Simple-0.91_1
          perl-Filter-Util-Call-1.49_1
          perl-Getopt-Long-2.42_1
          perl-HTTP-Tiny-0.043_1
          perl-I18N-Collate-1.02_1
          perl-I18N-LangTags-0.40_1
          perl-IO-1.31_1
          perl-IO-Compress-2.064_1
          perl-IO-Socket-IP-0.29_1
          perl-IO-Zlib-1.10_1
          perl-IPC-Cmd-0.92_1
          perl-IPC-SysV-2.04_1
          perl-JSON-PP-2.27203_1
          perl-Locale-Codes-3.30_1
          perl-Locale-Maketext-1.25_1
          perl-Locale-Maketext-Simple-0.21_1
          perl-MIME-Base64-3.14_1
          perl-Math-BigInt-1.9993_1
          perl-Math-BigInt-FastCalc-0.31_1
          perl-Math-BigRat-0.2606_1
          perl-Math-Complex-1.59_1
          perl-Memoize-1.03_1
          perl-Module-Build-0.4205_1
          perl-Module-CoreList-5.020001_1
          perl-Module-Load-0.32_1
          perl-Module-Load-Conditional-0.62_1
          perl-Module-Loaded-0.08_1
          perl-Module-Metadata-1.000019_1
          perl-NEXT-0.65_1
          perl-Net-Ping-2.43_1
          perl-Package-Constants-0.04_1
          perl-Params-Check-0.38_1
          perl-Parse-CPAN-Meta-1.4414_1
          perl-PathTools-3.48_1
          perl-Perl-OSType-1.007_1
          perl-PerlIO-via-QuotedPrint-0.07_1
          perl-Pod-Checker-1.60_1
          perl-Pod-Escapes-1.06_1
          perl-Pod-Parser-1.62_1
          perl-Pod-Perldoc-3.23_1
          perl-Pod-Simple-3.28_1
          perl-Pod-Usage-1.63_1
          perl-Safe-2.37_1
          perl-Scalar-List-Utils-1.38_1
          perl-Search-Dict-1.07_1
          perl-SelfLoader-1.21_1
          perl-Socket-2.013_1
          perl-Storable-2.49_1
          perl-Sys-Syslog-0.33_1
          perl-Term-ANSIColor-4.02_1
          perl-Term-Cap-1.15_1
          perl-Term-Complete-1.402_1
          perl-Term-ReadLine-1.14_1
          perl-Test-1.26_1
          perl-Test-Harness-3.30_1
          perl-Test-Simple-1.001002_1
          perl-Text-Abbrev-1.02_1
          perl-Text-Balanced-2.02_1
          perl-Text-ParseWords-3.29_1
          perl-Text-Tabs-2013.0523_1
          perl-Thread-Queue-3.05_1
          perl-Thread-Semaphore-2.12_1
          perl-Tie-File-1.00_1
          perl-Tie-RefHash-1.39_1
          perl-Time-HiRes-1.9726_1
          perl-Time-Local-1.2300_1
          perl-Time-Piece-1.27_1
          perl-Unicode-Collate-1.04_1
          perl-Unicode-Normalize-1.17_1
          perl-Win32-0.49_1
          perl-Win32API-File-0.1201_1
          perl-XSLoader-0.17_1
          perl-autodie-2.23_1
          perl-autouse-1.08_1
          perl-base-2.22_1
          perl-bignum-0.37_1
          perl-constant-1.31_1
          perl-encoding-warnings-0.11_1
          perl-experimental-0.007_1
          perl-if-0.0603_1
          perl-lib-0.63_1
          perl-libnet-1.25_1
          perl-parent-0.228_1
          perl-perlfaq-5.0150044_1
          perl-podlators-2.5.3_1
          perl-threads-1.93_1
          perl-threads-shared-1.46_1
          perl-version-0.9909_1"

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

# Before updating this package to a new major version, run ${FILESDIR}/provides.pl
# against ${wrksrc} to find the list of built in packages.
if [ "$CROSS_BUILD" ]; then
	hostmakedepends+=" perl>=${version}"
fi

do_configure() {
	local _args="-Dusethreads -Duseshrplib
		-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"

	if [ "$CROSS_BUILD" ]; then
		cp -f ${FILESDIR}/cross/* .
		cp -f ${FILESDIR}/Configure.cross .

		# substitute some required strings in generated config.sh
		sed -e "s,@@XBPS_CROSS_ARCH@@,${XBPS_TARGET_ARCH},g" \
			-e "s,@@XBPS_CROSS_TRIPLET@@,${XBPS_CROSS_TRIPLET},g" \
			-e "s,@@XBPS_CROSS_CFLAGS@@,${XBPS_CROSS_CFLAGS},g" \
			-e "s,@@PERL_VERSION@@,${version},g" \
			-e "s,@@PERL_SUBVERSION@@,${version##*.},g" \
			-i config.sh

		sh ./Configure.cross
		perl -Ilib make_patchnum.pl
	else
		./Configure -des ${_args} -Dcccdlflags="-fPIC" -Doptimize="$CFLAGS"
	fi
}

do_build() {
	if [ "$CROSS_BUILD" ]; then
		export HOST_PERL=/usr/bin/perl
		export PERL_TO_USE=$HOST_PERL
		export HOST_PERL_LIBS=/usr/lib/perl5/core_perl
		export LIB=$XBPS_CROSS_BASE/usr/lib
		export INCLUDE=$XBPS_CROSS_BASE/usr/include

		make SHRPLDFLAGS='-shared -Wl,-soname,libperl.so' \
			CROSS_PERL=$HOST_PERL libperl.so ${makejobs}

		cp -fr $HOST_PERL_LIBS/auto/* lib/auto/
		mkdir -p lib/$XBPS_CROSS_TRIPLET
		make extensions CROSS_PERL=$HOST_PERL \
			INST_ARCHLIB=$wrksrc/lib/$XBPS_CROSS_TRIPLET \
			${makejobs}
	else
		make ${makejobs}
	fi
}

do_install() {
	if [ "$CROSS_BUILD" ]; then
		export HOST_PERL=/usr/bin/perl
		export PERL_TO_USE=$HOST_PERL
		export HOST_PERL_LIBS=/usr/lib/perl5/core_perl
		export LIB=$XBPS_CROSS_BASE/usr/lib
		export INCLUDE=$XBPS_CROSS_BASE/usr/include

		cp -fr $HOST_PERL_LIBS/auto/* lib/auto/
		make CROSS_PERL=$HOST_PERL DESTDIR=$DESTDIR install
		find lib/auto -name .exists -o -name '*.bs' | xargs rm -f
		vmkdir usr/lib/perl5/core_perl/auto
		cp -fr lib/$XBPS_CROSS_TRIPLET/auto/* \
			${DESTDIR}/usr/lib/perl5/core_perl/auto/
		find ${DESTDIR} -name .exists |xargs rm -f
		rm -rf ${DESTDIR}/usr/share/perl5/core_perl/$XBPS_CROSS_TRIPLET

		# Remove references to cross toolchain.
		sed -i "s/$XBPS_CROSS_TRIPLET-//g" \
			${DESTDIR}/usr/lib/perl5/core_perl/Config_heavy.pl \
			${DESTDIR}/usr/lib/perl5/core_perl/Config.pm
	else
		make DESTDIR=${DESTDIR} install
	fi

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

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

	### CPAN Settings ###
	# Set CPAN default config to use the site directories.
	sed -e '/(makepl_arg =>/   s/""/"INSTALLDIRS=site"/' \
		-e '/(mbuildpl_arg =>/ s/""/"installdirs=site"/' \
		-i ${DESTDIR}/usr/share/perl5/core_perl/CPAN/FirstTime.pm

	# 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

	# Make a symlink so that libperl.so is accesible.
	ln -sfr ${DESTDIR}/usr/lib/perl5/core_perl/CORE/libperl.so ${DESTDIR}/usr/lib/libperl.so
}