lvm2: provide selinux and non-selinux build variants
authorMaxim Storchak <m.storchak@gmail.com>
Sun, 18 Oct 2020 20:13:01 +0000 (23:13 +0300)
committerDaniel Golle <dangowrt@users.noreply.github.com>
Thu, 31 Dec 2020 00:28:58 +0000 (00:28 +0000)
Signed-off-by: Maxim Storchak <m.storchak@gmail.com>
utils/lvm2/Makefile

index e5bd9b533b643d7b89e6b818eae400a3bb192340..926cb32d603160318ddd16890b684f9cd183e743 100644 (file)
@@ -15,7 +15,7 @@ PKG_RELEASE:=2
 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=https://sourceware.org/pub/lvm2
 PKG_HASH:=5ad1645a480440892e35f31616682acba0dc204ed049635d2df3e5a5929d0ed0
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/lvm2-$(BUILD_VARIANT)/$(PKG_NAME).$(PKG_VERSION)
 
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_LICENSE:=GPL-2.0 LGPL-2.1
@@ -26,40 +26,82 @@ PKG_BUILD_PARALLEL:=1
 
 include $(INCLUDE_DIR)/package.mk
 
-define Package/libdevmapper
+define Package/libdevmapper/Default
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=The Linux Kernel Device Mapper userspace library
   URL:=https://sourceware.org/dm/
-  DEPENDS:=+kmod-dm +libpthread +libuuid +librt +libblkid +libselinux
+  DEPENDS:=+kmod-dm +libpthread +libuuid +librt +libblkid
 endef
 
-define Package/libdevmapper/description
+
+define Package/libdevmapper-normal
+  $(call Package/libdevmapper/Default)
+  VARIANT := normal
+  PROVIDES := libdevmapper
+endef
+
+define Package/libdevmapper-selinux
+  $(call Package/libdevmapper/Default)
+  VARIANT := selinux
+  DEPENDS += +libselinux
+  PROVIDES := libdevmapper
+endef
+
+define Package/libdevmapper-normal/description
  The device-mapper is a component of the 2.6 linux kernel that supports logical
  volume management. It is required by LVM2 and EVMS.
 endef
 
-define Package/lvm2
+define Package/libdevmapper-selinux/description
+$(call Package/libdevmapper-normal/description)
+ This variant supports SELinux
+
+endef
+
+define Package/lvm2/default
   SECTION:=utils
   CATEGORY:=Utilities
   SUBMENU:=Disc
   TITLE:=The Linux Logical Volume Manager
   URL:=https://sourceware.org/lvm2/
-  DEPENDS:=+libdevmapper +libreadline +libncurses +libaio
+  DEPENDS:=+libreadline +libncurses +libaio
+endef
+
+define Package/lvm2-normal
+  $(call Package/lvm2/default)
+  VARIANT := normal
+  DEPENDS += +libdevmapper-normal
+  PROVIDES := lvm2
 endef
 
-define Package/lvm2/description
+define Package/lvm2-selinux
+  $(call Package/lvm2/default)
+  VARIANT := selinux
+  DEPENDS += +libdevmapper-selinux
+  PROVIDES := lvm2
+endef
+
+define Package/lvm2-normal/description
  LVM2 refers to a new userspace toolset that provide logical volume management
  facilities on linux. It is reasonably backwards-compatible with the original
  LVM toolset.
 endef
 
+define Package/lvm2-selinux/description
+$(call Package/lvm2-normal/description)
+ This variant supports SELinux
+
+endef
+
+
 CONFIGURE_ARGS += \
        --disable-o_direct \
        --with-default-pid-dir=/var/run \
        --with-default-dm-run-dir=/var/run \
        --with-default-run-dir=/var/run/lvm \
-       --with-default-locking-dir=/var/lock/lvm
+       --with-default-locking-dir=/var/lock/lvm \
+       --$(if $(findstring selinux,$(BUILD_VARIANT)),en,dis)able-selinux
 
 ifneq ($(shell /bin/sh -c "echo -n 'X'"),X)
 MAKE_SHELL = SHELL=/bin/bash
@@ -83,12 +125,14 @@ define Build/InstallDev
        $(CP) $(PKG_BUILD_DIR)/libdm/libdevmapper.pc $(1)/usr/lib/pkgconfig
 endef
 
-define Package/libdevmapper/install
+define Package/libdevmapper-normal/install
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdevmapper.so.* $(1)/usr/lib
 endef
 
-define Package/lvm2/install
+Package/libdevmapper-selinux/install = $(Package/libdevmapper-normal/install)
+
+define Package/lvm2-normal/install
        $(INSTALL_DIR) $(1)/sbin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/lvm $(1)/sbin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dmsetup $(1)/sbin
@@ -105,9 +149,15 @@ define Package/lvm2/install
        $(FIND) $(PKG_INSTALL_DIR)/usr/sbin/ -type l -exec $(CP) -a {} $(1)/sbin/ \;
 endef
 
-define Package/lvm2/conffiles
+Package/lvm2-selinux/install = $(Package/lvm2-normal/install)
+
+define Package/lvm2-normal/conffiles
 /etc/lvm/lvm.conf
 endef
 
-$(eval $(call BuildPackage,libdevmapper))
-$(eval $(call BuildPackage,lvm2))
+Package/lvm2-selinux/conffiles = $(Package/lvm2/conffiles)
+
+$(eval $(call BuildPackage,libdevmapper-normal))
+$(eval $(call BuildPackage,libdevmapper-selinux))
+$(eval $(call BuildPackage,lvm2-normal))
+$(eval $(call BuildPackage,lvm2-selinux))