New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
extension-maven-plugin does not support reproducible builds #38364
Comments
/cc @quarkusio/devtools (maven) |
+1 on removing timestamp in outputs wherever we can but I'm afraid this won't be enough afaik. See #676 of the remaining issues I think you will bump into. Some of these might already be fixed and if someone contributes PRs to improve the situation we definitely are very open to get this improved. Cc @mariofusco |
#38365 fixes the extension metadata but not the |
Thanks, @aloubyansky |
The javadoc one is fixed as well |
My bad. I only rebuilt the extension plugin when verifying the fix and forgot to rebuild the core as well. |
Describe the bug
We need to make OptaPlanner builds reproducible. OptaPlanner has a few Quarkus extension modules that are built using the Quarkus
extension-maven-plugin
. This plugin produces several properties that contain timestamps. This goes against the requirement for the JARs to be identical bit by bit.The binary and the sources JAR artifacts of the
optaplanner-quarkus
extension are affected:When I extract the archives and run a diff, I can see the timestamp difference in
quarkus-extension.properties
andquarkus-javadoc.properties
files inside the binary JAR:and also some
.jdp
properties files inside the sources JAR:I haven't found where the
.jdp
and-javadoc.properties
files come from, but thequarkus-extension.properties
file is produce byextension-maven-plugin
here:quarkus/independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java
Line 393 in b7159fc
Expected behavior
In order to support reproducible builds of user Quarkus extensions, the
extension-maven-plugin
should avoid storing timestamps in any of the three types of properties files:META-INF/quarkus-extension.properties
,META-INF/quarkus-javadoc.properties
,com/example/myproject/MyExtensionConfig.jdp
.Actual behavior
Timestamps are present in the properties files mentioned above.
How to Reproduce?
I can prepare a minimal reproducer (a toy Quarkus extension project) upon request.
Output of
uname -a
orver
No response
Output of
java -version
No response
Quarkus version or git rev
No response
Build tool (ie. output of
mvnw --version
orgradlew --version
)No response
Additional information
See https://reproducible-builds.org/ why reproducible builds are important and why it is a good idea to support them in any kind of open-source project, including Quarkus extensions.
The text was updated successfully, but these errors were encountered: