Skip to content

[js] start js bindings #162

[js] start js bindings

[js] start js bindings #162

Workflow file for this run

name: "Build LLVM and MLIR"
on:
workflow_dispatch:
inputs:
force_debug_with_tmate:
type: boolean
description: 'Run the build with tmate session'
required: false
default: false
debug_with_tmate:
type: boolean
description: 'Run the build with a tmate session ONLY in case of failure'
required: false
default: false
pull_request:
paths:
- ".github/actions/setup_base"
- ".github/workflows/build_llvm.yml"
- "build_tools/cmake/llvm_cache.cmake"
- "build_tools/cmake/llvm_wasm_cache.cmake"
- "build_tools/cmake/llvm_wasm_project_include.cmake"
- "build_tools/build_llvm.sh"
- "build_tools/build_llvm_wasi.sh"
- "third_party/llvm-project"
push:
branches:
- main
paths:
- "build_tools/cmake/llvm_cache.cmake"
- "build_tools/cmake/llvm_wasm_cache.cmake"
- "build_tools/cmake/llvm_wasm_project_include.cmake"
- "build_tools/build_llvm.sh"
- "build_tools/build_llvm_wasi.sh"
- "third_party/llvm-project"
concurrency:
# A PR number if a pull request and otherwise the commit hash. This cancels
# queued and in-progress runs for the same PR (presubmit) or commit
# (postsubmit). The workflow name is prepended to avoid conflicts between
# different workflows.
group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
cancel-in-progress: true
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- name: "manylinux_x86_64"
runs-on: "ubuntu-22.04"
container: "quay.io/pypa/manylinux_2_28_x86_64"
os: "almalinux"
arch: x86_64
- name: "wasm_wasi"
runs-on: "macos-14"
# container: "quay.io/pypa/manylinux_2_28_x86_64"
os: "macos"
arch: "wasm32-wasi"
- name: "windows_x86_64"
runs-on: "windows-2019"
os: "windows"
arch: x86_64
- name: "macos_arm64"
runs-on: "macos-14"
os: "macos"
arch: arm64
- name: "macos_x86_64"
runs-on: "macos-13"
os: "macos"
arch: x86_64
runs-on: ${{ matrix.runs-on }}
name: ${{ matrix.name }}
defaults:
run:
shell: bash
permissions:
id-token: write
contents: write
env:
# either the PR number or `branch-N` where N always increments
cache-key: "mlir_${{ matrix.name }}_clang_${{ format('{0}-{1}', github.ref_name, github.run_number) }}"
container:
image: ${{ matrix.container }}
steps:
- name: "Check out repository"
uses: actions/[email protected]
with:
submodules: true
- name: "Setup base"
uses: ./.github/actions/setup_base
id: setup_base
with:
cache-key: ${{ env.cache-key }}
restore-key: "mlir_${{ matrix.name }}_clang"
os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
- name: "Build LLVM and MLIR"
id: build
run: |
export LLVM_SOURCE_DIR="$PWD/third_party/llvm-project"
export LLVM_BUILD_DIR="$PWD/llvm-build"
# double nested so that upload artifacts uploads a folder
export LLVM_INSTALL_DIR="$PWD/llvm-install/llvm-install"
ccache -z
$python3_command -m pip install -r third_party/llvm-project/mlir/python/requirements.txt
if [[ "${{ matrix.arch }}" == "wasm32-wasi" ]]; then
build_tools/build_llvm_wasi.sh
else
build_tools/build_llvm.sh
echo "*********************** SMOKE TEST *********************************"
"$LLVM_INSTALL_DIR/bin/mlir-tblgen" --version
echo "*********************** SMOKE TEST *********************************"
fi
ccache -s
pushd $LLVM_SOURCE_DIR && LLVM_SHA_SHORT=$(git rev-parse --short HEAD) && popd
tar -czf mlir_${{ matrix.name }}_$(date +'%Y%m%d')_$LLVM_SHA_SHORT.tar.gz -C "$LLVM_INSTALL_DIR/.." llvm-install
rm -rf "$LLVM_BUILD_DIR" "$LLVM_SOURCE_DIR"
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: mlir_${{ matrix.name }}_artifact
path: llvm-install
if-no-files-found: warn
- name: Release current commit
if: ${{ !cancelled() && github.event_name == 'push' && github.ref_name == 'main' }}
uses: ncipollo/[email protected]
with:
artifacts: "*.tar.gz"
token: "${{ secrets.GITHUB_TOKEN }}"
tag: "latest"
name: "latest"
removeArtifacts: false
allowUpdates: true
replacesArtifacts: true
makeLatest: true
- name: "Save cache"
uses: actions/cache/save@v3
if: ${{ !cancelled() && github.event_name == 'push' && github.ref_name == 'main' }}
with:
path: ${{ steps.setup_base.outputs.cache-dir }}
key: ${{ env.cache-key }}
- name: "Setup tmate session"
if: ${{ (failure() && inputs.debug_with_tmate) || inputs.force_debug_with_tmate }}
uses: mxschmitt/[email protected]
with:
limit-access-to-actor: true
install-dependencies: ${{ startsWith(matrix.runs-on, 'macos') || startsWith(matrix.runs-on, 'windows') }}