package/apparmor: add options to install utils
authorYann E. MORIN <yann.morin.1998@free.fr>
Sun, 29 Mar 2020 07:55:01 +0000 (09:55 +0200)
committerYann E. MORIN <yann.morin.1998@free.fr>
Mon, 20 Apr 2020 07:55:43 +0000 (09:55 +0200)
Most utilities are written in python3, except a few that are written in
a mixture of POSIX shell, bash, perl and awk.

The Makefile does not allow installing parts of it, but requiring all of
python3, bash, and perl to install the utils is too much of a
requirement.

Instead, we split the set in two, on one hand the python ones, which we
install when python3 is enabled, and on the other hand, the rest of the
script which we call 'extras', and which we install when all the extra
requirements (bash, perl, and busybox or gawk) are met; if not, then we
remove these extras utils as a post-install hook.

Signed-off-by: Angelo Compagnucci <angelo@amarulasolutions.com>
[yann.morin.1998@free.fr:
  - split into its own patch
  - re-arrange the conditions
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Tested-by: Angelo Compagnucci <angelo@amarulasolutions.com>
package/apparmor/Config.in
package/apparmor/apparmor.mk

index edc837366dc2bb695d1b2f1c994ef3002e991aa7..d02838f800356a36f98f3dcefe6f294b2a84a8d9 100644 (file)
@@ -26,6 +26,40 @@ config BR2_PACKAGE_APPARMOR_BINUTILS
          A set of utilities (written in C):
            aa-enabled    aa-exec
 
+comment "utils need python3"
+       depends on !BR2_PACKAGE_PYTHON3
+
+config BR2_PACKAGE_APPARMOR_UTILS
+       bool "utils"
+       depends on BR2_PACKAGE_PYTHON3
+       select BR2_PACKAGE_PYTHON3_READLINE
+       help
+         A set of utilities (written in pyhon):
+           aa-audit          aa-disable      aa-logprof
+           aa-autodep        aa-easyprof     aa-mergeprof
+           aa-cleanprof      aa-enforce      aa-status
+           aa-complain       aa-genprof      aa-unconfined
+
+if BR2_PACKAGE_APPARMOR_UTILS
+
+comment "utils (extras) need bash and perl, and busybox or gawk"
+       depends on !BR2_PACKAGE_BASH || !BR2_PACKAGE_PERL \
+               || !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK)
+
+config BR2_PACKAGE_APPARMOR_UTILS_EXTRA
+       bool "utils (extras)"
+       depends on BR2_PACKAGE_BASH
+       depends on BR2_PACKAGE_PERL
+       depends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK
+       help
+         An extra set of utilities (written in a mixture of sh,
+         bash, perl, and awk):
+           aa-decode          (bash + perl)
+           aa-notify          (perl)
+           aa-remove-unknown  (sh + awk)
+
+endif # BR2_PACKAGE_APPARMOR_UTILS
+
 endif # BR2_PACKAGE_APPARMOR
 
 comment "apparmor needs a toolchain w/ headers >= 3.16, threads, C++"
index 9ee5304a1643575289d3bbb130bddc05cedbe139..ab0b7778d6239b8cf59aee77d3121e38e2a68ed6 100644 (file)
@@ -21,6 +21,20 @@ ifeq ($(BR2_PACKAGE_APPARMOR_BINUTILS),y)
 APPARMOR_TOOLS += binutils
 endif
 
+ifeq ($(BR2_PACKAGE_APPARMOR_UTILS),y)
+APPARMOR_DEPENDENCIES += host-python3 python3
+APPARMOR_TOOLS += utils
+APPARMOR_MAKE_OPTS += PYTHON=$(HOST_DIR)/bin/python3
+
+ifeq ($(BR2_PACKAGE_APPARMOR_UTILS_EXTRA),)
+define APPARMOR_UTILS_NO_EXTRA
+       $(Q)rm -f $(addprefix $(TARGET_DIR)/usr/sbin/,aa-decode aa-notify aa-remove-unknown)
+endef
+APPARMOR_POST_INSTALL_TARGET_HOOKS += APPARMOR_UTILS_NO_EXTRA
+endif # BR2_PACKAGE_APPARMOR_UTILS_EXTRA
+
+endif # BR2_PACKAGE_APPARMOR_UTILS
+
 define APPARMOR_BUILD_CMDS
        $(foreach tool,$(APPARMOR_TOOLS),\
                $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \