[Buildroot] [PATCH 1/1] package/iputils: add configs to select which binaries are built

Alejandro González alejandro.gonzalez.correo at gmail.com
Mon Aug 26 17:37:51 UTC 2019


By default, the iputils build script might build binaries which are
useless for certain applications, like tftpd. Those binaries will bloat
the target filesystem unless a post-build script removes them manually,
which is cumbersome and doesn't shorten build times.

These changes add Kconfig options which let the user select what
binaries are built with ease.

Signed-off-by: Alejandro González <alejandro.gonzalez.correo at gmail.com>
---
 package/iputils/Config.in  |  64 ++++++++++++++++++++
 package/iputils/iputils.mk | 119 ++++++++++++++++++++++++++++++-------
 2 files changed, 163 insertions(+), 20 deletions(-)

diff --git a/package/iputils/Config.in b/package/iputils/Config.in
index b5d9141a7d..cb3d03072a 100644
--- a/package/iputils/Config.in
+++ b/package/iputils/Config.in
@@ -7,3 +7,67 @@ config BR2_PACKAGE_IPUTILS
 	  etc.
 
 	  https://github.com/iputils/iputils
+
+if BR2_PACKAGE_IPUTILS
+
+config BR2_PACKAGE_IPUTILS_ARPING
+	bool "arping"
+	default y
+	help
+	  Installs arping.
+
+config BR2_PACKAGE_IPUTILS_CLOCKDIFF
+	bool "clockdiff"
+	default y
+	help
+	  Installs clockdiff.
+
+config BR2_PACKAGE_IPUTILS_PING
+	bool "ping"
+	default y
+	help
+	  Installs ping.
+
+config BR2_PACKAGE_IPUTILS_RARPD
+	bool "rarpd"
+	help
+	  Installs rarpd.
+
+config BR2_PACKAGE_IPUTILS_RDISC
+	bool "rdisc"
+	default y
+	help
+	  Installs rdisc.
+
+config BR2_PACKAGE_IPUTILS_RDISC_SERVER
+	bool "rdisc (server code)"
+	depends on BR2_PACKAGE_IPUTILS_RDISC
+	default y
+	help
+	  Builds rdisc with server code.
+
+config BR2_PACKAGE_IPUTILS_TFTPD
+	bool "tftpd"
+	help
+	  Installs tftpd.
+
+config BR2_PACKAGE_IPUTILS_TRACEPATH
+	bool "tracepath"
+	default y
+	help
+	  Installs tracepath.
+
+config BR2_PACKAGE_IPUTILS_TRACEROUTE6
+	bool "traceroute6"
+	default y
+	help
+	  Installs traceroute6.
+
+config BR2_PACKAGE_IPUTILS_NINFOD
+	bool "ninfod"
+	depends on BR2_TOOLCHAIN_HAS_THREADS # ninfod requires <pthread.h>
+	default y
+	help
+	  Installs ninfod.
+
+endif
diff --git a/package/iputils/iputils.mk b/package/iputils/iputils.mk
index 4a06581790..291114abb9 100644
--- a/package/iputils/iputils.mk
+++ b/package/iputils/iputils.mk
@@ -17,6 +17,68 @@ IPUTILS_LICENSE = GPL-2.0+, BSD-3-Clause
 IPUTILS_LICENSE_FILES = LICENSE Documentation/LICENSE.BSD3 Documentation/LICENSE.GPL2
 IPUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)
 
+# Selectively build binaries
+
+ifeq ($(BR2_PACKAGE_IPUTILS_ARPING),y)
+IPUTILS_CONF_OPTS += -DBUILD_ARPING=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_ARPING=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPUTILS_CLOCKDIFF),y)
+IPUTILS_CONF_OPTS += -DBUILD_CLOCKDIFF=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_CLOCKDIFF=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPUTILS_PING),y)
+IPUTILS_CONF_OPTS += -DBUILD_PING=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_PING=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPTUILS_RARPD),y)
+IPUTILS_CONF_OPTS += -DBUILD_RARPD=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_RARPD=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPUTILS_RDISC),y)
+IPUTILS_CONF_OPTS += -DBUILD_RDISC=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_RDISC=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPUTILS_RDISC_SERVER),y)
+IPUTILS_CONF_OPTS += -DENABLE_RDISC_SERVER=true
+else
+IPUTILS_CONF_OPTS += -DENABLE_RDISC_SERVER=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPUTILS_TFTPD),y)
+IPUTILS_CONF_OPTS += -DBUILD_TFTPD=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_TFTPD=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPUTILS_TRACEPATH),y)
+IPUTILS_CONF_OPTS += -DBUILD_TRACEPATH=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_TRACEPATH=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPUTILS_TRACEROUTE6),y)
+IPUTILS_CONF_OPTS += -DBUILD_TRACEROUTE6=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_TRACEROUTE6=false
+endif
+
+ifeq ($(BR2_PACKAGE_IPUTILS_NINFOD),y)
+IPUTILS_CONF_OPTS += -DBUILD_NINFOD=true
+else
+IPUTILS_CONF_OPTS += -DBUILD_NINFOD=false
+endif
+
 ifeq ($(BR2_PACKAGE_LIBCAP),y)
 IPUTILS_CONF_OPTS += -DUSE_CAP=true
 IPUTILS_DEPENDENCIES += libcap
