diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 25d186b6a9..49df298353 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -145,7 +145,7 @@ jobs: key: cargo-${{ matrix.config.target }}-${{ matrix.config.variant }}-${{ hashFiles('Cargo.lock', 'build.rs', 'git_submodule_status.txt') }} restore-keys: - cargo-${{ matrix.config.target }}-${{ matrix.config.variant }}- + cargo-${{ matrix.config.target }}-${{ matrix.config.variant }}-1 - name: Install and start sccache shell: pwsh @@ -193,6 +193,12 @@ jobs: curl -O http://commondatastorage.googleapis.com/chromium-browser-clang-staging/Mac/dsymutil-llvmorg-17-init-19076-g5533fc10-1.tgz tar -C tools/clang/dsymutil/ -xvzf dsymutil-llvmorg-17-init-19076-g5533fc10-1.tgz V8_FROM_SOURCE=true RUSTFLAGS="-C opt-level=1 -Zsanitizer=address" cargo +nightly -Z build-std test --lib --bins --tests -vv --target ${{ matrix.config.target }} + - name: Build Musl + if: matrix.config.target == 'x86_64-unknown-linux-gnu' + run: | + docker run -v "$PWD":/usr/src/rusty_v8 -w /usr/src/rusty_v8 rust:alpine3.16 ./musl-build.sh ${{ env.CARGO_VARIANT_FLAG }} + docker cp $(docker ps -lq):/usr/src/rusty_v8/target/${{ matrix.config.variant }}/gn_out/obj/librusty_v8.a target/librusty_v8_${{ matrix.config.variant }}_x86_64-unknown-linux-musl.a + sudo chown $(id -u):$(id -g) /home/runner/work/rusty_v8/rusty_v8/target/debug/ - name: Test env: @@ -207,6 +213,9 @@ jobs: ${{ matrix.config.cargo }} clippy --all-targets --locked ${{ env.CARGO_VARIANT_FLAG }} --target ${{ matrix.config.target }} -- -D clippy::all + - name: Rustfmt + run: cargo fmt -- --check + - name: Prepare binary publish if: matrix.config.variant == 'debug' || matrix.config.variant == 'release' run: | diff --git a/musl-build.sh b/musl-build.sh new file mode 100755 index 0000000000..56ba8d6ce3 --- /dev/null +++ b/musl-build.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +apk add git \ + gcc \ + ninja \ + python3 \ + clang \ + g++ \ + pkgconfig \ + glib-dev \ + llvm13-dev \ + binutils-gold \ + sccache +ln -s /usr/bin/python3 /usr/bin/python + +export V8_FROM_SOURCE="yes" +export CLANG_BASE_PATH="/usr" +export SCCACHE_DIR="./target/sccache" +export SCCACHE="/usr/bin/sccache" +export GN_ARGS="use_custom_libcxx=false use_lld=false v8_enable_backtrace=false v8_enable_debugging_features=false" +GN="$(pwd)/gn/out/gn" +export GN + +# Bulid GN +if [ ! -d "./gn" ]; then + git clone https://gn.googlesource.com/gn + ( + cd gn || exit + python3 build/gen.py + ninja -C out + ) +fi + +# Build rusty_v8 and pass through the arguments +cargo build -vv $@ --target=x86_64-unknown-linux-musl