Skip to content

Commit 3301334

Browse files
committed
Refactor CI workflow to install WASI-SDK and WABT from a separate reusable workflow
1 parent 7d83aa6 commit 3301334

2 files changed

Lines changed: 78 additions & 74 deletions

File tree

.github/workflows/compilation_on_android_ubuntu.yml

Lines changed: 23 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -315,17 +315,8 @@ jobs:
315315
fail-fast: false
316316
matrix:
317317
os: [ubuntu-22.04]
318-
wasi_sdk_release:
319-
[
320-
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz"
321-
]
322-
wabt_release:
323-
[
324-
"https://github.com/WebAssembly/wabt/releases/download/1.0.31/wabt-1.0.31-ubuntu.tar.gz",
325-
]
326-
include:
327-
- os: ubuntu-22.04
328-
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}
318+
llvm_cache_key: [${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}]
319+
329320
steps:
330321
- name: checkout
331322
uses: actions/checkout@v4
@@ -346,19 +337,10 @@ jobs:
346337
if: (steps.retrieve_llvm_libs.outputs.cache-hit != 'true')
347338
run: echo "::error::can not get prebuilt llvm libraries" && exit 1
348339

349-
- name: download and install wasi-sdk
350-
run: |
351-
cd /opt
352-
sudo wget ${{ matrix.wasi_sdk_release }}
353-
sudo tar -xzf wasi-sdk-*.tar.gz
354-
sudo ln -sf wasi-sdk-25.0-x86_64-linux wasi-sdk
355-
356-
- name: download and install wabt
357-
run: |
358-
cd /opt
359-
sudo wget ${{ matrix.wabt_release }}
360-
sudo tar -xzf wabt-1.0.31-*.tar.gz
361-
sudo mv wabt-1.0.31 wabt
340+
- name: install-wasi-sdk-wabt
341+
uses: ./.github/workflows/install_wasi_sdk_wabt.yml
342+
with:
343+
os: ${{ matrix.os }}
362344

363345
- name: Build wamrc
364346
run: |
@@ -397,17 +379,7 @@ jobs:
397379
$MULTI_TIER_JIT_BUILD_OPTIONS,
398380
]
399381
os: [ubuntu-22.04]
400-
wasi_sdk_release:
401-
[
402-
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz",
403-
]
404-
wabt_release:
405-
[
406-
"https://github.com/WebAssembly/wabt/releases/download/1.0.31/wabt-1.0.31-ubuntu.tar.gz",
407-
]
408-
include:
409-
- os: ubuntu-22.04
410-
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}
382+
llvm_cache_key: [${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}]
411383

412384
steps:
413385
- name: checkout
@@ -430,12 +402,10 @@ jobs:
430402
if: (!endsWith(matrix.make_options, '_INTERP_BUILD_OPTIONS')) && (steps.retrieve_llvm_libs.outputs.cache-hit != 'true')
431403
run: echo "::error::can not get prebuilt llvm libraries" && exit 1
432404

433-
- name: download and install wabt
434-
run: |
435-
cd /opt
436-
sudo wget ${{ matrix.wabt_release }}
437-
sudo tar -xzf wabt-1.0.31-*.tar.gz
438-
sudo mv wabt-1.0.31 wabt
405+
- name: install-wasi-sdk-wabt
406+
uses: ./.github/workflows/install_wasi_sdk_wabt.yml
407+
with:
408+
os: ${{ matrix.os }}
439409

440410
- name: Build wamrc
441411
if: (!endsWith(matrix.make_options, '_INTERP_BUILD_OPTIONS'))
@@ -464,34 +434,12 @@ jobs:
464434
strategy:
465435
matrix:
466436
os: [ubuntu-22.04]
467-
wasi_sdk_release:
468-
[
469-
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz"
470-
]
471-
wabt_release:
472-
[
473-
"https://github.com/WebAssembly/wabt/releases/download/1.0.31/wabt-1.0.31-ubuntu.tar.gz",
474-
]
475-
include:
476-
- os: ubuntu-22.04
477-
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}
437+
llvm_cache_key: [${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}]
438+
478439
steps:
479440
- name: checkout
480441
uses: actions/checkout@v4
481442

