Opened 3 years ago

Last modified 17 months ago

#10942 assigned task

Deterministic builds for Instantbird

Reported by: sukhbir Owned by: boklm
Priority: Medium Milestone:
Component: Applications/Tor Messenger Version:
Severity: Normal Keywords:
Cc: gk, arlolra, erinn Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

Deterministic builds for TBB was a major undertaking. This should not be any different for Instantbird but we should leverage the work already done.

Child Tickets

Change History (14)

comment:1 Changed 3 years ago by gk

  • Cc gk added

comment:2 Changed 2 years ago by arlolra

  • Cc arlolra added

comment:3 Changed 18 months ago by boklm

  • Owner set to boklm
  • Status changed from new to assigned

comment:4 follow-ups: Changed 17 months ago by boklm

  • Severity set to Normal

Some progress on this: the Linux builds are now reproducible, at least when built by two users on the same machine. We now need to try the build on a different machine to check that it also produce the same binaries, and look at the Windows and OSX builds.

comment:5 in reply to: ↑ 4 ; follow-up: Changed 17 months ago by gk

Replying to boklm:

Some progress on this: the Linux builds are now reproducible, at least when built by two users on the same machine. We now need to try the build on a different machine to check that it also produce the same binaries, and look at the Windows and OSX builds.

How is this done? I don't want to end up having different systems we need to maintain given our restricted resources we have. It does not make sense that each sub project reinvents the wheel.

comment:6 in reply to: ↑ 5 Changed 17 months ago by gk

Replying to gk:

Replying to boklm:

Some progress on this: the Linux builds are now reproducible, at least when built by two users on the same machine. We now need to try the build on a different machine to check that it also produce the same binaries, and look at the Windows and OSX builds.

How is this done? I don't want to end up having different systems we need to maintain given our restricted resources we have. It does not make sense that each sub project reinvents the wheel.

We now have #17379 for thinking about having just one tool for our reproducible builds.

comment:7 in reply to: ↑ 4 Changed 17 months ago by gk

Replying to boklm:

Some progress on this: the Linux builds are now reproducible, at least when built by two users on the same machine. We now need to try the build on a different machine to check that it also produce the same binaries,

If you could past instructions here I'd be happy trying to match your build on my build infrastructure.

comment:9 Changed 17 months ago by boklm

Yes, the instructions in this README file should be correct.

I'm planning to push a few important changes today, so it's better to try to match a build after that (but you can already run a "make submodule-update && make fetch" to clone all repositories). I will post a comment when it's done.

comment:10 Changed 17 months ago by boklm

If you want to try to match a build, using commit 87b47d1d805194b1042b160880f69b12b8237803, running "make tor-messenger-linux-x86_64", I get the following file:

c7d63d5367045cd377f257cbec2d6a90e14fabf2d492f4972838debc3515a8f4  out/tor-messenger/unnamed-messenger-0.1.0b1-linux-x86_64-8b1071.tar.xz

I am now building the other architectures.

comment:11 Changed 17 months ago by sukhbir

From my build, on the same machine:

c7d63d5367045cd377f257cbec2d6a90e14fabf2d492f4972838debc3515a8f4  unnamed-messenger-0.1.0b1-linux-x86_64-8b1071.tar.xz

I will try on a different machine soon.

comment:12 Changed 17 months ago by boklm

After building on different machines, the linux builds (i686 and x86_64) are matching.

The OSX and Windows builds are not matching.

On OSX, after extracting the dmg files, the only difference is libotr.5.dylib. With differences like this:

