9ec60e877e
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@gmail.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
123 lines
3.7 KiB
Makefile
123 lines
3.7 KiB
Makefile
################################################################################
|
|
#
|
|
# dhcp
|
|
#
|
|
################################################################################
|
|
|
|
DHCP_VERSION = 4.4.2
|
|
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 host-gawk
|
|
DHCP_CPE_ID_VENDOR = isc
|
|
|
|
# use libtool-enabled configure.ac
|
|
define DHCP_LIBTOOL_AUTORECONF
|
|
cp $(@D)/configure.ac+lt $(@D)/configure.ac
|
|
endef
|
|
|
|
DHCP_CONF_ENV = \
|
|
CPPFLAGS='-D_PATH_DHCPD_CONF=\"/etc/dhcp/dhcpd.conf\" \
|
|
-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 \
|
|
--with-srv-lease-file=/var/lib/dhcp/dhcpd.leases \
|
|
--with-srv6-lease-file=/var/lib/dhcp/dhcpd6.leases \
|
|
--with-cli-lease-file=/var/lib/dhcp/dhclient.leases \
|
|
--with-cli6-lease-file=/var/lib/dhcp/dhclient6.leases \
|
|
--with-srv-pid-file=/var/run/dhcpd.pid \
|
|
--with-srv6-pid-file=/var/run/dhcpd6.pid \
|
|
--with-cli-pid-file=/var/run/dhclient.pid \
|
|
--with-cli6-pid-file=/var/run/dhclient6.pid \
|
|
--with-relay-pid-file=/var/run/dhcrelay.pid \
|
|
--with-relay6-pid-file=/var/run/dhcrelay6.pid
|
|
|
|
ifeq ($(BR2_STATIC_LIBS),y)
|
|
DHCP_CONF_ENV += LIBS="`$(STAGING_DIR)/usr/bin/bind9-config --libs bind9`"
|
|
DHCP_CONF_OPTS += --disable-libtool
|
|
else
|
|
DHCP_POST_EXTRACT_HOOKS += DHCP_LIBTOOL_AUTORECONF
|
|
DHCP_AUTORECONF = YES
|
|
DHCP_CONF_OPTS += --enable-libtool
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK),y)
|
|
DHCP_CONF_OPTS += --enable-delayed-ack
|
|
endif
|
|
|
|
define DHCP_INSTALL_LIBS
|
|
$(MAKE) -C $(@D)/common install-exec DESTDIR=$(TARGET_DIR)
|
|
$(MAKE) -C $(@D)/omapip install-exec DESTDIR=$(TARGET_DIR)
|
|
endef
|
|
|
|
ifeq ($(BR2_PACKAGE_DHCP_SERVER),y)
|
|
define DHCP_INSTALL_CTL_LIBS
|
|
$(MAKE) -C $(@D)/dhcpctl install-exec DESTDIR=$(TARGET_DIR)
|
|
endef
|
|
define DHCP_INSTALL_SERVER
|
|
mkdir -p $(TARGET_DIR)/var/lib
|
|
(cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
|
|
$(MAKE) -C $(@D)/server DESTDIR=$(TARGET_DIR) install-sbinPROGRAMS
|
|
$(INSTALL) -m 0644 -D package/dhcp/dhcpd.conf \
|
|
$(TARGET_DIR)/etc/dhcp/dhcpd.conf
|
|
endef
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_DHCP_RELAY),y)
|
|
define DHCP_INSTALL_RELAY
|
|
mkdir -p $(TARGET_DIR)/var/lib
|
|
(cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
|
|
$(MAKE) -C $(@D)/relay DESTDIR=$(TARGET_DIR) install-sbinPROGRAMS
|
|
endef
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y)
|
|
define DHCP_INSTALL_CLIENT
|
|
mkdir -p $(TARGET_DIR)/var/lib
|
|
(cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
|
|
$(MAKE) -C $(@D)/client DESTDIR=$(TARGET_DIR) sbindir=/sbin \
|
|
install-sbinPROGRAMS
|
|
$(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \
|
|
$(TARGET_DIR)/etc/dhcp/dhclient.conf
|
|
$(INSTALL) -m 0755 -D package/dhcp/dhclient-script \
|
|
$(TARGET_DIR)/sbin/dhclient-script
|
|
endef
|
|
endif
|
|
|
|
# Options don't matter, scripts won't start if binaries aren't there
|
|
define DHCP_INSTALL_INIT_SYSV
|
|
$(INSTALL) -m 0755 -D package/dhcp/S80dhcp-server \
|
|
$(TARGET_DIR)/etc/init.d/S80dhcp-server
|
|
$(INSTALL) -m 0755 -D package/dhcp/S80dhcp-relay \
|
|
$(TARGET_DIR)/etc/init.d/S80dhcp-relay
|
|
endef
|
|
|
|
ifeq ($(BR2_PACKAGE_DHCP_SERVER),y)
|
|
define DHCP_INSTALL_INIT_SYSTEMD
|
|
$(INSTALL) -D -m 644 package/dhcp/dhcpd.service \
|
|
$(TARGET_DIR)/usr/lib/systemd/system/dhcpd.service
|
|
|
|
mkdir -p $(TARGET_DIR)/usr/lib/tmpfiles.d
|
|
echo "d /var/lib/dhcp 0755 - - - -" > \
|
|
$(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf
|
|
echo "f /var/lib/dhcp/dhcpd.leases - - - - -" >> \
|
|
$(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf
|
|
endef
|
|
endif
|
|
|
|
define DHCP_INSTALL_TARGET_CMDS
|
|
$(DHCP_INSTALL_LIBS)
|
|
$(DHCP_INSTALL_CTL_LIBS)
|
|
$(DHCP_INSTALL_RELAY)
|
|
$(DHCP_INSTALL_SERVER)
|
|
$(DHCP_INSTALL_CLIENT)
|
|
endef
|
|
|
|
$(eval $(autotools-package))
|