See issue #587
Removes -fstack-protector in Windows to make executable work, and makes bitcoin-qt build deterministic
The SHA of bitcoin-qt.exe after gitian build is: 4095613a82116949b72a30cee579ded07236d382acc7db6da91b96b9f9e2abf6
It would be nice to get a deterministic build of qt too, but I'd say if just bitcoin is deterministic building from the same qt, someone do a qt build and release that for everyone to use for 0.5.
I didn't know that the qt build was not deterministic yet. I'll give it a try.
I just cherry-picked all but the last commit.
I had some hex-editor fun and found out that the qt build-nondeterminism is caused by some process adding random (too far apart to be timestamps) 8-character hex codes before function names:
-00054760 31 36 37 42 37 41 37 38 31 30 50 72 6f 63 65 73 |167B7A7810Proces|
+00054760 45 41 42 45 39 45 33 44 31 30 50 72 6f 63 65 73 |EABE9E3D10Proces|
-000547b0 30 30 5f 31 36 37 42 37 41 37 38 31 30 50 72 6f |00_167B7A7810Pro|
+000547b0 30 30 5f 45 41 42 45 39 45 33 44 31 30 50 72 6f |00_EABE9E3D10Pro|
I suspect this is the MOC compiler. On the other hand, bitcoin itself uses the moc and uic as well but manages to be deterministic. Maybe the non-determinism is only in debug symbols which are stripped for the release .exe. I'll try stripping the .a files.
Nice detective work! Quick update from me: my house still has no power, so I'm working from my gitian-capable laptop; I'm fetching/compiling dependencies now for the win32 gitian build. I made lots of progress on a Mac build, but all of that work is sitting on my main machine in my powerless house...