# Maintainer: Tycho Andersen <tycho@docker.com>
setvar pkgname = 'refpolicy'
setvar pkgver = '20170204'
setvar pkgrel = '0'
setvar pkgdesc = ""SELinux policy reference""
setvar url = ""https://github.com/TresysTechnology/refpolicy/wiki""
setvar arch = ""noarch""
setvar license = ""GPLv2""
setvar depends = """"
setvar depends_dev = """"
setvar makedepends = ""$depends_dev checkpolicy python gawk""
setvar install = """"
setvar subpackages = ""$pkgname-doc""
setvar source = ""https://raw.githubusercontent.com/wiki/TresysTechnology/refpolicy/files/refpolicy-2.$pkgver.tar.bz2
	Makefile.devel""
setvar builddir = ""$srcdir/refpolicy""

# refpolicy config
setvar monolithic = 'n'
setvar distro = 'gentoo'
# unknown perms here means what to do with perms that are unknown to the
# current userspace, because the kernel version is newer. By default, we deny.
setvar unknown_perms = 'deny'

# These are somewhat related to what is in the CentOS spec file, although they
# are slightly differnet in what they install.
#
# https://selinuxproject.org/page/NB_RefPolicy#Reference_Policy_Build_Options_-_build.conf
# are the build options: M{L,C}S_CATS are the number of categories for m{l,c}s policies.
proc make_cmds {
	make UNK_PERMS=$3 NAME=$1 TYPE=$2 DISTRO=$distro UBAC=n DIRECT_INITRC=y MONOLITHIC=$monolithic MLS_CATS=1024 MCS_CATS=1024 bare || return 1
	make UNK_PERMS=$3 NAME=$1 TYPE=$2 DISTRO=$distro UBAC=n DIRECT_INITRC=y MONOLITHIC=$monolithic MLS_CATS=1024 MCS_CATS=1024 conf || return 1
}

proc install_cmds {
	make UNK_PERMS=$3 NAME=$1 TYPE=$2 DISTRO=$distro UBAC=n DIRECT_INITRC=y MONOLITHIC=$monolithic MLS_CATS=1024 MCS_CATS=1024 SEMOD_EXP="/usr/bin/semodule_expand -a" base.pp
	make validate UNK_PERMS=$3 NAME=$1 TYPE=$2 DISTRO=$distro UBAC=n DIRECT_INITRC=y MONOLITHIC=$monolithic MLS_CATS=1024 MCS_CATS=1024 SEMOD_EXP="/usr/bin/semodule_expand -a" modules
	make UNK_PERMS=$3 NAME=$1 TYPE=$2 DISTRO=$distro UBAC=n DIRECT_INITRC=y MONOLITHIC=$monolithic MLS_CATS=1024 MCS_CATS=1024 DESTDIR="$pkgdir" install
	make UNK_PERMS=$3 NAME=$1 TYPE=$2 DISTRO=$distro UBAC=n DIRECT_INITRC=y MONOLITHIC=$monolithic MLS_CATS=1024 MCS_CATS=1024 DESTDIR="$pkgdir" install-appconfig
	make UNK_PERMS=$3 NAME=$1 TYPE=$2 DISTRO=$distro UBAC=n DIRECT_INITRC=y MONOLITHIC=$monolithic MLS_CATS=1024 MCS_CATS=1024 DESTDIR="$pkgdir" install-docs
	make UNK_PERMS=$3 NAME=$1 TYPE=$2 DISTRO=$distro UBAC=n DIRECT_INITRC=y MONOLITHIC=$monolithic MLS_CATS=1024 MCS_CATS=1024 DESTDIR="$pkgdir" install-headers
}

proc build {
	cd $builddir
	make_cmds targeted mcs $unknown_perms || return 1
}

proc package {
	cd $builddir
	install_cmds targeted mcs $unknown_perms || return 1
	mkdir -p $pkgdir/usr/share/selinux/devel || return 1
	cp -r "$pkgdir/usr/share/selinux/targeted/include" "$pkgdir/usr/share/selinux/devel/include"
	cp $srcdir/Makefile.devel "$pkgdir/usr/share/selinux/devel/Makefile" || return 1
	install -m 644 doc/example.* "$pkgdir/usr/share/selinux/devel" || return 1
	install -m 644 doc/policy.* "$pkgdir/usr/share/selinux/devel" || return 1
	# TODO: libselinux needs to build the python bindings for this to work
	# sepolicy manpage -a -p "$pkgdir/usr/share/man/man8/" -w -r "$pkgdir" || return 1
}

setvar sha512sums = ""30deabb02a5bde51c463e3e89988d850cff51596c2e72733a064245dec152ea46317eea79550dbe82a7a0d327ec0bcfbd9474ff8a902507392df0da00df6397f  refpolicy-2.20170204.tar.bz2
01bd5f58e05feba2f318f6b80fb4c6cbe405691f947fee48566ad75c935d6e824ccfda5de88c5dad74b531ed28c18615d8ef4e2c2371d71c776b78767eb33740  Makefile.devel""