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 <fschaefer....@googlemail.com> for
providing necessary information on connections and dependency relations
between these CONFIGs and packages.

Signed-off-by: Yousong Zhou <yszhou4t...@gmail.com>
---
v2 <- v1

        - Add PKG_CONFIG_DEPENDS variable for better cooperation with OpenWrt 
build system.
        - Patch Makefile of dnsmasq to let it rebuild with changed COPTS 
variable.
        - Rename ipset, IPSET to IPset.
        - Break long lines into shorter ones.
        - Description text changes with the "configurable" feature in mind.

 package/network/services/dnsmasq/Makefile          |   49 +++++++++++---------
 ...0-let-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 1153428..766aaf0 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 0000000..663f0e9
--- /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)
-- 
1.7.10.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to