Hi Piotr, I can't find any official documentation from Microsoft, whether they support .net reproducibility between different platforms. We just set <Deterministic>true</Deterministic> and specify a PathMap in our project file. This is (on modern SDKs) all you have to do and all you can do ;-)
Regards. Jan Thursday, September 12, 2024, 10:31:48 PM, you wrote: > Hi Jan, > On Thu, 12 Sept 2024 at 20:54, Jan Friedrich <freeand...@apache.org> wrote: > I verified: > * the hashes of the distribution archives, > * the signatures on the distribution archives, > * I built Log4Net using the Docker script, > * I ran the unit tests successfully. > +1, release the artifacts > Note regarding reproducibility: I rebuilt the Docker image twice, by > taking care to purge the caches after each time (docker builder > purge). > The images were obviously different, but the generated binary files > were identical. > Comparing the local binaries with those in the binary distribution I > have the Diffoscope output below. > I am wondering why the image built on Linux and the image built on > Windows do have a different time stamp in the header. > The timestamp on Linux is reproducible between builds. > --- apache-log4net-binaries-3.0.0/netstandard2.0/log4net.dll > +++ Release/netstandard2.0/log4net.dll > ├── pedump {} > │ @@ -1,25 +1,25 @@ > │ > │ COFF Header: > │ Machine: 0x014c > │ Sections: 0x0003 > │ - Time stamp: 0xfcdb425c > │ + Time stamp: 0xb4cea035 > │ Pointer to Symbol Table: 0x00000000 > │ Symbol Count: 0x00000000 > │ Optional Header Size: 0x00e0 > │ Characteristics: 0x2022 > │ > │ PE Header: > │ Magic (0x010b): 0x010b > │ LMajor (6): 0x30 > │ LMinor (0): 0x00 > │ Code Size: 0x00043000 > │ Initialized Data Size: 0x00002000 > │ Uninitialized Data Size: 0x00000000 > │ - Entry Point RVA: 0x00044842 > │ + Entry Point RVA: 0x00044836 > │ Code Base RVA: 0x00002000 > │ Data Base RVA: 0x00046000 > │ > │ > │ NT Header: > │ Image Base (0x400000): 0x11000000 > │ Section Alignment (8192): 0x00002000 > │ @@ -29,27 +29,27 @@ > │ User Major (0): 0x0000 > │ User Minor (0): 0x0000 > │ Subsys major (4): 0x0004 > │ Subsys minor (0): 0x0000 > │ Reserverd: 0x00000000 > │ Image Size: 0x0004a000 > │ Header Size: 0x00001000 > │ - Checksum (0): 0x0004ec1d > │ + Checksum (0): 0x0004833b > │ Subsystem: 0x0003 > │ DLL Flags (0): 0x8560 > │ Stack Reserve Size (1M): 0x00100000 > │ Stack commit Size (4096): 0x00001000 > │ Heap Reserve Size (1M): 0x00100000 > │ Heap Commit Size (4096): 0x00001000 > │ Loader flags (0x1): 0x00000000 > │ Data Directories (16): 0x00000010 > │ > │ Data directories: > │ Export Table: 0x00000000 [0x00000000] > │ - Import Table: 0x000447f0 [0x0000004f] > │ + Import Table: 0x000447e3 [0x0000004f] > │ Resource Table: 0x00046000 [0x000004c0] > │ Exception Table: 0x00000000 [0x00000000] > │ Certificate Table: 0x00000000 [0x00000000] > │ Reloc Table: 0x00048000 [0x0000000c] > │ Debug: 0x0004470c [0x00000054] > │ Copyright: 0x00000000 [0x00000000] > │ Global Ptr: 0x00000000 [0x00000000] > │ @@ -57,15 +57,15 @@ > │ Load Config Table: 0x00000000 [0x00000000] > │ Bound Import: 0x00000000 [0x00000000] > │ IAT: 0x00002000 [0x00000008] > │ Delay Import Desc: 0x00000000 [0x00000000] > │ CLI Header: 0x00002008 [0x00000048] > │ > │ Name: .text > │ - Virtual Size: 0x00042848 > │ + Virtual Size: 0x0004283c > │ Virtual Address: 0x00002000 > │ Raw Data Size: 0x00043000 > │ Raw Data Ptr: 0x00001000 > │ Reloc Ptr: 0x00000000 > │ LineNo Ptr: 0x00000000 > │ Reloc Count: 0x0000 > │ Line Count: 0x0000 > │ @@ -101,22 +101,22 @@ > │ Resources at: 0x00000000 [0x00000000] > │ Strong Name at: 0x0004468c [0x00000080] > │ Code Manager at: 0x00000000 [0x00000000] > │ VTableFixups at: 0x00000000 [0x00000000] > │ EAT jumps at: 0x00000000 [0x00000000] > │ > │ Strong name: > │ - A0 3E 62 DE 46 49 E0 6D 82 34 82 29 12 86 FA 07 > │ - 80 48 B8 39 3A E1 D7 8D CB 46 D8 57 66 9F 72 50 > │ - 2B 5C 19 73 DA 90 76 0F 57 C1 D0 EA E6 A9 D9 E4 > │ - 12 7E 78 4C F0 93 83 F1 0E 21 1F 17 C1 B9 56 B2 > │ - B5 64 C0 AA 50 3F 6E 62 03 07 0D D2 89 FE D4 44 > │ - 25 AB A6 B3 7D C2 AE 0F 6B E5 E0 4A 28 62 C8 CD > │ - 78 BC 42 7C 6B 71 4A 8A E9 57 B4 96 41 50 46 2B > │ - 2E 94 95 FF 92 17 E2 92 65 92 64 C8 3A E9 9B 32 > │ + C4 F4 DE 7B DE D3 7D 37 80 17 ED 01 5B 3D A5 3A > │ + F8 B3 6B 87 09 64 6E EE D4 E1 ED 31 6F 9C 80 C8 > │ + AA BC C1 37 92 46 1F C2 75 B7 31 4B 45 05 72 0C > │ + 40 3E 39 00 18 17 A9 49 A9 2B 59 FE 11 68 83 6A > │ + E3 4F F1 A4 EA BB EE EE 4A E5 B6 FD 5D CB D5 70 > │ + 5C 61 55 11 C9 CC 88 02 D2 6C 5F 1D 4F 42 03 57 > │ + 80 CB 87 D5 1D 7F 8F 2F 9F A1 E8 7F 95 DE 49 CC > │ + EC 20 8D 46 9D EC 2D 5F DE ED 2C 84 C9 1D 41 B3 > │ > │ Public key: > │ 00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 > │ 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 > │ 29 7D CA C9 08 E2 86 89 36 03 99 02 7B 0E A4 CD > │ 85 2F BB 74 E1 ED 95 E6 95 A5 BA 55 CB D1 D0 75 > │ EC 20 CD B5 FA 6F C5 93 D3 D5 71 52 7B 20 55 8D