slachiewicz opened a new issue, #12778:
URL: https://github.com/apache/maven/issues/12778

   The binary distribution tar for the 3.9.x line contains `lib/jansi-native/` 
twice as a directory entry. It is the only duplicated path in the archive; no 
file entry is duplicated.
   
   ```
   $ tar tvzf apache-maven-3.9.16-bin.tar.gz | grep -n 'jansi-native/$'
   31:drwxr-xr-x  0 root root  0 May 13 23:36 
apache-maven-3.9.16/lib/jansi-native/
   53:drwxr-xr-x  0 root root  0 May 13 23:36 
apache-maven-3.9.16/lib/jansi-native/
   ```
   
   Two fileSets in `apache-maven/src/main/assembly/component.xml` both 
materialise that directory:
   
   - the native-library fileSet, 
`target/dependency/org/fusesource/jansi/internal/native` → `lib/jansi-native`, 
whose `<include>**</include>` matches directories as well as files;
   - the `src/lib` → `lib` fileSet, which carries 
`apache-maven/src/lib/jansi-native/README.txt`.
   
   The `**` include arrived with MNG-7254 (8c66edc); before that the fileSet 
did not exist.
   
   ### Where it shows up
   
   Consumers that unpack the distribution and reject duplicate archive paths 
cannot read it. provisio 2.0.0 added such a check, and apache/maven-mvnd#1694 
fails on it:
   
   ```
   java.io.IOException: Duplicate archive output path lib/jansi-native in
     
~/.m2/repository/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.tar.gz
   ```
   
   That blocks mvnd's `mvnd-1.x` branch from moving to provisio 2.0.0 at all, 
since every released 3.9.x and 3.8.x artifact carries the duplicate.
   
   ### Scope
   
   Present in 3.8.8, 3.9.9 and 3.9.16 — the earliest and latest I checked on 
those lines. Not present in 3.10.0-rc-1 or 4.0.0-rc-6: both have zero duplicate 
entries.
   
   3.10.x is already correct, but by accident. The JLine migration (70d934d) 
replaced `<include>**</include>` with explicit `**/*.so`, `**/*.jnilib`, 
`**/*.dll` patterns, which match only files, so the fileSet no longer 
contributes a directory entry.
   
   ### Fix
   
   Apply the same include list on 3.9.x. It is lossless: every native file 
jansi 2.4.3 ships under `internal/native` is a `.so` (9), `.jnilib` (3) or 
`.dll` (3), so nothing currently packaged stops being packaged.
   
   Older released artifacts keep the duplicate; nothing can be done about 
those. The fix only makes future 3.9.x releases readable by strict consumers.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to