Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
-
76054058
by Pier Angelo Vendrame at 2023-03-03T18:42:49+01:00
4 changed files:
- + projects/wasi-sysroot/0001-Sort-the-object-list-passed-to-ar-in-the-Makefile.patch
- projects/wasi-sysroot/build
- projects/wasi-sysroot/config
- rbm.conf
Changes:
| 1 | +From ef21e4f17e104a34e7db89215db567cddd48832d Mon Sep 17 00:00:00 2001
|
|
| 2 | +From: Pier Angelo Vendrame <pierov@torproject.org>
|
|
| 3 | +Date: Wed, 1 Mar 2023 10:19:50 +0100
|
|
| 4 | +Subject: [PATCH] Sort the object list passed to ar in the Makefile.
|
|
| 5 | + |
|
| 6 | +This makes builds reproducible.
|
|
| 7 | +---
|
|
| 8 | + Makefile | 10 +++++-----
|
|
| 9 | + 1 file changed, 5 insertions(+), 5 deletions(-)
|
|
| 10 | + |
|
| 11 | +diff --git a/Makefile b/Makefile
|
|
| 12 | +index c31e3d7..f350ecb 100644
|
|
| 13 | +--- a/Makefile
|
|
| 14 | ++++ b/Makefile
|
|
| 15 | +@@ -488,13 +488,13 @@ $(SYSROOT_LIB)/libwasi-emulated-signal.a: $(LIBWASI_EMULATED_SIGNAL_OBJS) $(LIBW
|
|
| 16 | + %.a:
|
|
| 17 | + @mkdir -p "$(@D)"
|
|
| 18 | + # On Windows, the commandline for the ar invocation got too long, so it needs to be split up.
|
|
| 19 | +- $(AR) crs $@ $(wordlist 1, 199, $^)
|
|
| 20 | +- $(AR) crs $@ $(wordlist 200, 399, $^)
|
|
| 21 | +- $(AR) crs $@ $(wordlist 400, 599, $^)
|
|
| 22 | +- $(AR) crs $@ $(wordlist 600, 799, $^)
|
|
| 23 | ++ $(AR) crs $@ $(wordlist 1, 199, $(sort $^))
|
|
| 24 | ++ $(AR) crs $@ $(wordlist 200, 399, $(sort $^))
|
|
| 25 | ++ $(AR) crs $@ $(wordlist 400, 599, $(sort $^))
|
|
| 26 | ++ $(AR) crs $@ $(wordlist 600, 799, $(sort $^))
|
|
| 27 | + # This might eventually overflow again, but at least it'll do so in a loud way instead of
|
|
| 28 | + # silently dropping the tail.
|
|
| 29 | +- $(AR) crs $@ $(wordlist 800, 100000, $^)
|
|
| 30 | ++ $(AR) crs $@ $(wordlist 800, 100000, $(sort $^))
|
|
| 31 | +
|
|
| 32 | + $(MUSL_PRINTSCAN_OBJS): CFLAGS += \
|
|
| 33 | + -D__wasilibc_printscan_no_long_double \
|
|
| 34 | +--
|
|
| 35 | +2.39.2
|
|
| 36 | + |
| ... | ... | @@ -28,6 +28,9 @@ mv clang-source llvm-project |
| 28 | 28 | export LLVM_HOME=$(pwd)/llvm-project
|
| 29 | 29 | tar -xf $rootdir/[% c('input_files_by_name/wasi-libc') %]
|
| 30 | 30 | mv wasi-libc-* wasi-libc
|
| 31 | +pushd wasi-libc
|
|
| 32 | +patch -p1 < "$rootdir/0001-Sort-the-object-list-passed-to-ar-in-the-Makefile.patch"
|
|
| 33 | +popd
|
|
| 31 | 34 | popd
|
| 32 | 35 | |
| 33 | 36 | # What follows has been copied from Firefox's
|
| ... | ... | @@ -53,11 +56,14 @@ cat > 'version.sh' << EOF |
| 53 | 56 | echo '[% c("abbrev") %]'
|
| 54 | 57 | EOF
|
| 55 | 58 | |
| 56 | -# Build wasi-libc, libc++ and libc++abi.
|
|
| 59 | +# Build wasi-libc, and re-pack it, to make sure we get a deterministic output.
|
|
| 60 | +make PREFIX=/wasi build/wasi-libc.BUILT
|
|
| 61 | + |
|
| 62 | +# We need to compile compiler-rt before building libc++ and libc++abi, because
|
|
| 63 | +# we need to inject it to Clang.
|
|
| 57 | 64 | make \
|
| 58 | 65 | LLVM_PROJ_DIR=$LLVM_HOME \
|
| 59 | 66 | PREFIX=/wasi \
|
| 60 | - build/wasi-libc.BUILT \
|
|
| 61 | 67 | build/compiler-rt.BUILT \
|
| 62 | 68 | NINJA_FLAGS='-j[% c("num_procs") %]'
|
| 63 | 69 | |
| ... | ... | @@ -66,6 +72,7 @@ rtdir="build/llvm/lib/clang/$(ls build/llvm/lib/clang)/lib/wasi" |
| 66 | 72 | mkdir -p "$rtdir"
|
| 67 | 73 | cp build/compiler-rt/lib/wasi/libclang_rt.builtins-wasm32.a "$rtdir/"
|
| 68 | 74 | |
| 75 | +# Now we can finally build libc++ and libc++abi.
|
|
| 69 | 76 | make \
|
| 70 | 77 | LLVM_PROJ_DIR=$LLVM_HOME \
|
| 71 | 78 | PREFIX=/wasi \
|
| ... | ... | @@ -33,3 +33,4 @@ input_files: |
| 33 | 33 | project: wasi-config
|
| 34 | 34 | - name: wasi-libc
|
| 35 | 35 | project: wasi-libc
|
| 36 | + - filename: '0001-Sort-the-object-list-passed-to-ar-in-the-Makefile.patch' |
| ... | ... | @@ -170,7 +170,7 @@ var: |
| 170 | 170 | - zh-rCN
|
| 171 | 171 | - zh-rTW
|
| 172 | 172 | |
| 173 | - rlbox: 0
|
|
| 173 | + rlbox: 1
|
|
| 174 | 174 | |
| 175 | 175 | sign_build: '[% ENV.RBM_SIGN_BUILD %]'
|
| 176 | 176 | sign_build_gpg_opts: '[% ENV.RBM_GPG_OPTS %]'
|