From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 10/15] package/refpolicy: allow providing user defined modules
Date: Fri, 4 Sep 2020 15:05:32 +0200 [thread overview]
Message-ID: <20200904150532.4288260b@windsurf.home> (raw)
In-Reply-To: <20200731101040.1723047-11-antoine.tenart@bootlin.com>
Hello,
On Fri, 31 Jul 2020 12:10:35 +0200
Antoine Tenart <antoine.tenart@bootlin.com> wrote:
> +config BR2_REFPOLICY_EXTRA_MODULES_DIRS
> + string "Extra modules directories"
> + help
> + Specify directories containing SELinux modules that will be build
> + in 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.
I've slightly tweaked the help text here:
+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.
Also, I think your lines were too long, causing "make check-package"
warnings.
> - $(PACKAGES_SELINUX_MODULES)
> + $(PACKAGES_SELINUX_MODULES) \
> + $(foreach d,$(call qstrip,$(REFPOLICY_EXTRA_MODULES)),\
> + $(basename $(notdir $(wildcard $(d)/*.te))))
> +
> +# Allow to provide out-of-tree SELinux modules in addition to the ones in the
> +# refpolicy.
> +REFPOLICY_EXTRA_MODULES = $(BR2_REFPOLICY_EXTRA_MODULES_DIRS)
It was a bit silly to not do the qstrip here once for all, and use that
everywhere else. Also, the variable name REFPOLICY_EXTRA_MODULES wasn't
so good, since it really contains a list of directories, not a list of
modules.
So I've changed that to:
REFPOLICY_EXTRA_MODULES_DIRS = $(call qstrip,$(BR2_REFPOLICY_EXTRA_MODULES_DIRS))
I've moved it a bit further up so that the REFPOLICY_MODULES variable
can use it:
- $(PACKAGES_SELINUX_MODULES)
+ $(PACKAGES_SELINUX_MODULES) \
+ $(foreach d,$(REFPOLICY_EXTRA_MODULES_DIRS),\
+ $(basename $(notdir $(wildcard $(d)/*.te))))
> +$(foreach dir,$(call qstrip,$(BR2_REFPOLICY_EXTRA_MODULES_DIRS)),\
I've used REFPOLICY_EXTRA_MODULES_DIRS here as well.
> + $(if $(wildcard $(dir)),,\
> + $(error BR2_REFPOLICY_EXTRA_MODULES_DIRS contains nonexistent directory $(dir))))
> +
> +define REFPOLICY_COPY_MODULES
> + mkdir -p $(@D)/policy/modules/buildroot
> + rsync -au $(addsuffix /*,$(call qstrip,$(REFPOLICY_EXTRA_MODULES))) \
And here as well.
> + $(@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
I've enclosed this REFPOLICY_COPY_MODULES macro definition in a:
ifneq ($(REFPOLICY_EXTRA_MODULES_DIRS),)
...
endif
condition.
> # 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'.
> @@ -72,6 +91,8 @@ define REFPOLICY_CONFIGURE_CMDS
> endef
>
> define REFPOLICY_BUILD_CMDS
> + $(if $(call qstrip,$(REFPOLICY_EXTRA_MODULES)),\
> + $(REFPOLICY_COPY_MODULES))
So that we don't need a condition here.
Final commit looks like this:
https://git.buildroot.org/buildroot/commit/?id=1e2e3cc9519ab0fd6ed5411fe88cce14b4b7a2a9
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2020-09-04 13:05 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-31 10:10 [Buildroot] [PATCH 00/15] Improve SELinux support Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 01/15] package/e2fsprogs: set xattrs for the root dir as well Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 02/15] fs/common.mk: set SELinux file security contexts Antoine Tenart
2020-09-04 12:58 ` Thomas Petazzoni
2020-07-31 10:10 ` [Buildroot] [PATCH 03/15] fs/common.mk: move down ROOTFS_REPRODUCIBLE for consistency Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 04/15] package/refpolicy: smaller monolithic policy Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 05/15] package/refpolicy: allow packages to select SELinux modules Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 06/15] package/systemd: " Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 07/15] package/dbus: select SELinux module Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 08/15] package/util-linux: " Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 09/15] package/e2fsprogs: " Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 10/15] package/refpolicy: allow providing user defined modules Antoine Tenart
2020-09-04 13:05 ` Thomas Petazzoni [this message]
2020-09-04 15:00 ` Antoine Tenart
2020-09-04 15:10 ` Thomas Petazzoni
2020-09-04 15:28 ` Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 11/15] package/refpolicy: allow selecting additional modules Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 12/15] package/refpolicy: allow to provide a custom refpolicy Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 13/15] package/refpolicy: allow packages to provide their own SELinux modules Antoine Tenart
2020-07-31 10:10 ` [Buildroot] [PATCH 14/15] package/refpolicy: fix the configure, build and install steps Antoine Tenart
2020-09-04 13:07 ` Thomas Petazzoni
2020-07-31 10:10 ` [Buildroot] [PATCH 15/15] docs/manual: add a section about SELinux Antoine Tenart
2020-07-31 12:15 ` Matthew Weber
2020-07-31 12:52 ` Antoine Tenart
2020-07-31 13:15 ` Thomas Petazzoni
2020-07-31 13:19 ` Matthew Weber
2020-07-31 13:22 ` Antoine Tenart
2020-09-04 13:09 ` Thomas Petazzoni
2020-07-31 17:08 ` [Buildroot] [PATCH 00/15] Improve SELinux support Adam Duskett
2020-07-31 20:48 ` Adam Duskett
2020-08-01 8:12 ` Antoine Tenart
2020-08-01 8:05 ` Antoine Tenart
2020-09-04 12:56 ` Thomas Petazzoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200904150532.4288260b@windsurf.home \
--to=thomas.petazzoni@bootlin.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox