diff --git a/.github/workflows/cross.sh b/.github/workflows/cross.sh index 9d9bff7..f5504dc 100755 --- a/.github/workflows/cross.sh +++ b/.github/workflows/cross.sh @@ -19,4 +19,4 @@ echo darwin-flock ; GOOS=darwin GOARCH=amd64 go build -tags sqlite3_flock . echo darwin-nosys ; GOOS=darwin GOARCH=amd64 go build -tags sqlite3_nosys . echo linux-nosys ; GOOS=linux GOARCH=amd64 go build -tags sqlite3_nosys . echo windows-nosys ; GOOS=windows GOARCH=amd64 go build -tags sqlite3_nosys . -echo freebsd-nosys ; GOOS=freebsd GOARCH=amd64 go build -tags sqlite3_nosys . +echo freebsd-nosys ; GOOS=freebsd GOARCH=amd64 go build -tags sqlite3_nosys . \ No newline at end of file diff --git a/.github/workflows/repro.sh b/.github/workflows/repro.sh new file mode 100755 index 0000000..290c555 --- /dev/null +++ b/.github/workflows/repro.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ "$OSTYPE" == "linux"* ]]; then + WASI_SDK="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz" + BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_116/binaryen-version_116-x86_64-linux.tar.gz" +elif [[ "$OSTYPE" == "darwin"* ]]; then + WASI_SDK="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-macos.tar.gz" + BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_116/binaryen-version_116-x86_64-macos.tar.gz" +elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then + WASI_SDK="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0.m-mingw.tar.gz" + BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_116/binaryen-version_116-x86_64-windows.tar.gz" +fi + +# Download tools +mkdir -p tools +[ -d "tools/wasi-sdk"* ] || curl -#L "$WASI_SDK" | tar xzC tools & +[ -d "tools/binaryen-version"* ] || curl -#L "$BINARYEN" | tar xzC tools & +wait + +sqlite3/download.sh # Download SQLite +embed/build.sh # Build WASM +git diff --exit-code # Check diffs \ No newline at end of file diff --git a/.github/workflows/repro.yml b/.github/workflows/repro.yml new file mode 100644 index 0000000..80c5758 --- /dev/null +++ b/.github/workflows/repro.yml @@ -0,0 +1,21 @@ +name: Reproducible build + +on: + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + lfs: 'true' + + - name: Set up + uses: actions/setup-go@v4 + with: + go-version: stable + + - name: Build + run: .github/workflows/repro.sh diff --git a/embed/build.sh b/embed/build.sh index 6fb3b0d..a0ece88 100755 --- a/embed/build.sh +++ b/embed/build.sh @@ -23,7 +23,7 @@ WASI_SDK="$ROOT/tools/wasi-sdk-20.0/bin" trap 'rm -f sqlite3.tmp' EXIT "$BINARYEN/wasm-ctor-eval" -g -c _initialize sqlite3.wasm -o sqlite3.tmp -"$BINARYEN/wasm-opt" -g --strip -c -O3 \ +"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ sqlite3.tmp -o sqlite3.wasm \ --enable-simd --enable-mutable-globals --enable-multivalue \ --enable-bulk-memory --enable-reference-types \ diff --git a/embed/sqlite3.wasm b/embed/sqlite3.wasm index 543ef0d..2276261 100755 Binary files a/embed/sqlite3.wasm and b/embed/sqlite3.wasm differ diff --git a/sqlite3/download.sh b/sqlite3/download.sh index fe98a2c..f507358 100755 --- a/sqlite3/download.sh +++ b/sqlite3/download.sh @@ -8,7 +8,7 @@ unzip -d . sqlite-amalgamation-*.zip mv sqlite-amalgamation-*/sqlite3* . rm -rf sqlite-amalgamation-* -cat *.patch | patch --posix +cat *.patch | patch --no-backup-if-mismatch mkdir -p ext/ cd ext/ diff --git a/vfs/tests/mptest/testdata/build.sh b/vfs/tests/mptest/testdata/build.sh index acf3c2d..6d4e0ee 100755 --- a/vfs/tests/mptest/testdata/build.sh +++ b/vfs/tests/mptest/testdata/build.sh @@ -23,7 +23,7 @@ WASI_SDK="$ROOT/tools/wasi-sdk-20.0/bin" -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION \ -D_WASI_EMULATED_GETPID -lwasi-emulated-getpid -"$BINARYEN/wasm-opt" -g --strip -c -O3 \ +"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ mptest.wasm -o mptest.tmp \ --enable-simd --enable-mutable-globals --enable-multivalue \ --enable-bulk-memory --enable-reference-types \ diff --git a/vfs/tests/mptest/testdata/mptest.wasm.bz2 b/vfs/tests/mptest/testdata/mptest.wasm.bz2 index 9edf0d8..36c930d 100644 --- a/vfs/tests/mptest/testdata/mptest.wasm.bz2 +++ b/vfs/tests/mptest/testdata/mptest.wasm.bz2 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6db7a53d189055287cb4eb79d7360bf82e5b3084018b868ea49e70a1dd43f474 -size 512643 +oid sha256:c7480f2234302b68d205e8a4cb83074aeb25a91c5b1a15f27579eda9eb84f670 +size 513613 diff --git a/vfs/tests/speedtest1/testdata/build.sh b/vfs/tests/speedtest1/testdata/build.sh index 1c16bfe..f9ee57b 100755 --- a/vfs/tests/speedtest1/testdata/build.sh +++ b/vfs/tests/speedtest1/testdata/build.sh @@ -18,7 +18,7 @@ WASI_SDK="$ROOT/tools/wasi-sdk-20.0/bin" -Wl,--import-undefined \ -D_HAVE_SQLITE_CONFIG_H -"$BINARYEN/wasm-opt" -g --strip -c -O3 \ +"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ speedtest1.wasm -o speedtest1.tmp \ --enable-simd --enable-mutable-globals --enable-multivalue \ --enable-bulk-memory --enable-reference-types \ diff --git a/vfs/tests/speedtest1/testdata/speedtest1.wasm.bz2 b/vfs/tests/speedtest1/testdata/speedtest1.wasm.bz2 index 136addb..8d6862b 100644 --- a/vfs/tests/speedtest1/testdata/speedtest1.wasm.bz2 +++ b/vfs/tests/speedtest1/testdata/speedtest1.wasm.bz2 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab2acd50a808d534b516b5e856ad76d15d5d9d390178f27cd5418de832080ae9 -size 526575 +oid sha256:e27252fbac7fdec8464722d84f65ced6e4916b720c39a0213ce0219c20610a63 +size 527531