9202490282
iproute2 believes that it needs to link with libpthread for its arpd binary, because "some db implementations require thread". Therefore, our iproute2.mk explicitly disables the build of arpd when thread support is not available. However, the sed expression it uses no longer works. The Makefile used to look like: TARGETS = foo baz baz arpd foobar so replacing " arpd " with a space was working fine. However, the Makefile got changed in iproute2 to: ifeq (... berkeleydb available ...) TARGETS += arpd endif i.e, with no space at the end of the line. This made our sed expression ineffective, causing build issues with no-thread configurations since arpd was no longer disabled. To address this, instead of sed-ing the Makefile, we overwrite the berkeleydb detection of iproute2, by writing to the "Config" file, like we're doing for other aspects of the package. Fixes: http://autobuild.buildroot.net/results/03a37a2372a4c2e438a073e015c49d9e554b86b7/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
80 lines
2.3 KiB
Makefile
80 lines
2.3 KiB
Makefile
################################################################################
|
|
#
|
|
# iproute2
|
|
#
|
|
################################################################################
|
|
|
|
IPROUTE2_VERSION = 4.5.0
|
|
IPROUTE2_SOURCE = iproute2-$(IPROUTE2_VERSION).tar.xz
|
|
IPROUTE2_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/iproute2
|
|
IPROUTE2_DEPENDENCIES = host-bison host-flex host-pkgconf \
|
|
$(if $(BR2_PACKAGE_LIBMNL),libmnl)
|
|
IPROUTE2_LICENSE = GPLv2
|
|
IPROUTE2_LICENSE_FILES = COPYING
|
|
|
|
# If both iproute2 and busybox are selected, make certain we win
|
|
# the fight over who gets to have their utils actually installed.
|
|
ifeq ($(BR2_PACKAGE_BUSYBOX),y)
|
|
IPROUTE2_DEPENDENCIES += busybox
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
|
|
IPROUTE2_DEPENDENCIES += elfutils
|
|
endif
|
|
|
|
# If we've got iptables enable xtables support for tc
|
|
ifeq ($(BR2_PACKAGE_IPTABLES)x$(BR2_STATIC_LIBS),yx)
|
|
IPROUTE2_DEPENDENCIES += iptables
|
|
define IPROUTE2_WITH_IPTABLES
|
|
# Makefile is busted so it never passes IPT_LIB_DIR properly
|
|
$(SED) "s/-DIPT/-DXT/" $(IPROUTE2_DIR)/tc/Makefile
|
|
endef
|
|
else
|
|
define IPROUTE2_WITH_IPTABLES
|
|
# em_ipset needs xtables, but configure misdetects it
|
|
echo "TC_CONFIG_IPSET:=n" >>$(IPROUTE2_DIR)/Config
|
|
echo "TC_CONFIG_XT:=n" >>$(IPROUTE2_DIR)/Config
|
|
endef
|
|
endif
|
|
|
|
# arpd needs BerkeleyDB and links against pthread
|
|
ifeq ($(BR2_PACKAGE_BERKELEYDB_COMPAT185)$(BR2_TOOLCHAIN_HAS_THREADS),yy)
|
|
IPROUTE2_DEPENDENCIES += berkeleydb
|
|
else
|
|
define IPROUTE2_DISABLE_ARPD
|
|
echo "HAVE_BERKELEY_DB:=n" >> $(IPROUTE2_DIR)/Config
|
|
endef
|
|
endif
|
|
|
|
# ifcfg needs bash
|
|
ifeq ($(BR2_PACKAGE_BASH),)
|
|
define IPROUTE2_REMOVE_IFCFG
|
|
rm -f $(TARGET_DIR)/sbin/ifcfg
|
|
endef
|
|
endif
|
|
|
|
define IPROUTE2_CONFIGURE_CMDS
|
|
$(SED) 's/gcc/$$CC $$CFLAGS/g' $(@D)/configure
|
|
cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure
|
|
$(IPROUTE2_DISABLE_ARPD)
|
|
$(IPROUTE2_WITH_IPTABLES)
|
|
endef
|
|
|
|
define IPROUTE2_BUILD_CMDS
|
|
$(SED) 's/$$(CCOPTS)//' $(@D)/netem/Makefile
|
|
$(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) \
|
|
DBM_INCLUDE="$(STAGING_DIR)/usr/include" \
|
|
CCOPTS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \
|
|
SHARED_LIBS="$(if $(BR2_STATIC_LIBS),n,y)" -C $(@D)
|
|
endef
|
|
|
|
define IPROUTE2_INSTALL_TARGET_CMDS
|
|
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" \
|
|
SBINDIR=/sbin \
|
|
DOCDIR=/usr/share/doc/iproute2-$(IPROUTE2_VERSION) \
|
|
MANDIR=/usr/share/man install
|
|
$(IPROUTE2_REMOVE_IFCFG)
|
|
endef
|
|
|
|
$(eval $(generic-package))
|