[Buildroot] [PATCH 1/4] package/{skalibs, execline, s6, s6-dns}: change prefix and shared options

Dick Olsson hi at senzilla.io
Tue Apr 6 22:47:08 UTC 2021


The s6 suite of tools are predominantly used as an init system and for
process supervision. It is therefore preferable for these tools to be
installed with the default prefix / (as opposed to /usr).

Also improve maintainability and extensibility by introducing variables
that enable dependant packages to use shared configuration options.
This gives better build guarantees in different configuration scenarios
such as default paths, shared or static libraries, etc.

Signed-off-by: Dick Olsson <hi at senzilla.io>
---
 package/execline/execline.mk | 28 +++++++++++-----------------
 package/s6-dns/s6-dns.mk     | 19 ++++---------------
 package/s6/s6.mk             | 28 ++++++++--------------------
 package/skalibs/skalibs.mk   | 33 +++++++++++++++++++++++++++++++--
 4 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/package/execline/execline.mk b/package/execline/execline.mk
index 0ab5a03f2e..f6001ed3f7 100644
--- a/package/execline/execline.mk
+++ b/package/execline/execline.mk
@@ -12,13 +12,12 @@ EXECLINE_INSTALL_STAGING = YES
 EXECLINE_DEPENDENCIES = skalibs
 
 EXECLINE_CONF_OPTS = \
-	--prefix=/usr \
-	--with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \
-	--with-include=$(STAGING_DIR)/usr/include \
-	--with-dynlib=$(STAGING_DIR)/usr/lib \
-	--with-lib=$(STAGING_DIR)/usr/lib/skalibs \
-	$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \
-	$(SHARED_STATIC_LIBS_OPTS)
+	$(SHARED_SKALIBS_CONF_OPTS) \
+	--shebangdir=/bin
+
+# This variable can be used by dependant packages.
+SHARED_EXECLINE_CONF_OPTS = \
+	--with-lib=$(STAGING_DIR)/lib/execline
 
 define EXECLINE_CONFIGURE_CMDS
 	(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(EXECLINE_CONF_OPTS))
@@ -44,17 +43,12 @@ endef
 
 HOST_EXECLINE_DEPENDENCIES = host-skalibs
 
-# Set --shebangdir to /usr/bin, as this value is used by the host variant of
-# s6-rc when generating execline scripts for the target.
+# The host package does not have a run-time dependency on the
+# --shebangdir option. But it must align with the target variant since
+# it affects the output of commands.
 HOST_EXECLINE_CONF_OPTS = \
-	--prefix=$(HOST_DIR) \
-	--shebangdir=/usr/bin \
-	--with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \
-	--with-include=$(HOST_DIR)/include \
-	--with-dynlib=$(HOST_DIR)/lib \
-	--disable-static \
-	--enable-shared \
-	--disable-allstatic
+	$(SHARED_HOST_SKALIBS_CONF_OPTS) \
+	--shebangdir=/bin
 
 define HOST_EXECLINE_CONFIGURE_CMDS
 	(cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_EXECLINE_CONF_OPTS))
diff --git a/package/s6-dns/s6-dns.mk b/package/s6-dns/s6-dns.mk
index 9ed75bd600..3b1047dab3 100644
--- a/package/s6-dns/s6-dns.mk
+++ b/package/s6-dns/s6-dns.mk
@@ -11,29 +11,18 @@ S6_DNS_LICENSE_FILES = COPYING
 S6_DNS_INSTALL_STAGING = YES
 S6_DNS_DEPENDENCIES = skalibs
 
-S6_DNS_CONF_OPTS = \
-	--prefix=/usr \
-	--with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \
-	--with-include=$(STAGING_DIR)/usr/include \
-	--with-dynlib=$(STAGING_DIR)/usr/lib \
-	--with-lib=$(STAGING_DIR)/usr/lib/skalibs \
-	$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \
-	$(SHARED_STATIC_LIBS_OPTS)
+# This variable can be used by dependant packages.
+SHARED_S6_DNS_CONF_OPTS = \
+	--with-lib=$(STAGING_DIR)/lib/s6-dns
 
 define S6_DNS_CONFIGURE_CMDS
-	(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_DNS_CONF_OPTS))
+	(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(SHARED_SKALIBS_CONF_OPTS))
 endef
 
 define S6_DNS_BUILD_CMDS
 	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
 endef
 
-define S6_DNS_REMOVE_STATIC_LIB_DIR
-	rm -rf $(TARGET_DIR)/usr/lib/s6-dns
-endef
-
-S6_DNS_POST_INSTALL_TARGET_HOOKS += S6_DNS_REMOVE_STATIC_LIB_DIR
-
 define S6_DNS_INSTALL_TARGET_CMDS
 	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
 endef
