From: Pieter Lexis Date: Thu, 7 May 2015 12:14:10 +0000 (+0200) Subject: Have a flag to enable reproducible builds X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~78^2~9^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e6a3d9365eafc8577fe5d72ae8ee4ffcb6c7c92;p=thirdparty%2Fpdns.git Have a flag to enable reproducible builds * Add Date and Time back to the modules --- diff --git a/configure.ac b/configure.ac index 4c05ab5e95..2093bb7997 100644 --- a/configure.ac +++ b/configure.ac @@ -27,7 +27,6 @@ PDNS_CHECK_FLEX AC_PROG_INSTALL AC_PROG_MAKE_SET - AC_PROG_CXX AS_IF([test "x$CXX" = "xno" || test "x$CXX:x$GXX" = "xg++:x"], AC_MSG_ERROR([no C++ compiler found]) @@ -119,6 +118,7 @@ BOOST_PROGRAM_OPTIONS([mt]) BOOST_SERIALIZATION([mt]) PDNS_ENABLE_UNIT_TESTS +PDNS_ENABLE_REPRODUCIBLE PDNS_WITH_SQLITE3 diff --git a/m4/pdns_enable_reproducible.m4 b/m4/pdns_enable_reproducible.m4 new file mode 100644 index 0000000000..53c13a1641 --- /dev/null +++ b/m4/pdns_enable_reproducible.m4 @@ -0,0 +1,18 @@ +AC_DEFUN([PDNS_ENABLE_REPRODUCIBLE], [ + AC_MSG_CHECKING([whether to enable reproducible builds.]) + AC_ARG_ENABLE([reproducible], + AS_HELP_STRING([--enable-reproducible], + [Create reproducible builds. Use this only if you are a distribution maintainer and need reproducible builds. If you compile PowerDNS yourself, leave this disabled, as it might make debugging harder. @<:@default=no@:>@]), + [enable_reproducible=$enableval], + [enable_reproducible=no]) + + AC_MSG_RESULT($enable_reproducible) + + AS_IF([test x"$enable_reproducible" = "xyes"],[ + AC_DEFINE([REPRODUCIBLE], [1], [Define to 1 for reproducible builds]) + ],[ + build_user=m4_esyscmd_s(id -u -n) + build_host=m4_esyscmd_s(hostname -f || hostname) + AC_DEFINE_UNQUOTED([BUILD_HOST], ["$build_user@$build_host"], [Set to the user and host that builds PowerDNS]) + ]) +]) diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index fd7456ef50..555c5f5fc9 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -1350,7 +1350,11 @@ public: Bind2Loader() { BackendMakers().report(new Bind2Factory); - L << Logger::Info << "[bind2backend] This is the bind backend version " VERSION " reporting" << endl; + L << Logger::Info << "[bind2backend] This is the bind backend version " << VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; static Bind2Loader bind2loader; diff --git a/modules/geobackend/geobackend.hh b/modules/geobackend/geobackend.hh index 370f1b1fc5..e5bbf9c6c7 100644 --- a/modules/geobackend/geobackend.hh +++ b/modules/geobackend/geobackend.hh @@ -106,7 +106,11 @@ class GeoLoader { public: GeoLoader() { BackendMakers().report(new GeoFactory); - L << Logger::Info << "[geobackend] This is the geo backend version " VERSION " reporting" << endl; + L << Logger::Info << "[geobackend] This is the geo backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/geoipbackend/geoipbackend.cc b/modules/geoipbackend/geoipbackend.cc index 78e66baff7..e83b368322 100644 --- a/modules/geoipbackend/geoipbackend.cc +++ b/modules/geoipbackend/geoipbackend.cc @@ -638,7 +638,11 @@ class GeoIPLoader { public: GeoIPLoader() { BackendMakers().report(new GeoIPFactory); - L << Logger::Info << "[geobackend] This is the geo backend version " VERSION " reporting" << endl; + L << Logger::Info << "[geobackend] This is the geo backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/gmysqlbackend/gmysqlbackend.cc b/modules/gmysqlbackend/gmysqlbackend.cc index bd01295919..7b3f4a514c 100644 --- a/modules/gmysqlbackend/gmysqlbackend.cc +++ b/modules/gmysqlbackend/gmysqlbackend.cc @@ -146,7 +146,11 @@ public: gMySQLLoader() { BackendMakers().report(new gMySQLFactory("gmysql")); - L << Logger::Info << "[gmysqlbackend] This is the gmysql backend version " VERSION " reporting" << endl; + L << Logger::Info << "[gmysqlbackend] This is the gmysql backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; static gMySQLLoader gmysqlloader; diff --git a/modules/goraclebackend/goraclebackend.cc b/modules/goraclebackend/goraclebackend.cc index 06cf4a3282..ff6c90ce69 100644 --- a/modules/goraclebackend/goraclebackend.cc +++ b/modules/goraclebackend/goraclebackend.cc @@ -159,7 +159,11 @@ public: //! This reports us to the main UeberBackend class gOracleLoader() { BackendMakers().report(new gOracleFactory("goracle")); - L << Logger::Info << "[goraclebackend] This is the goracle backend version " VERSION " reporting" << endl; + L << Logger::Info << "[goraclebackend] This is the goracle backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/gpgsqlbackend/gpgsqlbackend.cc b/modules/gpgsqlbackend/gpgsqlbackend.cc index 98b1aedf05..f48a4c9b3b 100644 --- a/modules/gpgsqlbackend/gpgsqlbackend.cc +++ b/modules/gpgsqlbackend/gpgsqlbackend.cc @@ -141,7 +141,11 @@ public: gPgSQLLoader() { BackendMakers().report(new gPgSQLFactory("gpgsql")); - L << Logger::Info << "[gpgsqlbackend] This is the gpgsql backend version " VERSION " reporting" << endl; + L << Logger::Info << "[gpgsqlbackend] This is the gpgsql backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; static gPgSQLLoader gpgsqlloader; diff --git a/modules/gsqlite3backend/gsqlite3backend.cc b/modules/gsqlite3backend/gsqlite3backend.cc index 707833e32c..ddd68b1b32 100644 --- a/modules/gsqlite3backend/gsqlite3backend.cc +++ b/modules/gsqlite3backend/gsqlite3backend.cc @@ -159,7 +159,11 @@ public: gSQLite3Loader() { BackendMakers().report( new gSQLite3Factory( "gsqlite3" )); - L << Logger::Info << "[gsqlite3] This is the gsqlite3 backend version " VERSION " reporting" << std::endl; + L << Logger::Info << "[gsqlite3] This is the gsqlite3 backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/ldapbackend/ldapbackend.cc b/modules/ldapbackend/ldapbackend.cc index 28b7deaec4..44d366bdb9 100644 --- a/modules/ldapbackend/ldapbackend.cc +++ b/modules/ldapbackend/ldapbackend.cc @@ -541,7 +541,11 @@ public: LdapLoader() { BackendMakers().report( &factory ); - L << Logger::Info << "[ldapbackend] This is the ldap backend version " VERSION " reporting" << endl; + L << Logger::Info << "[ldapbackend] This is the ldap backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index fbd62a5b56..b21407452d 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -562,7 +562,11 @@ public: LMDBLoader() { BackendMakers().report(new LMDBFactory); - L << Logger::Info << "[lmdbbackend] This is the lmdb backend version " VERSION " reporting" << endl; + L << Logger::Info << "[lmdbbackend] This is the lmdb backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/luabackend/luabackend.cc b/modules/luabackend/luabackend.cc index 1c65a0ed28..1c062479f8 100644 --- a/modules/luabackend/luabackend.cc +++ b/modules/luabackend/luabackend.cc @@ -52,7 +52,11 @@ public: { BackendMakers().report(new LUAFactory); - L << Logger::Info << "[luabackend] This is the lua backend version " VERSION " reporting" << endl; + L << Logger::Info << "[luabackend] This is the lua backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/mydnsbackend/mydnsbackend.cc b/modules/mydnsbackend/mydnsbackend.cc index 96451d8280..c06e2d884c 100644 --- a/modules/mydnsbackend/mydnsbackend.cc +++ b/modules/mydnsbackend/mydnsbackend.cc @@ -462,7 +462,11 @@ class MyDNSLoader { public: MyDNSLoader() { BackendMakers().report(new MyDNSFactory()); - L << Logger::Info << "[mydnsbackend] This is the mydns backend version " VERSION " reporting" << endl; + L << Logger::Info << "[mydnsbackend] This is the mydns backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/opendbxbackend/odbxbackend.hh b/modules/opendbxbackend/odbxbackend.hh index ee6b4f8cf4..4801a29312 100644 --- a/modules/opendbxbackend/odbxbackend.hh +++ b/modules/opendbxbackend/odbxbackend.hh @@ -164,7 +164,11 @@ public: OdbxLoader() { BackendMakers().report( &factory ); - L.log( "[opendbxbackend] This is the opendbx backend version " VERSION " reporting", Logger::Info ); + L<< Logger::Info << "[opendbxbackend] This is the opendbx backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/oraclebackend/oraclebackend.cc b/modules/oraclebackend/oraclebackend.cc index ab46114bea..f486c900e6 100644 --- a/modules/oraclebackend/oraclebackend.cc +++ b/modules/oraclebackend/oraclebackend.cc @@ -2268,7 +2268,11 @@ public: OracleLoader() { BackendMakers().report(new OracleFactory); - L << Logger::Info << "[oraclebackend] This is the oracle backend version " VERSION " reporting" << endl; + L << Logger::Info << "[oraclebackend] This is the oracle backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/pipebackend/pipebackend.cc b/modules/pipebackend/pipebackend.cc index 2195212728..2d6e9b78f5 100644 --- a/modules/pipebackend/pipebackend.cc +++ b/modules/pipebackend/pipebackend.cc @@ -292,7 +292,11 @@ class PipeLoader PipeLoader() { BackendMakers().report(new PipeFactory); - L << Logger::Info << kBackendId <<" This is the pipe backend version " VERSION " reporting" << endl; + L << Logger::Info << kBackendId <<" This is the pipe backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/randombackend/randombackend.cc b/modules/randombackend/randombackend.cc index 8dde8343b7..fdfacaf3f6 100644 --- a/modules/randombackend/randombackend.cc +++ b/modules/randombackend/randombackend.cc @@ -103,7 +103,11 @@ public: RandomLoader() { BackendMakers().report(new RandomFactory); - L << Logger::Info << "[randombackend] This is the random backend version " VERSION " reporting" << endl; + L << Logger::Info << "[randombackend] This is the random backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index 1b353c9966..fd4e37f1a9 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -1068,7 +1068,11 @@ public: RemoteLoader::RemoteLoader() { BackendMakers().report(new RemoteBackendFactory); - L << Logger::Info << kBackendId << " This is the remote backend version " VERSION " reporting" << endl; + L << Logger::Info << kBackendId << " This is the remote backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } static RemoteLoader remoteloader; diff --git a/modules/tinydnsbackend/tinydnsbackend.cc b/modules/tinydnsbackend/tinydnsbackend.cc index 0b16c7dc41..b04dd5b223 100644 --- a/modules/tinydnsbackend/tinydnsbackend.cc +++ b/modules/tinydnsbackend/tinydnsbackend.cc @@ -329,7 +329,11 @@ class TinyDNSLoader public: TinyDNSLoader() { BackendMakers().report(new TinyDNSFactory); - L << Logger::Info << "[tinydnsbackend] This is the tinydns backend version " VERSION " reporting" << endl; + L << Logger::Info << "[tinydnsbackend] This is the tinydns backend version " VERSION +#ifndef REPRODUCIBLE + << " (" __DATE__ " " __TIME__ ")" +#endif + << " reporting" << endl; } }; diff --git a/pdns/configure-recursor b/pdns/configure-recursor index f88b5a1c3a..802f3b9ede 100755 --- a/pdns/configure-recursor +++ b/pdns/configure-recursor @@ -13,6 +13,12 @@ if [ "$STATIC" = "" ]; then STATIC="no" fi +if [ "$REPRODUCIBLE" = "1" ]; then + cat >> config.h << EOF +#define REPRODUCIBLE 1 +EOF +fi + set -u LD_RELRO="" diff --git a/pdns/version.cc b/pdns/version.cc index 2ef0e812c9..58053114fb 100644 --- a/pdns/version.cc +++ b/pdns/version.cc @@ -72,7 +72,11 @@ void showProductVersion() theL()<