@@ -49,57 +111,74 @@ IPUTILS_CONF_OPTS += -DUSE_CRYPTO=none
 IPUTILS_CONF_OPTS += -DBUILD_NINFOD=false
 endif
 
-# ninfod requires <pthread.h>
-ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
-IPUTILS_CONF_OPTS += -DBUILD_NINFOD=false
-endif
-
 ifeq ($(BR2_SYSTEM_ENABLE_NLS),y)
 IPUTILS_CONF_OPTS += -DUSE_GETTEXT=true
 else
 IPUTILS_CONF_OPTS += -DUSE_GETTEXT=false
 endif
 
-IPUTILS_CONF_OPTS += -DBUILD_TRACEROUTE6=true
-
 # XSL Stylesheets for DocBook 5 not packaged for buildroot
 IPUTILS_CONF_OPTS += -DBUILD_MANS=false -DBUILD_HTML_MANS=false
 
 # move iputils binaries to the same location as where Busybox installs
 # the corresponding applets, so that we have a single version of the
 # tools (from iputils)
-define IPUTILS_MOVE_BINARIES
+define IPUTILS_MOVE_ARPING_BINARY
 	mv $(TARGET_DIR)/usr/bin/arping $(TARGET_DIR)/usr/sbin/arping
+endef
+ifeq ($(BR2_PACKAGE_IPUTILS_ARPING),y)
+IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_ARPING_BINARY
+endif
+
+define IPUTILS_MOVE_PING_BINARY
 	$(if $(BR2_ROOTFS_MERGED_USR),,\
 		mv $(TARGET_DIR)/usr/bin/ping $(TARGET_DIR)/bin/ping)
+endef
+ifeq ($(BR2_PACKAGE_IPUTILS_PING),y)
+IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_PING_BINARY
+endif
+
+define IPUTILS_MOVE_TFTPD_BINARY
 	mv $(TARGET_DIR)/usr/bin/tftpd $(TARGET_DIR)/usr/sbin/tftpd
 endef
-IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_BINARIES
+ifeq ($(BR2_PACKAGE_IPUTILS_TFTPD),y)
+IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_TFTPD_BINARY
+endif
 
 # upstream requires distros to create symlink
 define IPUTILS_CREATE_PING6_SYMLINK
 	ln -sf $(TARGET_DIR)/bin/ping $(TARGET_DIR)/bin/ping6
 endef
+ifeq ($(BR2_PACKAGE_IPUTILS_PING),y)
 IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_CREATE_PING6_SYMLINK
+endif
 
 # handle permissions ourselves
 IPUTILS_CONF_OPTS += -DNO_SETCAP_OR_SUID=true
 ifeq ($(BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES),y)
 define IPUTILS_PERMISSIONS
-	/usr/sbin/arping      f 755 0 0 - - - - -
-	/usr/bin/clockdiff    f 755 0 0 - - - - -
-	|xattr cap_net_raw+p
-	/bin/ping             f 755 0 0 - - - - -
-	|xattr cap_net_raw+p
-	/usr/bin/traceroute6  f 755 0 0 - - - - -
-	|xattr cap_net_raw+p
+	$(if $(BR2_PACKAGE_IPUTILS_ARPING),y,\
+		/usr/sbin/arping      f 755 0 0 - - - - -)
+	$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),y,\
+		/usr/bin/clockdiff    f 755 0 0 - - - - -
+		|xattr cap_net_raw+p)
+	$(if $(BR2_PACKAGE_IPUTILS_PING),y,\
+		/bin/ping             f 755 0 0 - - - - -
+		|xattr cap_net_raw+p)
+	$(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),y,\
+		/usr/bin/traceroute6  f 755 0 0 - - - - -
+		|xattr cap_net_raw+p)
 endef
 else
 define IPUTILS_PERMISSIONS
-	/usr/sbin/arping      f  755 0 0 - - - - -
-	/usr/bin/clockdiff    f 4755 0 0 - - - - -
-	/bin/ping             f 4755 0 0 - - - - -
-	/usr/bin/traceroute6  f 4755 0 0 - - - - -
+	$(if $(BR2_PACKAGE_IPUTILS_ARPING),y,\
+		/usr/sbin/arping      f  755 0 0 - - - - -)
+	$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),y,\
+		/usr/bin/clockdiff    f 4755 0 0 - - - - -)
+	$(if $(BR2_PACKAGE_IPUTILS_PING),y,\
+		/bin/ping             f 4755 0 0 - - - - -)
+	$(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),y,\
+		/usr/bin/traceroute6  f 4755 0 0 - - - - -)
 endef
 endif
 
-- 
2.20.1



More information about the buildroot mailing list