# Template file for 'apparmor'
pkgname=apparmor
version=4.1.7
revision=2
build_wrksrc=libraries/libapparmor
build_helper="python3"
build_style=gnu-configure
conf_files="/etc/apparmor.d/local/* /etc/apparmor/*"
make_dirs="/etc/apparmor.d/disable 0755 root root"
configure_args="$(vopt_with python) $(vopt_with perl)"
hostmakedepends="bison flex gettext pkg-config autoconf-archive automake which libtool
 python3 python3-setuptools python3-packaging-bootstrap $(vopt_if perl perl)"
makedepends="$(vopt_if python python3-devel) pam-devel $(vopt_if perl perl)"
depends="runit-void-apparmor iproute2"
checkdepends="dejagnu "
short_desc="Mandatory access control to restrict programs"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-only"
homepage="https://gitlab.com/apparmor/apparmor"
changelog="https://gitlab.com/apparmor/apparmor/-/wikis/Release_Notes_${version}"
distfiles="https://gitlab.com/apparmor/apparmor/-/archive/v${version}/apparmor-v${version}.tar.gz"
checksum=ded4cd419b8a05002a108a0912208e2098695752664c6a59464d2dda418e0452
replaces="apparmor-vim>=0"

# /usr/lib/perl5/core_perl/CORE/perl.h:3360:22: error: unknown type name 'off64_t';
CFLAGS="-D_LARGEFILE64_SOURCE"
CXXFLAGS="-D_LARGEFILE64_SOURCE"

build_options="python perl"
build_options_default="python"

if [ "${build_option_perl}" -o "${build_option_python}" ]; then
	hostmakedepends+=" swig"
fi

if [ "${build_option_python}" ]; then
	depends+=" python3-notify2 python3-psutil python3-dbus python3-tkinter python3-gobject"
	checkdepends+=" flake8 python3-notify2 python3-psutil python3-dbus python3-tkinter python3-gobject"
fi

post_patch() {
	# add custom profiles
	cp -vn "${FILESDIR}"/profiles/* "${wrksrc}/profiles/apparmor.d/"
}

pre_configure() {
	autoreconf -fiv
}

post_build() {
	make ${makejobs} -C "${wrksrc}/binutils"
	make ${makejobs} -C "${wrksrc}/parser"
	make ${makejobs} -C "${wrksrc}/utils"
	make ${makejobs} -C "${wrksrc}/changehat/pam_apparmor"
	make ${makejobs} -C "${wrksrc}/profiles"
}

do_check() {
	make ${makejobs} -C "${wrksrc}/libraries/libapparmor" check
	make ${makejobs} -C "${wrksrc}/binutils" check
	make ${makejobs} -C "${wrksrc}/parser" check
	make ${makejobs} -C "${wrksrc}/utils" check
	# make ${makejobs} -C "${wrksrc}/profiles" check # broken
	make ${makejobs} -C "${wrksrc}/profiles" check-parser
	make ${makejobs} -C "${wrksrc}/profiles" check-abstractions.d
}

do_install() {
	local _args=(
		"DESTDIR=\"${DESTDIR}\""
		"SBINDIR=\"${DESTDIR}/usr/bin\""
		"BINDIR=\"${DESTDIR}/usr/bin\""
		"USR_SBINDIR=\"${DESTDIR}/usr/bin\""
	)
	make -C "${wrksrc}/libraries/libapparmor" "${_args[@]}" install
	make -C "${wrksrc}/binutils" "${_args[@]}" install
	make -C "${wrksrc}/utils" "${_args[@]}" VIM_INSTALL_PATH="${DESTDIR}/usr/share/vim/vimfiles/syntax" install
	make -C "${wrksrc}/parser" "${_args[@]}" APPARMOR_BIN_PREFIX="${DESTDIR}/usr/lib/apparmor" install
	make -C "${wrksrc}/profiles" "${_args[@]}" install

	vinstall "${wrksrc}/utils/aa-notify.desktop" 644 usr/share/applications
	vdoc "${FILESDIR}/README.voidlinux"
}

libapparmor_package() {
	short_desc+=" - Library"
	license="LGPL-2.1-only"
	pkg_install() {
		vmove "usr/lib/libapparmor.so*"
		if [ "$build_option_perl" ]; then
			vmove usr/lib/perl5
		fi
		if [ "$build_option_python" ]; then
			vmove "${py3_sitelib}/LibAppArmor*"
			vmove "${py3_sitelib}/_LibAppArmor*.so"
		fi
		vmove usr/share/man/man2
		vmove usr/share/man/man3
	}
}

libapparmor-devel_package() {
	short_desc+=" - Library development files"
	license="LGPL-2.1-only"
	depends="libapparmor-${version}_${revision}"
	pkg_install() {
		vmove usr/include
		vmove "usr/lib/*.a"
		vmove "usr/lib/*.so"
		vmove usr/lib/pkgconfig
	}
}
