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 852c203  MSOURCES-120 document key configuration for Reproducible 
Builds
852c203 is described below

commit 852c203c1f07e0e8bd84d22360141edd924ba472
Author: Hervé Boutemy <hbout...@apache.org>
AuthorDate: Sat Sep 7 07:59:44 2019 +0200

    MSOURCES-120 document key configuration for Reproducible Builds
---
 .../apache/maven/plugins/source/AbstractSourceJarMojo.java    | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

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 13bd352..da11f2d 100644
--- a/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java
+++ b/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java
@@ -284,11 +284,16 @@ public abstract class AbstractSourceJarMojo
         
         if ( sourceDateEpoch != 0 )
         {
+            // configure for Reproducible Builds based on source date epoch 
value
             JarArchiver j = archiver.getArchiver();
+
+            // 1. force timestamp of zip entries (at zip storage level, that 
ignores timezone)
             Calendar cal = Calendar.getInstance();
             long zipTime =
                 1000L * sourceDateEpoch - ( cal.get( Calendar.ZONE_OFFSET ) + 
cal.get( Calendar.DST_OFFSET ) );
             j.setLastModifiedDate( new Date( zipTime ) );
+
+            // 2. sort filenames in each directory when scanning filesystem
             j.setFilenameComparator( new Comparator<String>()
             {
                 @Override
@@ -297,8 +302,10 @@ public abstract class AbstractSourceJarMojo
                     return s1.compareTo( s2 );
                 }
             } );
-            j.setFileMode( Archiver.DEFAULT_FILE_MODE ); // notice: overrides 
execute bit on Unix
-                                                         // (that is already 
ignored on Windows)
+
+            // 3. ignore file/directory mode from filesystem, since they may 
vary based on local user umask
+            // notice: this overrides execute bit on Unix (that is already 
ignored on Windows)
+            j.setFileMode( Archiver.DEFAULT_FILE_MODE ); 
             j.setDirectoryMode( Archiver.DEFAULT_DIR_MODE );
         }
 

Reply via email to