From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Alejandro_Gonz=c3=a1lez?= Date: Mon, 26 Aug 2019 20:09:55 +0200 Subject: [Buildroot] [PATCH v2] package/iputils: add configs to select which binaries are built In-Reply-To: <20190826180719.3270-1-alejandro.gonzalez.correo@gmail.com> References: <20190826180719.3270-1-alejandro.gonzalez.correo@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net El 26/8/19 a las 20:07, Alejandro Gonz?lez escribi?: > 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 > --- > 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 > + default y > + help > + Installs ninfod. > + > +endif > diff --git a/package/iputils/iputils.mk b/package/iputils/iputils.mk > index 4a06581790..d693f02593 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 > -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),\ > + /usr/sbin/arping f 755 0 0 - - - - -,) > + $(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\ > + /usr/bin/clockdiff f 755 0 0 - - - - - > + |xattr cap_net_raw+p,) > + $(if $(BR2_PACKAGE_IPUTILS_PING),\ > + /bin/ping f 755 0 0 - - - - - > + |xattr cap_net_raw+p,) > + $(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),\ > + /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),\ > + /usr/sbin/arping f 755 0 0 - - - - -,) > + $(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\ > + /usr/bin/clockdiff f 4755 0 0 - - - - -,) > + $(if $(BR2_PACKAGE_IPUTILS_PING),\ > + /bin/ping f 4755 0 0 - - - - -,) > + $(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),\ > + /usr/bin/traceroute6 f 4755 0 0 - - - - -,) > endef > endif > > This second version fixes some typos on the permission hooks which produced build errors on some circumstances. Please disregard the previous messages. Thank you.