# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/eclass/selinux-policy-2.eclass,v 1.1 2006/10/09 23:48:24 pebenito Exp $ # Eclass for installing SELinux policy, and optionally # reloading the reference-policy based modules inherit eutils IUSE="" HOMEPAGE="http://www.gentoo.org/proj/en/hardened/selinux/" SRC_URI="http://oss.tresys.com/files/refpolicy/refpolicy-${PV}.tar.bz2" LICENSE="GPL-2" SLOT="0" S="${WORKDIR}/" RDEPEND=">=sys-apps/policycoreutils-1.30.30 >=sec-policy/selinux-base-policy-${PV}" DEPEND="${RDEPEND} sys-devel/m4 >=sys-apps/checkpolicy-1.30.12" selinux-policy-2_src_unpack() { unpack ${A} local modfiles for i in ${MODS}; do modfiles="`find ${S}/refpolicy/policy/modules -iname $i.te` $modfiles" modfiles="`find ${S}/refpolicy/policy/modules -iname $i.fc` $modfiles" # use .if from headers done for i in ${POLICY_TYPES}; do mkdir ${S}/${i} cp ${S}/refpolicy/doc/Makefile.example ${S}/${i}/Makefile cp ${modfiles} ${S}/${i} done } selinux-policy-2_src_compile() { for i in ${POLICY_TYPES}; do make NAME=$i -C ${S}/${i} || die "${i} compile failed" done } selinux-policy-2_src_install() { BASEDIR="/usr/share/selinux" for i in ${POLICY_TYPES}; do for j in ${MODS}; do echo "Installing ${i} ${j} policy package" insinto ${BASEDIR}/${i} doins ${S}/${i}/${j}.pp done done } selinux-policy-2_pkg_postinst() { # build up the command in the case of multiple modules local COMMAND for i in ${MODS}; do COMMAND="-i ${i}.pp ${COMMAND}" done if has "loadpolicy" $FEATURES ; then for i in ${POLICY_TYPES}; do einfo "Inserting the following modules into the $i module store: ${MODS}" cd /usr/share/selinux/${i} semodule -s ${i} ${COMMAND} done else echo echo eerror "Policy has not been loaded. It is strongly suggested" eerror "that the policy be loaded before continuing!!" echo einfo "Automatic policy loading can be enabled by adding" einfo "\"loadpolicy\" to the FEATURES in make.conf." echo echo ebeep 4 epause 4 fi } EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_postinst