Skip to content

Conversation

Eng-Fouad
Copy link
Contributor

@Eng-Fouad Eng-Fouad commented Aug 31, 2025

This will help to generate reproducible jars: https://reproducible-builds.org/docs/archives/#file-permissions
Besides this PR: quarkusio/quarkus-fs-util#60

@reaver585
Copy link
Contributor

Should we also do something similar in io.quarkus.deployment.pkg.jar.ZipFileSystemArchiveCreator?

@Eng-Fouad
Copy link
Contributor Author

Eng-Fouad commented Aug 31, 2025

Should we also do something similar in io.quarkus.deployment.pkg.jar.ZipFileSystemArchiveCreator?

Done in quarkusio/quarkus-fs-util#60, as ZipFileSystemArchiveCreator uses io.quarkus.fs.util.ZipUtils.

@reaver585
Copy link
Contributor

Done in quarkusio/quarkus-fs-util#60, as ZipFileSystemArchiveCreator uses io.quarkus.fs.util.ZipUtils.

Awesome! Thanks a lot!

This comment has been minimized.

@gsmet
Copy link
Member

gsmet commented Sep 1, 2025

@Eng-Fouad what did you change in your second push?

@Eng-Fouad
Copy link
Contributor Author

@Eng-Fouad what did you change in your second push?

Just rebasing.

@gsmet
Copy link
Member

gsmet commented Sep 1, 2025

OK, there's no need if there's no conflict :)

Just to be sure, what happened before this patch if the original file was executable? Because I wouldn't want to change the semantic.

@Eng-Fouad
Copy link
Contributor Author

Eng-Fouad commented Sep 1, 2025

Just to be sure, what happened before this patch if the original file was executable? Because I wouldn't want to change the semantic.

I am afraid I don't get your question.

When I was trying to test Gradle 9 with building sample Quarkus project, Gradle 9 by default was generating same JARs with no diffs. However, when I set the option useFileSystemPermissions() (which preserves file/dir permissions in the archive when copying files from file system), Gradle 9 was generating different JARs. That's why I created this PR.

#49801 (comment)

This comment has been minimized.

@gsmet
Copy link
Member

gsmet commented Sep 1, 2025

@Eng-Fouad my question is: what happens if the initial file we add to the jar was executable for instance? Do we keep it executable, does it lose the executable bit? If the latter, was it the same before?

@Eng-Fouad
Copy link
Contributor Author

Eng-Fouad commented Sep 1, 2025

@Eng-Fouad my question is: what happens if the initial file we add to the jar was executable for instance? Do we keep it executable, does it lose the executable bit? If the latter, was it the same before?

You are right. It loses the executable bit (0644). This is similar to what Gradle 9 build uses: https://github.com/gradle/gradle/pull/33598/files#diff-2fffda3c2881663429643db15f69b38523cef65f9db53504de7b8c9ce71317c4R1017

@gsmet
Copy link
Member

gsmet commented Sep 2, 2025

Could you enable this only if the timestamp is set? This way we would only do it if people are asking for reproducible builds.

@Eng-Fouad Eng-Fouad force-pushed the fixed-zip-entry-perms branch from 3aff4c8 to 7b3ec91 Compare September 2, 2025 15:59
@Eng-Fouad
Copy link
Contributor Author

Could you enable this only if the timestamp is set? This way we would only do it if people are asking for reproducible builds.

Updated the PR.

This comment has been minimized.

@Eng-Fouad Eng-Fouad force-pushed the fixed-zip-entry-perms branch from 7b3ec91 to 9cc2b0f Compare September 12, 2025 16:24
@Eng-Fouad
Copy link
Contributor Author

Rebasing.

Copy link

quarkus-bot bot commented Sep 12, 2025

Status for workflow Quarkus CI

This is the status report for running Quarkus CI on commit 9cc2b0f.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.

You can consult the Develocity build scans.


Flaky tests - Develocity

⚙️ JVM Integration Tests - JDK 17 Windows

📦 integration-tests/oidc-client-wiremock

io.quarkus.it.keycloak.OidcClientTest.testEchoAndRefreshTokens - History

  • 1 expectation failed. Response body doesn't match expectation. Expected: "access_token_1" Actual: access_token_2 - java.lang.AssertionError
java.lang.AssertionError: 
1 expectation failed.
Response body doesn't match expectation.
Expected: "access_token_1"
  Actual: access_token_2

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)

Copy link
Member

@gsmet gsmet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great, thanks!

@gsmet gsmet merged commit 7a70229 into quarkusio:main Sep 16, 2025
57 checks passed
@quarkus-bot quarkus-bot bot added this to the 3.29 - main milestone Sep 16, 2025
@Eng-Fouad Eng-Fouad deleted the fixed-zip-entry-perms branch September 16, 2025 11:53
@gsmet gsmet modified the milestones: 3.29 - main, 3.28.0 Sep 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants