Skip to content

BLD: Initial linux wheel build setup #34

BLD: Initial linux wheel build setup

BLD: Initial linux wheel build setup #34

Workflow file for this run

name: Wheel
on:
pull_request:
branches:
- main # NOTE: to remove
push:
branches:
- main # NOTE: to remove
schedule:
# At 09:00 on Monday. (see https://crontab.guru)
- cron: '0 9 * * 1'
defaults:
run:
shell: bash -leo pipefail {0}
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build-wheel:
strategy:
matrix:
os: ['ubuntu-24.04'] #['macos-13', 'macos-14'] # 'ubuntu-24.04', , 'windows-2022'
arch: ['x86_64'] # , 'aarch64'
python: ['3.10'] # , '3.11', '3.12'
exclude:
- os: 'macos-13'
arch: 'aarch64'
- os: 'macos-14'
arch: 'x86_64'
- os: 'windows-2022'
arch: 'aarch64'
runs-on: ${{ matrix.os }}
env:
LLVM_SOURCE_DIR: ${{ github.workspace }}/llvm-project
FINCH_MLIR_SOURCE_DIR: ${{ github.workspace }}/Finch-mlir
steps:
- name: Checkout Finch-mlir
uses: actions/checkout@v4
with:
path: 'Finch-mlir'
- name: Checkout LLVM
uses: actions/checkout@v4
with:
repository: llvm/llvm-project
ref: '4091bc61e315f187829dca877dd908a07ba9cb91' # Latest commit as of 2024-10-17
path: 'llvm-project'
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.python }}
max-size: "1G"
verbose: 2
variant: ccache
- name: Setup env
uses: mamba-org/setup-micromamba@v2
with:
environment-file: Finch-mlir/ci/environment.yml
init-shell: >-
bash
cache-environment: true
cache-downloads: true
post-cleanup: 'all'
create-args: >-
python=${{ matrix.python }}
- name: Set env variables
run: |
echo "HOST_CCACHE_DIR="$(ccache --get-config cache_dir)"" >> $GITHUB_ENV
# - name: Build wheel
# run: |
# cp Finch-mlir/setup.py .
# python -m build --wheel
# - name: Install cross-compilation toolchain
# shell: bash
# if: ${{ inputs.MATRIX_OS == 'ubuntu-24.04' && inputs.MATRIX_ARCH == 'aarch64' }}
# run: |
# sudo apt-get update
# sudo apt-get install -y binutils-aarch64-linux-gnu \
# g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
# - name: Set up QEMU
# if: ${{ matrix.os == 'ubuntu-24.04' && matrix.arch == 'aarch64' }}
# uses: docker/setup-qemu-action@v2
# with:
# platforms: ${{ matrix.arch }}
- name: cibuildwheel run
run: |
cibuildwheel --output-dir ./wheelhouse
- name: Download cache from container ubuntu
if: (matrix.OS == 'ubuntu-20.04' && matrix.ARCH == 'x86_64') && (success() || failure())
working-directory: ${{ steps.setup_base.outputs.WORKSPACE_ROOT }}
run: |
ccache -s
rm -rf $HOST_CCACHE_DIR
mv ./wheelhouse/.ccache $HOST_CCACHE_DIR
# shouldn't be /output/.ccache?
ls -la $HOST_CCACHE_DIR
ccache -s
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
path: wheelhouse/*.whl
name: artifact_finch_mlir-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.python }}
# TODO: run pydata/sparse MLIR tests
# run-tests:
# ...
release-wheel:
runs-on: 'ubuntu-latest'
needs: build-wheel
permissions:
id-token: write
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: artifact_finch_mlir-*
path: wheelhouse
merge-multiple: true
- name: Create release
uses: ncipollo/release-action@v1
with:
artifacts: 'wheelhouse/*.whl'
token: ${{ secrets.GITHUB_TOKEN }}
tag: latest
name: latest
body: Latest release
removeArtifacts: false
allowUpdates: true
replacesArtifacts: true
makeLatest: true
artifactErrorsFailBuild: true