From 6938f58a4528c6b3d314808fd2ec6da2a2dff77c Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 9 Jun 2023 17:54:20 +0800 Subject: [PATCH 1/7] setools: Update to 4.4.2, reorganize package * Add separate packages for each tool (setools-*) and a package for the Python bindings (python3-setools) * Update the setools package as a meta-package that installs all tools, keeping it functionally the same as the current setools package * Remove gui tool (apol) and Python binding (setoolsgui) * Simplify 030-remove-host-paths.patch (libraries installed by Build/InstallDev are placed in $(STAGING_DIR)/usr/lib only) * Update package titles, descriptions, license, and dependencies Signed-off-by: Jeffery To --- utils/setools/Makefile | 95 ++++++++++++++++--- utils/setools/patches/010-no-gui.patch | 16 ++++ .../patches/030-remove-host-paths.patch | 5 +- 3 files changed, 102 insertions(+), 14 deletions(-) create mode 100644 utils/setools/patches/010-no-gui.patch diff --git a/utils/setools/Makefile b/utils/setools/Makefile index 2e6d3f915d..2bb4c7ff40 100644 --- a/utils/setools/Makefile +++ b/utils/setools/Makefile @@ -6,36 +6,109 @@ include $(TOPDIR)/rules.mk PKG_NAME:=setools -PKG_VERSION:=4.4.0 -PKG_RELEASE:=2 +PKG_VERSION:=4.4.2 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=https://github.com/SELinuxProject/setools/releases/download/$(PKG_VERSION) -PKG_HASH:=f3786677e40b7f16a226f48f233dcf835e700739614a7dbed2ff61cc9607814e -PKG_BUILD_DIR:=$(BUILD_DIR)/setools +PKG_HASH:=f23e3c8635aa289096ca0218ca6f4568a4346e088bc46f374cb0917b7fb66f05 PKG_BUILD_DEPENDS:=python-cython/host # Cython>=0.27 PKG_MAINTAINER:=W. Michael Petullo -PKG_LICENSE:=GPL-2.0-or-later LGPL-2.1-or-later +PKG_LICENSE:=GPL-2.0-only LGPL-2.1-only PKG_LICENSE_FILES:=COPYING COPYING.GPL COPYING.LGPL PKG_CPE_ID:=cpe:/a:selinuxproject:setools include $(INCLUDE_DIR)/package.mk include ../../lang/python/python3-package.mk -define Package/setools +TAR_OPTIONS+= --strip-components 1 +TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS) + +define Package/setools/Default SECTION:=utils CATEGORY:=Utilities - DEPENDS:=+python3 +python3-pkg-resources +python3-networkx +libselinux +libsepol - TITLE:=Policy analysis tools for SELinux + TITLE:=SELinux policy analysis tool URL:=http://selinuxproject.org/page/Main_Page + DEPENDS:=+python3-light +python3-logging +python3-setools +endef + +define Package/setools/Default/description +SETools is a collection of tools and libraries designed to facilitate +SELinux policy analysis. +endef + +define Package/python3-setools + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=SETools Python bindings + URL:=http://selinuxproject.org/page/Main_Page + DEPENDS:=+python3-light +python3-logging +python3-pkg-resources +libselinux +libsepol +endef + +define Package/python3-setools/description +$(call Package/setools/Default/description) + +This contains the SETools Python binding. +endef + +Py3Package/python3-setools/install:=: + +define Package/setools +$(call Package/setools/Default) + TITLE+= meta-package + DEPENDS:= \ + setools-sechecker \ + setools-sediff \ + setools-sedta \ + setools-seinfo \ + setools-seinfoflow \ + setools-sesearch endef define Package/setools/description - SETools is a collection of tools and libraries designed to facilitate - SELinux policy analysis. +$(call Package/setools/Default/description) + +This is a meta-package that installs all of the SETools tools. endef -$(eval $(call Py3Package,setools)) +Package/setools/install:=: + +define BuildUtil + define Package/setools-$(1) + $(call Package/setools/Default) + TITLE+= $(1) + DEPENDS+= $(2) + endef + + define Package/setools-$(1)/description +$(call Package/setools/Default/description) + +This contains the $(1) tool. + endef + + define Py3Package/setools-$(1)/install + $$(INSTALL_DIR) $$(1)/usr/bin + $$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/ + endef + + Py3Package/setools-$(1)/filespec:= + + $$(eval $$(call Py3Package,setools-$(1))) + $$(eval $$(call BuildPackage,setools-$(1))) +endef + +$(eval $(call Py3Package,python3-setools)) +$(eval $(call BuildPackage,python3-setools)) +$(eval $(call BuildPackage,python3-setools-src)) + $(eval $(call BuildPackage,setools)) + +$(eval $(call BuildUtil,sechecker)) +$(eval $(call BuildUtil,sediff)) +$(eval $(call BuildUtil,sedta,+python3-networkx)) +$(eval $(call BuildUtil,seinfo)) +$(eval $(call BuildUtil,seinfoflow,+python3-networkx)) +$(eval $(call BuildUtil,sesearch)) diff --git a/utils/setools/patches/010-no-gui.patch b/utils/setools/patches/010-no-gui.patch new file mode 100644 index 0000000000..54f03c3162 --- /dev/null +++ b/utils/setools/patches/010-no-gui.patch @@ -0,0 +1,16 @@ +--- a/setup.py ++++ b/setup.py +@@ -139,10 +139,10 @@ setup(name='setools', + author_email='pebenito@ieee.org', + url='https://github.com/SELinuxProject/setools', + cmdclass={'build_qhc': QtHelpCommand, 'clean': CleanCommand}, +- packages=['setools', 'setools.checker', 'setools.diff', 'setoolsgui', 'setoolsgui.apol'], +- scripts=['apol', 'sediff', 'seinfo', 'seinfoflow', 'sesearch', 'sedta', 'sechecker'], ++ packages=['setools', 'setools.checker', 'setools.diff'], ++ scripts=['sediff', 'seinfo', 'seinfoflow', 'sesearch', 'sedta', 'sechecker'], + data_files=installed_data, +- package_data={'': ['*.ui', '*.qhc', '*.qch'], 'setools': ['perm_map', ++ package_data={'setools': ['perm_map', + 'policyrep.pyi', + 'py.typed']}, + ext_modules=cythonize(ext_py_mods, include_path=['setools/policyrep'], diff --git a/utils/setools/patches/030-remove-host-paths.patch b/utils/setools/patches/030-remove-host-paths.patch index 94553004de..bec9be9d63 100644 --- a/utils/setools/patches/030-remove-host-paths.patch +++ b/utils/setools/patches/030-remove-host-paths.patch @@ -1,12 +1,11 @@ --- a/setup.py +++ b/setup.py -@@ -79,7 +79,8 @@ class QtHelpCommand(Command): +@@ -79,7 +79,7 @@ class QtHelpCommand(Command): # Library linkage -lib_dirs = ['.', '/usr/lib64', '/usr/lib', '/usr/local/lib'] -+owrt_staging_dir = os.environ["STAGING_DIR"] -+lib_dirs = ['.', owrt_staging_dir + '/usr/lib64', owrt_staging_dir + '/usr/lib', owrt_staging_dir + '/usr/local/lib' ] ++lib_dirs = ['.', os.environ["STAGING_DIR"] + '/usr/lib'] include_dirs = [] with suppress(KeyError): From a205483547ca835d98d5da1284e8a77c88eb5f97 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Thu, 8 Jun 2023 15:34:09 +0800 Subject: [PATCH 2/7] python3-libselinux: Update to 3.5, rename source/target package * Rename: * Source package from python3-libselinux to python-selinux * Target package from python3-libselinux to python3-selinux * Update dependents with new target package name * Remove patches: * 010-setup-py-custom-cc.patch: LDSHARED is already set as part of $(PYTHON3_VARS) * 020-Make-use-of-variables-when-defining-libdir-and-inclu.patch: This package doesn't install the libselinux.pc file * Update package title and dependencies * Remove Build/InstallDev (files not used by any other package) * Use Py3Package to build Python bytecode and source packages Signed-off-by: Jeffery To --- .../Makefile | 59 ++++++++----------- .../patches/010-setup-py-custom-cc.patch | 11 ---- ...ables-when-defining-libdir-and-inclu.patch | 21 ------- utils/selinux-python/Makefile | 4 +- 4 files changed, 28 insertions(+), 67 deletions(-) rename lang/python/{python3-libselinux => python-selinux}/Makefile (58%) delete mode 100644 lang/python/python3-libselinux/patches/010-setup-py-custom-cc.patch delete mode 100644 lang/python/python3-libselinux/patches/020-Make-use-of-variables-when-defining-libdir-and-inclu.patch diff --git a/lang/python/python3-libselinux/Makefile b/lang/python/python-selinux/Makefile similarity index 58% rename from lang/python/python3-libselinux/Makefile rename to lang/python/python-selinux/Makefile index f56483b44d..5736ef09a7 100644 --- a/lang/python/python3-libselinux/Makefile +++ b/lang/python/python-selinux/Makefile @@ -5,38 +5,38 @@ include $(TOPDIR)/rules.mk -SRC_NAME:=libselinux -PKG_NAME:=python3-$(SRC_NAME) -PKG_VERSION:=3.3 -PKG_RELEASE:=3 +PKG_NAME:=python-selinux +PKG_VERSION:=3.5 +PKG_RELEASE:=1 -PKG_BUILD_DIR:=$(BUILD_DIR)/python-libselinux/$(SRC_NAME)-$(PKG_VERSION) +SRC_NAME:=libselinux PKG_SOURCE:=$(SRC_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION) -PKG_HASH:=acfdee27633d2496508c28727c3d41d3748076f66d42fccde2e6b9f3463a7057 -PKG_BUILD_DEPENDS:=swig/host +PKG_HASH:=9a3a3705ac13a2ccca2de6d652b6356fead10f36fb33115c185c5ccdf29eec19 +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(SRC_NAME)-$(PKG_VERSION) PKG_MAINTAINER:=Thomas Petazzoni PKG_LICENSE:=libselinux-1.0 PKG_LICENSE_FILES:=LICENSE PKG_CPE_ID:=cpe:/a:selinuxproject:libselinux + +PKG_BUILD_DEPENDS:=swig/host +PKG_BUILD_PARALLEL:=1 PYTHON3_PKG_BUILD:=0 -PKG_INSTALL:=1 -MAKE_PATH:=src include $(INCLUDE_DIR)/package.mk include ../python3-package.mk -define Package/python3-libselinux - TITLE:=Python bindings for the runtime SELinux library +define Package/python3-selinux SUBMENU:=Python SECTION:=lang CATEGORY:=Languages - DEPENDS:=+libpcre +musl-fts +python3 +libselinux + TITLE:=SELinux runtime library bindings + DEPENDS:=+python3-light +libselinux URL:=http://selinuxproject.org/page/Main_Page endef -define Package/python3-libselinux/description +define Package/python3-selinux/description libselinux is the runtime SELinux library that provides interfaces (e.g. library functions for the SELinux kernel APIs like getcon(), other support functions like @@ -48,34 +48,27 @@ define Package/python3-libselinux/description This package provides the Python bindings for libselinux. endef +MAKE_VARS += \ + $(PYTHON3_VARS) \ + $(HOST_PYTHON3_PIP_VARS) \ + PYTHON_SETUP_ARGS=--no-compile + +MAKE_FLAGS += \ + SHLIBDIR=/usr/lib + ifneq ($(CONFIG_USE_MUSL),) + MAKE_FLAGS += FTS_LDLIBS=-lfts TARGET_CFLAGS += -D_LARGEFILE64_SOURCE endif -MAKE_FLAGS += \ - FTS_LDLIBS=-lfts \ - SHLIBDIR=/usr/lib \ - PYTHON=$(PYTHON3) \ - PYINC="-I $(PYTHON3_INC_DIR)" \ - PYLIBS="-lpython$(PYTHON3_VERSION)" \ - $(PYTHON3_VARS) - define Build/Compile - $(call Build/Compile/Default,swigify pywrap) + $(call Build/Compile/Default,pywrap) endef define Build/Install $(call Build/Install/Default,install-pywrap) endef -define Build/InstallDev - $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR) - $(CP) $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/* $(1)$(PYTHON3_PKG_DIR) -endef - -define Package/python3-libselinux/install - $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR) - $(CP) $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/* $(1)$(PYTHON3_PKG_DIR) -endef - -$(eval $(call BuildPackage,python3-libselinux)) +$(eval $(call Py3Package,python3-selinux)) +$(eval $(call BuildPackage,python3-selinux)) +$(eval $(call BuildPackage,python3-selinux-src)) diff --git a/lang/python/python3-libselinux/patches/010-setup-py-custom-cc.patch b/lang/python/python3-libselinux/patches/010-setup-py-custom-cc.patch deleted file mode 100644 index 8fe8165880..0000000000 --- a/lang/python/python3-libselinux/patches/010-setup-py-custom-cc.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/Makefile -+++ b/src/Makefile -@@ -139,7 +139,7 @@ SWIGRUBY = swig -Wall -ruby -o $(SWIGRUB - all: $(LIBA) $(LIBSO) $(LIBPC) - - pywrap: all selinuxswig_python_exception.i -- CFLAGS="$(CFLAGS) $(SWIG_CFLAGS)" $(PYTHON) setup.py build_ext -+ LDSHARED="$(CC) -shared" CFLAGS="$(CFLAGS) $(SWIG_CFLAGS)" $(PYTHON) setup.py build_ext - - rubywrap: all $(SWIGRUBYSO) - diff --git a/lang/python/python3-libselinux/patches/020-Make-use-of-variables-when-defining-libdir-and-inclu.patch b/lang/python/python3-libselinux/patches/020-Make-use-of-variables-when-defining-libdir-and-inclu.patch deleted file mode 100644 index c900ff143b..0000000000 --- a/lang/python/python3-libselinux/patches/020-Make-use-of-variables-when-defining-libdir-and-inclu.patch +++ /dev/null @@ -1,21 +0,0 @@ -Pkg-config definitions commonly make use of ${exec_prefix} and ${prefix} -when defining libdir and includedir, respectively. OpenWrt, for example, -relies on this when it adjusts things for cross compiling. - -Signed-off-by: W. Michael Petullo ---- - src/libselinux.pc.in | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/src/libselinux.pc.in -+++ b/src/libselinux.pc.in -@@ -1,7 +1,7 @@ - prefix=@prefix@ - exec_prefix=${prefix} --libdir=@libdir@ --includedir=@includedir@ -+libdir=${exec_prefix}/lib -+includedir=${prefix}/include - - Name: libselinux - Description: SELinux utility library diff --git a/utils/selinux-python/Makefile b/utils/selinux-python/Makefile index ffaa99c7ff..af025c7b0e 100644 --- a/utils/selinux-python/Makefile +++ b/utils/selinux-python/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=selinux-python PKG_VERSION:=3.2 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION) @@ -28,7 +28,7 @@ include ../../lang/python/python3-package.mk define Package/selinux-python/Default SECTION:=utils - DEPENDS:=+python3 +python3-libselinux + DEPENDS:=+python3 +python3-selinux CATEGORY:=Utilities URL:=http://selinuxproject.org/page/Main_Page endef From 23ff8177f030610f40300519cd888dbfd47f3e3a Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Thu, 8 Jun 2023 16:45:07 +0800 Subject: [PATCH 3/7] python3-libsemanage: Update to 3.5, rename source/target package * Rename: * Source package from python3-libsemanage to python-semanage * Target package from python3-libsemanage to python3-semanage * Update dependents with new target package name * Update package title, license files, and dependencies * Remove Build/InstallDev (files not used by any other package) * Use Py3Package to build Python bytecode and source packages Signed-off-by: Jeffery To --- .../Makefile | 52 +++++++------------ utils/selinux-python/Makefile | 4 +- 2 files changed, 21 insertions(+), 35 deletions(-) rename lang/python/{python3-libsemanage => python-semanage}/Makefile (56%) diff --git a/lang/python/python3-libsemanage/Makefile b/lang/python/python-semanage/Makefile similarity index 56% rename from lang/python/python3-libsemanage/Makefile rename to lang/python/python-semanage/Makefile index c1a8257678..33e148cf28 100644 --- a/lang/python/python3-libsemanage/Makefile +++ b/lang/python/python-semanage/Makefile @@ -5,38 +5,38 @@ include $(TOPDIR)/rules.mk -SRC_NAME:=libsemanage -PKG_NAME:=python3-$(SRC_NAME) -PKG_VERSION:=3.2 +PKG_NAME:=python-semanage +PKG_VERSION:=3.5 PKG_RELEASE:=1 -PKG_BUILD_DIR:=$(BUILD_DIR)/python-libsemanage/$(SRC_NAME)-$(PKG_VERSION) +SRC_NAME:=libsemanage PKG_SOURCE:=$(SRC_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION) -PKG_HASH:=d722a55ca4fe2d4e2b30527720db657e6238b28079e69e2e4affeb8e733ee511 -PKG_BUILD_DEPENDS:=swig/host +PKG_HASH:=f53534e50247538280ed0d76c6ce81d8fb3939bd64cadb89da10dba42e40dd9c +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(SRC_NAME)-$(PKG_VERSION) PKG_MAINTAINER:=Thomas Petazzoni PKG_LICENSE:=LGPL-2.1-or-later -PKG_LICENSE_FILES:=COPYING +PKG_LICENSE_FILES:=LICENSE PKG_CPE_ID:=cpe:/a:selinuxproject:libsemanage + +PKG_BUILD_DEPENDS:=swig/host +PKG_BUILD_PARALLEL:=1 PYTHON3_PKG_BUILD:=0 -PKG_INSTALL:=1 -MAKE_PATH:=src include $(INCLUDE_DIR)/package.mk include ../python3-package.mk -define Package/python3-libsemanage - TITLE:=Python bindings for the SELinux policy management library +define Package/python3-semanage SUBMENU:=Python SECTION:=lang CATEGORY:=Languages - DEPENDS:=+python3 +libsemanage + TITLE:=SELinux policy management library bindings + DEPENDS:=+python3-light +libsemanage URL:=http://selinuxproject.org/page/Main_Page endef -define Package/python3-libsemanage/description +define Package/python3-semanage/description libsemanage is the policy management library. It uses libsepol for binary policy manipulation and libselinux for interacting with the SELinux system. It also exec's helper @@ -46,33 +46,19 @@ define Package/python3-libsemanage/description change at least for the bootstrapping case (for rpm). This package provides the Python bindings for libsemanage. -endef #' +endef -MAKE_FLAGS += \ - PYTHON=$(PYTHON3) \ - PYINC="-I $(PYTHON3_INC_DIR)" \ - PYLIBS="-lpython$(PYTHON3_VERSION)" \ +MAKE_VARS += \ $(PYTHON3_VARS) define Build/Compile - $(call Build/Compile/Default,swigify pywrap) + $(call Build/Compile/Default,pywrap) endef define Build/Install $(call Build/Install/Default,install-pywrap) endef -define Build/Configure -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR) - $(CP) $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/* $(1)$(PYTHON3_PKG_DIR) -endef - -define Package/python3-libsemanage/install - $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR) - $(CP) $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/* $(1)$(PYTHON3_PKG_DIR) -endef - -$(eval $(call BuildPackage,python3-libsemanage)) +$(eval $(call Py3Package,python3-semanage)) +$(eval $(call BuildPackage,python3-semanage)) +$(eval $(call BuildPackage,python3-semanage-src)) diff --git a/utils/selinux-python/Makefile b/utils/selinux-python/Makefile index af025c7b0e..ed51bc7f30 100644 --- a/utils/selinux-python/Makefile +++ b/utils/selinux-python/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=selinux-python PKG_VERSION:=3.2 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION) @@ -93,7 +93,7 @@ endef define Package/selinux-semanage $(call Package/selinux-python/Default) TITLE:=selinux-semanage - DEPENDS+=+python3-sepolicy +python3-libsemanage +setools + DEPENDS+=+python3-sepolicy +python3-semanage +setools endef define Package/selinux-semanage/description From 03225ca7b0755eb342191f7bff8871a8ddfddb1c Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 9 Jun 2023 13:16:13 +0800 Subject: [PATCH 4/7] selinux-python: Order package sections alphabetically Signed-off-by: Jeffery To --- utils/selinux-python/Makefile | 96 +++++++++++++++++------------------ 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/utils/selinux-python/Makefile b/utils/selinux-python/Makefile index ed51bc7f30..e6f3f12c01 100644 --- a/utils/selinux-python/Makefile +++ b/utils/selinux-python/Makefile @@ -47,6 +47,52 @@ define Build/Compile $(call Build/Compile/Default,all) endef +# +# python3-sepolgen +# + +define Package/python3-sepolgen +$(call Package/selinux-python/Default) + SUBMENU:=Python + SECTION:=lang + CATEGORY:=Languages + TITLE:=python3-sepolgen +endef + +define Package/python3-sepolgen/description +$(call Package/selinux-python/Default/description) + This package contains the sepolgen Python library. +endef + +define Package/python3-sepolgen/install + $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/sepolgen DESTDIR=$(1) install + $(INSTALL_DIR) $(1)/usr/share/sepolgen/ + $(INSTALL_DATA) $(1)/var/lib/sepolgen/perm_map $(1)/usr/share/sepolgen/perm_map + $(RM) -rf $(1)/var +endef + +# +# python3-sepolicy +# + +define Package/python3-sepolicy +$(call Package/selinux-python/Default) + SUBMENU:=Python + SECTION:=lang + CATEGORY:=Languages + TITLE:=python3-sepolicy +endef + +define Package/python3-sepolicy/description +$(call Package/selinux-python/Default/description) + This package contains the sepolicy Python library. +endef + +define Package/python3-sepolicy/install + $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/sepolicy DESTDIR=$(1) install + rm -rf $(1)/usr/share +endef + # # selinux-audit2allow # @@ -106,54 +152,8 @@ define Package/selinux-semanage/install rm -rf $(1)/usr/share endef -# -# python3-sepolgen -# - -define Package/python3-sepolgen -$(call Package/selinux-python/Default) - SUBMENU:=Python - SECTION:=lang - CATEGORY:=Languages - TITLE:=python3-sepolgen -endef - -define Package/python3-sepolgen/description -$(call Package/selinux-python/Default/description) - This package contains the sepolgen Python library. -endef - -define Package/python3-sepolgen/install - $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/sepolgen DESTDIR=$(1) install - $(INSTALL_DIR) $(1)/usr/share/sepolgen/ - $(INSTALL_DATA) $(1)/var/lib/sepolgen/perm_map $(1)/usr/share/sepolgen/perm_map - $(RM) -rf $(1)/var -endef - -# -# python3-sepolicy -# - -define Package/python3-sepolicy -$(call Package/selinux-python/Default) - SUBMENU:=Python - SECTION:=lang - CATEGORY:=Languages - TITLE:=python3-sepolicy -endef - -define Package/python3-sepolicy/description -$(call Package/selinux-python/Default/description) - This package contains the sepolicy Python library. -endef - -define Package/python3-sepolicy/install - $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/sepolicy DESTDIR=$(1) install - rm -rf $(1)/usr/share -endef - +$(eval $(call BuildPackage,python3-sepolgen)) +$(eval $(call BuildPackage,python3-sepolicy)) $(eval $(call BuildPackage,selinux-audit2allow)) $(eval $(call BuildPackage,selinux-chcat)) $(eval $(call BuildPackage,selinux-semanage)) -$(eval $(call BuildPackage,python3-sepolgen)) -$(eval $(call BuildPackage,python3-sepolicy)) From 61e79aad69015d71286d7b47f6bcccee20baf796 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 9 Jun 2023 13:28:11 +0800 Subject: [PATCH 5/7] selinux-python: Add default sections for Python and util packages This also moves the python3-selinux dependency from the default section into each util package. Signed-off-by: Jeffery To --- utils/selinux-python/Makefile | 39 +++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/utils/selinux-python/Makefile b/utils/selinux-python/Makefile index e6f3f12c01..20d6b11066 100644 --- a/utils/selinux-python/Makefile +++ b/utils/selinux-python/Makefile @@ -27,10 +27,22 @@ include ../../lang/python/python3-package.mk # define Package/selinux-python/Default - SECTION:=utils - DEPENDS:=+python3 +python3-selinux - CATEGORY:=Utilities URL:=http://selinuxproject.org/page/Main_Page + DEPENDS:=+python3 +endef + +define Package/selinux-python/Default/python +$(call Package/selinux-python/Default) + SUBMENU:=Python + SECTION:=lang + CATEGORY:=Languages + DEPENDS:= +endef + +define Package/selinux-python/Default/util +$(call Package/selinux-python/Default) + SECTION:=utils + CATEGORY:=Utilities endef define Package/selinux-python/Default/description @@ -52,10 +64,7 @@ endef # define Package/python3-sepolgen -$(call Package/selinux-python/Default) - SUBMENU:=Python - SECTION:=lang - CATEGORY:=Languages +$(call Package/selinux-python/Default/python) TITLE:=python3-sepolgen endef @@ -76,10 +85,7 @@ endef # define Package/python3-sepolicy -$(call Package/selinux-python/Default) - SUBMENU:=Python - SECTION:=lang - CATEGORY:=Languages +$(call Package/selinux-python/Default/python) TITLE:=python3-sepolicy endef @@ -98,9 +104,9 @@ endef # define Package/selinux-audit2allow -$(call Package/selinux-python/Default) +$(call Package/selinux-python/Default/util) TITLE:=selinux-audit2allow - DEPENDS+=+python3-sepolgen +libselinux +libsepol + DEPENDS+= +python3-selinux +python3-sepolgen +libselinux +libsepol endef define Package/selinux-audit2allow/description @@ -118,8 +124,9 @@ endef # define Package/selinux-chcat -$(call Package/selinux-python/Default) +$(call Package/selinux-python/Default/util) TITLE:=selinux-chcat + DEPENDS+= +python3-selinux endef define Package/selinux-chcat/description @@ -137,9 +144,9 @@ endef # define Package/selinux-semanage -$(call Package/selinux-python/Default) +$(call Package/selinux-python/Default/util) TITLE:=selinux-semanage - DEPENDS+=+python3-sepolicy +python3-semanage +setools + DEPENDS+= +python3-selinux +python3-sepolicy +python3-semanage +setools endef define Package/selinux-semanage/description From 6bd71dac0cb7711777feaf04d1156d2e0eb9e1bd Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 9 Jun 2023 12:41:13 +0800 Subject: [PATCH 6/7] selinux-python: Update to 3.5, reorganize package * Added packages: * python3-seobject Contains the seobject.py library file which was previously included in selinux-semanage * selinux-sepolicy Contains the sepolicy and sepolgen tools which were previously included in python3-sepolicy * selinux-sepolgen-ifgen Contains the sepolgen-ifgen tool which was previously included in selinux-audit2allow * selinux-python A meta-package to install all tools * Change the python3-sepolgen data_dir from /usr/share/sepolgen to /etc/sepolgen (updated 0001-sepolgen-adjust-data_dir.patch), and add the directory to conffiles By default, the sepolgen-ifgen tool writes to a file named "interface_info" in the data directory, to be read by the audit2allow tool. The header comment in the perm_map file also suggests that the file is customizable. The best place for these files would be in /var/lib, but /etc is more appropriate than /usr. * Remove gui files from python3-sepolicy (0003-sepolicy-no-gui.patch) * Fix ModuleNotFoundError raised by sepolicy (0004-sepolicy-fix-get_os_version-except.patch) Patch has been submitted upstream: https://lore.kernel.org/selinux/20230619063217.3165462-1-jeffery.to@gmail.com/ * Update package titles, descriptions, and dependencies * Use Py3Package to build Python bytecode and source packages Signed-off-by: Jeffery To --- utils/selinux-python/Makefile | 201 ++++++++++++++---- .../0001-sepolgen-adjust-data_dir.patch | 4 +- .../patches/0003-sepolicy-no-gui.patch | 23 ++ ...4-sepolicy-fix-get_os_version-except.patch | 39 ++++ .../patches/0005-no-translations.patch | 8 + 5 files changed, 235 insertions(+), 40 deletions(-) create mode 100644 utils/selinux-python/patches/0003-sepolicy-no-gui.patch create mode 100644 utils/selinux-python/patches/0004-sepolicy-fix-get_os_version-except.patch create mode 100644 utils/selinux-python/patches/0005-no-translations.patch diff --git a/utils/selinux-python/Makefile b/utils/selinux-python/Makefile index 20d6b11066..ababbae95e 100644 --- a/utils/selinux-python/Makefile +++ b/utils/selinux-python/Makefile @@ -6,18 +6,20 @@ include $(TOPDIR)/rules.mk PKG_NAME:=selinux-python -PKG_VERSION:=3.2 -PKG_RELEASE:=3 +PKG_VERSION:=3.5 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION) -PKG_HASH:=770855ea8120ef23007fdb9db94b1ed6e8cd77917b584ed8877bbee9c16e74fb +PKG_HASH:=8245bb4dae59333461f19ca0c79a829081f07972fa5e3ad4c2b2b917dd71d96b PKG_MAINTAINER:=Thomas Petazzoni PKG_LICENSE:=GPL-2.0-only -PKG_LICENSE_FILES:=COPYING -PYTHON3_PKG_BUILD:=0 +PKG_LICENSE_FILES:=LICENSE + +PKG_BUILD_PARALLEL:=1 PKG_INSTALL:=1 +PYTHON3_PKG_BUILD:=0 include $(INCLUDE_DIR)/package.mk include ../../lang/python/python3-package.mk @@ -28,7 +30,7 @@ include ../../lang/python/python3-package.mk define Package/selinux-python/Default URL:=http://selinuxproject.org/page/Main_Page - DEPENDS:=+python3 + DEPENDS:=+python3-light endef define Package/selinux-python/Default/python @@ -36,48 +38,78 @@ $(call Package/selinux-python/Default) SUBMENU:=Python SECTION:=lang CATEGORY:=Languages - DEPENDS:= endef define Package/selinux-python/Default/util $(call Package/selinux-python/Default) SECTION:=utils CATEGORY:=Utilities + TITLE:=SELinux management utility endef define Package/selinux-python/Default/description - A set of SELinux tools written in python that help with - managing a system with SELinux enabled. +A set of SELinux tools written in Python that help with managing a +system with SELinux enabled. endef MAKE_VARS = \ - PYTHON=$(HOST_PYTHON3_BIN) \ - PYTHONLIBDIR=$(PYTHON3_PKG_DIR) \ - $(PYTHON3_VARS) + $(PYTHON3_VARS) \ + $(HOST_PYTHON3_PIP_VARS) \ + PYTHON_SETUP_ARGS=--no-compile define Build/Compile $(call Build/Compile/Default,all) endef +# +# python3-seobject +# + +define Package/python3-seobject +$(call Package/selinux-python/Default/python) + TITLE:=SELinux seobject library + DEPENDS+= +python3-selinux +python3-semanage +python3-sepolicy +python3-setools +endef + +define Package/python3-seobject/description +$(call Package/selinux-python/Default/description) + +This package contains the seobject library. +endef + +define Py3Package/python3-seobject/filespec ++|$(PYTHON3_PKG_DIR)/seobject.py +endef + +Py3Package/python3-seobject/install:=: + # # python3-sepolgen # define Package/python3-sepolgen $(call Package/selinux-python/Default/python) - TITLE:=python3-sepolgen + TITLE:=SELinux policy generation library + DEPENDS+= +python3-selinux endef define Package/python3-sepolgen/description $(call Package/selinux-python/Default/description) - This package contains the sepolgen Python library. + +This package contains the SELinux policy generation Python library. endef -define Package/python3-sepolgen/install - $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/sepolgen DESTDIR=$(1) install - $(INSTALL_DIR) $(1)/usr/share/sepolgen/ - $(INSTALL_DATA) $(1)/var/lib/sepolgen/perm_map $(1)/usr/share/sepolgen/perm_map - $(RM) -rf $(1)/var +define Package/python3-sepolgen/conffiles +/etc/sepolgen/ +endef + +define Py3Package/python3-sepolgen/filespec ++|$(PYTHON3_PKG_DIR)/sepolgen +endef + +define Py3Package/python3-sepolgen/install + $(INSTALL_DIR) $(1)/etc/sepolgen + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/var/lib/sepolgen/perm_map $(1)/etc/sepolgen/ endef # @@ -86,37 +118,45 @@ endef define Package/python3-sepolicy $(call Package/selinux-python/Default/python) - TITLE:=python3-sepolicy + TITLE:=SELinux Policy Analyses binding + DEPENDS+= +python3-selinux +python3-sepolgen +python3-xml +python3-setools endef define Package/python3-sepolicy/description $(call Package/selinux-python/Default/description) - This package contains the sepolicy Python library. + +This package contains a Python binding for SELinux Policy Analyses. endef -define Package/python3-sepolicy/install - $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/sepolicy DESTDIR=$(1) install - rm -rf $(1)/usr/share +define Py3Package/python3-sepolicy/filespec ++|$(PYTHON3_PKG_DIR)/sepolicy +-|$(PYTHON3_PKG_DIR)/sepolicy/gui.py +-|$(PYTHON3_PKG_DIR)/sepolicy/sedbus.py ++|$(PYTHON3_PKG_DIR)/sepolicy-$(PKG_VERSION).dist-info endef +Py3Package/python3-sepolicy/install:=: + # # selinux-audit2allow # define Package/selinux-audit2allow $(call Package/selinux-python/Default/util) - TITLE:=selinux-audit2allow - DEPENDS+= +python3-selinux +python3-sepolgen +libselinux +libsepol + TITLE+= audit2allow + DEPENDS+= +python3-selinux +python3-sepolgen endef define Package/selinux-audit2allow/description $(call Package/selinux-python/Default/description) - This package contains the audit2allow and audit2why tools. + +This package contains the audit2allow and audit2why tools. endef define Package/selinux-audit2allow/install - $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/audit2allow DESTDIR=$(1) install - rm -rf $(1)/usr/share/man + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/audit2allow $(1)/usr/bin/ + $(LN) audit2allow $(1)/usr/bin/audit2why endef # @@ -125,42 +165,125 @@ endef define Package/selinux-chcat $(call Package/selinux-python/Default/util) - TITLE:=selinux-chcat - DEPENDS+= +python3-selinux + TITLE+= chcat + DEPENDS+= +python3-selinux +python3-seobject +selinux-semanage endef define Package/selinux-chcat/description $(call Package/selinux-python/Default/description) - This package contains the chcat tool. + +This package contains the chcat tool. endef define Package/selinux-chcat/install - $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/chcat DESTDIR=$(1) install - rm -rf $(1)/usr/share + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/chcat $(1)/usr/bin/ endef +# +# selinux-python +# + +define Package/selinux-python +$(call Package/selinux-python/Default/util) + TITLE+= meta-package + DEPENDS:= \ + +selinux-audit2allow \ + +selinux-chcat \ + +selinux-semanage \ + +selinux-sepolgen-ifgen \ + +selinux-sepolicy +endef + +define Package/selinux-python/description +$(call Package/selinux-python/Default/description) + +This is a meta-package that installs all of the SELinux management +utilities. +endef + +Package/selinux-python/install:=: + # # selinux-semanage # define Package/selinux-semanage $(call Package/selinux-python/Default/util) - TITLE:=selinux-semanage - DEPENDS+= +python3-selinux +python3-sepolicy +python3-semanage +setools + TITLE+= semanage + DEPENDS+= +python3-seobject endef define Package/selinux-semanage/description $(call Package/selinux-python/Default/description) - This package contains the semanage tool. + +This package contains the semanage tool. endef define Package/selinux-semanage/install - $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/semanage DESTDIR=$(1) install - rm -rf $(1)/usr/share + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/semanage $(1)/usr/sbin/ endef +# +# selinux-sepolgen-ifgen +# + +define Package/selinux-sepolgen-ifgen +$(call Package/selinux-python/Default/util) + TITLE+= sepolgen-ifgen + DEPENDS+= +python3-selinux +python3-sepolgen +libselinux +endef + +define Package/selinux-sepolgen-iften/description +$(call Package/selinux-python/Default/description) + +This package contains the sepolgen-ifgen tool. +endef + +define Package/selinux-sepolgen-ifgen/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sepolgen-ifgen $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sepolgen-ifgen-attr-helper $(1)/usr/bin/ +endef + +# +# selinux-sepolicy +# + +define Package/selinux-sepolicy +$(call Package/selinux-python/Default/util) + TITLE+= sepolicy + DEPENDS+= +python3-multiprocessing +python3-selinux +python3-sepolicy +endef + +define Package/selinux-sepolicy/description +$(call Package/selinux-python/Default/description) + +This package contains the sepolicy and sepolgen tools. +endef + +define Package/selinux-sepolicy/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sepolicy $(1)/usr/bin/ + $(LN) sepolicy $(1)/usr/bin/sepolgen +endef + +$(eval $(call Py3Package,python3-seobject)) +$(eval $(call Py3Package,python3-sepolgen)) +$(eval $(call Py3Package,python3-sepolicy)) + +$(eval $(call BuildPackage,python3-seobject)) $(eval $(call BuildPackage,python3-sepolgen)) $(eval $(call BuildPackage,python3-sepolicy)) + +$(eval $(call BuildPackage,python3-seobject-src)) +$(eval $(call BuildPackage,python3-sepolgen-src)) +$(eval $(call BuildPackage,python3-sepolicy-src)) + $(eval $(call BuildPackage,selinux-audit2allow)) $(eval $(call BuildPackage,selinux-chcat)) +$(eval $(call BuildPackage,selinux-python)) $(eval $(call BuildPackage,selinux-semanage)) +$(eval $(call BuildPackage,selinux-sepolgen-ifgen)) +$(eval $(call BuildPackage,selinux-sepolicy)) diff --git a/utils/selinux-python/patches/0001-sepolgen-adjust-data_dir.patch b/utils/selinux-python/patches/0001-sepolgen-adjust-data_dir.patch index 2589f2f991..5b866f1997 100644 --- a/utils/selinux-python/patches/0001-sepolgen-adjust-data_dir.patch +++ b/utils/selinux-python/patches/0001-sepolgen-adjust-data_dir.patch @@ -4,6 +4,8 @@ Date: Wed, 2 Oct 2019 12:04:24 +0200 Subject: [PATCH] sepolgen: adjust data_dir() Signed-off-by: Thomas Petazzoni +(changed data_dir prefix from /usr/share to /etc) +Signed-off-by: Jeffery To --- sepolgen/src/sepolgen/defaults.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) @@ -15,7 +17,7 @@ Signed-off-by: Thomas Petazzoni def data_dir(): - return "/var/lib/sepolgen" -+ return "/usr/share/sepolgen" ++ return "/etc/sepolgen" def perm_map(): return data_dir() + "/perm_map" diff --git a/utils/selinux-python/patches/0003-sepolicy-no-gui.patch b/utils/selinux-python/patches/0003-sepolicy-no-gui.patch new file mode 100644 index 0000000000..a822d4c5f6 --- /dev/null +++ b/utils/selinux-python/patches/0003-sepolicy-no-gui.patch @@ -0,0 +1,23 @@ +--- a/sepolicy/sepolicy.py ++++ b/sepolicy/sepolicy.py +@@ -685,7 +685,6 @@ if __name__ == '__main__': + gen_booleans_args(subparsers) + gen_communicate_args(subparsers) + gen_generate_args(subparsers) +- gen_gui_args(subparsers) + gen_interface_args(subparsers) + gen_manpage_args(subparsers) + gen_network_args(subparsers) +--- a/sepolicy/setup.py ++++ b/sepolicy/setup.py +@@ -13,10 +13,5 @@ setup( + packages=[ + "sepolicy", + "sepolicy.templates", +- "sepolicy.help" + ], +- package_data={ +- 'sepolicy': ['*.glade'], +- 'sepolicy.help': ['*.txt', '*.png'] +- } + ) diff --git a/utils/selinux-python/patches/0004-sepolicy-fix-get_os_version-except.patch b/utils/selinux-python/patches/0004-sepolicy-fix-get_os_version-except.patch new file mode 100644 index 0000000000..f035846d5c --- /dev/null +++ b/utils/selinux-python/patches/0004-sepolicy-fix-get_os_version-except.patch @@ -0,0 +1,39 @@ +commit 80ba6c49dec9c2c48775e70a4d4564ba5e59eea1 +Author: Jeffery To +Date: Mon Jun 19 14:15:45 2023 +0800 + + python/sepolicy: Fix get_os_version except clause + + This adds more exceptions to be handled by the except clause in + `get_os_version()`: + + * If the `distro` package is not installed, then `import distro` raises + a `ModuleNotFoundError` exception. + + * The distro documentation[1] lists `OSError` and `UnicodeError` as + exceptions that can be raised. + + * Older versions of distro (<= 1.6.0) may also raise + `subprocessCalledProcessError`[2]. + + [1]: https://github.com/python-distro/distro/blob/v1.8.0/src/distro/distro.py#L749-L753 + [2]: https://github.com/python-distro/distro/blob/v1.6.0/distro.py#L726-L728 + + Signed-off-by: Jeffery To + +--- a/sepolicy/sepolicy/__init__.py ++++ b/sepolicy/sepolicy/__init__.py +@@ -1240,11 +1240,12 @@ def boolean_desc(boolean): + + + def get_os_version(): ++ import subprocess + system_release = "" + try: + import distro + system_release = distro.name(pretty=True) +- except IOError: ++ except (ModuleNotFoundError, OSError, IOError, UnicodeError, subprocess.CalledProcessError): + system_release = "Misc" + + return system_release diff --git a/utils/selinux-python/patches/0005-no-translations.patch b/utils/selinux-python/patches/0005-no-translations.patch new file mode 100644 index 0000000000..9b1cb8cfee --- /dev/null +++ b/utils/selinux-python/patches/0005-no-translations.patch @@ -0,0 +1,8 @@ +--- a/Makefile ++++ b/Makefile +@@ -1,4 +1,4 @@ +-SUBDIRS = sepolicy audit2allow semanage sepolgen chcat po ++SUBDIRS = sepolicy audit2allow semanage sepolgen chcat + + all install relabel clean indent test: + @for subdir in $(SUBDIRS); do \ From aa4085a13f224e8bf5917aace318ae21b49adf2a Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 9 Jun 2023 20:27:58 +0800 Subject: [PATCH 7/7] semodule-utils: Update to 3.5, reorganize package * Add separate packages for each tool (semodule-*) * Update the semodule-utils package as a meta-package that installs all tools, keeping it functionally the same as the current semodule-utils package * Remove host build (not used by any other package) * Update package titles, descriptions, and license files Signed-off-by: Jeffery To --- utils/semodule-utils/Makefile | 64 +++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/utils/semodule-utils/Makefile b/utils/semodule-utils/Makefile index 99ccf4d51c..bfd94baacd 100644 --- a/utils/semodule-utils/Makefile +++ b/utils/semodule-utils/Makefile @@ -6,46 +6,76 @@ include $(TOPDIR)/rules.mk PKG_NAME:=semodule-utils -PKG_VERSION:=3.3 +PKG_VERSION:=3.5 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION) -PKG_HASH:=3098ec5e5f04a1dbbf4aa569b63a4570750a9fe0d4da14ce45954aa300a17063 +PKG_HASH:=c9a550a737051ebaf2c102f665c7ec2f85e7232870980aa0067998459b414283 PKG_MAINTAINER:=W. Michael Petullo PKG_LICENSE:=GPL-2.0-only -PKG_LICENSE_FILES:=COPYING +PKG_LICENSE_FILES:=LICENSE PKG_INSTALL:=1 PKG_BUILD_PARALLEL:=1 -HOST_BUILD_DEPENDS:=libsemanage/host include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/host-build.mk -define Package/semodule-utils +define Package/semodule-utils/Default SECTION:=utils CATEGORY:=Utilities DEPENDS:=+libsepol - TITLE:=SELinux policy utilities for dealing with modules + TITLE:=SELinux policy module utility URL:=http://selinuxproject.org/page/Main_Page endef +define Package/semodule-utils/Default/description +semodule-utils is a collection of utilities for dealing with policy +modules. +endef + +define Package/semodule-utils +$(call Package/semodule-utils/Default) + TITLE+= meta-package + DEPENDS:= \ + semodule-expand \ + semodule-link \ + semodule-package \ + semodule-unpackage +endef + define Package/semodule-utils/description - Semodule-utils is a collection of utilities for dealing with - policy modules. +$(call Package/semodule-utils/Default/description) + +This is a meta-package that installs all of the semodule-utils tools. endef -HOST_MAKE_FLAGS += \ - PREFIX=$(STAGING_DIR_HOSTPKG) \ - SBINDIR=$(STAGING_DIR_HOSTPKG)/sbin \ - ETCDIR=$(STAGING_DIR_HOSTPKG)/etc +Package/semodule-utils/install:=: -define Package/semodule-utils/install - $(INSTALL_DIR) $(1)/usr/bin - $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ +define BuildUtil + define Package/semodule-$(1) + $(call Package/semodule-utils/Default) + TITLE+= semodule_$(1) + endef + + define Package/semodule-$(1)/description +$(call Package/semodule-utils/Default/description) + +This contains the semodule_$(1) tool. + endef + + define Package/semodule-$(1)/install + $$(INSTALL_DIR) $$(1)/usr/bin + $$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/bin/semodule_$(1) $$(1)/usr/bin/ + endef + + $$(eval $$(call BuildPackage,semodule-$(1))) endef -$(eval $(call HostBuild)) $(eval $(call BuildPackage,semodule-utils)) + +$(eval $(call BuildUtil,expand)) +$(eval $(call BuildUtil,link)) +$(eval $(call BuildUtil,package)) +$(eval $(call BuildUtil,unpackage))