Skip to content

Commit 992bc50

Browse files
committed
Update emscripten CI
1 parent 47d424a commit 992bc50

2 files changed

Lines changed: 57 additions & 42 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: 'Setup various CI dependencies'
2+
description: 'Setup Rust target and necessary dependencies for compilation'
3+
inputs:
4+
target:
5+
description: 'rust target being set up'
6+
required: true
7+
emscripten_sdk:
8+
description: 'emsdk version to install'
9+
default: latest
10+
11+
runs:
12+
using: composite
13+
steps:
14+
- uses: dtolnay/rust-toolchain@stable
15+
with:
16+
target: ${{ inputs.target }}
17+
- run: echo "CARGO_BUILD_TARGET=${{ inputs.target }}" >> $GITHUB_ENV
18+
shell: bash
19+
20+
- name: Install GCC (i686-unknown-linux-gnu)
21+
if: ${{ inputs.target == 'i686-unknown-linux-gnu' }}
22+
run: |
23+
sudo apt-get update -y
24+
sudo apt-get install -y --no-install-recommends gcc-multilib g++-multilib
25+
shell: bash
26+
- name: Install GCC (aarch64-unknown-linux-gnu)
27+
if: ${{ inputs.target == 'aarch64-unknown-linux-gnu' }}
28+
run: |
29+
sudo apt-get update -y
30+
sudo apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross
31+
shell: bash
32+
33+
- name: Install emscripten (wasm32-unknown-emscripten)
34+
if: ${{ inputs.target == 'wasm32-unknown-emscripten' }}
35+
run: |
36+
EM_CONFIG=$HOME/emsdk/.emscripten
37+
echo "EM_CONFIG=$EM_CONFIG" >> $GITHUB_ENV
38+
curl -L -o ~/emsdk-main.tar.gz https://github.com/emscripten-core/emsdk/archive/main.tar.gz
39+
tar -C ~ -xf ~/emsdk-main.tar.gz
40+
mv ~/emsdk-main ~/emsdk
41+
cd ~/emsdk
42+
./emsdk install ${{ inputs.emscripten_sdk }}
43+
./emsdk activate ${{ inputs.emscripten_sdk }}
44+
source ./emsdk_env.sh
45+
echo "EMSDK=$EMSDK" >> $GITHUB_ENV
46+
echo "EMSDK_NODE=$EMSDK_NODE" >> $GITHUB_ENV
47+
echo "CC_wasm32_unknown_emscripten=$EMSDK/upstream/emscripten/emcc" >> $GITHUB_ENV
48+
echo "CXX_wasm32_unknown_emscripten=$EMSDK/upstream/emscripten/em++" >> $GITHUB_ENV
49+
echo "AR_wasm32_unknown_emscripten=$EMSDK/upstream/emscripten/emar" >> $GITHUB_ENV
50+
echo "CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_LINKER=$EMSDK/upstream/emscripten/emcc" >> $GITHUB_ENV
51+
echo "CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_RUNNER=$EMSDK_NODE" >> $GITHUB_ENV
52+
shell: bash

‎.github/workflows/main.yml‎

Lines changed: 5 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,9 @@ jobs:
2929
os: ubuntu-latest
3030
steps:
3131
- uses: actions/checkout@main
32-
- uses: dtolnay/rust-toolchain@stable
32+
- uses: ./.github/actions/setup-deps
3333
with:
3434
target: ${{ matrix.target }}
35-
- name: Install GCC (i686-unknown-linux-gnu)
36-
if: ${{ matrix.target == 'i686-unknown-linux-gnu' }}
37-
run: |
38-
sudo apt-get update -y
39-
sudo apt-get install -y --no-install-recommends gcc-multilib g++-multilib
40-
shell: bash
41-
- name: Install GCC (aarch64-unknown-linux-gnu)
42-
if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }}
43-
run: |
44-
sudo apt-get update -y
45-
sudo apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross
46-
shell: bash
47-
- name: Install emscripten (wasm32-unknown-emscripten)
48-
if: ${{ matrix.target == 'wasm32-unknown-emscripten' }}
49-
run: |
50-
sudo apt-get update -y
51-
sudo apt-get install -y --no-install-recommends emscripten
52-
shell: bash
5335
- name: Build
5436
run: |
5537
cargo build --manifest-path testcrate/Cargo.toml --target ${{ matrix.target }}
@@ -61,42 +43,23 @@ jobs:
6143
needs: build
6244
strategy:
6345
matrix:
64-
os: [ubuntu-latest, macos-latest, windows-latest]
6546
include:
6647
- os: ubuntu-latest
6748
target: x86_64-unknown-linux-gnu
6849
- os: macos-latest
6950
target: aarch64-apple-darwin
7051
- os: windows-latest
7152
target: x86_64-pc-windows-msvc
53+
- os: ubuntu-latest
54+
target: wasm32-unknown-emscripten
7255
steps:
7356
- uses: actions/checkout@main
74-
- uses: dtolnay/rust-toolchain@stable
57+
- uses: ./.github/actions/setup-deps
7558
with:
7659
target: ${{ matrix.target }}
7760
- name: Run tests
7861
run: |
79-
cargo test --manifest-path testcrate/Cargo.toml
80-
shell: bash
81-
82-
test_emscripten:
83-
name: Test emscripten
84-
runs-on: ubuntu-latest
85-
needs: build
86-
steps:
87-
- uses: actions/checkout@main
88-
- uses: dtolnay/rust-toolchain@stable
89-
with:
90-
target: wasm32-unknown-emscripten
91-
- name: Install emscripten
92-
run: |
93-
sudo apt-get update -y
94-
sudo apt-get install -y --no-install-recommends emscripten
95-
shell: bash
96-
- name: Run emscripten tests
97-
run: |
98-
export CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_RUNNER=node
99-
cargo test --manifest-path testcrate/Cargo.toml
62+
cargo test --manifest-path testcrate/Cargo.toml --target ${{ matrix.target }}
10063
shell: bash
10164

10265
rustfmt:

0 commit comments

Comments
 (0)