-
Notifications
You must be signed in to change notification settings - Fork 19
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
[Automatic Releases] Skip non user facing weekly releases #338
Comments
I have a hard time finding a way to check if the produced binaries are equal to the previous ones or not. The problem is, that the link binaries If someone could help me get reproducible builds going with gcc, I would be grateful. |
I found a way that seems to work for the strip burrito_link_old.exe
strip burrito_link_new.exe
diff burrito_link_old.exe burrito_link_new.exe
strip d3d11_old.dll
strip d3d11_new.dll
diff d3d11_old.dll d3d11_new.dll This seems to work. We dont want to Hopefully we wont have to deal with this much, but if non-reproducible builds become a problem then we can come up with another solutions. Such as a list of file globs to explicitly ignore, then we hash the input files instead of the output files. It has it's own drawbacks of course, such as if we have different comments inside of a source file or something. (Technically you dont need to |
Thank you for your help, but I get different results with your PR (or I misunderstand something). Your PR was built twice by the current CI workflow, so I have two artifacts to compare (first run second run) If I compare the binaries as they are the
If I
|
It looks like
Maybe SUSE's binutils is not configured with enable-deterministic-archives and ubuntu's is?
|
Why would you want to strip debug symbols at this stage? Surely the size isn't too large? Is there some timestamped debug data preventing deterministic build?
Considering Debian does overrides, this is the most likely case. I've never looked for SUSE sources, so that's something to be further checked. Related Debian issue about reproducibility and their behavior change for default determinism: https://salsa.debian.org/reproducible-builds/strip-nondeterminism/-/issues/3 Ubuntu seems to be cited as doing the same by default for a while, but I can't immediately find the code to prove it: zephyrproject-rtos/sdk-ng#81 (comment) |
Indeed SUSE seems to bee the odd one here. |
We don't want to strip them for a public release, we might want to strip them for diffing though because of things like timestamps and random numbers. I am not totally clear on what or why these exist, only that stripping them yielded better diffing accuracy.
That's amazing. Something tells me we want to merge them in slowly so that we can confirm things are working in production the way we want them to work. Also a heads up that we changed a lot of the build workflows in xml_converter #56. Having a pr open like this for so long is not ideal, and had I known some things ahead of time I would have planned it out differently. |
@Masgalor maybe this is of interest for your local testing https://github.com/nektos/act |
As brought up in #328 we may have times where we do have new commits, but these commits dont actually change the delivered binaries to users. Cutting a new release when the artifacts in that release are no different from the artifacts in the previous release is undesirable.
Once the weekly build is done, it should compare the build files to the previous weekly's build files. If the files are the same then it skips cutting a new release and instead exits early.
In order to prevent undoing the work of #336, we should somehow indicate that the most recent commit was built, but that there were no changes, and therefore no new tags were added and no new release were created.
A simple solution may be a floating tag that indicates which commit was the most recently built by the release process. Then the workflow checks for that tag instead of just for a release tag when deciding if there are new commits.
The text was updated successfully, but these errors were encountered: