diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54b6d6a7ea..4a43c39721 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,6 +81,18 @@ jobs: v8_enable_pointer_compression: true cargo: cargo + - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }} + target: x86_64-unknown-linux-musl + variant: debug + v8_enable_pointer_compression: false + cargo: cargo + + - os: ${{ github.repository == 'denoland/rusty_v8' && 'ubuntu-22.04-xl' || 'ubuntu-22.04' }} + target: x86_64-unknown-linux-musl + variant: release + v8_enable_pointer_compression: false + cargo: cargo + - os: ${{ github.repository == 'denoland/rusty_v8' && 'windows-2022-xxl' || 'windows-2022' }} target: x86_64-pc-windows-msvc variant: release # Note: we do not support windows debug builds. @@ -183,6 +195,8 @@ jobs: "aarch64-apple-darwin" = "aarch64-apple-darwin" "x86_64-unknown-linux-gnu" = "x86_64-unknown-linux-musl" "aarch64-unknown-linux-gnu" = "aarch64-unknown-linux-musl" + "x86_64-unknown-linux-musl" = "x86_64-unknown-linux-musl" + "aarch64-unknown-linux-musl" = "aarch64-unknown-linux-musl" "x86_64-pc-windows-msvc" = "x86_64-pc-windows-msvc" }['${{ matrix.config.target }}'] $basename = "sccache-$version-$platform" @@ -217,7 +231,7 @@ jobs: - name: Test (ASAN) env: SCCACHE_IDLE_TIMEOUT: 0 - if: matrix.config.variant == 'asan' + if: matrix.config.variant == 'asan' && matrix.config.target != 'x86_64-unknown-linux-musl' # https://github.com/rust-lang/rust/issues/87215 run: | rustup component add rust-src --toolchain nightly-${{ matrix.config.target }} @@ -226,10 +240,19 @@ jobs: 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 nextest run --lib --bins --tests -v --cargo-verbose --cargo-verbose --target ${{ matrix.config.target }} + - name: Test (Musl) + env: + SCCACHE_IDLE_TIMEOUT: 0 + if: matrix.config.target == 'x86_64-unknown-linux-musl' + run: | + docker run -v "$PWD":/usr/src/rusty_v8 -w /usr/src/rusty_v8 rust:alpine3.21 ./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 -R $(id -u):$(id -g) /home/runner/work/rusty_v8/rusty_v8/target/ + - name: Test env: SCCACHE_IDLE_TIMEOUT: 0 - if: matrix.config.variant == 'debug' || matrix.config.variant == 'release' + if: (matrix.config.variant == 'debug' || matrix.config.variant == 'release') && matrix.config.target != 'x86_64-unknown-linux-musl' run: ${{ matrix.config.cargo }} nextest run -v --cargo-verbose --cargo-verbose --all-targets --locked --target ${{ matrix.config.target }} ${{ env.CARGO_VARIANT_FLAG }} ${{ env.CARGO_FEATURE_FLAGS }} - name: Clippy diff --git a/musl-build.sh b/musl-build.sh new file mode 100755 index 0000000000..490d25fb19 --- /dev/null +++ b/musl-build.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +apk add git \ + gcc \ + ninja \ + python3 \ + g++ \ + pkgconfig \ + glib-dev \ + binutils-gold +ln -s /usr/bin/python3 /usr/bin/python + +export V8_FROM_SOURCE="yes" +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 + +# Build 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