Skip to content

[eudsl-tblgen] pybind TableGen #7

[eudsl-tblgen] pybind TableGen

[eudsl-tblgen] pybind TableGen #7

name: "Build and test EUDSL"
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/workflows/build_eudsl.yml"
- "projects/eudsl"
- "third_party/llvm-project"
merge_group:
push:
branches:
- main
paths:
- ".github/workflows/build_eudsl.yml"
- "projects/eudsl"
- "third_party/llvm-project"
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
cancel-in-progress: true
jobs:
build-eudsl-tblgen:
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"
- name: "windows_x86_64"
runs-on: "windows-2019"
os: "windows"
- name: "macos_arm64"
runs-on: "macos-14"
os: "macos"
- name: "macos_x86_64"
runs-on: "macos-13"
os: "macos"
runs-on: ${{ matrix.runs-on }}
name: "Build eudsl-tblgen ${{ 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: eudsl_${{ 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: "eudsl_${{ matrix.name }}_clang"
os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
- name: "Download MLIR"
env:
GH_TOKEN: ${{ github.token }}
run: |
export RELEASE_PREFIX="mlir_${{ matrix.name }}"
RELEASE_URL=$(gh release view latest --json assets -q '.assets |= sort_by(.createdAt) | .assets | map(select(.name | contains(env.RELEASE_PREFIX))) | .[-1] | .url')
curl -sLO $RELEASE_URL
tar xf $RELEASE_PREFIX*.tar.gz
echo "LLVM_DIR=$PWD/llvm-install/lib/cmake/llvm" >> $GITHUB_ENV
- name: "Build eudsl-tblgen"
id: build
run: |
export EUDSL_SRC_DIR="$PWD/projects/eudsl"
ccache -z
$python3_command -m pip wheel "$EUDSL_SRC_DIR/eudsl-tblgen" -w wheelhouse
ccache -s
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: eudsl_tblgen_${{ matrix.name }}_artifact
path: wheelhouse/*.whl
if-no-files-found: warn
- 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') }}
test-eudsl-tblgen:
needs: [build-eudsl-tblgen]
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"
- name: "windows_x86_64"
runs-on: "windows-2019"
os: "windows"
- name: "macos_arm64"
runs-on: "macos-14"
os: "macos"
- name: "macos_x86_64"
runs-on: "macos-13"
os: "macos"
runs-on: ${{ matrix.runs-on }}
name: "Test eudsl-tblgen ${{ matrix.name }}"
defaults:
run:
shell: bash
container:
image: ${{ matrix.container }}
steps:
- name: "Check out repository"
uses: actions/[email protected]
with:
submodules: false
- name: "Setup base"
uses: ./.github/actions/setup_base
id: setup_base
with:
os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
- uses: actions/download-artifact@v4
with:
name: eudsl_tblgen_${{ matrix.name }}_artifact
path: wheelhouse
- name: "Install eudsl-tblgen"
run: |
$python3_command -m pip install wheelhouse/eudsl_tblgen*.whl
$python3_command -m pip install pytest
- name: "Test eudsl-tblgen"
run: |
if [ ${{ matrix.os }} == 'windows' ]; then
$python3_command -m pytest -s projects/eudsl/eudsl-tblgen/tests
else
$python3_command -m pytest --capture=tee-sys projects/eudsl/eudsl-tblgen/tests
fi