[maven] 01/04: Set the maven.build.timestamp variable to the date defined by SOURCE_DATE_EPOCH
Emmanuel Bourg
ebourg-guest at moszumanska.debian.org
Tue Apr 26 13:50:17 UTC 2016
This is an automated email from the git hooks/post-receive script.
ebourg-guest pushed a commit to branch master
in repository maven.
commit d90d8384cdfbfd9ccf1f5c8f20bc24d17b521019
Author: Emmanuel Bourg <ebourg at apache.org>
Date: Tue Apr 26 15:41:23 2016 +0200
Set the maven.build.timestamp variable to the date defined by SOURCE_DATE_EPOCH
---
debian/changelog | 2 +
debian/patches/reproducible-build-timestamp.patch | 50 +++++++++++++++++++++++
debian/patches/series | 1 +
3 files changed, 53 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index ad0fdc4..811ae98 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
maven (3.3.9-4) UNRELEASED; urgency=medium
* Team upload.
+ * Set the maven.build.timestamp variable to the date defined by the
+ SOURCE_DATE_EPOCH environment variable to make the Maven builds reproducible
* Build depend on libplexus-component-metadata-java (>= 1.6)
instead of libplexus-containers1.5-java
* libmaven3-core-java now depends on libplexus-component-annotations-java
diff --git a/debian/patches/reproducible-build-timestamp.patch b/debian/patches/reproducible-build-timestamp.patch
new file mode 100644
index 0000000..2ee694d
--- /dev/null
+++ b/debian/patches/reproducible-build-timestamp.patch
@@ -0,0 +1,50 @@
+Description: Set the maven.build.timestamp variable to the date defined by
+ the SOURCE_DATE_EPOCH environment variable to make the Maven builds reproducible.
+Author: Emmanuel Bourg <ebourg at pache.org>
+Forwarded: no
+--- a/maven-compat/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java
++++ b/maven-compat/src/main/java/org/apache/maven/project/interpolation/BuildTimestampValueSource.java
+@@ -51,7 +51,15 @@
+ {
+ if ( formattedDate == null && startTime != null )
+ {
+- formattedDate = new SimpleDateFormat( format ).format( startTime );
++ if ( System.getenv( "SOURCE_DATE_EPOCH" ) == null ) {
++ formattedDate = new SimpleDateFormat( format ).format( startTime );
++ } else {
++ // Use the SOURCE_DATE_EPOCH timestamp and make the format locale insensitive
++ SimpleDateFormat fmt = new SimpleDateFormat( format, java.util.Locale.ENGLISH );
++ fmt.setTimeZone( java.util.TimeZone.getTimeZone( "UTC" ) );
++ Date date = new Date( 1000 * Long.parseLong( System.getenv( "SOURCE_DATE_EPOCH" ) ) );
++ formattedDate = fmt.format( date );
++ }
+ }
+
+ return formattedDate;
+--- a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/MavenBuildTimestamp.java
++++ b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/MavenBuildTimestamp.java
+@@ -22,6 +22,7 @@
+ import java.text.SimpleDateFormat;
+ import java.util.Date;
+ import java.util.GregorianCalendar;
++import java.util.Locale;
+ import java.util.Properties;
+ import java.util.TimeZone;
+
+@@ -61,7 +62,15 @@
+ {
+ time = new Date();
+ }
+- SimpleDateFormat dateFormat = new SimpleDateFormat( timestampFormat );
++
++ Locale locale = Locale.getDefault();
++ if ( System.getenv( "SOURCE_DATE_EPOCH" ) != null )
++ {
++ time = new Date( 1000 * Long.parseLong( System.getenv( "SOURCE_DATE_EPOCH" ) ) );
++ locale = Locale.ENGLISH;
++ }
++
++ SimpleDateFormat dateFormat = new SimpleDateFormat( timestampFormat, locale );
+ dateFormat.setCalendar( new GregorianCalendar() );
+ dateFormat.setTimeZone( DEFAULT_BUILD_TIME_ZONE );
+ formattedTimestamp = dateFormat.format( time );
diff --git a/debian/patches/series b/debian/patches/series
index e7c38f1..1d5d7b8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,3 +2,4 @@ plugins_version.diff
dep_versions.diff
modello-configuration.patch
build-offline.patch
+reproducible-build-timestamp.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/maven.git
More information about the pkg-java-commits
mailing list