[eudsl-tblgen] pybind TableGen #10
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Build and test and release 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_test_release_eudsl.yml" | |
- "projects/eudsl" | |
- "third_party/llvm-project" | |
merge_group: | |
push: | |
branches: | |
- main | |
paths: | |
- ".github/workflows/build_test_release_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: "ubuntu_x86_64" | |
runs-on: "ubuntu-22.04" | |
os: "ubuntu" | |
- 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] | |
- 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: | | |
if [[ "${{ matrix.os }}" == "almalinux" ]] || [[ "${{ matrix.os }}" == "ubuntu" ]]; then | |
export RELEASE_PREFIX="mlir_manylinux_x86_64" | |
else | |
export RELEASE_PREFIX="mlir_${{ matrix.name }}" | |
fi | |
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: | | |
pip install cibuildwheel | |
export EUDSL_SRC_DIR="$PWD/projects/eudsl" | |
if [[ "${{ matrix.os }}" == "ubuntu" ]]; then | |
export LLVM_DIR="/host/$LLVM_DIR" | |
fi | |
$python3_command -m cibuildwheel "$EUDSL_SRC_DIR/eudsl-tblgen" --output-dir wheelhouse | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: eudsl_tblgen_${{ matrix.name }}_artifact | |
path: wheelhouse/*.whl | |
if-no-files-found: warn | |
- 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.os, 'macos') || startsWith(matrix.os, 'windows') || startsWith(matrix.os, 'ubuntu') }} | |
test-eudsl-tblgen: | |
needs: [build-eudsl-tblgen] | |
strategy: | |
fail-fast: false | |
matrix: | |
runs-on: ["ubuntu-22.04", "macos-14", "macos-13"] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
include: [ | |
{runs-on: "ubuntu-22.04", name: "ubuntu_x86_64", os: "ubuntu"}, | |
{runs-on: "macos-14", name: "macos_arm64", os: "macos"}, | |
{runs-on: "macos-13", name: "macos_x86_64", os: "macos"}, | |
] | |
runs-on: ${{ matrix.runs-on }} | |
name: "Test eudsl-tblgen ${{ matrix.name }}" | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: "Check out repository" | |
uses: actions/[email protected] | |
with: | |
submodules: false | |
- name: "Install Python" | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "${{ matrix.python-version }}" | |
- uses: actions/download-artifact@v4 | |
with: | |
name: eudsl_tblgen_${{ matrix.name }}_artifact | |
path: wheelhouse | |
- name: "Install eudsl-tblgen" | |
run: | | |
python -m pip install pytest | |
python -m pip install eudsl-tblgen -f wheelhouse | |
- name: "Test eudsl-tblgen" | |
run: | | |
if [ ${{ matrix.os }} == 'windows' ]; then | |
python -m pytest -s projects/eudsl/eudsl-tblgen/tests | |
else | |
python -m pytest --capture=tee-sys projects/eudsl/eudsl-tblgen/tests | |
fi | |
release-eudsl-tblgen: | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
needs: [test-eudsl-tblgen] | |
runs-on: "ubuntu-22.04" | |
name: "Release eudsl-tblgen" | |
permissions: | |
id-token: write | |
contents: write | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
path: wheelhouse | |
- name: Release current commit | |
uses: ncipollo/[email protected] | |
with: | |
artifacts: "wheelhouse/eudsl_tblgen*.whl" | |
token: "${{ secrets.GITHUB_TOKEN }}" | |
tag: "latest" | |
name: "latest" | |
removeArtifacts: false | |
allowUpdates: true | |
replacesArtifacts: true | |
makeLatest: true | |
omitBody: true |