[maven-bundle-plugin] 01/01: Use the DEB_CHANGELOG_DATETIME variable for the timstamp in pom.properties
Emmanuel Bourg
ebourg-guest at moszumanska.debian.org
Mon Jun 29 08:55:06 UTC 2015
This is an automated email from the git hooks/post-receive script.
ebourg-guest pushed a commit to branch master
in repository maven-bundle-plugin.
commit 1dc866ccd0e3551e444a6f5eb116dec0fd3db98d
Author: Emmanuel Bourg <ebourg at apache.org>
Date: Mon Jun 29 10:52:51 2015 +0200
Use the DEB_CHANGELOG_DATETIME variable for the timstamp in pom.properties
---
debian/changelog | 9 +++
debian/patches/series | 1 +
...hangelog-date-as-pom.properties-timestamp.patch | 94 ++++++++++++++++++++++
3 files changed, 104 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index c5a55ae..3490818 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+maven-bundle-plugin (2.4.0-2) UNRELEASED; urgency=medium
+
+ * Team upload.
+ * The date set in the DEB_CHANGELOG_DATETIME environment variable is now used
+ for the timestamp in the pom.properties file embedded in the jar files
+ generated by maven-bundle-plugin to make the builds reproducible.
+
+ -- Emmanuel Bourg <ebourg at apache.org> Mon, 29 Jun 2015 10:49:54 +0200
+
maven-bundle-plugin (2.4.0-1) experimental; urgency=medium
* Team upload.
diff --git a/debian/patches/series b/debian/patches/series
index decc8e4..d56fe56 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
remove_bndlib_spring_support.diff
support_plexus_utils_1_5.diff
backward-compatibility.patch
+use-changelog-date-as-pom.properties-timestamp.patch
diff --git a/debian/patches/use-changelog-date-as-pom.properties-timestamp.patch b/debian/patches/use-changelog-date-as-pom.properties-timestamp.patch
new file mode 100644
index 0000000..930c2c1
--- /dev/null
+++ b/debian/patches/use-changelog-date-as-pom.properties-timestamp.patch
@@ -0,0 +1,94 @@
+Description: Use the date specified by the DEB_CHANGELOG_DATETIME variable when generating the header of pom.properties
+Author: Emmanuel Bourg <ebourg at apache.org>
+Forwarded: not-needed
+--- /dev/null
++++ b/src/main/java/org/apache/felix/bundleplugin/TimestampedProperties.java
+@@ -0,0 +1,48 @@
++package org.apache.felix.bundleplugin;
++
++import java.io.*;
++import java.text.*;
++import java.util.*;
++import java.util.regex.*;
++
++/**
++ * Properties file timestamped with a specified date.
++ */
++class TimestampedProperties extends Properties
++{
++ private Date date;
++
++ public TimestampedProperties(Date date) {
++ this.date = date;
++ }
++
++ @Override
++ public void store(OutputStream out, String comments) throws IOException {
++ store(new OutputStreamWriter(out, "ISO-8859-1"), comments);
++ }
++
++ @Override
++ public void store(Writer out, String comments) throws IOException {
++ // store the properties file in memory
++ StringWriter buffer = new StringWriter();
++ super.store(buffer, comments);
++
++ // Replace the date on the second line of the file
++ SimpleDateFormat fmt = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
++ fmt.setTimeZone(TimeZone.getTimeZone("UTC"));
++ String[] lines = buffer.toString().split(Pattern.quote(System.getProperty("line.separator")));
++ lines[1] = "#" + fmt.format(date);
++
++ // write the file
++ BufferedWriter writer = new BufferedWriter(out);
++ try {
++ for (String line : lines) {
++ writer.write(line);
++ writer.newLine();
++ }
++ writer.flush();
++ } finally {
++ writer.close();
++ }
++ }
++}
+--- /dev/null
++++ b/src/main/java/org/apache/felix/bundleplugin/DebianUtils.java
+@@ -0,0 +1,25 @@
++package org.apache.felix.bundleplugin;
++
++import java.text.ParseException;
++import java.text.SimpleDateFormat;
++import java.util.Date;
++
++class DebianUtils {
++
++ /**
++ * Returns the Debian build date specified by the DEB_CHANGELOG_DATETIME environment variable.
++ */
++ static Date getDebianBuildDate() {
++ String envName = "DEB_CHANGELOG_DATETIME";
++ String envVariable = System.getenv(envName);
++ if (envVariable == null) {
++ return null;
++ }
++
++ try {
++ return new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", java.util.Locale.ENGLISH).parse(envVariable);
++ } catch (ParseException e) {
++ throw new IllegalArgumentException("maven-bundle-plugin: " + envName + " not in recognised format", e);
++ }
++ }
++}
+--- a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
++++ b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
+@@ -1028,7 +1028,8 @@
+ File pomFile = new File( currentProject.getBasedir(), "pom.xml" );
+ jar.putResource( path + "/pom.xml", new FileResource( pomFile ) );
+
+- Properties p = new Properties();
++ java.util.Date buildDate = DebianUtils.getDebianBuildDate();
++ Properties p = buildDate == null ? new Properties() : new TimestampedProperties(buildDate);
+ p.put( "version", currentProject.getVersion() );
+ p.put( "groupId", currentProject.getGroupId() );
+ p.put( "artifactId", currentProject.getArtifactId() );
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/maven-bundle-plugin.git
More information about the pkg-java-commits
mailing list