[Buildroot] [PATCH v3 1/1] package/dhcp: add host-gawk to global dependencies and build environment

Sergey Matyukevich geomatsi at gmail.com
Thu May 20 21:52:24 UTC 2021


DHCP package may silently fail to install binaries to the target image.
The problem occurs when buildroot output/host and build server provide
different flavors of awk. For instance, mawk on build server and gawk
in buildroot output/host. In this case isc-dhcp configure script detects
gawk in output/host and generates Makefiles specifying gawk without
absolute path. During Buildroot installation phase, those Makefiles
are used to install dhcp binaries. They attempt to use gawk without
absolute path. However build host does not have gawk.

To resolve the issue add host-gawk to dependencies and specify absolute
path to host-gawk in dhcp configure script using DHCP_CONF_ENV.

Signed-off-by: Sergey Matyukevich <geomatsi at gmail.com>
---

Changes v1 -> v2 (after review and tests by Thomas Petazzoni):
 - suggested change is the same
 - root cause is figured out and commit message updated

Changes v2 -> v3 (after patch by Heiko Thiery)
 - keep host-gawk in global dependencies

The root cause is explained in the commit message. Here are the
steps to reproduce the issue on the up-to-date master branch in
Buildroot Docker image from support/docker/Dockerfile:

- start from default qemu_x86_defconfig
- enable isc-dhcp server and client

As a result, neither dhclient nor dhcpd are installed to the target.

Note that Buildroot Docker image provides mawk. On the other hand,
dhcp package (with server enabled) pulls host-gawk as a dependency.
So build host awk (mawk) differs from buildroot host awk (gawk).
To reproduce the same issue only for dhclient, uclibc can be
replaced by glibc, which also pulls host-gawk as a dependency.

Regards,
Sergey

 package/dhcp/dhcp.mk | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/package/dhcp/dhcp.mk b/package/dhcp/dhcp.mk
index 8d7157f357..db58870f88 100644
--- a/package/dhcp/dhcp.mk
+++ b/package/dhcp/dhcp.mk
@@ -9,7 +9,7 @@ DHCP_SITE = http://ftp.isc.org/isc/dhcp/$(DHCP_VERSION)
 DHCP_INSTALL_STAGING = YES
 DHCP_LICENSE = MPL-2.0
 DHCP_LICENSE_FILES = LICENSE
-DHCP_DEPENDENCIES = bind
+DHCP_DEPENDENCIES = bind host-gawk
 DHCP_CPE_ID_VENDOR = isc
 
 # use libtool-enabled configure.ac
@@ -22,6 +22,8 @@ DHCP_CONF_ENV = \
 		-D_PATH_DHCLIENT_CONF=\"/etc/dhcp/dhclient.conf\"' \
 	CFLAGS='$(TARGET_CFLAGS) -DISC_CHECK_NONE=1'
 
+DHCP_CONF_ENV += ac_cv_prog_AWK=$(HOST_DIR)/bin/gawk
+
 DHCP_CONF_OPTS = \
 	--with-libbind=$(STAGING_DIR)/usr \
 	--with-randomdev=/dev/random \
@@ -55,7 +57,6 @@ define DHCP_INSTALL_LIBS
 endef
 
 ifeq ($(BR2_PACKAGE_DHCP_SERVER),y)
-DHCP_DEPENDENCIES += host-gawk
 define DHCP_INSTALL_CTL_LIBS
 	$(MAKE) -C $(@D)/dhcpctl install-exec DESTDIR=$(TARGET_DIR)
 endef
-- 
2.31.1



More information about the buildroot mailing list