diff --git a/package/s6/s6.mk b/package/s6/s6.mk
index 443ecbbffd..8068601ab5 100644
--- a/package/s6/s6.mk
+++ b/package/s6/s6.mk
@@ -9,17 +9,14 @@ S6_SITE = http://skarnet.org/software/s6
 S6_LICENSE = ISC
 S6_LICENSE_FILES = COPYING
 S6_INSTALL_STAGING = YES
-S6_DEPENDENCIES = execline
+S6_DEPENDENCIES = skalibs execline
 
 S6_CONF_OPTS = \
-	--prefix=/usr \
-	--with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \
-	--with-include=$(STAGING_DIR)/usr/include \
-	--with-dynlib=$(STAGING_DIR)/usr/lib \
-	--with-lib=$(STAGING_DIR)/usr/lib/execline \
-	--with-lib=$(STAGING_DIR)/usr/lib/skalibs \
-	$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \
-	$(SHARED_STATIC_LIBS_OPTS)
+	$(SHARED_SKALIBS_CONF_OPTS) \
+	$(SHARED_EXECLINE_CONF_OPTS)
+
+SHARED_S6_CONF_OPTS = \
+	--with-lib=$(STAGING_DIR)/lib/s6
 
 define S6_CONFIGURE_CMDS
 	(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_CONF_OPTS))
@@ -43,19 +40,10 @@ define S6_INSTALL_STAGING_CMDS
 	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
 endef
 
-HOST_S6_DEPENDENCIES = host-execline
-
-HOST_S6_CONF_OPTS = \
-	--prefix=$(HOST_DIR) \
-	--with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \
-	--with-include=$(HOST_DIR)/include \
-	--with-dynlib=$(HOST_DIR)/lib \
-	--disable-static \
-	--enable-shared \
-	--disable-allstatic
+HOST_S6_DEPENDENCIES = host-skalibs host-execline
 
 define HOST_S6_CONFIGURE_CMDS
-	(cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_S6_CONF_OPTS))
+	(cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(SHARED_HOST_SKALIBS_CONF_OPTS))
 endef
 
 define HOST_S6_BUILD_CMDS
diff --git a/package/skalibs/skalibs.mk b/package/skalibs/skalibs.mk
index f92859ff26..fe042604c2 100644
--- a/package/skalibs/skalibs.mk
+++ b/package/skalibs/skalibs.mk
@@ -10,12 +10,24 @@ SKALIBS_LICENSE = ISC
 SKALIBS_LICENSE_FILES = COPYING
 SKALIBS_INSTALL_STAGING = YES
 
+SKALIBS_DEFAULT_PATH = $(call qstrip,$(BR2_SYSTEM_DEFAULT_PATH))
 SKALIBS_CONF_OPTS = \
-	--prefix=/usr \
-	--with-default-path=/sbin:/usr/sbin:/bin:/usr/bin \
+	--prefix=/ \
+	--libexecdir=/libexec \
+	--with-default-path=$(SKALIBS_DEFAULT_PATH) \
 	--with-sysdep-devurandom=yes \
 	$(SHARED_STATIC_LIBS_OPTS)
 
+# This variable can be used by dependant packages.
+SHARED_SKALIBS_CONF_OPTS = \
+	--prefix=/ \
+	--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \
+	--with-include=$(STAGING_DIR)/include \
+	--with-dynlib=$(STAGING_DIR)/lib \
+	--with-lib=$(STAGING_DIR)/lib/skalibs \
+	$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \
+	$(SHARED_STATIC_LIBS_OPTS)
+
 define SKALIBS_CONFIGURE_CMDS
 	(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(SKALIBS_CONF_OPTS))
 endef
@@ -33,8 +45,25 @@ define SKALIBS_INSTALL_STAGING_CMDS
 	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
 endef
 
+# The --with-default-path option needs to match the target variant.
 HOST_SKALIBS_CONF_OPTS = \
 	--prefix=$(HOST_DIR) \
+	--with-default-path=$(SKALIBS_DEFAULT_PATH) \
+	--disable-static \
+	--enable-shared \
+	--disable-allstatic
+
+# This variable can be used by dependant packages.
+#
+# Note: Dependant host packages does not have a run-time dependencies on
+# the --libexecdir option. But it must align with the target variant
+# since it affects how target packages run.
+SHARED_HOST_SKALIBS_CONF_OPTS = \
+	--prefix=$(HOST_DIR) \
+	--libexecdir=/libexec \
+	--with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \
+	--with-include=$(HOST_DIR)/include \
+	--with-dynlib=$(HOST_DIR)/lib \
 	--disable-static \
 	--enable-shared \
 	--disable-allstatic
-- 
2.30.2




More information about the buildroot mailing list