# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Maintainer: Carlo Landmeter <clandmeter@alpinelinux.org>
pkgname=alpine-ipxe
pkgver=1.0_git20180220
_sha=47849be3a900c546cf92066849be0806f4e611d9
pkgrel=2
pkgdesc="iPXE build for Alpine Linux netboot"
url="https://boot.alpinelinux.org"
arch="x86 x86_64 aarch64"
license="GPL-2.0-or-later"
depends=""
makedepends="xz-dev perl coreutils bash syslinux xorriso"
options="!strip !check !archcheck !tracedeps" # no tests
install=""
subpackages=""
source="ipxe-$pkgver.tar.gz::https://github.com/ipxe/ipxe/archive/$_sha.tar.gz
	DST_Root_CA_X3.pem
	alpine-netboot-ca.crt
	boot.ipxe
	"
builddir="$srcdir/ipxe-$_sha/src"

# default build targets for x86 systems
_targets="bin/ipxe.iso bin/ipxe.lkrn bin/ipxe.pxe bin/undionly.kpxe bin/ipxe.usb"

case $CARCH in
x86) _targets="$_targets bin-i386-efi/ipxe.efi";;
x86_64) _targets="$_targets bin-x86_64-efi/ipxe.efi";;
aarch64) 
	_targets="bin-arm64-efi/snp.efi"
	makedepends="xz-dev perl coreutils bash";;
esac

for _target in $_targets; do
	_target=${_target##*/}
	_target=${_target/./_}
	subpackages="$subpackages $pkgname-$_target:_split"
done

prepare() {
	cd "$builddir"
	local general="NET_PROTO_IPV6 DOWNLOAD_PROTO_HTTPS IMAGE_TRUST_CMD
		PING_CMD REBOOT_CMD"
	mkdir -p config/local
	local opt; for opt in $general; do
		echo "#define $opt" >> config/local/general.h
		echo "#define $opt" >> config/local/general.h.efi
	done
}

build() {
	cd "$builddir"
	# DST_Root_CA_X3.pem is need for https (letsencrypt)
	make EMBED="$srcdir/boot.ipxe" \
		CERT="$srcdir"/alpine-netboot-ca.crt,"$srcdir"/DST_Root_CA_X3.pem \
		TRUST="$srcdir"/alpine-netboot-ca.crt,"$srcdir"/DST_Root_CA_X3.pem \
		$_targets
}

package() {
	local target; for target in $_targets; do
		install -Dm644 "$builddir"/$target \
			"$pkgdir"/usr/share/$pkgname/${target##*/}
	done
}

_split() {
	local name=${subpkgname##*-}
	name=${name/_/.}
	pkgdesc="$pkgname $name binary"
	install_if="$pkgname=$pkgver-r$pkgrel"
	mkdir -p "$subpkgdir"/usr/share/$pkgname
	mv "$pkgdir"/usr/share/$pkgname/$name \
		"$subpkgdir"/usr/share/$pkgname
}

sha512sums="abc070ed07970e5307f04f5da3da4916c98016bf0a4115ab04979ecc5e7c452ca5102799ddab926e0ae9867c37c311de785dc93a736bf8f0809d5ea8e3cd3732  ipxe-1.0_git20180220.tar.gz
1f52b62aa9e3ec0656ea3cb5c8e52eda924d58728e64bb03ca6c112858b91b13cf0a9328b105bb232973e240406b240ed14e72b5bd325e82e6fddf3126dbcc58  DST_Root_CA_X3.pem
68030e3f30983ee45c7f740445a246ea0df225becdd0644e06ffdbd84682ac576934dab79fecceb31b70929d81ce85b40301a977862bf7beb042270be21e6d34  alpine-netboot-ca.crt
5569ba14ed3a164e72edd43e6b9df63fcbc59025c6729f55cbbedf2d513a83075471276a760174432eb2c6da86127a4b68fe1a2cae54408ff53b958261d06f0b  boot.ipxe"
