# Maintainer: Ben Allen <bensallen@me.com>
# Contributor: Ben Allen <bensallen@me.com>

setvar _flavor = ${FLAVOR:-hardened}
setvar _kpkg = "linux-$_flavor"
setvar _kver = '4.9.54'
setvar _kpkgrel = '0'

# when chaning _ver we *must* bump _mypkgrel
setvar _ver = '5.1.26'
setvar _mypkgrel = '0'
setvar _name = 'virtualbox-guest-modules'

setvar _kpkgver = ""$_kver-r$_kpkgrel""
setvar _abi_release = "${_kver}-${_kpkgrel}-${_flavor}"
setvar _abi_release_virthardened = "${_kver}-${_kpkgrel}-virthardened"

setvar pkgname = "${_name}-${_flavor}"
setvar pkgver = "$_kver"
setvar pkgrel = $(($_kpkgrel + $_mypkgrel))
setvar pkgdesc = ""VirtualBox Additions guest kernel modules for $_flavor""
setvar arch = ''x86 x86_64''
setvar url = ''http://virtualbox.org''
setvar license = ""GPL custom""
setvar makedepends = ""linux-hardened-dev=$_kpkgver linux-virthardened-dev=$_kpkgver sed coreutils""
setvar subpackages = ""$_name-virthardened:_virthardened""
setvar source = ""http://download.virtualbox.org/virtualbox/$_ver/VirtualBox-$_ver.tar.bz2
	vboxguest-log-use-c99.patch
	const-struct-kernel_param.patch
	""
setvar provides = ""${_name}-grsec=${pkgver}-r${pkgrel}""
setvar builddir = ""$srcdir"/VirtualBox-$_ver"

proc prepare {
	local i

	shell {
	# verify the kernel version before entering chroot
	setvar _kapkbuild = ""$startdir"/../../main/linux-${_flavor}/APKBUILD"
	if test -f $_kapkbuild {
		source $_kapkbuild
		setvar pkgname = "$_name-$_flavor"
		if test $_kver != $pkgver {
			die "please update _kver to $pkgver"
		}
		if test $_kpkgrel != $pkgrel {
			die "please update _kpkgrel to $pkgrel"
		}
	}
	} || return 1

	cd $builddir
	default_prepare || return 1
	"$builddir"/src/VBox/Additions/linux/export_modules \
		"$srcdir/vbox-kmod-$_ver.tar.gz" || return 1

	for i in $_abi_release $_abi_release_virthardened {
		mkdir -p "$srcdir/$i"
		tar -C "$srcdir/$i" -zxf "$srcdir"/vbox-kmod-$_ver.tar.gz
	}
}

proc build {
	local i
	for i in $_abi_release $_abi_release_virthardened {
		cd "$srcdir/$i"
		# Build Kernel Modules
		make KERN_DIR=/lib/modules/${i}/build \
			|| return 1
	}
}

proc package {
	local i module=
	for i in $_abi_release $_abi_release_virthardened {
		cd "$srcdir/$i"
		for module in *.ko {
			install -v -D -m644 ${module} \
				"$pkgdir/lib/modules/$i/misc/${module}"
		}
	}
}

proc _virthardened {
	setvar pkgdesc = ""VirtualBox Additions kernel modules for virthardened""
	mkdir -p "$subpkgdir"/lib/modules/
	# vboxvideo.ko won't load with virthardened kernel as it doesn't have DRM
	rm "$pkgdir"/lib/modules/$_abi_release_virthardened/misc/vboxvideo.ko
	mv "$pkgdir"/lib/modules/$_abi_release_virthardened \
		"$subpkgdir"/lib/modules/
}

setvar sha512sums = ""680e9646a51a0a5923b3ded10007ee1c1e2a41c6d8a961d2b2540db6578bed2847154f4cac87e3cfe1118a62595b47c7df99da854f6c340e173b9eb8cacf2add  VirtualBox-5.1.26.tar.bz2
bd934e9ed3d2324ef66e2539d2f3f6fab35a8858d670bba817b9cabfe66e85fe13a8594b35f4a8e639841f72fb0b8d12af38518ba25638da5ef338b259ab600b  vboxguest-log-use-c99.patch
d069876f93e431833800c1d26ea77ae1dec40c840bb549cf519ceea93ee1ca89bcb262a13b00001503d19e596965d74a71a7f49be232ea892a82114d3ea4337c  const-struct-kernel_param.patch""