[ 
https://issues.apache.org/jira/browse/MASSEMBLY-941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17684479#comment-17684479
 ] 

Christopher Tubbs commented on MASSEMBLY-941:
---------------------------------------------

{quote}
FYI, here is an example of different build results: by default, my local env 
has umask 002, but reference build was done with umask 022 => I had to add the 
umask requirement to rebuild with success the affected artifact 
https://github.com/jvm-repo-rebuild/reproducible-central/commit/626485c96d069fea2107a8162e8f388b358ebb67
{quote}

Thanks for the link, and the explanation. I think that helps clarify a lot of 
the questions I had about how users might be impacted by this. In my mind, I 
was thinking it would only matter if unpacking a source tarball (which could be 
set to preserve permissions and ignore umask), but your example shows that 
another use case is checking out a git branch with umask set. Unfortunately, 
git doesn't have an option to ignore umask and use the permissions stored in 
the repository. Besides that, it only stores either 644 or 755 and can't 
express anything else either.

Many users have suggested workarounds for git at 
https://stackoverflow.com/questions/11574271/git-change-default-umask-when-update-file

As for Windows, I don't even know how one deals with filesystems that can't 
understand executable flags... that's just so foreign to me. I don't think 
there's any good solution for Windows. I think you did the best you could for 
that... I think if projects needs to use Windows, they really need to configure 
the assembly descriptor with permissions for each file, explicitly.

{quote}
once this new maven-assembly-plugin will be released, such cases will happen 
more often: I had hoped to avoid this rebuild env prerequisite...
{quote}

Unfortunately, it doesn't seem to be avoidable. But, maybe pointing users to 
some of the suggestions on the StackOverflow link above for git users might 
help. Or just, encouraging more standard use of {{0022}} for everybody. I can't 
imagine too many cases where {{0002}} is preferable.

> file permissions removed during assembly:single since 3.2.0
> -----------------------------------------------------------
>
>                 Key: MASSEMBLY-941
>                 URL: https://issues.apache.org/jira/browse/MASSEMBLY-941
>             Project: Maven Assembly Plugin
>          Issue Type: Bug
>          Components: permissions
>    Affects Versions: 3.2.0, 3.3.0
>            Reporter: Christopher Tubbs
>            Assignee: Herve Boutemy
>            Priority: Critical
>             Fix For: next-release
>
>
> Since MASSEMBLY-921 in 3.2.0, existing file permissions seem to be ignored 
> when creating a tarball assembly, and files stored in the assembly do not 
> have their original file permissions preserved.
> Using version 3.1.1 of this plugin and earlier, when creating a tar.gz, 
> existing file permissions are normally preserved. This is now broken in 
> 3.2.0, unless the component descriptor explicitly sets the fileModes.
> This was discovered trying to prepare a release candidate for Apache Accumulo 
> using the apache-23.pom parent POM's predefined `source-release-tar` 
> descriptor using the `single` goal. We noticed that the resulting 
> source-release tarball had stripped all the executable permissions from our 
> scripts, instead of preserving them. This makes the resulting source release 
> more difficult to build from source.
> A source-release assembly, and any other assembly that does not specify the 
> file permissions explicitly, should preserve the existing file permissions, 
> just as it used to with 3.1.1 and earlier.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to