This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git
The following commit(s) were added to refs/heads/master by this push: new f42194b6 MASSEMBLY-941 keep file permission in Reproducible mode (#96) f42194b6 is described below commit f42194b6c0e49bedad506821e524be076e839a79 Author: Hervé Boutemy <hbout...@apache.org> AuthorDate: Sat Nov 26 11:57:04 2022 +0100 MASSEMBLY-941 keep file permission in Reproducible mode (#96) [MASSEMBLY-941] keep file permission in Reproducible mode --- pom.xml | 4 ++-- src/it/projects/reproducible/src/assemble/src.xml | 6 ++--- src/it/projects/reproducible/verify.groovy | 28 +++++++++++++++++++---- src/it/projects/reproducible/zip-content-755.txt | 25 ++++++++++++++++++++ src/it/projects/reproducible/zip-content-775.txt | 25 ++++++++++++++++++++ src/it/projects/reproducible/zip-content-win.txt | 25 ++++++++++++++++++++ 6 files changed, 103 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index ff550a55..0c4d55bf 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ under the License. </parent> <artifactId>maven-assembly-plugin</artifactId> - <version>3.4.3-SNAPSHOT</version> + <version>3.5.0-SNAPSHOT</version> <packaging>maven-plugin</packaging> <name>Apache Maven Assembly Plugin</name> @@ -175,7 +175,7 @@ under the License. <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-archiver</artifactId> - <version>4.4.0</version> + <version>4.6.0</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> diff --git a/src/it/projects/reproducible/src/assemble/src.xml b/src/it/projects/reproducible/src/assemble/src.xml index 3f4ab153..4d5c33ee 100644 --- a/src/it/projects/reproducible/src/assemble/src.xml +++ b/src/it/projects/reproducible/src/assemble/src.xml @@ -31,17 +31,17 @@ under the License. <fileSets> <fileSet> <outputDirectory></outputDirectory> - <directory>src</directory> + <directory>src/main/resources</directory> <filtered>true</filtered> <lineEnding>lf</lineEnding> </fileSet> </fileSets> - <files> + <!--files> <file> <source>src/main/resources/executable.txt</source> <fileMode>0755</fileMode> <filtered>true</filtered> <lineEnding>lf</lineEnding> </file> - </files> + </files--> </assembly> diff --git a/src/it/projects/reproducible/verify.groovy b/src/it/projects/reproducible/verify.groovy index 798c2fb8..b706e3df 100644 --- a/src/it/projects/reproducible/verify.groovy +++ b/src/it/projects/reproducible/verify.groovy @@ -18,13 +18,31 @@ * under the License. */ -//import java.util.zip.*; -import org.apache.commons.compress.archivers.zip.*; +//import java.util.zip.* +import org.apache.commons.compress.archivers.zip.* File deployDir = new File( basedir, 'target/repo/org/apache/maven/its/reproducible/1.0' ) assert deployDir.exists() -assert new File( deployDir, 'reproducible-1.0-src.zip.sha1' ).text == '5ce34fc133d47cbc9c81195877dbe10b9ec7d864' -assert new File( deployDir, 'reproducible-1.0-src.tar.sha1' ).text == '0b9dc1da069705a93b4954a198c18bd248822bf8' -assert new File( deployDir, 'reproducible-1.0-src.jar.sha1' ).text == '289cb3ecd418b8099deefb930dc7aa39c06888cb' +ZipFile zip = new ZipFile( new File( deployDir, "reproducible-1.0-src.zip" ) ) +StringBuilder sb = new StringBuilder() +for( ZipArchiveEntry entry : zip.getEntries() ) +{ + sb.append( String.format("%o %s\n", entry.getUnixMode(), entry.getName() ) ) +} +for( String type : [ "zip", "jar", "tar" ] ) +{ + String name = "reproducible-1.0-src." + type + ".sha1" + sb.append( String.format("%s %s\n", new File( deployDir, name ).text, name ) ) +} + +effective = sb.toString() + +// 3 different reference results: +// 1. Windows does not support executable flag +// 2. on *nix, based on system configuration, group flag differs +reference = "zip-content-" + ( effective.contains( "644 executable" ) ? "win" : effective.contains( "0775" ) ? "775" : "755" ) + ".txt" +content = new File( basedir, reference ).text.replace( "\r\n", "\n" ) + +assert content == effective diff --git a/src/it/projects/reproducible/zip-content-755.txt b/src/it/projects/reproducible/zip-content-755.txt new file mode 100644 index 00000000..92aa7ecb --- /dev/null +++ b/src/it/projects/reproducible/zip-content-755.txt @@ -0,0 +1,25 @@ +40755 dir-A/ +40755 dir-C/ +40755 dir-b/ +40755 dir-b/B2/ +40755 dir-b/B4/ +40755 dir-b/b1/ +40755 dir-b/b3/ +40755 dir-d/ +100644 Uppercase.txt +100644 dir-A/A2.txt +100644 dir-A/A4.txt +100644 dir-A/a1.txt +100644 dir-A/a3.txt +100644 dir-C/C.txt +100644 dir-b/B2/B2.txt +100644 dir-b/B4/B4.txt +100644 dir-b/b.txt +100644 dir-b/b1/b1.txt +100644 dir-b/b3/b3.txt +100644 dir-d/d.txt +100755 executable.txt +100644 lowercase.txt +97d0ea3b4a87cd3ea78edd1c3c25914d69ea97f3 reproducible-1.0-src.zip.sha1 +a0c4cf1ed244e60221e12367f50ff676066b8e65 reproducible-1.0-src.jar.sha1 +bf93dd529253157352b87097d9d23eba8c9ca61a reproducible-1.0-src.tar.sha1 diff --git a/src/it/projects/reproducible/zip-content-775.txt b/src/it/projects/reproducible/zip-content-775.txt new file mode 100644 index 00000000..cb672762 --- /dev/null +++ b/src/it/projects/reproducible/zip-content-775.txt @@ -0,0 +1,25 @@ +40775 dir-A/ +40775 dir-C/ +40775 dir-b/ +40775 dir-b/B2/ +40775 dir-b/B4/ +40775 dir-b/b1/ +40775 dir-b/b3/ +40775 dir-d/ +100664 Uppercase.txt +100664 dir-A/A2.txt +100664 dir-A/A4.txt +100664 dir-A/a1.txt +100664 dir-A/a3.txt +100664 dir-C/C.txt +100664 dir-b/B2/B2.txt +100664 dir-b/B4/B4.txt +100664 dir-b/b.txt +100664 dir-b/b1/b1.txt +100664 dir-b/b3/b3.txt +100664 dir-d/d.txt +100775 executable.txt +100664 lowercase.txt +50116502c6107740c2a35ef296b5abda08c5dec7 reproducible-1.0-src.zip.sha1 +cc7e3a984179f63d6b37bc86c61e9cc461c62288 reproducible-1.0-src.jar.sha1 +3efc10ec9c3099ba061e58d5b2a935ba643da237 reproducible-1.0-src.tar.sha1 diff --git a/src/it/projects/reproducible/zip-content-win.txt b/src/it/projects/reproducible/zip-content-win.txt new file mode 100644 index 00000000..571758ce --- /dev/null +++ b/src/it/projects/reproducible/zip-content-win.txt @@ -0,0 +1,25 @@ +40755 dir-A/ +40755 dir-C/ +40755 dir-b/ +40755 dir-b/B2/ +40755 dir-b/B4/ +40755 dir-b/b1/ +40755 dir-b/b3/ +40755 dir-d/ +100644 Uppercase.txt +100644 dir-A/A2.txt +100644 dir-A/A4.txt +100644 dir-A/a1.txt +100644 dir-A/a3.txt +100644 dir-C/C.txt +100644 dir-b/B2/B2.txt +100644 dir-b/B4/B4.txt +100644 dir-b/b.txt +100644 dir-b/b1/b1.txt +100644 dir-b/b3/b3.txt +100644 dir-d/d.txt +100644 executable.txt +100644 lowercase.txt +cb1dc226d702733bfa405b7090b74ab7e77bf39e reproducible-1.0-src.zip.sha1 +3b31d88a36985f526fb3fe6ba5987387e4887f23 reproducible-1.0-src.jar.sha1 +b85f960069d6a444f928a87761b63fde60ea687d reproducible-1.0-src.tar.sha1