-
Notifications
You must be signed in to change notification settings - Fork 403
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
1.7.0: lv2 and vst3 shared libraries do not succeed in Arch reproducible build tooling checks #2389
Comments
Well first things first: We put build time, git hash, and build host into our binary. This is amazingly useful in our testing and bug reporting. Seems that's gonna break your check. But it looks like a lot of work to make surge meet the constraints in that website! |
wow so much of that output seems to be errors thrown from std::map destructors and stuff. Is there something about reproducibility and STL which is an easy first step? Why would those even be errors? |
Ouf, yes, that would explain a lot :D
This I can't answer you, but will try to find people and attach them to this ticket who will! :) |
I would really like the version and git hash to stay but you are right the timestamp and build host we could skip if needs be. You could do that with a variety of ways |
Okay, thanks! The version and git hash can stay I guess, as they should be immutable in a source tarball. |
yup! |
Hm, replacing |
AFAICS the major part of the inconsistency is ordering/sorting of the compiled in/referenced SVG data. |
It is autogenerated. There's a python script which generates it. It would be super easy to sort in that script. The script is Can you take a swing at hacking that into two parts (do the os.listdir into an array then sort it?) Are you seeing different orders in build/lintemp/ScalablePiggy.S between builds? |
Ah nice! I'll look into it tomorrow. Time to zzzz
No, but the final binaries have sorting issues with svg data. The diffoscope output is only about the final package data |
Right; so the svgs layout should be reflected by the set of includes in ScalablePiggy.S. If that list isn't sorted then indeed you will get build-to-build changes. But the overall size should be the same in any case so it would be a local change but it wouldn't push the rest of your dll around. I wonder if the link order is getting changed somehow between builds? Cmake should be deterministic but there are a couple of places where we use GLOB in the CMake (I know, I know) on linux. So the other thing you may want to try (using the theory that the glob gives non-reproducible ordering also) is to replace the LINUX_VSTGUI_GLOB and SURGE_VST3_GLOB with a hand typed list of those files. Or at least, after the glob, do a sort (that is, do a |
Hm, seems it'll take me until next week as I'm off the weekend. I'll definitely look into that. |
Python3 is fine. The script is pretty Straightforward. 3.6 vs earlier 3 unsure. We build back to ubuntu 16 so that may be 3.5? I’m not really on irc; the surge irc bridged to our slack but I guess that is not running anymore. GitHub or slack best. Enjoy your weekend! |
@baconpaul Is this still an issue? Good to close? |
It is still true but I certainly don’t plan on working on it ever! And think it would be very very hard to achieve. So I suggest we close it unless someone from the arch community decides to make it a priority and wants to invest in fixing it. |
I didn't check with the typical repro tooling, but successive builds on the same build environment yield the same checksum if I'm not that good with CMake but in bash I'd do
the build hash could then maybe be generated from these variables so it doesn't change for a fixed SOURCE_DATE_EPOCH. |
Oh neat. Still happy to merge a change which does what you need and is tested as long as it passes our ci! |
Describe the bug
Hi! When building a package for 1.7.0 on Arch Linux I ran our reproducible builds tooling against the resulting package.
Unfortunately the built shared libraries for the lv2 and vst3 plugins are not reproducible.
The diffoscope log is very big and I couldn't attach it to this ticket. I've uploaded it here.
Please let us know your surge version
This information is all in the menu/about screen
To Reproduce
This is roughly what happens when building the package:
Afterwards I try to reproduce the resulting package:
The tool will build a reproducer package and compare it to the initial package using diffoscope (link to log above).
Expected behavior
Running
repro
against the package returns a reproducer package for which diffoscope returns an empty log (package is reproducible).Screenshots
n/a
Desktop (please complete the following information):
Additional context
It seems that surge is not bit reproducible (the binary content differs after build).
The text was updated successfully, but these errors were encountered: