default "enforcing" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_ENFORCING
default "disabled" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_DISABLED
+config BR2_REFPOLICY_EXTRA_MODULES_DIRS
+ string "Extra modules directories"
+ help
+ Specify a space-separated list of directories containing
+ SELinux modules that will be built into the SELinux
+ policy. The modules will be automatically enabled in the
+ policy.
+
+ Each of those directories must contain the SELinux policy
+ .fc, .if and .te files directly at the top-level, with no
+ sub-directories. Also, you cannot have several modules with
+ the same name in different directories.
+
endif
comment "refpolicy needs a toolchain w/ threads"
REFPOLICY_POLICY_STATE = \
$(call qstrip,$(BR2_PACKAGE_REFPOLICY_POLICY_STATE))
+# Allow to provide out-of-tree SELinux modules in addition to the ones
+# in the refpolicy.
+REFPOLICY_EXTRA_MODULES_DIRS = $(call qstrip,$(BR2_REFPOLICY_EXTRA_MODULES_DIRS))
+$(foreach dir,$(REFPOLICY_EXTRA_MODULES_DIRS),\
+ $(if $(wildcard $(dir)),,\
+ $(error BR2_REFPOLICY_EXTRA_MODULES_DIRS contains nonexistent directory $(dir))))
+
REFPOLICY_MODULES = \
application \
authlogin \
sysnetwork \
unconfined \
userdomain \
- $(PACKAGES_SELINUX_MODULES)
+ $(PACKAGES_SELINUX_MODULES) \
+ $(foreach d,$(REFPOLICY_EXTRA_MODULES_DIRS),\
+ $(basename $(notdir $(wildcard $(d)/*.te))))
+
+ifneq ($(REFPOLICY_EXTRA_MODULES_DIRS),)
+define REFPOLICY_COPY_EXTRA_MODULES
+ mkdir -p $(@D)/policy/modules/buildroot
+ rsync -au $(addsuffix /*,$(REFPOLICY_EXTRA_MODULES_DIRS)) \
+ $(@D)/policy/modules/buildroot/
+ if [ ! -f $(@D)/policy/modules/buildroot/metadata.xml ]; then \
+ echo "<summary>Buildroot extra modules</summary>" > \
+ $(@D)/policy/modules/buildroot/metadata.xml; \
+ fi
+endef
+endif
# In the context of a monolithic policy enabling a piece of the policy as
# 'base' or 'module' is equivalent, so we enable them as 'base'.
endef
define REFPOLICY_BUILD_CMDS
+ $(REFPOLICY_COPY_EXTRA_MODULES)
$(REFPOLICY_MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) bare conf
$(REFPOLICY_CONFIGURE_MODULES)
endef