Skip to content

PyCDE Test and Publish #42

PyCDE Test and Publish

PyCDE Test and Publish #42

Workflow file for this run

name: PyCDE Test and Publish
# Build the wheels for a series of Python versions and OSes and publish them to
# PyPI.
on:
push:
tags:
- pycde-*
workflow_dispatch:
jobs:
# Build CIRCT and run its tests using a Docker container with all the
# integration testing prerequisite installed.
build-linux:
name: Build
# Run on an internal MSFT subscription. Please DO NOT use this for any other
# workflows without talking to John Demme ([email protected], GH
# teqdruid) first. We may lose funding for this if it ends up costing too
# much.
# If individual jobs fail due to timeouts or disconnects, please report to
# John and re-run the job.
# runs-on:
# - self-hosted
# - 1ES.Pool=1ES-CIRCT-builds
# - 1ES.ImageOverride=CIRCT-StdUbuntu2204
runs-on: ubuntu-latest
strategy:
# Keep the 'matrix' strategy with one data point to make it obvious that
# this is one point in the overall matrix.
matrix:
python-env:
- cp38-manylinux_x86_64
- cp39-manylinux_x86_64
- cp310-manylinux_x86_64
- cp311-manylinux_x86_64
- cp312-manylinux_x86_64
env:
SCCACHE_GHA_ENABLED: "true"
SCCACHE_CACHE_SIZE: 15GB
steps:
- name: Set up sccache
uses: mozilla-actions/[email protected]
# Clone the CIRCT repo and its submodules. Do shallow clone to save clone
# time.
- 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
# --------
# Build and test CIRCT
# --------
- name: Install dependencies
run: |
set -o errexit
python3 -m pip install --upgrade pip
python3 -m pip install cibuildwheel twine
- 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
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 PyCDE, test it, and publish it to PyPI.
build-windows:
name: Build
# Run on an internal MSFT subscription. Please DO NOT use this for any other
# workflows without talking to John Demme ([email protected], GH
# teqdruid) first. We may lose funding for this if it ends up costing too
# much.
# If individual jobs fail due to timeouts or disconnects, please report to
# John and re-run the job.
# runs-on:
# - self-hosted
# - 1ES.Pool=1ES-CIRCT-builds
# - 1ES.ImageOverride=1esMMSWindows2022
runs-on: windows-latest
strategy:
# Keep the 'matrix' strategy with one data point to make it obvious that
# this is one point in the overall matrix.
matrix:
python-env:
- cp38-win_amd64
- cp39-win_amd64
- cp310-win_amd64
- cp311-win_amd64
- cp312-win_amd64
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- name: Set up sccache
uses: mozilla-actions/[email protected]
- name: Build additional c++ deps
shell: pwsh
run: |
& "${env:VCPKG_INSTALLATION_ROOT}/vcpkg" --triplet x64-windows install zlib capnproto
# Clone the CIRCT repo and its submodules. Do shallow clone to save clone
# time.
- 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
# --------
# Build and test CIRCT
# --------
- 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
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
push_wheels:
name: Push wheels (Tag or Weekly)
runs-on: ubuntu-20.04
if: github.repository == 'llvm/circt'
# && (github.ref_type == 'tag' || github.event_name == 'schedule')
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@v3
with:
path: ./wheelhouse/
- 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