--- build1/um/Contents/Resources/extensions/ctypes-otr@tormessenger/chrome/content/libotr.5.dylib
+++ build2/um/Contents/Resources/extensions/ctypes-otr@tormessenger/chrome/content/libotr.5.dylib
│ @@ -46091,15 +46091,15 @@
│  000b40a0: 1010 1010 1010 1010 1010 1010 1010 1010  ................
│  000b40b0: 1010 1010 1010 1010 1010 1010 1010 1010  ................
│  000b40c0: 1010 1010 1010 1010 1010 1010 1010 1010  ................
│  000b40d0: 2010 10d0 01d0 01b0 01b0 0110 2010 1010   ........... ...
│  000b40e0: 1010 10b0 0110 d001 30a0 0100 0000 0000  ........0.......
│  000b40f0: 0200 0000 6400 0000 0000 0000 0000 0000  ....d...........
│  000b4100: 2300 0000 6400 0000 0000 0000 0000 0000  #...d...........
│ -000b4110: 2d00 0000 6603 0100 7a91 2956 0000 0000  -...f...z.)V....
│ +000b4110: 2d00 0000 6603 0100 ece9 2a56 0000 0000  -...f.....*V....
│  000b4120: 0100 0000 2e01 0000 000d 0000 0000 0000  ................
│  000b4130: 5d00 0000 2401 0000 000d 0000 0000 0000  ]...$...........
│  000b4140: 0100 0000 2400 0000 e000 0000 0000 0000  ....$...........
│  000b4150: 0100 0000 4e01 0000 e000 0000 0000 0000  ....N...........
│  000b4160: 0100 0000 2e01 0000 e00d 0000 0000 0000  ................
│  000b4170: 7900 0000 2401 0000 e00d 0000 0000 0000  y...$...........
│  000b4180: 0100 0000 2400 0000 c000 0000 0000 0000  ....$...........
│ @@ -46192,15 +46192,15 @@
│  000b46f0: 0100 0000 2e01 0000 8029 0000 0000 0000  .........)......
│  000b4700: 1a03 0000 2401 0000 8029 0000 0000 0000  ....$....)......
│  000b4710: 0100 0000 2400 0000 9700 0000 0000 0000  ....$...........
│  000b4720: 0100 0000 4e01 0000 9700 0000 0000 0000  ....N...........
│  000b4730: 0100 0000 6401 0000 0000 0000 0000 0000  ....d...........
│  000b4740: 0200 0000 6400 0000 0000 0000 0000 0000  ....d...........
│  000b4750: 2603 0000 6400 0000 0000 0000 0000 0000  &...d...........
│ -000b4760: 3003 0000 6603 0100 7a91 2956 0000 0000  0...f...z.)V....
│ +000b4760: 3003 0000 6603 0100 ece9 2a56 0000 0000  0...f.....*V....
│  000b4770: 0100 0000 2e01 0000 202a 0000 0000 0000  ........ *......
│  000b4780: 6003 0000 2401 0000 202a 0000 0000 0000  `...$... *......
│  000b4790: 0100 0000 2400 0000 6000 0000 0000 0000  ....$...`.......
│  000b47a0: 0100 0000 4e01 0000 6000 0000 0000 0000  ....N...`.......
│  000b47b0: 0100 0000 2e01 0000 802a 0000 0000 0000  .........*......
│  000b47c0: 8303 0000 2401 0000 802a 0000 0000 0000  ....$....*......
│  000b47d0: 0100 0000 2400 0000 2001 0000 0000 0000  ....$... .......
│ @@ -46244,15 +46244,15 @@
│  000b4a30: 0100 0000 2e01 0000 9036 0000 0000 0000  .........6......
│  000b4a40: af04 0000 2401 0000 9036 0000 0000 0000  ....$....6......
│  000b4a50: 0100 0000 2400 0000 d600 0000 0000 0000  ....$...........
│  000b4a60: 0100 0000 4e01 0000 d600 0000 0000 0000  ....N...........
│  000b4a70: 0100 0000 6401 0000 0000 0000 0000 0000  ....d...........
│  000b4a80: 0200 0000 6400 0000 0000 0000 0000 0000  ....d...........
│  000b4a90: c804 0000 6400 0000 0000 0000 0000 0000  ....d...........
│ -000b4aa0: d004 0000 6603 0100 7a91 2956 0000 0000  ....f...z.)V....
│ +000b4aa0: d004 0000 6603 0100 ece9 2a56 0000 0000  ....f.....*V....
│  000b4ab0: 0100 0000 2e01 0000 7037 0000 0000 0000  ........p7......
│  000b4ac0: fe04 0000 2401 0000 7037 0000 0000 0000  ....$...p7......
│  000b4ad0: 0100 0000 2400 0000 b000 0000 0000 0000  ....$...........
│  000b4ae0: 0100 0000 4e01 0000 b000 0000 0000 0000  ....N...........
│  000b4af0: 0100 0000 2e01 0000 2038 0000 0000 0000  ........ 8......
│  000b4b00: 0905 0000 2401 0000 2038 0000 0000 0000  ....$... 8......
│  000b4b10: 0100 0000 2400 0000 4000 0000 0000 0000  ....$...@.......
│ @@ -46309,15 +46309,15 @@
│  000b4e40: 6206 0000 2401 0000 7054 0000 0000 0000  b...$...pT......
│  000b4e50: 0100 0000 2400 0000 5d01 0000 0000 0000  ....$...].......
│  000b4e60: 0100 0000 4e01 0000 5d01 0000 0000 0000  ....N...].......
│  000b4e70: 6f06 0000 2000 0000 0000 0000 0000 0000  o... ...........
│  000b4e80: 0100 0000 6401 0000 0000 0000 0000 0000  ....d...........
│  000b4e90: 0200 0000 6400 0000 0000 0000 0000 0000  ....d...........
│  000b4ea0: 8106 0000 6400 0000 0000 0000 0000 0000  ....d...........
│ -000b4eb0: 8706 0000 6603 0100 7a91 2956 0000 0000  ....f...z.)V....
│ +000b4eb0: 8706 0000 6603 0100 ece9 2a56 0000 0000  ....f.....*V....
│  000b4ec0: 0100 0000 2e01 0000 d055 0000 0000 0000  .........U......
│  000b4ed0: b306 0000 2401 0000 d055 0000 0000 0000  ....$....U......
│  000b4ee0: 0100 0000 2400 0000 1001 0000 0000 0000  ....$...........
│  000b4ef0: 0100 0000 4e01 0000 1001 0000 0000 0000  ....N...........
│  000b4f00: 0100 0000 2e01 0000 e056 0000 0000 0000  .........V......
│  000b4f10: c706 0000 2401 0000 e056 0000 0000 0000  ....$....V......
│  000b4f20: 0100 0000 2400 0000 8001 0000 0000 0000  ....$...........

...

On the Windows builds, after extracting the installer files, some instantbird files are different:

Binary files winbuild1/$_OUTDIR/Messenger/components/trayToolkit.dll and winbuild2/$_OUTDIR/Messenger/components/trayToolkit.dll differ
Binary files winbuild1/$_OUTDIR/Messenger/instantbird.exe and winbuild2/$_OUTDIR/Messenger/instantbird.exe differ
Binary files winbuild1/$_OUTDIR/Messenger/libEGL.dll and winbuild2/$_OUTDIR/Messenger/libEGL.dll differ
Binary files winbuild1/$_OUTDIR/Messenger/libGLESv2.dll and winbuild2/$_OUTDIR/Messenger/libGLESv2.dll differ
Binary files winbuild1/$_OUTDIR/Messenger/mozglue.dll and winbuild2/$_OUTDIR/Messenger/mozglue.dll differ
Binary files winbuild1/$_OUTDIR/Messenger/plugin-container.exe and winbuild2/$_OUTDIR/Messenger/plugin-container.exe differ
Binary files winbuild1/$_OUTDIR/Messenger/xul.dll and winbuild2/$_OUTDIR/Messenger/xul.dll differ

The files have differences like this (objdump -d diff):

--- o1.txt	2015-10-24 15:37:51.888043607 +0200
+++ o2.txt	2015-10-24 15:37:55.806058575 +0200
@@ -1,5 +1,5 @@
 
-winbuild1/$_OUTDIR/Messenger/libEGL.dll:     file format pei-i386
+winbuild2/$_OUTDIR/Messenger/libEGL.dll:     file format pei-i386
 
 
 Disassembly of section .text:
@@ -95,7 +95,7 @@
 64581127:	0f 84 17 01 00 00    	je     0x64581244
 6458112d:	85 db                	test   %ebx,%ebx
 6458112f:	0f 84 cb 00 00 00    	je     0x64581200
-64581135:	a1 88 fd 63 64       	mov    0x6463fd88,%eax
+64581135:	a1 78 fd 63 64       	mov    0x6463fd78,%eax
 6458113a:	85 c0                	test   %eax,%eax
 6458113c:	74 1c                	je     0x6458115a
 6458113e:	8b 54 24 28          	mov    0x28(%esp),%edx
@@ -6618,7 +6618,7 @@
 64586a09:	77 3c                	ja     0x64586a47
 64586a0b:	8b 45 0c             	mov    0xc(%ebp),%eax
 64586a0e:	c1 e0 02             	shl    $0x2,%eax
-64586a11:	05 74 e8 63 64       	add    $0x6463e874,%eax
+64586a11:	05 34 e8 63 64       	add    $0x6463e834,%eax
 64586a16:	8b 00                	mov    (%eax),%eax
 64586a18:	ff e0                	jmp    *%eax
 64586a1a:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
@@ -7034,7 +7034,7 @@
 64586eba:	8b 00                	mov    (%eax),%eax
 64586ebc:	83 f8 33             	cmp    $0x33,%eax
 64586ebf:	77 09                	ja     0x64586eca
-64586ec1:	8b 04 85 a4 e9 63 64 	mov    0x6463e9a4(,%eax,4),%eax
+64586ec1:	8b 04 85 64 e9 63 64 	mov    0x6463e964(,%eax,4),%eax
 64586ec8:	ff e0                	jmp    *%eax
 64586eca:	b8 00 00 00 00       	mov    $0x0,%eax
 64586ecf:	eb 15                	jmp    0x64586ee6
@@ -7253,7 +7253,7 @@
 64587154:	89 c3                	mov    %eax,%ebx
 64587156:	c7 44 24 08 03 00 00 	movl   $0x3,0x8(%esp)
 6458715d:	00 
-6458715e:	c7 44 24 04 74 ea 63 	movl   $0x6463ea74,0x4(%esp)
+6458715e:	c7 44 24 04 34 ea 63 	movl   $0x6463ea34,0x4(%esp)
 64587165:	64 
 64587166:	8b 45 08             	mov    0x8(%ebp),%eax
 64587169:	89 04 24             	mov    %eax,(%esp)
@@ -7590,7 +7590,7 @@
 645875b0:	8b 45 f4             	mov    -0xc(%ebp),%eax
 645875b3:	8b 40 04             	mov    0x4(%eax),%eax
 645875b6:	8b 00                	mov    (%eax),%eax
-645875b8:	c7 44 24 04 78 ea 63 	movl   $0x6463ea78,0x4(%esp)
+645875b8:	c7 44 24 04 38 ea 63 	movl   $0x6463ea38,0x4(%esp)
 645875bf:	64 
 645875c0:	89 04 24             	mov    %eax,(%esp)
 645875c3:	e8 c8 3e 01 00       	call   0x6459b490
@@ -7817,7 +7817,7 @@
 64587865:	0f 8e 8a 00 00 00    	jle    0x645878f5
 6458786b:	c7 44 24 08 08 00 00 	movl   $0x8,0x8(%esp)
 64587872:	00 
-64587873:	c7 44 24 04 7b ea 63 	movl   $0x6463ea7b,0x4(%esp)
+64587873:	c7 44 24 04 3b ea 63 	movl   $0x6463ea3b,0x4(%esp)
 6458787a:	64 
 6458787b:	8b 45 f4             	mov    -0xc(%ebp),%eax
 6458787e:	89 04 24             	mov    %eax,(%esp)
@@ -7856,7 +7856,7 @@
 645878d5:	89 50 30             	mov    %edx,0x30(%eax)
 645878d8:	c7 44 24 08 15 00 00 	movl   $0x15,0x8(%esp)
 645878df:	00 
-645878e0:	c7 44 24 04 84 ea 63 	movl   $0x6463ea84,0x4(%esp)
+645878e0:	c7 44 24 04 44 ea 63 	movl   $0x6463ea44,0x4(%esp)
 645878e7:	64 
 645878e8:	8b 45 08             	mov    0x8(%ebp),%eax
 645878eb:	89 04 24             	mov    %eax,(%esp)
@@ -7965,7 +7965,7 @@
 64587a31:	89 45 e0             	mov    %eax,-0x20(%ebp)
 64587a34:	8b 45 e0             	mov    -0x20(%ebp),%eax
 64587a37:	c1 e0 04             	shl    $0x4,%eax
-64587a3a:	05 40 ec 63 64       	add    $0x6463ec40,%eax
+64587a3a:	05 00 ec 63 64       	add    $0x6463ec00,%eax
 64587a3f:	89 45 dc             	mov    %eax,-0x24(%ebp)
 64587a42:	8b 45 dc             	mov    -0x24(%ebp),%eax
 64587a45:	8b 00                	mov    (%eax),%eax
@@ -8234,7 +8234,7 @@
 64587d85:	83 e8 43             	sub    $0x43,%eax
 64587d88:	83 f8 33             	cmp    $0x33,%eax
 64587d8b:	0f 87 6d 03 00 00    	ja     0x645880fe
-64587d91:	8b 04 85 20 f0 63 64 	mov    0x6463f020(,%eax,4),%eax
+64587d91:	8b 04 85 e0 ef 63 64 	mov    0x6463efe0(,%eax,4),%eax
 64587d98:	ff e0                	jmp    *%eax
 64587d9a:	8b 45 08             	mov    0x8(%ebp),%eax
 64587d9d:	8b 40 30             	mov    0x30(%eax),%eax
@@ -8502,7 +8502,7 @@
 64588161:	83 e8 41             	sub    $0x41,%eax
 64588164:	83 f8 31             	cmp    $0x31,%eax
 64588167:	0f 87 4e 01 00 00    	ja     0x645882bb
-6458816d:	8b 04 85 f0 f0 63 64 	mov    0x6463f0f0(,%eax,4),%eax
+6458816d:	8b 04 85 b0 f0 63 64 	mov    0x6463f0b0(,%eax,4),%eax
 64588174:	ff e0                	jmp    *%eax
 64588176:	8b 45 08             	mov    0x8(%ebp),%eax
 64588179:	89 04 24             	mov    %eax,(%esp)

comment:13 Changed 17 months ago by erinn

  • Cc erinn added

comment:14 Changed 17 months ago by arlolra

  • Keywords SponsorO removed
Note: See TracTickets for help on using tickets.