libselinux: use musl-fts for host builds
[openwrt/staging/dedeckeh.git] / package / libs / libselinux / Makefile
index 893476f5de5403b8d41c7c8df6fdd0c49411d8d5..9520afc77144f8a4168b3abfd8283c4d67fe18f0 100644 (file)
@@ -6,24 +6,72 @@
 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
@@ -36,7 +84,23 @@ 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
@@ -45,11 +109,16 @@ HOST_LDFLAGS += -Wl,-rpath="$(STAGING_DIR_HOSTPKG)/lib"
 
 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)
@@ -75,5 +144,15 @@ define Package/libselinux/install
        $(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))))