-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[python] start python bindings (#28)
- Loading branch information
1 parent
e821caf
commit 6a9b0ef
Showing
55 changed files
with
6,605 additions
and
24 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
Checks: '-*,clang-diagnostic-*,llvm-*,misc-*,-misc-const-correctness,-misc-unused-parameters,-misc-non-private-member-variables-in-classes,-misc-no-recursion,-misc-use-anonymous-namespace,readability-identifier-naming,-misc-include-cleaner' | ||
CheckOptions: | ||
- key: readability-identifier-naming.ClassCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.EnumCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.FunctionCase | ||
value: camelBack | ||
- key: readability-identifier-naming.MemberCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.ParameterCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.UnionCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.VariableCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.IgnoreMainLikeFunctions | ||
value: 1 | ||
- key: readability-redundant-member-init.IgnoreBaseInCopyConstructors | ||
value: 1 | ||
- key: modernize-use-default-member-init.UseAssignment | ||
value: 1 | ||
# MLIR | ||
- key: readability-identifier-naming.MemberCase | ||
value: camelBack | ||
- key: readability-identifier-naming.ParameterCase | ||
value: camelBack | ||
- key: readability-identifier-naming.VariableCase | ||
value: camelBack |
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,8 @@ | ||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
# See https://llvm.org/LICENSE.txt for license information. | ||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
# Copyright (c) 2024. | ||
|
||
name: "Build, test, release EUDSL" | ||
|
||
on: | ||
|
@@ -13,10 +18,16 @@ on: | |
description: 'Run the build with a tmate session ONLY in case of failure' | ||
required: false | ||
default: false | ||
eudslpy_disable_compile_opt: | ||
type: boolean | ||
description: 'use -O0 to build eudsl-py' | ||
required: false | ||
default: true | ||
pull_request: | ||
paths: | ||
- ".github/workflows/build_test_release_eudsl.yml" | ||
- "projects/eudsl-tblgen" | ||
- "projects/eudsl-py" | ||
- "third_party/llvm-project" | ||
merge_group: | ||
push: | ||
|
@@ -25,14 +36,15 @@ on: | |
paths: | ||
- ".github/workflows/build_test_release_eudsl.yml" | ||
- "projects/eudsl-tblgen" | ||
- "projects/eudsl-py" | ||
- "third_party/llvm-project" | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.event.number || github.sha }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
build-eudsl-tblgen: | ||
build-eudsl: | ||
|
||
strategy: | ||
fail-fast: false | ||
|
@@ -53,7 +65,7 @@ jobs: | |
|
||
runs-on: ${{ matrix.runs-on }} | ||
|
||
name: "Build eudsl-tblgen ${{ matrix.name }}" | ||
name: "Build eudsl ${{ matrix.name }}" | ||
|
||
defaults: | ||
run: | ||
|
@@ -83,7 +95,7 @@ jobs: | |
os: ${{ matrix.os }} | ||
arch: ${{ matrix.arch }} | ||
|
||
- name: "Download MLIR" | ||
- name: "Download MLIR and configure build" | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
run: | | ||
|
@@ -93,31 +105,58 @@ jobs: | |
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') | ||
RELEASE_URL=$(gh release view llvm --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 | ||
if [[ "${{ matrix.os }}" == "ubuntu" ]]; then | ||
echo "LLVM_DIR=/host/$PWD/llvm-install/lib/cmake/llvm" >> $GITHUB_ENV | ||
echo "MLIR_DIR=/host/$PWD/llvm-install/lib/cmake/mlir" >> $GITHUB_ENV | ||
echo "Clang_DIR=/host/$PWD/llvm-install/lib/cmake/clang" >> $GITHUB_ENV | ||
echo "CCACHE_DIR=/host/$CCACHE_DIR" >> $GITHUB_ENV | ||
else | ||
echo "LLVM_DIR=$PWD/llvm-install/lib/cmake/llvm" >> $GITHUB_ENV | ||
echo "MLIR_DIR=$PWD/llvm-install/lib/cmake/mlir" >> $GITHUB_ENV | ||
echo "Clang_DIR=$PWD/llvm-install/lib/cmake/clang" >> $GITHUB_ENV | ||
fi | ||
# since linux builds execute in the cibuildwheel almalinux container | ||
if [[ "${{ matrix.os }}" == "ubuntu" ]]; then | ||
export LLVM_DIR="/host/$LLVM_DIR" | ||
echo CC=clang >> $GITHUB_ENV | ||
echo CXX=clang++ >> $GITHUB_ENV | ||
fi | ||
# these have to match the deployment targets of the LLVM build runners | ||
# ld: warning: object file (libLLVMTableGen.a[3](Error.cpp.o)) was built for newer 'macOS' version (13.7) than being linked (10.13) | ||
if [[ "${{ matrix.runs-on }}" == "macos-14" ]]; then | ||
export MACOSX_DEPLOYMENT_TARGET=14.0 | ||
echo MACOSX_DEPLOYMENT_TARGET=14.0 >> $GITHUB_ENV | ||
elif [[ "${{ matrix.runs-on }}" == "macos-13" ]]; then | ||
export MACOSX_DEPLOYMENT_TARGET=13.7 | ||
echo MACOSX_DEPLOYMENT_TARGET=13.7 >> $GITHUB_ENV | ||
fi | ||
pip install cibuildwheel | ||
- name: "Build eudsl-tblgen" | ||
run: | | ||
ccache -z | ||
$python3_command -m cibuildwheel "$PWD/projects/eudsl-tblgen" --output-dir wheelhouse | ||
ccache -s | ||
- name: "Build eudsl-py" | ||
if: ${{ ! startsWith(matrix.os, 'windows') }} | ||
run: | | ||
# prevent OOM on free GHA | ||
export DISABLE_COMPILE_OPT="${{ inputs.debug_with_tmate }}" | ||
ccache -z | ||
$python3_command -m cibuildwheel "$PWD/projects/eudsl-py" --output-dir wheelhouse | ||
ccache -s | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: eudsl_tblgen_${{ matrix.name }}_artifact | ||
name: eudsl_${{ matrix.name }}_artifact | ||
path: wheelhouse/*.whl | ||
if-no-files-found: warn | ||
|
||
|
@@ -130,7 +169,7 @@ jobs: | |
|
||
test-eudsl-tblgen: | ||
|
||
needs: [build-eudsl-tblgen] | ||
needs: [build-eudsl] | ||
|
||
strategy: | ||
fail-fast: false | ||
|
@@ -146,7 +185,7 @@ jobs: | |
|
||
runs-on: ${{ matrix.runs-on }} | ||
|
||
name: "Test eudsl-tblgen ${{ matrix.name }}" | ||
name: "Test eudsl ${{ matrix.name }}" | ||
|
||
defaults: | ||
run: | ||
|
@@ -165,16 +204,18 @@ jobs: | |
|
||
- uses: actions/download-artifact@v4 | ||
with: | ||
name: eudsl_tblgen_${{ matrix.name }}_artifact | ||
name: eudsl_${{ 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: | | ||
export TESTS_DIR="$PWD/projects/eudsl-tblgen/tests" | ||
if [ ${{ matrix.os }} == 'windows' ]; then | ||
python -m pytest -s -rA $TESTS_DIR | ||
|
@@ -191,7 +232,7 @@ jobs: | |
fail-fast: false | ||
matrix: | ||
name: [ubuntu_x86_64, windows_x86_64, macos_arm64, macos_x86_64] | ||
|
||
runs-on: "ubuntu-22.04" | ||
name: "Release eudsl-tblgen" | ||
|
||
|
@@ -218,3 +259,88 @@ jobs: | |
replacesArtifacts: true | ||
makeLatest: true | ||
omitBody: true | ||
|
||
test-eudsl-py: | ||
|
||
needs: [build-eudsl] | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
runs-on: ["ubuntu-22.04", "macos-14", "macos-13", | ||
# "windows-2019" | ||
] | ||
python-version: ["3.9", "3.10", "3.11", "3.12"] | ||
include: [ | ||
{runs-on: "ubuntu-22.04", name: "ubuntu_x86_64", os: "ubuntu"}, | ||
# TODO(max): enable on windows by statically linking | ||
# {runs-on: "windows-2019", name: "windows_x86_64", os: "windows"}, | ||
{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-py ${{ 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_${{ matrix.name }}_artifact | ||
path: wheelhouse | ||
|
||
- name: "Install eudsl-py" | ||
run: | | ||
python -m pip install pytest | ||
python -m pip install eudsl-py -f wheelhouse | ||
- name: "Test eudsl-py" | ||
run: | | ||
export TESTS_DIR="$PWD/projects/eudsl-py/tests" | ||
python -m pytest -rA --capture=tee-sys $TESTS_DIR | ||
release-eudsl-py: | ||
|
||
if: ${{ github.event_name == 'workflow_dispatch' }} | ||
needs: [test-eudsl-tblgen, test-eudsl-py] | ||
runs-on: "ubuntu-22.04" | ||
name: "Release eudsl" | ||
|
||
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 |
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
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
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
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
Oops, something went wrong.