-
-
Notifications
You must be signed in to change notification settings - Fork 85
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
Dependency metadata depends on Maven profile #432
Comments
reproducibility of build does not mean that you can rebuild in any condition and still get the same result: result depends on what you are running |
I see this as a little incoherence in the way Maven builds the model of dependencies:
Probably I should discuss this problem on I agree that Maven profiles might just be considered as part of the environment that influences the result of the build, but I would prefer SBOMs to be independent of this variable. |
yes, because cyclonedx-maven-plugin won't be able to change anything at that level
can you explain what is you problem on |
Older versions of Therefore the metadata of |
any pointer to a concrete SBOM, please? |
Our latest SBOM is affected: (look at the If I run |
thanks for the example: I'll have a precise look but the fact that the rebuild check requires a profile to get the same output as the reference is not a problem to me: Reproducible Builds is not expected to make the build insensitive to many aspects of the build environment and command line. The build specification is precise enough. Another way to say it is also that not getting the same output does not mean that the output is inherently "wrong" or "bad": it's just different from the reference (as if you built with a newer JDK, for example, which would bring many additional differences at bytecode level) |
I can see where @ppkarwasz is coming from: canonical input hasn't changed, why would the output? That said, I agree with @hboutemy's assessment. I think it practically boils down to "Do you want to get the same output? Provide the same input in the same manner then!". @ppkarwasz and I spent significant time (mostly wasted on |
I posted a question on @vy, @hboutemy: I agree that in order to reproduce the artifacts the user should run |
I'm happy that you tried the "making reproducible builds platform-independent" path and went to the conclusion that it is not worth the effort: that's my conclusion too I suppose you saw that recent releases of log4j2 have been successfully independently rebuilt and compared against the reference build on Maven Central: https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/org/apache/logging/log4j/log4j/README.md this proves that they are Reproducible and the consequence is that if someone rebuilds and gets a different result, the culprit is not the software but the rebuilder, who was not able to do what many other people can do |
No, I didn't check Should we also publish some form of |
no, this is not an official format but just my own reproducible-central internal format
perhaps this one would be a good target, even if I read the description as a recording of how the build was done, not a definition of how to rebuild (which may not be exactly the same) notice that given CycloneDX is not so much about reproducible builds, the rebuild spec is not really a topic yet here |
The metadata of dependencies in the generated SBOM might depend on the Maven profile under which the
cyclonedx-maven-plugin
runs, which is a problem for the reproducibility of builds.A minimal example where:
and
give different results is this:
The
commons-pool
artifact has a non-emptydistributionManagement
element in therelease
profile, but an empty one in the default profile.The text was updated successfully, but these errors were encountered: