Package: pdns Severity: wishlist Tags: patch Dear Maintainer,
as you are likely aware, upstream has released version 3.3.1, including fixes for some bugs reported to the Debian BTS. Please package the new upstream version. I have taken a stab at it, and will attach patches on top of the upstream import; you can find a copy of the git repository here: https://github.com/zeha/pdns-deb Cheers, Christian -- ,''`. Christian Hofstaedtler <[email protected]> : :' : Debian Developer `. `' 7D1A CFFA D9E0 806C 9C4C D392 5C13 D6DB 9305 2E03 `-
>From eb67a21a518b4211c7930200bea78a5403959792 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler <[email protected]> Date: Mon, 6 Jan 2014 15:23:02 +0100 Subject: [PATCH 1/7] Apply patch from Peter van Dijk to fix PostgreSQL schema upgrades Closes: 726945 --- debian/sql/pgsql/3.3-1 | 2 +- debian/sql/pgsql/pgsql | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/sql/pgsql/3.3-1 b/debian/sql/pgsql/3.3-1 index 781f47f..d5be011 100644 --- a/debian/sql/pgsql/3.3-1 +++ b/debian/sql/pgsql/3.3-1 @@ -9,7 +9,7 @@ UPDATE records SET name=lower(name); ALTER TABLE records ADD CONSTRAINT c_lowercase_name CHECK (((name)::text = lower((name)::text))); -- Change ip VARCHAR(25) -> VARCHAR(64) -ALTER TABLE supermasters ALTER COLUMN ip TYPE VARCHAR(64) NOT NULL; +ALTER TABLE supermasters ALTER COLUMN ip TYPE VARCHAR(64); -- Recreate index DROP INDEX IF EXISTS orderindex; diff --git a/debian/sql/pgsql/pgsql b/debian/sql/pgsql/pgsql index d3b93e0..1e87f40 100644 --- a/debian/sql/pgsql/pgsql +++ b/debian/sql/pgsql/pgsql @@ -5,7 +5,8 @@ create table domains ( last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT DEFAULT NULL, - account VARCHAR(40) DEFAULT NULL + account VARCHAR(40) DEFAULT NULL, + CONSTRAINT c_lowercase_name CHECK (((name)::text = lower((name)::text))) ); CREATE UNIQUE INDEX name_index ON domains(name); @@ -74,7 +75,8 @@ create table tsigkeys ( id SERIAL PRIMARY KEY, name VARCHAR(255), algorithm VARCHAR(50), - secret VARCHAR(255) + secret VARCHAR(255), + constraint c_lowercase_name check (((name)::text = lower((name)::text))) ); create unique index namealgoindex on tsigkeys(name, algorithm); -- 1.8.5.2
>From 68d60e13fd9f9007e2c30ab08bbe6d5054efb3d1 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler <[email protected]> Date: Mon, 6 Jan 2014 15:26:00 +0100 Subject: [PATCH 2/7] Remove upstream applied patch "upstream-1032-mysql-dep" --- debian/patches/series | 1 - debian/patches/upstream-1032-mysql-dep | 23 ----------------------- 2 files changed, 24 deletions(-) delete mode 100644 debian/patches/upstream-1032-mysql-dep diff --git a/debian/patches/series b/debian/patches/series index b00f8ad..eb01490 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,4 +1,3 @@ -upstream-1032-mysql-dep upstream-912-endianess pullrequest-881-+=-syntax remove-rpath-ldflags-patch diff --git a/debian/patches/upstream-1032-mysql-dep b/debian/patches/upstream-1032-mysql-dep deleted file mode 100644 index fdc0ec4..0000000 --- a/debian/patches/upstream-1032-mysql-dep +++ /dev/null @@ -1,23 +0,0 @@ -Description: fix upstream issue 1032 causing an unnecessary MySQL dependency -Origin: https://github.com/PowerDNS/pdns/issues/1032 -Author: PowerDNS.COM BV & the PowerDNS Community ---- a/pdns/Makefile.am -+++ b/pdns/Makefile.am -@@ -70,7 +70,7 @@ version.hh version.cc - - # - pdns_server_LDFLAGS=@moduleobjects@ @modulelibs@ @DYNLINKFLAGS@ @LIBDL@ @THREADFLAGS@ $(BOOST_SERIALIZATION_LDFLAGS) -rdynamic --pdns_server_LDADD= ext/polarssl-1.1.2/library/libpolarssl.a $(BOOST_SERIALIZATION_LIBS) $(LUA_LIBS) $(SQLITE3_LIBS) $(LIBCURL_LIBS) $(MYSQL_lib) -+pdns_server_LDADD= ext/polarssl-1.1.2/library/libpolarssl.a $(BOOST_SERIALIZATION_LIBS) $(LUA_LIBS) $(SQLITE3_LIBS) $(LIBCURL_LIBS) - - if BOTAN110 - pdns_server_SOURCES += botan110signers.cc botansigners.cc -@@ -112,7 +112,7 @@ pdnssec_SOURCES=pdnssec.cc dbdnsseckeepe - - - pdnssec_LDFLAGS=@moduleobjects@ @modulelibs@ @DYNLINKFLAGS@ @LIBDL@ @THREADFLAGS@ $(BOOST_PROGRAM_OPTIONS_LDFLAGS) $(BOOST_SERIALIZATION_LDFLAGS) --pdnssec_LDADD= ext/polarssl-1.1.2/library/libpolarssl.a $(BOOST_PROGRAM_OPTIONS_LIBS) $(BOOST_SERIALIZATION_LIBS) $(SQLITE3_LIBS) $(LIBCURL_LIBS) $(MYSQL_lib) -+pdnssec_LDADD= ext/polarssl-1.1.2/library/libpolarssl.a $(BOOST_PROGRAM_OPTIONS_LIBS) $(BOOST_SERIALIZATION_LIBS) $(SQLITE3_LIBS) $(LIBCURL_LIBS) - - if BOTAN110 - pdnssec_SOURCES += botan110signers.cc botansigners.cc -- 1.8.5.2
>From c3891d21cb8cde107fac70415d6a949c3e907bf5 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler <[email protected]> Date: Mon, 6 Jan 2014 15:27:06 +0100 Subject: [PATCH 3/7] Remove upstream applied patch "upstream-912-endianess" --- debian/patches/series | 1 - debian/patches/upstream-912-endianess | 77 ----------------------------------- 2 files changed, 78 deletions(-) delete mode 100644 debian/patches/upstream-912-endianess diff --git a/debian/patches/series b/debian/patches/series index eb01490..138e8c5 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,2 @@ -upstream-912-endianess pullrequest-881-+=-syntax remove-rpath-ldflags-patch diff --git a/debian/patches/upstream-912-endianess b/debian/patches/upstream-912-endianess deleted file mode 100644 index 46c88f8..0000000 --- a/debian/patches/upstream-912-endianess +++ /dev/null @@ -1,77 +0,0 @@ -Description: fix upstream issue 912 causing test failures on big endian arches -Origin: https://github.com/PowerDNS/pdns/issues/912 -Author: PowerDNS.COM BV & the PowerDNS Community -Description: - git diff - b969c229e1fe9a88e6ff6b68af461d15649fdf75^.. - 6e4271016b30da83de2d0e3eb4962a5de1574376 ---- a/pdns/base64.cc -+++ b/pdns/base64.cc -@@ -1,6 +1,6 @@ - #include "base64.hh" - #include <inttypes.h> -- -+#include "dns.hh" - namespace anonpdns { - char B64Decode1(char cInChar) - { -@@ -164,9 +164,16 @@ int B64Decode(const std::string& strInpu - // Interpret the resulting 3 bytes...note there - // may have been padding, so those padded bytes - // are actually ignored. -+#if BYTE_ORDER == BIG_ENDIAN -+ strOutput += pBuf[1]; -+ strOutput += pBuf[2]; -+ strOutput += pBuf[3]; -+#else - strOutput += pBuf[2]; - strOutput += pBuf[1]; - strOutput += pBuf[0]; -+#endif -+ - } // while - if(pad) - strOutput.resize(strOutput.length()-pad); ---- a/pdns/test-dnsrecords_cc.cc -+++ b/pdns/test-dnsrecords_cc.cc -@@ -264,10 +264,10 @@ BOOST_AUTO_TEST_CASE(test_opt_record_out - - DNSPacketWriter pw(pak, "www.powerdns.com", ns_t_a); - pw.startRecord("www.powerdns.com", ns_t_a, 16, 1, DNSPacketWriter::ANSWER); -- pw.xfrIP(0x0100007f); -+ pw.xfrIP(htonl(0x7f000001)); - opts.push_back(pair<uint16_t,string>(3, "powerdns")); - pw.addOpt(1280, 0, 0, opts); -- pw.getHeader()->id = 0x01f0; -+ pw.getHeader()->id = htons(0xf001); - pw.getHeader()->rd = 1; - pw.commit(); - ---- a/pdns/test-misc_hh.cc -+++ b/pdns/test-misc_hh.cc -@@ -3,6 +3,7 @@ - - #include <boost/test/unit_test.hpp> - #include "misc.hh" -+#include "dns.hh" - #include <utility> - - using std::string; -@@ -67,6 +68,17 @@ BOOST_AUTO_TEST_CASE(test_AtomicCounter) - BOOST_CHECK_EQUAL(ac, 2); - } - -+BOOST_AUTO_TEST_CASE(test_endianness) { -+ uint32_t i = 1; -+#if BYTE_ORDER == BIG_ENDIAN -+ BOOST_CHECK_EQUAL(i, htonl(i)); -+#elif BYTE_ORDER == LITTLE_ENDIAN -+ uint32_t j=0x01000000; -+ BOOST_CHECK_EQUAL(i, ntohl(j)); -+#else -+ BOOST_FAIL("Did not detect endianness at all"); -+#endif -+} - - BOOST_AUTO_TEST_CASE(test_parseService) { - ServiceTuple tp; -- 1.8.5.2
>From 74a8235e8b05954d2b95fb692e9cbce97f8392e7 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler <[email protected]> Date: Mon, 6 Jan 2014 15:28:04 +0100 Subject: [PATCH 4/7] Remove upstream applied patch "pullrequest-881-+=-syntax" --- debian/patches/pullrequest-881-+=-syntax | 137 ------------------------------- debian/patches/series | 1 - 2 files changed, 138 deletions(-) delete mode 100644 debian/patches/pullrequest-881-+=-syntax diff --git a/debian/patches/pullrequest-881-+=-syntax b/debian/patches/pullrequest-881-+=-syntax deleted file mode 100644 index 57d03c9..0000000 --- a/debian/patches/pullrequest-881-+=-syntax +++ /dev/null @@ -1,137 +0,0 @@ -Description: add += syntax for options -Origin: https://github.com/PowerDNS/pdns/pull/881 -Author: Aki Tuomi ---- a/pdns/arguments.cc -+++ b/pdns/arguments.cc -@@ -17,6 +17,7 @@ - */ - #include "arguments.hh" - #include <boost/algorithm/string.hpp> -+#include <boost/algorithm/string/compare.hpp> - #include <boost/algorithm/string/predicate.hpp> - #include <boost/foreach.hpp> - #include "namespaces.hh" -@@ -293,8 +294,14 @@ void ArgvMap::parseOne(const string &arg - { - string var, val; - string::size_type pos; -- -- if(!arg.find("--") &&(pos=arg.find("="))!=string::npos) // this is a --port=25 case -+ bool incremental = false; -+ if(!arg.find("--") &&(pos=arg.find("+="))!=string::npos) // this is a --port+=25 case -+ { -+ var=arg.substr(2,pos-2); -+ val=arg.substr(pos+2); -+ incremental = true; -+ } -+ else if(!arg.find("--") &&(pos=arg.find("="))!=string::npos) // this is a --port=25 case - { - var=arg.substr(2,pos-2); - val=arg.substr(pos+1); -@@ -316,11 +323,22 @@ void ArgvMap::parseOne(const string &arg - if(var!="" && (parseOnly.empty() || var==parseOnly)) { - - pos=val.find_first_not_of(" \t"); // strip leading whitespace -- if(pos && pos!=string::npos) -+ if(pos && pos!=string::npos) - val=val.substr(pos); -- -- if(parmIsset(var)) -- params[var]=val; -+ if (!incremental && val.empty()) d_cleared.insert(var); -+ if(parmIsset(var)) { -+ if (incremental) { -+ if (params[var].empty() && !d_cleared.count(var)) { -+ throw ArgException("Incremental parameter '"+var+"' without a parent"); -+ } -+ if (params[var].empty()) -+ params[var]=val; -+ else -+ params[var]+=", " + val; -+ } else { -+ params[var]=val; -+ } -+ } - else - if(!lax) - throw ArgException("Trying to set unexisting parameter '"+var+"'"); -@@ -335,6 +353,7 @@ const vector<string>&ArgvMap::getCommand - void ArgvMap::parse(int &argc, char **argv, bool lax) - { - d_cmds.clear(); -+ d_cleared.clear(); - for(int n=1;n<argc;n++) { - parseOne(argv[n],"",lax); - } -@@ -458,7 +477,8 @@ bool ArgvMap::file(const char *fname, bo - L << Logger::Error << params["include-dir"] << " is not accessible" << std::endl; - throw ArgException(params["include-dir"] + " is not accessible"); - } -- -+ -+ std::vector<std::string> extraConfigs; - while((ent = readdir(dir)) != NULL) { - if (ent->d_name[0] == '.') continue; // skip any dots - if (boost::ends_with(ent->d_name, ".conf")) { -@@ -468,10 +488,16 @@ bool ArgvMap::file(const char *fname, bo - L << Logger::Error << namebuf << " is not a file" << std::endl; - throw ArgException(std::string(namebuf) + " does not exist!"); - } -- if (!file(namebuf, lax, true)) -- L << Logger::Warning << namebuf << " could not be read - skipping" << std::endl; -+ extraConfigs.push_back(std::string(namebuf)); - } - } -+ std::sort(extraConfigs.begin(), extraConfigs.end(), CIStringComparePOSIX()); -+ BOOST_FOREACH(const std::string& fn, extraConfigs) { -+ if (!file(fn.c_str(), lax, true)) { -+ L << Logger::Error << namebuf << " could not be parsed" << std::endl; -+ throw ArgException(fn + " could not be parsed"); -+ } -+ } - } - - return true; ---- a/pdns/arguments.hh -+++ b/pdns/arguments.hh -@@ -20,6 +20,7 @@ - #define ARGUMENTS_HH - - #include <map> -+#include <set> - #include <string> - #include <vector> - #include <fstream> -@@ -123,6 +124,7 @@ private: - map<string,string> helpmap; - map<string,string> d_typeMap; - vector<string> d_cmds; -+ std::set<string> d_cleared; - }; - - extern ArgvMap &arg(); ---- a/pdns/misc.hh -+++ b/pdns/misc.hh -@@ -410,6 +410,22 @@ struct CIStringCompare: public std::bina - } - }; - -+struct CIStringComparePOSIX -+{ -+ bool operator() (const std::string& lhs, const std::string& rhs) -+ { -+ std::string::const_iterator a,b; -+ const std::locale &loc = std::locale("POSIX"); -+ a=lhs.begin();b=rhs.begin(); -+ while(a!=lhs.end()) { -+ if (b==rhs.end() || std::tolower(*b,loc)<std::tolower(*a,loc)) return false; -+ else if (std::tolower(*a,loc)<std::tolower(*b,loc)) return true; -+ a++;b++; -+ } -+ return (b!=rhs.end()); -+ } -+}; -+ - struct CIStringPairCompare: public std::binary_function<pair<string, uint16_t>, pair<string,uint16_t>, bool> - { - bool operator()(const pair<string, uint16_t>& a, const pair<string, uint16_t>& b) const diff --git a/debian/patches/series b/debian/patches/series index 138e8c5..3bfbdf4 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1 @@ -pullrequest-881-+=-syntax remove-rpath-ldflags-patch -- 1.8.5.2
>From e40f118a603d6bb7b22b2738608b797aaaaab356 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler <[email protected]> Date: Mon, 6 Jan 2014 15:33:22 +0100 Subject: [PATCH 5/7] Refresh patch "remove-rpath-ldflags" Now in a way which hopefully will not need future refreshes. --- debian/patches/remove-rpath-ldflags-patch | 60 +++++-------------------------- 1 file changed, 8 insertions(+), 52 deletions(-) diff --git a/debian/patches/remove-rpath-ldflags-patch b/debian/patches/remove-rpath-ldflags-patch index b5612ae..e20bb37 100644 --- a/debian/patches/remove-rpath-ldflags-patch +++ b/debian/patches/remove-rpath-ldflags-patch @@ -3,57 +3,13 @@ Origin: Debian Forwarded: http://wiki.powerdns.com/trac/ticket/499 --- a/pdns/Makefile.am +++ b/pdns/Makefile.am -@@ -69,7 +69,7 @@ ednssubnet.cc ednssubnet.hh cachecleaner - version.hh version.cc +@@ -1,4 +1,9 @@ - # --pdns_server_LDFLAGS=@moduleobjects@ @modulelibs@ @DYNLINKFLAGS@ @LIBDL@ @THREADFLAGS@ $(BOOST_SERIALIZATION_LDFLAGS) -rdynamic -+pdns_server_LDFLAGS=@moduleobjects@ @modulelibs@ @DYNLINKFLAGS@ @LIBDL@ @THREADFLAGS@ -rdynamic - pdns_server_LDADD= ext/polarssl-1.1.2/library/libpolarssl.a $(BOOST_SERIALIZATION_LIBS) $(LUA_LIBS) $(SQLITE3_LIBS) $(LIBCURL_LIBS) ++# Debian patch ++BOOST_SERIALIZATION_LDFLAGS= ++BOOST_PROGRAM_OPTIONS_LDFLAGS= ++# End ++ + AM_CXXFLAGS=-DSYSCONFDIR=\"@sysconfdir@\" -DLIBDIR=\"@libdir@\" -DLOCALSTATEDIR=\"@socketdir@\" -Ibackends/bind @THREADFLAGS@ $(LUA_CFLAGS) $(SQLITE3_CFLAGS) $(POLARSSL_CFLAGS) -Iext/rapidjson/include - if BOTAN110 -@@ -111,7 +111,7 @@ pdnssec_SOURCES=pdnssec.cc dbdnsseckeepe - serialtweaker.cc - - --pdnssec_LDFLAGS=@moduleobjects@ @modulelibs@ @DYNLINKFLAGS@ @LIBDL@ @THREADFLAGS@ $(BOOST_PROGRAM_OPTIONS_LDFLAGS) $(BOOST_SERIALIZATION_LDFLAGS) -+pdnssec_LDFLAGS=@moduleobjects@ @modulelibs@ @DYNLINKFLAGS@ @LIBDL@ @THREADFLAGS@ - pdnssec_LDADD= ext/polarssl-1.1.2/library/libpolarssl.a $(BOOST_PROGRAM_OPTIONS_LIBS) $(BOOST_SERIALIZATION_LIBS) $(SQLITE3_LIBS) $(LIBCURL_LIBS) - - if BOTAN110 -@@ -191,7 +191,7 @@ dnswasher_LDFLAGS= @DYNLINKFLAGS@ @THREA - - dnsbulktest_SOURCES=dnsbulktest.cc misc.cc unix_utility.cc qtype.cc logger.cc statbag.cc dnsparser.cc \ - dnsrecords.cc dnswriter.cc dnslabeltext.cc rcpgenerator.cc base32.cc base64.cc sillyrecords.cc nsecrecords.cc --dnsbulktest_LDFLAGS= @DYNLINKFLAGS@ @THREADFLAGS@ $(BOOST_PROGRAM_OPTIONS_LDFLAGS) -+dnsbulktest_LDFLAGS= @DYNLINKFLAGS@ @THREADFLAGS@ - dnsbulktest_LDADD= $(BOOST_PROGRAM_OPTIONS_LIBS) - - # unix_utility.cc -@@ -209,7 +209,7 @@ dnsreplay_SOURCES=dnsreplay.cc misc.cc - rcpgenerator.cc rcpgenerator.hh base64.cc base64.hh dnswriter.cc dnslabeltext.cc dnswriter.hh \ - unix_utility.cc utility.hh sillyrecords.cc nsecrecords.cc base32.cc - --dnsreplay_LDFLAGS= @DYNLINKFLAGS@ @THREADFLAGS@ $(BOOST_PROGRAM_OPTIONS_LDFLAGS) -+dnsreplay_LDFLAGS= @DYNLINKFLAGS@ @THREADFLAGS@ - dnsreplay_LDADD= $(BOOST_PROGRAM_OPTIONS_LIBS) - - nproxy_SOURCES=nproxy.cc dnsparser.cc dnsrecords.cc dnsparser.hh \ -@@ -217,7 +217,7 @@ nproxy_SOURCES=nproxy.cc dnsparser.cc dn - sillyrecords.cc selectmplexer.cc mplexer.hh misc.cc nsecrecords.cc unix_utility.cc qtype.cc \ - logger.cc statbag.cc base32.cc - --nproxy_LDFLAGS= @DYNLINKFLAGS@ @THREADFLAGS@ $(BOOST_PROGRAM_OPTIONS_LDFLAGS) -+nproxy_LDFLAGS= @DYNLINKFLAGS@ @THREADFLAGS@ - nproxy_LDADD= $(BOOST_PROGRAM_OPTIONS_LIBS) - - notify_SOURCES=notify.cc dnsparser.cc dnsrecords.cc dnsparser.hh \ -@@ -225,7 +225,7 @@ notify_SOURCES=notify.cc dnsparser.cc dn - sillyrecords.cc selectmplexer.cc nsecrecords.cc base32.cc misc.cc unix_utility.cc \ - logger.cc qtype.cc statbag.cc - --notify_LDFLAGS= @DYNLINKFLAGS@ @THREADFLAGS@ $(BOOST_PROGRAM_OPTIONS_LDFLAGS) -+notify_LDFLAGS= @DYNLINKFLAGS@ @THREADFLAGS@ - notify_LDADD= $(BOOST_PROGRAM_OPTIONS_LIBS) - - dnsscope_SOURCES=dnsscope.cc misc.cc unix_utility.cc qtype.cc \ + AM_CPPFLAGS=-Ibackends/bind $(BOOST_CPPFLAGS) @THREADFLAGS@ $(LIBCURL_CFLAGS) -- 1.8.5.2
>From fa6b8ae5cbebc163c28a5dd15748805b833c6bf6 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler <[email protected]> Date: Mon, 6 Jan 2014 16:09:15 +0100 Subject: [PATCH 6/7] Show compile/link options at build time --- debian/rules | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/debian/rules b/debian/rules index 25fb628..ae3527c 100755 --- a/debian/rules +++ b/debian/rules @@ -47,3 +47,7 @@ override_dh_installinit: override_dh_auto_clean: dh_auto_clean rm -f pdns/backends/bind/dnslabeltext.cc + +# verbose build +override_dh_auto_build: + dh_auto_build -- V=1 -- 1.8.5.2
>From 7607a5a331c3fac3ede5f6671af1acdc437c17d1 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler <[email protected]> Date: Mon, 6 Jan 2014 16:14:13 +0100 Subject: [PATCH 7/7] Remove dh_make boilerplate from debian/watch --- debian/watch | 3 --- 1 file changed, 3 deletions(-) diff --git a/debian/watch b/debian/watch index 8c872a3..675df9c 100644 --- a/debian/watch +++ b/debian/watch @@ -1,6 +1,3 @@ -# Example watch control file for uscan -# Rename this file to "watch" and then you can run the "uscan" command -# to check for upstream updates and more. # Site Directory Pattern Version Script version=3 http://downloads.powerdns.com/releases/ pdns-(.*)\.tar\.gz debian uupdate -- 1.8.5.2

