# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Contributor: Valery Kartel <valery.kartel@gmail.com>
setvar pkgname = 'perl'
setvar pkgver = '5.26.1'
setvar pkgrel = '1'
setvar pkgdesc = ""Larry Wall's Practical Extraction and Report Language""
setvar url = ""http://www.perl.org/""
setvar arch = ""all""
setvar license = ""Artistic GPL2""
setvar options = ""!fhs""
setvar depends = """"
setvar depends_dev = ""perl-utils""
setvar makedepends = ""bzip2-dev zlib-dev""
setvar subpackages = ""$pkgname-doc $pkgname-dev $pkgname-utils::noarch miniperl""
setvar source = ""http://www.cpan.org/src/5.0/perl-$pkgver.tar.gz
	""

# secfixes:
#   5.26.1-r0:
#   - CVE-2017-12837
#   - CVE-2017-12883

setvar builddir = ""$srcdir/$pkgname-$pkgver""

setvar _privlib = "/usr/share/perl5/core_perl"
setvar _archlib = "/usr/lib/perl5/core_perl"

proc prepare {
	chmod +w "$builddir"/*.c
	default_prepare || return 1
	cd $builddir
	sed	-e 's/less -R/less/g' \
		-e 's/libswanted="\(.*\) nsl\(.*\)"/libswanted="\1\2"/g' \
		-i ./Configure || return 1

	# 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

}

proc build {
	cd $builddir
	setvar BUILD_ZLIB = '0'
	setvar BUILD_BZIP2 = '0'
	setvar BZIP2_LIB = "/usr/lib"
	setvar BZIP2_INCLUDE = "/usr/inculde"

	export BUILD_ZLIB BUILD_BZIP2 BZIP2_LIB BZIP2_INCLUDE
	./Configure -des \
		-Dcccdlflags='-fPIC' \
		-Dcccdlflags='-fPIC' \
		-Dccdlflags='-rdynamic' \
		-Dprefix=/usr \
		-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' \
		-Ud_csh \
		-Dusenm \
		|| return 1
	make libperl.so && make || return 1
}

proc package {
	cd $builddir
	make DESTDIR="$pkgdir" install
	if test -n $(find $pkgdir/usr/local -type f) {
		error "files found under /usr/local"
		return 1
	}
	find $pkgdir -name '.*' -delete
}

proc miniperl {
	install -Dm755 "$builddir"/$subpkgname \
		"$subpkgdir"/usr/bin/$subpkgname || return 1
}

proc doc {
	default_doc
	local file; for file in $(find "$pkgdir" -name "*.pod") {
		setvar file = ${file#$pkgdir/}
		mkdir -p "$subpkgdir"/${file%/*} || return 1
		mv "$pkgdir"/$file "$subpkgdir"/$file || return 1
	}
}

proc dev {
	mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/$_archlib "$subpkgdir"/$_privlib
	mv "$pkgdir"/$_archlib/Devel "$subpkgdir"/$_archlib/
	mv "$pkgdir"/$_privlib/Encode "$subpkgdir"/$_privlib/

	mv "$pkgdir"/usr/bin/h2xs \
		"$pkgdir"/usr/bin/perlivp \
		"$pkgdir"/usr/bin/enc2xs \
		"$pkgdir"/usr/bin/xsubpp \
		"$subpkgdir"/usr/bin/

	default_dev
}

proc utils {
	setvar pkgdesc = ""$pkgdesc (misc utilities)""
	setvar depends = "$pkgname"
	mkdir -p "$subpkgdir"/usr/bin
	local file
	for file in \
		corelist \
		cpan \
		encguess \
		libnetcfg \
		h2ph \
		instmodsh \
		json_pp \
		perlbug \
		perlthanks \
		piconv \
		pl2pm \
		prove \
		ptar \
		ptardiff \
		ptargrep \
		shasum \
		splain \
		zipdetails
	{
		mv "$pkgdir"/usr/bin/$file "$subpkgdir"/usr/bin/ || return 1
	}
}

setvar sha512sums = ""098a08f1dd0dbc065cc2d93752a5b320e63d665a80392f7c4d83e807f05762d34c70c99d80bc8085512f5653f9a4b54edb5a8973aba240d41c211ebbd630209f  perl-5.26.1.tar.gz""