Skip to content

PyCDE Test and Publish #46

PyCDE Test and Publish

PyCDE Test and Publish #46

Workflow file for this run

name: PyCDE Test and Publish
on:
push:
tags:
- pycde-*
workflow_dispatch:
jobs:
# ---------------------------------------------------------------------------
# Build and test Linux wheels. Run the CIRCT tests also.
# ---------------------------------------------------------------------------
build-linux:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
python-env:
- cp38-manylinux_x86_64
- cp39-manylinux_x86_64
- cp310-manylinux_x86_64
- cp311-manylinux_x86_64
- cp312-manylinux_x86_64
steps:
- name: Set up sccache
uses: mozilla-actions/[email protected]
- name: Get CIRCT (no submodules)
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
submodules: false
- name: Get shallow LLVM submodule
run: |
git submodule update --init --recursive --recommend-shallow --depth 1
- name: Install dependencies
run: |
set -o errexit
python3 -m pip install --upgrade pip
python3 -m pip install cibuildwheel twine
# Build CIRCT and run its tests using a Docker container with all the
# integration testing prerequisite installed.
- name: Build wheel
env:
CIBW_BUILD: ${{ matrix.python-env }}
CMAKE_GENERATOR: Ninja
SETUPTOOLS_SCM_DEBUG: True
BUILD_TYPE: Release
RUN_TESTS: True
COMPILER_LAUNCHER: sccache
SCCACHE_GHA_ENABLED: True
run: |
set -o errexit
export PATH=$PATH:$HOME/.local/bin
echo "Building wheel"
cibuildwheel --output-dir wheelhouse frontends/PyCDE
- name: Get wheel name
shell: bash
id: whl-name
run: |
cd wheelhouse
echo WHL=`ls *.whl` >> "$GITHUB_OUTPUT"
- name: Upload wheels as artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ steps.whl-name.outputs.WHL }}
path: wheelhouse/${{ steps.whl-name.outputs.WHL }}
retention-days: 7
if-no-files-found: error
# ---------------------------------------------------------------------------
# Build and test Windows wheels.
# ---------------------------------------------------------------------------
build-windows:
name: Build
runs-on: windows-latest
strategy:
matrix:
python-env:
- cp38-win_amd64
- cp39-win_amd64
- cp310-win_amd64
- cp311-win_amd64
- cp312-win_amd64
steps:
- name: Set up sccache
uses: mozilla-actions/[email protected]
# Since we don't use docker on Windows, we need to install the dependencies.
- name: Build additional c++ deps
shell: pwsh
run: |
& "${env:VCPKG_INSTALLATION_ROOT}/vcpkg" --triplet x64-windows install zlib capnproto
- name: Get CIRCT
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
submodules: false
- name: Get shallow LLVM submodule
run: |
git submodule update --init --recursive --recommend-shallow --depth 1
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install cibuildwheel twine
choco install ninja sccache
- name: Build wheel
shell: cmd
env:
CIBW_BUILD: ${{ matrix.python-env }}
CMAKE_GENERATOR: Ninja
SETUPTOOLS_SCM_DEBUG: True
BUILD_TYPE: Release
# PyCDE integration tests are not yet implemented on Windows.
RUN_TESTS: False
COMPILER_LAUNCHER: sccache
SCCACHE_GHA_ENABLED: True
run: |
echo "Building wheel"
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=x64 -host_arch=x64 && python3 -m cibuildwheel --output-dir wheelhouse frontends/PyCDE
- name: Get wheel name
shell: bash
id: whl-name
run: |
cd wheelhouse
echo WHL=`ls *.whl` >> "$GITHUB_OUTPUT"
- name: Upload wheels as artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ steps.whl-name.outputs.WHL }}
path: wheelhouse/${{ steps.whl-name.outputs.WHL }}
retention-days: 7
if-no-files-found: error
# ---------------------------------------------------------------------------
# If both the Linux and Windows builds are successful, push the wheels to
# pypi. Only do this on the main branch or a tag.
# ---------------------------------------------------------------------------
push_wheels:
name: Push wheels (Tag or Weekly)
runs-on: ubuntu-20.04
if: github.repository == 'llvm/circt' && ( github.ref == 'refs/heads/main' || github.ref_type == 'tag' )
needs:
- build-linux
- build-windows
environment:
name: pypi
url: https://pypi.org/p/esiaccel
permissions:
id-token: write
steps:
- name: Download wheels
uses: actions/download-artifact@v4
with:
path: ./wheelhouse/
merge-multiple: true
- name: List downloaded wheels
run: ls -laR
working-directory: ./wheelhouse/
- name: Upload wheels to pypi
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: wheelhouse/
verify-metadata: false