From 6493328c8f64cf82c1ff34b182bcdd6e7f878438 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 5 Jan 2015 13:03:48 +0000 Subject: [PATCH] dnsmasq: fix dependency problems of the dnsmasq-full variant. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch tries to - Let the DHCPv6 feature depend on CONFIG_IPV6. - Conditionally select libnettle, kmod-ipv6, kmod-ipt-ipset only if the corresponding features are enabled. - Install `trust-anchors.conf` only if DNSSEC is selected. - Add PKG_CONFIG_DEPENDS for the configurable options. - Add a patch to let the Makefile of dnsmasq be aware of changes in COPTS variable. Big thanks goes to Frank Schäfer for providing necessary information on connections and dependency relations between these CONFIGs and packages. Signed-off-by: Yousong Zhou SVN-Revision: 43851 --- package/network/services/dnsmasq/Makefile | 49 +++++++++++-------- ...-makefile-be-aware-of-config-changes.patch | 42 ++++++++++++++++ 2 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 package/network/services/dnsmasq/patches/200-let-makefile-be-aware-of-config-changes.patch diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile index 115342854c..766aaf04ec 100644 --- a/package/network/services/dnsmasq/Makefile +++ b/package/network/services/dnsmasq/Makefile @@ -22,6 +22,10 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSI PKG_INSTALL:=1 PKG_BUILD_PARALLEL:=1 +PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcpv6 \ + CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dnssec \ + CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_auth \ + CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_ipset include $(INCLUDE_DIR)/package.mk @@ -46,8 +50,10 @@ endef define Package/dnsmasq-full $(call Package/dnsmasq/Default) - TITLE += (with DNSSEC, DHCPv6, Auth DNS, IPSET) - DEPENDS:=@IPV6 +kmod-ipv6 +libnettle + TITLE += (with DNSSEC, DHCPv6, Auth DNS, IPset enabled by default) + DEPENDS:=+PACKAGE_dnsmasq_full_dnssec:libnettle \ + +PACKAGE_dnsmasq_full_dhcpv6:kmod-ipv6 \ + +PACKAGE_dnsmasq_full_ipset:kmod-ipt-ipset VARIANT:=full endef @@ -64,7 +70,8 @@ endef define Package/dnsmasq-full/description $(call Package/dnsmasq/description) -This is a variant with DHCPv6, DNSSEC, Authroitative DNS and IPSET support +This is a fully configurable variant with DHCPv6, DNSSEC, Authroitative DNS and +IPset support enabled by default. endef define Package/dnsmasq/conffiles @@ -72,26 +79,24 @@ define Package/dnsmasq/conffiles /etc/dnsmasq.conf endef -define Package/dnsmasq/config/Default - if PACKAGE_$(1)-$(2) - config PACKAGE_dnsmasq_$(2)_dhcpv6 - bool "Build with DHCPv6 support." - default y - config PACKAGE_dnsmasq_$(2)_dnssec - bool "Build with DNSSEC support." - default y - config PACKAGE_dnsmasq_$(2)_auth - bool "Build with the facility to act as an authoritative DNS server." - default y - config PACKAGE_dnsmasq_$(2)_ipset - bool "Build with ipset support." - select PACKAGE_kmod-ipt-ipset - default y - endif +define Package/dnsmasq-full/config + if PACKAGE_dnsmasq-full + config PACKAGE_dnsmasq_full_dhcpv6 + bool "Build with DHCPv6 support." + depends on IPV6 + default y + config PACKAGE_dnsmasq_full_dnssec + bool "Build with DNSSEC support." + default y + config PACKAGE_dnsmasq_full_auth + bool "Build with the facility to act as an authoritative DNS server." + default y + config PACKAGE_dnsmasq_full_ipset + bool "Build with IPset support." + default y + endif endef -Package/dnsmasq-full/config=$(call Package/dnsmasq/config/Default,dnsmasq,full) - Package/dnsmasq-dhcpv6/conffiles = $(Package/dnsmasq/conffiles) Package/dnsmasq-full/conffiles = $(Package/dnsmasq/conffiles) @@ -137,8 +142,10 @@ Package/dnsmasq-dhcpv6/install = $(Package/dnsmasq/install) define Package/dnsmasq-full/install $(call Package/dnsmasq/install,$(1)) +ifneq ($(CONFIG_PACKAGE_dnsmasq_full_dnssec),) $(INSTALL_DIR) $(1)/usr/share/dnsmasq $(INSTALL_DATA) $(PKG_BUILD_DIR)/trust-anchors.conf $(1)/usr/share/dnsmasq +endif endef $(eval $(call BuildPackage,dnsmasq)) diff --git a/package/network/services/dnsmasq/patches/200-let-makefile-be-aware-of-config-changes.patch b/package/network/services/dnsmasq/patches/200-let-makefile-be-aware-of-config-changes.patch new file mode 100644 index 0000000000..663f0e9ed3 --- /dev/null +++ b/package/network/services/dnsmasq/patches/200-let-makefile-be-aware-of-config-changes.patch @@ -0,0 +1,42 @@ +Index: dnsmasq-2.72/Makefile +=================================================================== +--- dnsmasq-2.72.orig/Makefile 2014-12-30 19:46:10.484921940 +0800 ++++ dnsmasq-2.72/Makefile 2014-12-30 19:56:39.712926794 +0800 +@@ -74,6 +74,10 @@ + hdrs = dnsmasq.h config.h dhcp-protocol.h dhcp6-protocol.h \ + dns-protocol.h radv-protocol.h ip6addr.h + ++COPT_CONF = $(top)/.copt_$(shell $(CC) -DDNSMASQ_COMPILE_OPTS $(COPTS) -E $(top)/$(SRC)/config.h | \ ++ ( md5sum 2>/dev/null || md5 ) | cut -f 1 -d ' ') ++COPT_CONF_WILD = $(top)/.copt_* ++ + all : $(BUILDDIR) + @cd $(BUILDDIR) && $(MAKE) \ + top="$(top)" \ +@@ -83,7 +87,7 @@ + + mostly_clean : + rm -f $(BUILDDIR)/*.mo $(BUILDDIR)/*.pot +- rm -f $(BUILDDIR)/.configured $(BUILDDIR)/*.o $(BUILDDIR)/dnsmasq.a $(BUILDDIR)/dnsmasq ++ rm -f $(BUILDDIR)/$(COPT_CONF_WILD) $(BUILDDIR)/*.o $(BUILDDIR)/dnsmasq.a $(BUILDDIR)/dnsmasq + + clean : mostly_clean + rm -f $(BUILDDIR)/dnsmasq_baseline +@@ -139,7 +143,7 @@ + + # rules below are targets in recusive makes with cwd=$(BUILDDIR) + +-.configured: $(hdrs) ++$(COPT_CONF): $(hdrs) + @rm -f *.o + @touch $@ + +@@ -149,7 +153,7 @@ + .c.o: + $(CC) $(CFLAGS) $(COPTS) $(i18n) $(build_cflags) $(RPM_OPT_FLAGS) -c $< + +-dnsmasq : .configured $(hdrs) $(objs) ++dnsmasq : $(COPT_CONF) $(hdrs) $(objs) + $(CC) $(LDFLAGS) -o $@ $(objs) $(build_libs) $(LIBS) + + dnsmasq.pot : $(objs:.o=.c) $(hdrs)