mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-07-31 10:58:21 -07:00
net-dns/bind-tools: Fix compilation with dyndb and dlopen, bug 600212, thanks to all involved'
Package-Manager: Portage-2.3.6, Repoman-2.3.2
This commit is contained in:
@@ -44,6 +44,9 @@ S="${WORKDIR}/${MY_P}"
|
||||
RESTRICT="test"
|
||||
|
||||
src_prepare() {
|
||||
# bug 600212
|
||||
epatch "${FILESDIR}"/${P}-dyndb-dlopen.patch
|
||||
|
||||
epatch "${FILESDIR}"/${PN}-9.5.0_p1-lwconfig.patch #231247
|
||||
|
||||
# Disable tests for now, bug 406399
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
From ae903759c205f8a5039458d780c0e0c4442b7291 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Andrews <marka@isc.org>
|
||||
Date: Tue, 30 May 2017 11:31:34 +1000
|
||||
Subject: [PATCH] 4530. [bug] "dyndb" is dependent on dlopen
|
||||
existing / being enabled. [RT #45291]
|
||||
|
||||
From aa3a8979bc7eb1596d044eff572b3c35310584fa Mon Sep 17 00:00:00 2001
|
||||
From: Mark Andrews <marka@isc.org>
|
||||
Date: Tue, 30 May 2017 11:34:37 +1000
|
||||
Subject: [PATCH] 4530. [bug] "dyndb" is dependent on dlopen
|
||||
existing / being enabled. [RT #45291]
|
||||
|
||||
diff --git a/lib/dns/dyndb.c b/lib/dns/dyndb.c
|
||||
index a477508..dec68a7 100644
|
||||
--- a/lib/dns/dyndb.c
|
||||
+++ b/lib/dns/dyndb.c
|
||||
@@ -80,7 +80,7 @@ impfind(const char *name) {
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
-#if HAVE_DLFCN_H
|
||||
+#if HAVE_DLFCN_H && HAVE_DLOPEN
|
||||
static isc_result_t
|
||||
load_symbol(void *handle, const char *filename,
|
||||
const char *symbol_name, void **symbolp)
|
||||
--- a/bin/named/server.c
|
||||
+++ b/bin/named/server.c
|
||||
@@ -1496,6 +1496,7 @@ configure_peer(const cfg_obj_t *cpeer, isc_mem_t *mctx, dns_peer_t **peerp) {
|
||||
return (result);
|
||||
}
|
||||
|
||||
+#ifdef HAVE_DLOPEN
|
||||
static isc_result_t
|
||||
configure_dyndb(const cfg_obj_t *dyndb, isc_mem_t *mctx,
|
||||
const dns_dyndbctx_t *dctx)
|
||||
@@ -1521,6 +1522,7 @@ configure_dyndb(const cfg_obj_t *dyndb, isc_mem_t *mctx,
|
||||
name, isc_result_totext(result));
|
||||
return (result);
|
||||
}
|
||||
+#endif
|
||||
|
||||
|
||||
static isc_result_t
|
||||
@@ -4669,6 +4671,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
||||
else
|
||||
(void)cfg_map_get(config, "dyndb", &dyndb_list);
|
||||
|
||||
+#ifdef HAVE_DLOPEN
|
||||
for (element = cfg_list_first(dyndb_list);
|
||||
element != NULL;
|
||||
element = cfg_list_next(element))
|
||||
@@ -4686,6 +4689,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
||||
|
||||
CHECK(configure_dyndb(dyndb, mctx, dctx));
|
||||
}
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Setup automatic empty zones. If recursion is off then
|
||||
diff --git a/lib/bind9/check.c b/lib/bind9/check.c
|
||||
index 097dd96..99b995c 100644
|
||||
--- a/lib/bind9/check.c
|
||||
+++ b/lib/bind9/check.c
|
||||
@@ -2988,6 +2988,9 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
|
||||
{
|
||||
const cfg_obj_t *zones = NULL;
|
||||
const cfg_obj_t *keys = NULL;
|
||||
+#ifndef HAVE_DLOPEN
|
||||
+ const cfg_obj_t *dyndb = NULL;
|
||||
+#endif
|
||||
const cfg_listelt_t *element, *element2;
|
||||
isc_symtab_t *symtab = NULL;
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
@@ -3041,6 +3044,20 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
|
||||
result = ISC_R_FAILURE;
|
||||
}
|
||||
|
||||
+#ifndef HAVE_DLOPEN
|
||||
+ if (voptions != NULL)
|
||||
+ (void)cfg_map_get(voptions, "dyndb", &dyndb);
|
||||
+ else
|
||||
+ (void)cfg_map_get(config, "dyndb", &dyndb);
|
||||
+
|
||||
+ if (dyndb != NULL) {
|
||||
+ cfg_obj_log(dyndb, logctx, ISC_LOG_ERROR,
|
||||
+ "dynamic loading of databases is not supported");
|
||||
+ if (tresult != ISC_R_SUCCESS)
|
||||
+ result = ISC_R_NOTIMPLEMENTED;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Check that the response-policy and catalog-zones options
|
||||
* refer to zones that exist.
|
||||
--
|
||||
2.9.0
|
||||
|
||||
Reference in New Issue
Block a user