diff --git a/.github/workflows/wasm-sdk-build.yml b/.github/workflows/wasm-sdk-build.yml index 56525ba0560..f0c09e0cc27 100644 --- a/.github/workflows/wasm-sdk-build.yml +++ b/.github/workflows/wasm-sdk-build.yml @@ -81,9 +81,36 @@ jobs: - name: Install wasm-opt run: | if ! command -v wasm-opt &> /dev/null; then - echo "Installing wasm-opt..." - sudo apt-get update - sudo apt-get install -y binaryen + echo "Installing wasm-opt from GitHub releases..." + # Get the latest release version + WASM_OPT_VERSION=$(curl -s https://api.github.com/repos/WebAssembly/binaryen/releases/latest | grep -oP '"tag_name": "\K[^"]+') + echo "Installing wasm-opt version: $WASM_OPT_VERSION" + + # Detect architecture + ARCH=$(uname -m) + if [ "$ARCH" = "x86_64" ]; then + BINARYEN_ARCH="x86_64" + elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then + BINARYEN_ARCH="aarch64" + else + echo "Unsupported architecture: $ARCH" + exit 1 + fi + + echo "Detected architecture: $ARCH, using binaryen arch: $BINARYEN_ARCH" + + # Download and extract binaryen + curl -L "https://github.com/WebAssembly/binaryen/releases/download/${WASM_OPT_VERSION}/binaryen-${WASM_OPT_VERSION}-${BINARYEN_ARCH}-linux.tar.gz" -o /tmp/binaryen.tar.gz + tar -xzf /tmp/binaryen.tar.gz -C /tmp + + # Move wasm-opt to PATH + sudo mv /tmp/binaryen-${WASM_OPT_VERSION}/bin/wasm-opt /usr/local/bin/ + sudo chmod +x /usr/local/bin/wasm-opt + + # Clean up + rm -rf /tmp/binaryen.tar.gz /tmp/binaryen-${WASM_OPT_VERSION} + + echo "wasm-opt installed successfully" else echo "wasm-opt already installed" fi