refpolicy: add variant that builds modular policy
[openwrt/openwrt.git] / package / system / refpolicy / Makefile
index c5a8a5cc3284cecabc0b0997013b8f607cd80bd8..d9c8c90208dcb5f8e27ddcf28ac2c69d2e2a077a 100644 (file)
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=refpolicy
 PKG_VERSION:=2.20200229
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://github.com/SELinuxProject/refpolicy/releases/download/RELEASE_2_20200229
@@ -24,11 +24,25 @@ TAR_OPTIONS:=--transform='s%^refpolicy%$(PKG_NAME)-$(PKG_VERSION)%' -xf -
 
 include $(INCLUDE_DIR)/package.mk
 
-define Package/refpolicy
+define Package/refpolicy/Default
   SECTION:=system
   CATEGORY:=Base system
   TITLE:=SELinux reference policy
   URL:=http://selinuxproject.org/page/Main_Page
+  PKGARCH:=all
+endef
+
+define Package/refpolicy
+  $(call Package/refpolicy/Default)
+  CONFLICTS:=refpolicy-modular
+  VARIANT:=default
+endef
+
+define Package/refpolicy-modular
+  $(call Package/refpolicy/Default)
+  TITLE += (modular)
+  VARIANT:=modular
+  PROVIDES:=refpolicy
 endef
 
 define Package/refpolicy/description
@@ -55,26 +69,43 @@ endef
 # builds is a small host tool that gets run as part of the build
 # process.
 MAKE_FLAGS += \
-       TEST_TOOLCHAIN="$(STAGING_DIR_HOSTPKG)" \
-       BINDIR=/bin \
-       SBINDIR=/sbin \
+       DESTDIR="$(PKG_INSTALL_DIR)"
+       SETFILES="$(STAGING_DIR_HOST)/bin/setfiles" \
+       CHECKPOLICY="$(STAGING_DIR_HOSTPKG)/bin/checkpolicy" \
        CC="$(HOSTCC)" \
        CFLAGS="$(HOST_CFLAGS)"
 
 define Build/Configure
-       $(SED) "/MONOLITHIC/c\MONOLITHIC = y" $(PKG_BUILD_DIR)/build.conf
        $(SED) "/NAME/c\NAME = targeted" $(PKG_BUILD_DIR)/build.conf
+ifneq ($(BUILD_VARIANT),modular)
+       $(SED) "/MONOLITHIC/c\MONOLITHIC = y" $(PKG_BUILD_DIR)/build.conf
+endif
        $(call Build/Compile/Default,conf)
 endef
 
+ifeq ($(BUILD_VARIANT),modular)
+define Build/Install
+       $(call Build/Compile/Default,install install-headers)
+endef
+endif
+
 define Package/refpolicy/conffiles
 /etc/selinux/config
 endef
 
+Package/refpolicy-modular/conffiles = $(Package/refpolicy/conffiles)
+
 define Package/refpolicy/install
        $(INSTALL_DIR) $(1)/etc/selinux
        $(CP) $(PKG_INSTALL_DIR)/etc/selinux/* $(1)/etc/selinux/
        $(CP) ./files/selinux-config $(1)/etc/selinux/config
+ifeq ($(BUILD_VARIANT),modular)
+       $(INSTALL_DIR) $(1)/usr/share/selinux
+       $(CP) $(PKG_INSTALL_DIR)/usr/share/selinux/* $(1)/usr/share/selinux/
+endif
 endef
 
+Package/refpolicy-modular/install = $(Package/refpolicy/install)
+
 $(eval $(call BuildPackage,refpolicy))
+$(eval $(call BuildPackage,refpolicy-modular))