This adds a --enable-determinsm
configure flag, which if used, will enable additional compile / link time flags to make subsequent builds of bitcoind deterministic.
The first flag enabled is --no-insert-timestamp
. This prevents the linker from embedding timestamps, and makes consecutive builds of bitcoind.exe
deterministic. This will likely also be used for Guix Windows builds.
The option –no-insert-timestamp can be used to insert a zero value for the timestamp, this ensuring that binaries produced from identical sources will compare identically.
Diff of consecutive builds of master:
0--- bitcoind.exe.1
1+++ bitcoind.exe.2
2@@ -2,20 +2,20 @@
3 00000060: 7420 6265 2072 756e 2069 6e20 444f 5320 t be run in DOS
4 00000070: 6d6f 6465 2e0d 0d0a 2400 0000 0000 0000 mode....$.......
5-00000080: 5045 0000 6486 1400 57e8 445e 00da 6900 PE..d...W.D^..i.
6+00000080: 5045 0000 6486 1400 e3e9 445e 00da 6900 PE..d.....D^..i.
7 00000090: e015 0100 f000 2600 0b02 021f 00de 4900 ......&.......I.
8 000000a0: 00b0 5b00 008a 0000 e014 0000 0010 0000 ..[.............
9 000000b0: 0000 4000 0000 0000 0010 0000 0002 0000 ..@.............
10 000000c0: 0400 0000 0000 0000 0500 0200 0000 0000 ................
11-000000d0: 00f0 6a00 0006 0000 bd31 af00 0300 6001 ..j......1....`.
12+000000d0: 00f0 6a00 0006 0000 d434 af00 0300 6001 ..j......4....`.
13 000000e0: 0000 2000 0000 0000 0010 0000 0000 0000 .. .............
14@@ -373594,15 +373594,15 @@
15 005b35f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16-005b3600: 0000 0000 57e8 445e 0000 0000 7ce1 5b00 ....W.D^....|.[.
17+005b3600: 0000 0000 e2e9 445e 0000 0000 7ce1 5b00 ......D^....|.[.
18 005b3610: 0100 0000 2200 0000 2200 0000 28e0 5b00 ...."..."...(.[.