This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to branch MSOURCES-120 in repository https://gitbox.apache.org/repos/asf/maven-source-plugin.git
The following commit(s) were added to refs/heads/MSOURCES-120 by this push: new 50f3945 MSOURCES-120 tweak entry time to ensure reproducible value in zip 50f3945 is described below commit 50f3945308bdfe03ec7a95df5290da19bb53b737 Author: Hervé Boutemy <hbout...@apache.org> AuthorDate: Fri Sep 6 23:59:44 2019 +0200 MSOURCES-120 tweak entry time to ensure reproducible value in zip --- src/it/reproducible/verify.groovy | 6 +++--- .../java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/it/reproducible/verify.groovy b/src/it/reproducible/verify.groovy index c9c8e7c..e93bc3e 100644 --- a/src/it/reproducible/verify.groovy +++ b/src/it/reproducible/verify.groovy @@ -39,7 +39,7 @@ ZipFile zipFile = new ZipFile( jarFile ); r.append( 'encoding: ' + zipFile.getEncoding() + '\n' ) r.append( 'timezone offset (minutes): ' + new Date().getTimezoneOffset() + '\n' ) -r.append( 'M size (cmp) crc java time date time zip time mode name -comment; extra\n' ) +r.append( 'M size (cmp) crc java time date time zip time mode name -comment; extra\n' ) String describeExtra( ZipExtraField[] extras ) { @@ -66,13 +66,13 @@ long javaToDosTime( Date d ) for ( ZipArchiveEntry zae : zipFile.getEntries() ) { - r.append( sprintf( "%d %4d (%3d) %8x %d %<tF %<tT %d %6o %s %s; %s\n", zae.getMethod(), zae.getSize(), zae.getCompressedSize(), zae.getCrc(), zae.getTime(), javaToDosTime( zae.getLastModifiedDate() ), zae.getUnixMode(), zae.getName(), ( zae.getComment() == null ) ? '-' : zae.getComment(), describeExtra( zae.getExtraFields() ) ) ) + r.append( sprintf( "%d %4d (%3d) %8x %d %<tF %<tT %<tz %d %6o %s %s; %s\n", zae.getMethod(), zae.getSize(), zae.getCompressedSize(), zae.getCrc(), zae.getTime(), javaToDosTime( zae.getLastModifiedDate() ), zae.getUnixMode(), zae.getName(), ( zae.getComment() == null ) ? '-' : zae.getComment(), describeExtra( zae.getExtraFields() ) ) ) } zipFile.close(); String buf = r.toString() println buf -String expectedSha1 = System.properties['os.name'].toLowerCase().contains( 'windows' ) ? 'c1a0f57e19f6f400da66bee06084a4bdb0d2fc00' : '7bd062f9b45afb7423f3c004c8080ebad4e98754' +String expectedSha1 = System.properties['os.name'].toLowerCase().contains( 'windows' ) ? 'c1a0f57e19f6f400da66bee06084a4bdb0d2fc00' : 'acf461ff37ddc3c44c620770a73d9cf42f7ca429' assert buf.startsWith( "reproducible-1.0-sources.jar sha1 = $expectedSha1" ) diff --git a/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java b/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java index 0fa2f79..13bd352 100644 --- a/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java @@ -23,6 +23,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -284,7 +285,10 @@ public abstract class AbstractSourceJarMojo if ( sourceDateEpoch != 0 ) { JarArchiver j = archiver.getArchiver(); - j.setLastModifiedDate( new Date( 1000L * sourceDateEpoch ) ); + Calendar cal = Calendar.getInstance(); + long zipTime = + 1000L * sourceDateEpoch - ( cal.get( Calendar.ZONE_OFFSET ) + cal.get( Calendar.DST_OFFSET ) ); + j.setLastModifiedDate( new Date( zipTime ) ); j.setFilenameComparator( new Comparator<String>() { @Override