[OpenWrt-Devel] [PATCH v2 2/2] dnsmasq: fix dependency problems of the dnsmasq-full variant.
Frank Schäfer
fschaefer.oss at googlemail.com
Wed Dec 31 05:33:09 EST 2014
Am 30.12.2014 um 13:18 schrieb Yousong Zhou:
> 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.oss at googlemail.com> for
> providing necessary information on connections and dependency relations
> between these CONFIGs and packages.
>
> Signed-off-by: Yousong Zhou <yszhou4tech at 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
tmp/.config-package.in:93:error: recursive dependency detected!
tmp/.config-package.in:93: symbol PACKAGE_dnsmasq-full depends on
PACKAGE_dnsmasq_full_ipset
tmp/.config-package.in:124: symbol PACKAGE_dnsmasq_full_ipset
depends on PACKAGE_dnsmasq-full
If you make a menuconfig, the IPSET build option also doesn't show up
unless you have selected DNSSEC...
Can you please test your patches before sending them to the list ?
> -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)
Urgh... is it really necessary to patch dnsmasqs native Makefile ?
Can you give us a practical and reproducable example that shows the
problem you are trying to solve here ?
Regards,
Frank
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list