482-
- name: download and install wasi-sdk
483-
run: |
484-
cd /opt
485-
sudo wget ${{ matrix.wasi_sdk_release }}
486-
sudo tar -xzf wasi-sdk-*.tar.gz
487-
sudo ln -sf wasi-sdk-25.0-x86_64-linux wasi-sdk
488-
489-
- name: download and install wabt
490-
run: |
491-
cd /opt
492-
sudo wget ${{ matrix.wabt_release }}
493-
sudo tar -xzf wabt-1.0.31-*.tar.gz
494-
sudo ln -sf wabt-1.0.31 wabt
495443
- name: Get LLVM libraries
496444
id: retrieve_llvm_libs
497445
uses: actions/cache@v4
@@ -503,12 +451,19 @@ jobs:
503451
./core/deps/llvm/build/libexec
504452
./core/deps/llvm/build/share
505453
key: ${{ matrix.llvm_cache_key }}
454+
455+
- name: install-wasi-sdk-wabt
456+
uses: ./.github/workflows/install_wasi_sdk_wabt.yml
457+
with:
458+
os: ${{ matrix.os }}
459+
506460
- name: Build wamrc
507461
run: |
508462
mkdir build && cd build
509463
cmake ..
510464
cmake --build . --config Release --parallel 4
511465
working-directory: wamr-compiler
466+
512467
- name: Build Sample [basic]
513468
run: |
514469
cd samples/basic
@@ -634,10 +589,6 @@ jobs:
634589
$MEMORY64_TEST_OPTIONS,
635590
$MULTI_MEMORY_TEST_OPTIONS,
636591
]
637-
wasi_sdk_release:
638-
[
639-
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz"
640-
]
641592
include:
642593
- os: ubuntu-22.04
643594
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}
@@ -706,11 +657,9 @@ jobs:
706657

707658
- name: download and install wasi-sdk
708659
if: matrix.test_option == '$WASI_TEST_OPTIONS'
709-
run: |
710-
cd /opt
711-
sudo wget ${{ matrix.wasi_sdk_release }}
712-
sudo tar -xzf wasi-sdk-*.tar.gz
713-
sudo ln -sf wasi-sdk-25.0-x86_64-linux wasi-sdk
660+
uses: ./.github/workflows/install_wasi_sdk_wabt.yml
661+
with:
662+
os: ${{ matrix.os }}
714663

715664
# It is a temporary solution until new wasi-sdk that includes bug fixes is released
716665
- name: build wasi-libc from source
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Copyright (C) 2019 Intel Corporation. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3+
4+
# Get URLs from:
5+
# - https://github.com/WebAssembly/wasi-sdk/releases
6+
# - https://github.com/WebAssembly/wabt/releases
7+
8+
# Install WASI-SDK and WABT at /opt
9+
# /opt is the assumed location widely used in the project
10+
name: Install WASI-SDK and WABT
11+
12+
on:
13+
workflow_call:
14+
inputs:
15+
os:
16+
required: true
17+
type: string
18+
19+
jobs:
20+
install:
21+
runs-on: ${{ inputs.os }}
22+
23+
steps:
24+
- name: Check OS
25+
id: os-check
26+
run: echo "Operating System: ${{ inputs.os }}"
27+
28+
- name: Set URLs
29+
id: set-urls
30+
run: |
31+
if [[ "${{ inputs.os }}" == windows-* ]]; then
32+
echo "wasi_url=https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-windows.tar.gz" >> $GITHUB_ENV
33+
echo "wabt_url=https://github.com/WebAssembly/wabt/releases/download/1.0.37/wabt-1.0.37-windows.tar.gz" >> $GITHUB_ENV
34+
elif [[ "${{ inputs.os }}" == ubuntu-* ]]; then
35+
echo "wasi_url=https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz" >> $GITHUB_ENV
36+
echo "wabt_url=https://github.com/WebAssembly/wabt/releases/download/1.0.37/wabt-1.0.37-ubuntu-20.04.tar.gz" >> $GITHUB_ENV
37+
elif [[ "${{ inputs.os }}" == macos-* ]]; then
38+
echo "wasi_url=https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-macos.tar.gz" >> $GITHUB_ENV
39+
echo "wabt_url=https://github.com/WebAssembly/wabt/releases/download/1.0.37/wabt-1.0.37-macos-14.tar.gz" >> $GITHUB_ENV
40+
else
41+
echo "Unsupported OS"
42+
exit 1
43+
fi
44+
45+
- name: Install WASI-SDK
46+
run: |
47+
sudo wget -O /opt/wasi-sdk.tar.gz ${{ env.wasi_url }}
48+
sudo tar -xf /opt/wasi-sdk.tar.gz -C /opt
49+
sudo rm /opt/wasi-sdk.tar.gz
50+
51+
- name: Install WABT
52+
run: |
53+
sudo wget -O /opt/wabt.tar.gz ${{ env.wabt_url }}
54+
sudo tar -xf /opt/wabt.tar.gz -C /opt
55+
sudo rm /opt/wabt.tar.gz

0 commit comments

Comments
 (0)