Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
-
d4aa558e
by Pier Angelo Vendrame at 2023-01-18T09:26:22+01:00
8 changed files:
- projects/browser/ddmg.sh
- projects/hfsplus-tools/build
- projects/hfsplus-tools/config
- projects/hfsplus-tools/only-newfs_include.diff → projects/hfsplus-tools/newfs_hfs.diff
- projects/libdmg-hfsplus/build
- projects/libdmg-hfsplus/config
- + projects/libdmg-hfsplus/libdmg.patch
- tools/signing/ddmg.sh
Changes:
1 | +#!/bin/bash
|
|
2 | +set -e
|
|
3 | + |
|
1 | 4 | [% SET src = c('dmg_src', { error_if_undef => 1 }) -%]
|
2 | 5 | find [% src %] -executable -exec chmod 0755 {} \;
|
3 | 6 | find [% src %] ! -executable -exec chmod 0644 {} \;
|
... | ... | @@ -18,7 +21,14 @@ newfs_hfs -v "[% c("var/Project_Name") %]" "\$hfsfile" |
18 | 21 | |
19 | 22 | pushd [% src %]
|
20 | 23 | |
21 | -hfsplus "\$hfsfile" addall .
|
|
24 | +find -type d -mindepth 1 | sed -e 's/^\.\///' | sort | while read dirname; do
|
|
25 | + hfsplus "\$hfsfile" mkdir "/\$dirname"
|
|
26 | + hfsplus "\$hfsfile" chmod 0755 "/\$dirname"
|
|
27 | +done
|
|
28 | +find -type f | sed -e 's/^\.\///' | sort | while read filename; do
|
|
29 | + hfsplus "\$hfsfile" add "\$filename" "/\$filename"
|
|
30 | + hfsplus "\$hfsfile" chmod \$(stat --format '0%a' "\$filename") "/\$filename"
|
|
31 | +done
|
|
22 | 32 | # hfsplus does not play well with dangling links
|
23 | 33 | hfsplus "\$hfsfile" symlink /Applications /Applications
|
24 | 34 | # Show the volume icon
|
... | ... | @@ -8,7 +8,7 @@ export PATH="/var/tmp/dist/clang/bin:$PATH" |
8 | 8 | tar -xf diskdev_cmds-[% c("version") %].tar.gz
|
9 | 9 | cd diskdev_cmds-[% c("version") %]
|
10 | 10 | |
11 | -patch -p1 < $rootdir/only-newfs_include.diff
|
|
11 | +patch -p1 < $rootdir/newfs_hfs.diff
|
|
12 | 12 | |
13 | 13 | make -j[% c("num_procs") %]
|
14 | 14 |
... | ... | @@ -16,6 +16,7 @@ input_files: |
16 | 16 | # The project uses a flag that is not supported by GCC
|
17 | 17 | - name: clang
|
18 | 18 | project: clang
|
19 | - # Build only newfs (we do not care of fsck), and remove a header that does not
|
|
20 | - # exist on Linux (at that path) and is not required on Linux either.
|
|
21 | - - filename: only-newfs_include.diff |
|
19 | + # Build only newfs (we do not care of fsck), remove a header that does not
|
|
20 | + # exist on Linux (at that path) and is not required on Linux either, and make
|
|
21 | + # the UUID deterministic.
|
|
22 | + - filename: newfs_hfs.diff |
1 | 1 | diff '--color=auto' -Naur diskdev_cmds-540.1.linux3_orig/Makefile diskdev_cmds-540.1.linux3/Makefile
|
2 | ---- diskdev_cmds-540.1.linux3_orig/Makefile 2023-01-13 10:01:32.474525600 +0100
|
|
3 | -+++ diskdev_cmds-540.1.linux3/Makefile 2023-01-13 10:01:50.346876760 +0100
|
|
2 | +--- diskdev_cmds-540.1.linux3_orig/Makefile 2023-01-17 11:36:56.341279443 +0100
|
|
3 | ++++ diskdev_cmds-540.1.linux3/Makefile 2023-01-17 11:44:12.496479981 +0100
|
|
4 | 4 | @@ -3,7 +3,7 @@
|
5 | 5 | CC := clang
|
6 | 6 | CFLAGS := -g3 -Wall -fblocks -I$(PWD)/BlocksRunTime -I$(PWD)/include -DDEBUG_BUILD=0 -D_FILE_OFFSET_BITS=64 -D LINUX=1 -D BSD=1 -D VERSION=\"$(VERSION)\"
|
7 | 7 | LDFLAGS := -Wl,--build-id -L$(PWD)/BlocksRunTime
|
8 | 8 | -SUBDIRS := BlocksRunTime newfs_hfs.tproj fsck_hfs.tproj
|
9 | 9 | +SUBDIRS := newfs_hfs.tproj
|
10 | - |
|
10 | +
|
|
11 | 11 | all clean:
|
12 | 12 | for d in $(SUBDIRS); do $(MAKE) -C $$d -f Makefile.lnx $@; done
|
13 | 13 | diff '--color=auto' -Naur diskdev_cmds-540.1.linux3_orig/newfs_hfs.tproj/makehfs.c diskdev_cmds-540.1.linux3/newfs_hfs.tproj/makehfs.c
|
14 | ---- diskdev_cmds-540.1.linux3_orig/newfs_hfs.tproj/makehfs.c 2023-01-13 10:01:32.474525600 +0100
|
|
15 | -+++ diskdev_cmds-540.1.linux3/newfs_hfs.tproj/makehfs.c 2023-01-13 10:02:07.899221800 +0100
|
|
14 | +--- diskdev_cmds-540.1.linux3_orig/newfs_hfs.tproj/makehfs.c 2023-01-17 11:36:56.341279443 +0100
|
|
15 | ++++ diskdev_cmds-540.1.linux3/newfs_hfs.tproj/makehfs.c 2023-01-17 11:58:15.972059719 +0100
|
|
16 | 16 | @@ -38,8 +38,8 @@
|
17 | 17 | #endif
|
18 | 18 | #include <sys/errno.h>
|
... | ... | @@ -22,4 +22,17 @@ diff '--color=auto' -Naur diskdev_cmds-540.1.linux3_orig/newfs_hfs.tproj/makehfs |
22 | 22 | +#include <sys/sysctl.h>
|
23 | 23 | #include <sys/vmmeter.h>
|
24 | 24 | #endif
|
25 | - |
|
25 | +
|
|
26 | +@@ -571,8 +571,10 @@
|
|
27 | + /* Adjust free blocks to reflect everything we have allocated. */
|
|
28 | + hp->freeBlocks -= blocksUsed;
|
|
29 | +
|
|
30 | +- /* Generate and write UUID for the HFS+ disk */
|
|
31 | +- GenerateVolumeUUID(&newVolumeUUID);
|
|
32 | ++ /* Use a deterministic UUID for reproducibility */
|
|
33 | ++ memset(&newVolumeUUID, 0, sizeof(newVolumeUUID));
|
|
34 | ++ strncpy(&newVolumeUUID, defaults->volumeName, sizeof(newVolumeUUID));
|
|
35 | ++
|
|
36 | + finderInfoUUIDPtr = (VolumeUUID *)(&hp->finderInfo[24]);
|
|
37 | + finderInfoUUIDPtr->v.high = OSSwapHostToBigInt32(newVolumeUUID.v.high);
|
|
38 | + finderInfoUUIDPtr->v.low = OSSwapHostToBigInt32(newVolumeUUID.v.low); |
... | ... | @@ -9,6 +9,7 @@ export PATH="/var/tmp/dist/ninja:/var/tmp/dist/cmake/bin:$PATH" |
9 | 9 | mkdir /var/tmp/build
|
10 | 10 | tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
|
11 | 11 | cd /var/tmp/build/[% project %]-[% c('version') %]
|
12 | +patch -p1 < "$rootdir/libdmg.patch"
|
|
12 | 13 | cmake . -GNinja -DCMAKE_BUILD_TYPE=Release
|
13 | 14 | ninja -j[% c("num_procs") %] -v
|
14 | 15 |
... | ... | @@ -16,3 +16,4 @@ input_files: |
16 | 16 | project: cmake
|
17 | 17 | - name: ninja
|
18 | 18 | project: ninja
|
19 | + - filename: libdmg.patch |
1 | +From d1a5eca891f32103ccda80ee75e158dfc7ece70d Mon Sep 17 00:00:00 2001
|
|
2 | +From: Mike Perry <mikeperry-git@torproject.org>
|
|
3 | +Date: Thu, 6 Mar 2014 19:47:05 -0800
|
|
4 | +Subject: [PATCH] Memset a UDIF header to ensure archive reproducibility.
|
|
5 | + |
|
6 | +Some of the struct padding and fields contained unitialized memory, which
|
|
7 | +caused two successive invocations to produce archives that differed in some
|
|
8 | +bytes.
|
|
9 | +---
|
|
10 | + dmg/dmglib.c | 6 ++++--
|
|
11 | + 1 file changed, 4 insertions(+), 2 deletions(-)
|
|
12 | + |
|
13 | +diff --git a/dmg/dmglib.c b/dmg/dmglib.c
|
|
14 | +index f481b1f..b74e50b 100644
|
|
15 | +--- a/dmg/dmglib.c
|
|
16 | ++++ b/dmg/dmglib.c
|
|
17 | +@@ -108,7 +108,8 @@ int buildDmg(AbstractFile* abstractIn, AbstractFile* abstractOut) {
|
|
18 | + ChecksumToken dataForkToken;
|
|
19 | +
|
|
20 | + UDIFResourceFile koly;
|
|
21 | +-
|
|
22 | ++ memset(&koly, 0, sizeof(koly));
|
|
23 | ++
|
|
24 | + off_t plistOffset;
|
|
25 | + uint32_t plistSize;
|
|
26 | + uint32_t dataForkChecksum;
|
|
27 | +@@ -284,7 +285,8 @@ int convertToDMG(AbstractFile* abstractIn, AbstractFile* abstractOut) {
|
|
28 | + uint64_t numSectors;
|
|
29 | +
|
|
30 | + UDIFResourceFile koly;
|
|
31 | +-
|
|
32 | ++ memset(&koly, 0, sizeof(koly));
|
|
33 | ++
|
|
34 | + char partitionName[512];
|
|
35 | +
|
|
36 | + off_t fileLength;
|
|
37 | +--
|
|
38 | +1.8.1.2
|
|
39 | + |
... | ... | @@ -42,7 +42,14 @@ cd $src_dir |
42 | 42 | # add it back again with the special command to do so.
|
43 | 43 | rm -f Applications
|
44 | 44 | |
45 | -hfsplus "$hfsfile" addall .
|
|
45 | +find -type d -mindepth 1 | sed -e 's/^\.\///' | sort | while read dirname; do
|
|
46 | + hfsplus "$hfsfile" mkdir "/$dirname"
|
|
47 | + hfsplus "$hfsfile" chmod 0755 "/$dirname"
|
|
48 | +done
|
|
49 | +find -type f | sed -e 's/^\.\///' | sort | while read filename; do
|
|
50 | + hfsplus "$hfsfile" add "$filename" "/$filename"
|
|
51 | + hfsplus "$hfsfile" chmod $(stat --format '0%a' "$filename") "/$filename"
|
|
52 | +done
|
|
46 | 53 | hfsplus "$hfsfile" symlink /Applications /Applications
|
47 | 54 | # Show the volume icon
|
48 | 55 | hfsplus "$hfsfile" attr / C
|