-
Notifications
You must be signed in to change notification settings - Fork 30
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
Reproducible builds #178
Comments
I really don't know where to start with this. I tried building the current code on Ubuntu and Windows, and there was a huge amount of differences in the .gblorb files, mostly in the blorb chunk headers and image chunks, oddly enough. I guess they may be using different versions of Also lots of differences in the iFiction chunk, although the text looks identical. Different encoding, apparently? Comparing only the ulx files, there are differences in six places, although I haven't counted the number of actual differing bytes. One difference is the header checksum, which makes sense, but the rest I have no idea about. It will take a better Glulx hacker than me to sort this out. Interestingly, many of the differences were only ±1. Do you have any idea what may be causing this? Again, I suppose they might be using different versions of the Inform 6 compiler, and different versions of the |
I suppose it might still be considered a reproducible build as long as you can make identical binaries on the same system. If so, it will be enough to make sure that the serial number is constant. That would have to be a script that changes it in the .inf file before the Inform6 compilation, or is there another way? Well, apart from changing the date on the build system. |
Thanks for looking into this. Even reproducible within one OS would be a good step. A shame that it's probably not possible between OSes. I started thinking about this because I had to rebuild the game in order to get a debug file, and thought it would be good if I could compile an exact replica of the official release. If the release process was documented (OS, post processing steps, etc?) that would be nice. You can override the serial number with
I'd probably include it but commented out, and then uncomment it just before tagging the release. |
There isn't a lot of release process, really. I just build it with the official Inform 7 IDE on macOS. Then I insert the startup precomputation data into the blorb with the There was a problem with the old I also committed you fixed-serial line. Feel free to make and push whatever changes (and new releases) you need. |
Ah, macOS means I won't be able to do it. Does the macOS IDE give you an option to enable debug file output like the Windows one does (using the |
As Andrew Plotkin mentions here, the Mac IDE will always use the It does always generate a I compared some more compiler output, this time between Mac and Ubuntu. The Ubuntu ulx file header contains the text But I also compared the autogenerated .inf files, and here there are differences in the order of certain constants. Mac:
Ubuntu:
This causes differences in many other places where these constants are used. Also the constants for first person plural and first person singular switches place between the versions. The rest is identical. In theory, this means that you might be able to reproduce the official build by changing those in the .inf file. Switch some constants around, replace Inform 6.33 with 6.34, re-write cBlorb to produce Mac-identical output on Ubuntu, and the build is reproducible. |
Could you please upload it next time you do a release?
Sounds so simple when you put it like that ;) |
It would be a little bit nice if you could check out a release tag and get a reproducible build. The serial number would need to be hard coded. Possibly more stuff too? I'm not sure if it's possible or if there's some stuff I7 does that means it's not reproducible.
The text was updated successfully, but these errors were encountered: