You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by st...@apache.org on 2026/09/06 14:10:00 UTC

(hadoop) 04/04: HADOOP-19976. Reproducible builds: maven-assembly-plugin 2.4 -> 3.8.0.

This is an automated email from the ASF dual-hosted git repository.

steveloughran pushed a commit to branch build/HADOOP-19976-reproducible
in repository https://gitbox.apache.org/repos/asf/hadoop.git

commit 03832dc324ec8f707243bbf560ccded2465639e7
Author: Steve Loughran <st...@apache.org>
AuthorDate: Sun Sep 6 14:13:10 2026 +0100

    HADOOP-19976. Reproducible builds: maven-assembly-plugin 2.4 -> 3.8.0.
    
    Inherit maven-assembly-plugin 3.8.0 from the ASF parent instead of
    pinning 2.4, which predates reproducible-build support. Under
    -Prepeatable the plugin now normalises tar entry timestamps, ownership
    and ordering, making hadoop-<version>-src.tar.gz byte-identical across
    builds.
    
    * Delete the 2.4 pin and its version-only pluginManagement entry.
    * timelineservice-hbase-server-2: wrap <descriptor> in <descriptors>.
      The singular form was removed in assembly 3.x and fails the build
      with "No assembly descriptors found".
    * hadoop-src.xml: exclude dependency-reduced-pom.xml, .idea, .claude
      and *.versionsBackup, and add the recursive form of the .settings
      exclude, which pruned only the directory entry and not its contents.
      Removes 479 untracked files from the source tarball.
    * .gitignore: ignore /.claude/.
    
    Binary tarball gains bcprov-jdk18on (test scope, hadoop-hdfs) and
    hadoop-annotations (provided scope, tools-dist and dynamometer-dist):
    assembly >= 3.7 admits non-runtime artifacts into a runtime
    dependencySet. Both are already in LICENSE-binary and duplicate jars
    that ship elsewhere at the same version, so this is redundancy rather
    than a version conflict.
    
    AI-Authored claude.ai
---
 .gitignore                                                     |  1 +
 hadoop-assemblies/src/main/resources/assemblies/hadoop-src.xml |  8 ++++++++
 .../hadoop-yarn-server-timelineservice-hbase-server-2/pom.xml  |  4 +++-
 pom.xml                                                        | 10 ++--------
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/.gitignore b/.gitignore
index 8e20dcd0ccd..bc01c391edf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,3 +62,4 @@ output.xml
 report.html
 
 .mvn/wrapper/maven-wrapper.jar
+/.claude/
diff --git a/hadoop-assemblies/src/main/resources/assemblies/hadoop-src.xml b/hadoop-assemblies/src/main/resources/assemblies/hadoop-src.xml
index 7895f4e5714..a1bc67c149d 100644
--- a/hadoop-assemblies/src/main/resources/assemblies/hadoop-src.xml
+++ b/hadoop-assemblies/src/main/resources/assemblies/hadoop-src.xml
@@ -43,6 +43,8 @@
       <excludes>
         <exclude>.git/**</exclude>
         <exclude>**/.gitignore</exclude>
+        <!-- written by the shade plugin into the module dir, not target/ -->
+        <exclude>**/dependency-reduced-pom.xml</exclude>
         <exclude>**/.svn</exclude>
         <exclude>**/*.iws</exclude>
         <exclude>**/*.ipr</exclude>
@@ -50,6 +52,12 @@
         <exclude>**/.classpath</exclude>
         <exclude>**/.project</exclude>
         <exclude>**/.settings</exclude>
+        <!-- the bare directory name above prunes only the entry, not its
+             contents, so each of these needs the recursive form -->
+        <exclude>**/.settings/**</exclude>
+        <exclude>**/.idea/**</exclude>
+        <exclude>**/.claude/**</exclude>
+        <exclude>**/*.versionsBackup</exclude>
         <exclude>**/target/**</exclude>
         <!-- until the code that does this is fixed -->
         <exclude>**/*.log</exclude>
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-server/hadoop-yarn-server-timelineservice-hbase-server-2/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-server/hadoop-yarn-server-timelineservice-hbase-server-2/pom.xml
index 03de52c14c5..2ddc0b3c007 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-server/hadoop-yarn-server-timelineservice-hbase-server-2/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-server/hadoop-yarn-server-timelineservice-hbase-server-2/pom.xml
@@ -201,7 +201,9 @@
                   <goal>single</goal>
                 </goals>
                 <configuration>
-                  <descriptor>src/assembly/coprocessor.xml</descriptor>
+                  <descriptors>
+                    <descriptor>src/assembly/coprocessor.xml</descriptor>
+                  </descriptors>
                   <attach>true</attach>
                 </configuration>
               </execution>
diff --git a/pom.xml b/pom.xml
index 147935fe0a7..8b373138d47 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,7 +117,6 @@ child.project.url.inherit.append.path="false">
     <maven-site-plugin.version>3.9.1</maven-site-plugin.version>
     <maven-stylus-skin.version>1.5</maven-stylus-skin.version>
     <maven-antrun-plugin.version>1.7</maven-antrun-plugin.version>
-    <maven-assembly-plugin.version>2.4</maven-assembly-plugin.version>
     <maven-dependency-plugin.version>3.8.1</maven-dependency-plugin.version>
     <maven-enforcer-plugin.version>3.5.0</maven-enforcer-plugin.version>
     <restrict-imports.enforcer.version>2.0.0</restrict-imports.enforcer.version>
@@ -166,8 +165,8 @@ child.project.url.inherit.append.path="false">
          java version its own enforcer execution requires -->
     <javaVersion>${javac.version}</javaVersion>
     <minimalMavenBuildVersion>${enforced.maven.version}</minimalMavenBuildVersion>
-    <!-- The parent's default of posix is rejected by maven-assembly-plugin 2.4;
-         gnu is valid in both and is what the dist descriptors already set. -->
+    <!-- What the dist descriptors already set; keeps tar headers unchanged
+         from the 2.4 output rather than switching to the parent's posix. -->
     <assembly.tarLongFileMode>gnu</assembly.tarLongFileMode>
 
     <!-- Fixed instant recorded in artifacts built with -Prepeatable; the
@@ -392,11 +391,6 @@ child.project.url.inherit.append.path="false">
             </execution>
           </executions>
         </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-assembly-plugin</artifactId>
-          <version>${maven-assembly-plugin.version}</version>
-        </plugin>
         <plugin>
           <groupId>org.apache.rat</groupId>
           <artifactId>apache-rat-plugin</artifactId>


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org