include $(TOPDIR)/rules.mk
PKG_NAME:=libselinux
-PKG_VERSION:=3.1
-PKG_RELEASE:=1
+PKG_VERSION:=3.3
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/20200710
-PKG_HASH:=ea5dcbb4d859e3f999c26a13c630da2f16dff9462e3cc8cb7b458ac157d112e7
+PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION)
+PKG_HASH:=acfdee27633d2496508c28727c3d41d3748076f66d42fccde2e6b9f3463a7057
HOST_BUILD_DEPENDS:=libsepol/host pcre/host
+PKG_LICENSE:=libselinux-1.0
+PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+HOST_BUILD_DEPENDS:=musl-fts/host pcre/host
+
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+LIBSELINUX_UTILS := \
+ avcstat \
+ compute_av \
+ compute_create \
+ compute_member \
+ compute_relabel \
+ getconlist \
+ getdefaultcon \
+ getenforce \
+ getfilecon \
+ getpidcon \
+ getsebool \
+ getseuser \
+ matchpathcon \
+ policyvers \
+ sefcontext_compile \
+ selabel_digest \
+ selabel_get_digests_all_partial_matches \
+ selabel_lookup \
+ selabel_lookup_best_match \
+ selabel_partial_match \
+ selinux_check_access \
+ selinux_check_securetty_context \
+ selinuxenabled \
+ selinuxexeccon \
+ setenforce \
+ setfilecon \
+ togglesebool \
+ validatetrans
+
+LIBSELINUX_ALTS := \
+ getenforce \
+ getsebool \
+ matchpathcon \
+ selinuxenabled \
+ setenforce
+
+$(eval $(foreach a,$(LIBSELINUX_ALTS),ALTS_$(a):=300:/usr/sbin/$(a):/usr/sbin/libselinux-$(a)$(newline)))
+
+define Package/libselinux/Default
+ TITLE:=Runtime SELinux library
+ URL:=http://selinuxproject.org/page/Main_Page
+endef
define Package/libselinux
+ $(call Package/libselinux/Default)
SECTION:=libs
- DEPENDS:=+libsepol +libpcre +musl-fts +@KERNEL_SECURITY +@KERNEL_SECURITY_NETWORK +@KERNEL_SECURITY_SELINUX
CATEGORY:=Libraries
- TITLE:=Runtime SELinux library
- URL:=http://selinuxproject.org/page/Main_Page
+ DEPENDS:=+libsepol +libpcre +USE_MUSL:musl-fts
endef
define Package/libselinux/description
older version supported by the kernel) when loading policy.
endef
-include $(INCLUDE_DIR)/host-build.mk
+define GenUtilPkg
+ define Package/$(1)
+ $(call Package/libselinux/Default)
+ TITLE+= $(2) utility
+ SECTION:=utils
+ DEPENDS:=+libselinux
+ CATEGORY:=Utilities
+ SUBMENU:=libselinux tools
+ ALTERNATIVES:=$(ALTS_$(2))
+ endef
+
+ define Package/$(1)/description
+ libselinux version of the $(2) utility.
+ endef
+endef
+
+$(foreach a,$(LIBSELINUX_UTILS),$(eval $(call GenUtilPkg,libselinux-$(a),$(a))))
# Needed to link libselinux utilities, which link against
# libselinux.so, which indirectly depends on libpcre.so, installed in
HOST_MAKE_FLAGS += \
PREFIX=$(STAGING_DIR_HOSTPKG) \
- SHLIBDIR=$(STAGING_DIR_HOSTPKG)/lib
+ SHLIBDIR=$(STAGING_DIR_HOSTPKG)/lib \
+ FTS_LDLIBS=-lfts
+
+ifeq ($(CONFIG_USE_MUSL),y)
+MAKE_FLAGS += FTS_LDLIBS=-lfts
+endif
MAKE_FLAGS += \
- FTS_LDLIBS=-lfts \
SHLIBDIR=/usr/lib \
+ OS=Linux
define Build/Compile
$(call Build/Compile/Default,all)
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libselinux.so.* $(1)/usr/lib/
endef
+define BuildUtil
+ define Package/$(1)/install
+ $(INSTALL_DIR) $$(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/$(2) $$(1)/usr/sbin/$(if $(ALTS_$(2)),libselinux-$(2),$(2))
+ endef
+
+ $$(eval $$(call BuildPackage,$(1)))
+endef
+
$(eval $(call HostBuild))
$(eval $(call BuildPackage,libselinux))
+$(foreach a,$(LIBSELINUX_UTILS),$(eval $(call BuildUtil,libselinux-$(a),$(a))))