Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 40 additions & 27 deletions barretenberg/cpp/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,30 +29,30 @@ function inject_version {
# Build all native binaries, including tests.
function build_native {
set -eu
if ! cache_download barretenberg-release-$hash.tar.gz; then
if ! cache_download barretenberg-release-$hash.zst; then
./format.sh check
rm -f build/CMakeCache.txt
cmake --preset $preset
cmake --build --preset $preset
cache_upload barretenberg-release-$hash.tar.gz build/bin
cache_upload barretenberg-release-$hash.zst build/bin
fi
}

function build_nodejs_module {
set -eu
(cd src/barretenberg/nodejs_module && yarn --frozen-lockfile --prefer-offline)
if ! cache_download barretenberg-release-nodejs-module-$hash.tar.gz; then
if ! cache_download barretenberg-release-nodejs-module-$hash.zst; then
rm -f build-pic/CMakeCache.txt
cmake --preset $pic_preset -DCMAKE_BUILD_TYPE=RelWithAssert
cmake --build --preset $pic_preset --target nodejs_module
cache_upload barretenberg-release-nodejs-module-$hash.tar.gz build-pic/lib/nodejs_module.node
cache_upload barretenberg-release-nodejs-module-$hash.zst build-pic/lib/nodejs_module.node
fi
}

function build_darwin {
set -eu
local arch=${1:-$(arch)}
if ! cache_download barretenberg-darwin-$hash.tar.gz; then
if ! cache_download barretenberg-darwin-$hash.zst; then
# Download sdk.
local osx_sdk="MacOSX14.0.sdk"
if ! [ -d "/opt/osxcross/SDK/$osx_sdk" ]; then
Expand All @@ -65,18 +65,29 @@ function build_darwin {
rm -f build-darwin-$arch/CMakeCache.txt
cmake --preset darwin-$arch
cmake --build --preset darwin-$arch --target bb
cache_upload barretenberg-darwin-$hash.tar.gz build-darwin-$arch/bin
cache_upload barretenberg-darwin-$hash.zst build-darwin-$arch/bin
fi
}

# Build single threaded wasm. Needed when no shared mem available.
function build_wasm {
set -eu
if ! cache_download barretenberg-wasm-$hash.tar.gz; then
if ! cache_download barretenberg-wasm-$hash.zst; then
rm -f build-wasm/CMakeCache.txt
cmake --preset wasm
cmake --build --preset wasm
cache_upload barretenberg-wasm-$hash.tar.gz build-wasm/bin
cache_upload barretenberg-wasm-$hash.zst build-wasm/bin
fi
}

# Build multi-threaded wasm. Requires shared memory.
function build_wasm_threads {
set -eu
if ! cache_download barretenberg-wasm-threads-$hash.zst; then
rm -f build-wasm-threads/CMakeCache.txt
cmake --preset wasm-threads
cmake --build --preset wasm-threads
cache_upload barretenberg-wasm-threads-$hash.zst build-wasm-threads/bin
fi
}

Expand All @@ -85,25 +96,27 @@ function build_wasm {
# as they were useful historically, and we have sanitizers.
function build_gcc_syntax_check_only {
set -eu
if cache_download barretenberg-gcc-$hash.tar.gz; then
if cache_download barretenberg-gcc-$hash.zst; then
return
fi
cmake --preset gcc -DSYNTAX_ONLY=1
cmake --build --preset gcc --target bb
# Note: There's no real artifact here, we fake one for consistency.
echo success > build-gcc/syntax-check-success.flag
cache_upload barretenberg-gcc-$hash.tar.gz build-gcc/syntax-check-success.flag
cache_upload barretenberg-gcc-$hash.zst build-gcc/syntax-check-success.flag
}

# Build multi-threaded wasm. Requires shared memory.
function build_wasm_threads {
# Do basic tests that the fuzzing preset still compiles (does not do optimization or create object files).
function build_fuzzing_syntax_check_only {
set -eu
if ! cache_download barretenberg-wasm-threads-$hash.tar.gz; then
rm -f build-wasm-threads/CMakeCache.txt
cmake --preset wasm-threads
cmake --build --preset wasm-threads
cache_upload barretenberg-wasm-threads-$hash.tar.gz build-wasm-threads/bin
if cache_download barretenberg-fuzzing-$hash.zst; then
return
fi
cmake --preset fuzzing -DSYNTAX_ONLY=1
cmake --build --preset fuzzing
# Note: There's no real artifact here, we fake one for consistency.
echo success > build-fuzzing/syntax-check-success.flag
cache_upload barretenberg-fuzzing-$hash.zst build-fuzzing/syntax-check-success.flag
}

# Download ignition transcripts. Only needed for tests.
Expand All @@ -122,18 +135,18 @@ function build_release {

cp build/bin/bb build-release/bb
inject_version build-release/bb
tar -czf build-release/barretenberg-$arch-linux.tar.gz -C build-release --remove-files bb
tar -czf build-release/barretenberg-$arch-linux.zst -C build-release --remove-files bb

# Only release wasms built on amd64.
if [ "$arch" == "amd64" ]; then
tar -czf build-release/barretenberg-wasm.tar.gz -C build-wasm/bin barretenberg.wasm
tar -czf build-release/barretenberg-debug-wasm.tar.gz -C build-wasm/bin barretenberg-debug.wasm
tar -czf build-release/barretenberg-threads-wasm.tar.gz -C build-wasm-threads/bin barretenberg.wasm
tar -czf build-release/barretenberg-threads-debug-wasm.tar.gz -C build-wasm-threads/bin barretenberg-debug.wasm
tar -czf build-release/barretenberg-wasm.zst -C build-wasm/bin barretenberg.wasm
tar -czf build-release/barretenberg-debug-wasm.zst -C build-wasm/bin barretenberg-debug.wasm
tar -czf build-release/barretenberg-threads-wasm.zst -C build-wasm-threads/bin barretenberg.wasm
tar -czf build-release/barretenberg-threads-debug-wasm.zst -C build-wasm-threads/bin barretenberg-debug.wasm
fi
}

export -f build_native build_darwin build_nodejs_module build_wasm build_wasm_threads build_gcc_syntax_check_only download_old_crs
export -f build_native build_darwin build_nodejs_module build_wasm build_wasm_threads build_gcc_syntax_check_only build_fuzzing_syntax_check_only download_old_crs

function build {
echo_header "bb cpp build"
Expand All @@ -146,7 +159,7 @@ function build {
)
if [ "$(arch)" == "amd64" ] && [ "$CI" -eq 1 ]; then
# TODO figure out why this is failing on arm64 with ultra circuit builder string op overflow.
builds+=(build_gcc_syntax_check_only)
builds+=(build_gcc_syntax_check_only build_fuzzing_syntax_check_only)
fi
if [ "$CI_FULL" -eq 1 ]; then
builds+=(build_darwin)
Expand Down Expand Up @@ -179,11 +192,11 @@ function test {

function build_benchmarks {
set -eu
if ! cache_download barretenberg-benchmarks-$hash.tar.gz; then
if ! cache_download barretenberg-benchmarks-$hash.zst; then
parallel --line-buffered --tag -v "denoise \
'cmake --preset {} && cmake --build --preset {} --target ultra_honk_bench --target client_ivc_bench'" ::: \
clang16-assert wasm-threads op-count op-count-time
cache_upload barretenberg-benchmarks-$hash.tar.gz \
cache_upload barretenberg-benchmarks-$hash.zst \
{build,build-wasm-threads,build-op-count,build-op-count-time}/bin/{ultra_honk_bench,client_ivc_bench}
fi
}
Expand Down Expand Up @@ -333,7 +346,7 @@ case "$cmd" in
"hash")
echo $hash
;;
test|test_cmds|bench|release|build_native|build_wasm|build_wasm_threads|build_darwin|build_release|inject_version)
test|test_cmds|bench|release|build_native|build_wasm|build_wasm_threads|build_gcc_syntax_check_only|build_fuzzing_syntax_check_only|build_darwin|build_release|inject_version)
$cmd "$@"
;;
*)
Expand Down