[Reproducible-commits] [doxygen] 01/01: Honour $SOURCE_DATE_EPOCH
Maria Valentina Marin Rodrigues
akira-guest at moszumanska.debian.org
Wed Jul 22 08:19:44 UTC 2015
This is an automated email from the git hooks/post-receive script.
akira-guest pushed a commit to branch pu/reproducible_builds
in repository doxygen.
commit e98e3b0ce36ebcb9a57d1e7e9a36a9150ac24d1e
Author: akira <marivalenm at gmail.com>
Date: Sun Jul 5 22:06:00 2015 +0200
Honour $SOURCE_DATE_EPOCH
---
...CE_DATE_EPOCH-environment-variable-for-re.patch | 150 +++++++++++++++++++++
debian/patches/series | 1 +
2 files changed, 151 insertions(+)
diff --git a/debian/patches/0001-Honour-SOURCE_DATE_EPOCH-environment-variable-for-re.patch b/debian/patches/0001-Honour-SOURCE_DATE_EPOCH-environment-variable-for-re.patch
new file mode 100644
index 0000000..ce64aed
--- /dev/null
+++ b/debian/patches/0001-Honour-SOURCE_DATE_EPOCH-environment-variable-for-re.patch
@@ -0,0 +1,150 @@
+commit b31266c1076c6284116f17241d9e8aa048f88e60
+Author: Dimitri van Heesch <dimitri at stack.nl>
+Date: Sun Jul 19 12:12:39 2015 +0200
+
+ Bug 751984 - PATCH: Honour SOURCE_DATE_EPOCH environment variable for reproducible output
+
+--- a/qtools/qcstring.cpp
++++ b/qtools/qcstring.cpp
+@@ -460,6 +460,12 @@ ulong QCString::toULong(bool *ok) const
+ return s.toULong(ok);
+ }
+
++uint64 QCString::toUInt64(bool *ok) const
++{
++ QString s(data());
++ return s.toUInt64(ok);
++}
++
+ QCString &QCString::setNum(short n)
+ {
+ return setNum((long)n);
+--- a/qtools/qcstring.h
++++ b/qtools/qcstring.h
+@@ -288,6 +288,7 @@ public:
+ uint toUInt( bool *ok=0 ) const;
+ long toLong( bool *ok=0 ) const;
+ ulong toULong( bool *ok=0 ) const;
++ uint64 toUInt64( bool *ok=0 ) const;
+ QCString &setNum(short n);
+ QCString &setNum(ushort n);
+ QCString &setNum(int n);
+--- a/qtools/qstring.cpp
++++ b/qtools/qstring.cpp
+@@ -13935,6 +13935,60 @@ bye:
+ }
+
+ /*!
++ Returns the string converted to an <code>unsigned long</code>
++ value.
++
++ If \a ok is non-null, \a *ok is set to TRUE if there are no
++ conceivable errors, and FALSE if the string is not a number at all,
++ or if it has trailing garbage.
++*/
++
++uint64 QString::toUInt64( bool *ok, int base ) const
++{
++ const QChar *p = unicode();
++ uint64 val=0;
++ int l = length();
++ const uint64 max_mult = 1844674407370955161ULL; // ULLONG_MAX/10, rounded down
++ bool is_ok = FALSE;
++ if ( !p )
++ goto bye;
++ while ( l && p->isSpace() ) // skip leading space
++ l--,p++;
++ if ( *p == '+' )
++ l--,p++;
++
++ // NOTE: toULong() code is similar
++ if ( !l || !ok_in_base(*p,base) )
++ goto bye;
++ while ( l && ok_in_base(*p,base) ) {
++ l--;
++ uint dv;
++ if ( p->isDigit() ) {
++ dv = p->digitValue();
++ } else {
++ if ( *p >= 'a' && *p <= 'z' )
++ dv = *p - 'a' + 10;
++ else
++ dv = *p - 'A' + 10;
++ }
++ if ( val > max_mult || (val == max_mult && dv > (ULLONG_MAX%base)) )
++ goto bye;
++ val = base*val + dv;
++ p++;
++ }
++
++ while ( l && p->isSpace() ) // skip trailing space
++ l--,p++;
++ if ( !l )
++ is_ok = TRUE;
++bye:
++ if ( ok )
++ *ok = is_ok;
++ return is_ok ? val : 0;
++}
++
++
++/*!
+ Returns the string converted to a <code>short</code> value.
+
+ If \a ok is non-null, \a *ok is set to TRUE if there are no
+--- a/qtools/qstring.h
++++ b/qtools/qstring.h
+@@ -463,6 +463,7 @@ public:
+ uint toUInt( bool *ok=0, int base=10 ) const;
+ long toLong( bool *ok=0, int base=10 ) const;
+ ulong toULong( bool *ok=0, int base=10 ) const;
++ uint64 toUInt64( bool *ok=0, int base=10 ) const;
+ float toFloat( bool *ok=0 ) const;
+ double toDouble( bool *ok=0 ) const;
+
+--- a/src/util.cpp
++++ b/src/util.cpp
+@@ -18,6 +18,7 @@
+ #include <ctype.h>
+ #include <errno.h>
+ #include <math.h>
++#include <limits.h>
+
+ #include "md5.h"
+
+@@ -2461,6 +2462,35 @@ QCString fileToString(const char *name,b
+ QCString dateToString(bool includeTime)
+ {
+ QDateTime current = QDateTime::currentDateTime();
++ QCString sourceDateEpoch = portable_getenv("SOURCE_DATE_EPOCH");
++ if (!sourceDateEpoch.isEmpty())
++ {
++ bool ok;
++ uint64 epoch = sourceDateEpoch.toUInt64(&ok);
++ if (!ok)
++ {
++ static bool warnedOnce=FALSE;
++ if (!warnedOnce)
++ {
++ warn_uncond("Environment variable SOURCE_DATE_EPOCH does not contain a valid number; value is '%s'\n",
++ sourceDateEpoch.data());
++ warnedOnce=TRUE;
++ }
++ }
++ else if (epoch>UINT_MAX)
++ {
++ static bool warnedOnce=FALSE;
++ if (!warnedOnce)
++ {
++ warn_uncond("Environment variable SOURCE_DATA_EPOCH must have a value smaller than or equal to %llu; actual value %llu\n",UINT_MAX,epoch);
++ warnedOnce=TRUE;
++ }
++ }
++ else // all ok, replace current time with epoch value
++ {
++ current.setTime_t((ulong)epoch); // TODO: add support for 64bit epoch value
++ }
++ }
+ return theTranslator->trDateTime(current.date().year(),
+ current.date().month(),
+ current.date().day(),
diff --git a/debian/patches/series b/debian/patches/series
index 91b64ab..86dcd2e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -10,3 +10,4 @@ sqlite3-configure.diff
issue742427.diff
no-timestamps.diff
default-no-timestamp.diff
+0001-Honour-SOURCE_DATE_EPOCH-environment-variable-for-re.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/doxygen.git
More information about the Reproducible-commits
mailing list