Skip to content

chore(deps): update actions/setup-python action to v6.1.0 #237

chore(deps): update actions/setup-python action to v6.1.0

chore(deps): update actions/setup-python action to v6.1.0 #237

name: llvmlite_win-64_wheel_builder
on:
pull_request:
paths:
- .github/workflows/llvmlite_win-64_wheel_builder.yml
workflow_dispatch:
inputs:
llvmdev_run_id:
description: 'llvmdev workflow run ID (optional)'
required: false
type: string
upload_wheel_to_anaconda:
description: 'Upload wheel to Anaconda Cloud - numba channel'
required: false
type: boolean
default: false
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
FALLBACK_LLVMDEV_VERSION: "20"
CONDA_CHANNEL_NUMBA: numba/label/llvm20-wheel
VALIDATION_PYTHON_VERSION: "3.12"
ARTIFACT_RETENTION_DAYS: 7
jobs:
win-64-build:
name: win-64-build
runs-on: windows-2025
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@835234971496cad1653abb28a638a281cf32541f # v3.2.0
with:
auto-update-conda: true
auto-activate-base: true
- name: Setup Python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Download llvmdev Artifact
if: ${{ inputs.llvmdev_run_id != '' }}
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: llvmdev_for_wheel_win-64
path: llvmdev_conda_packages
run-id: ${{ inputs.llvmdev_run_id }}
repository: ${{ github.repository }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install build dependencies
run: |
if [ "${{ inputs.llvmdev_run_id }}" != "" ]; then
CHAN="file:///${{ github.workspace }}/llvmdev_conda_packages"
conda install -c defaults -c "$CHAN" "llvmdev=${{ env.FALLBACK_LLVMDEV_VERSION }}"
else
CHAN="${{ env.CONDA_CHANNEL_NUMBA }}"
conda install -c defaults "${CHAN}::llvmdev=${{ env.FALLBACK_LLVMDEV_VERSION }}"
fi
conda install -c defaults cmake libxml2
python -m pip install build wheel setuptools delvewheel
- name: Build wheel
env:
LLVMLITE_PACKAGE_FORMAT: "wheel"
run: python -m build --wheel --no-isolation
- name: Repair wheel with delvewheel
run: |
mkdir -p wheel_temp
mv dist/*.whl wheel_temp/
python -m delvewheel repair --analyze-existing -w dist wheel_temp/*.whl
ls -l dist
- name: Upload llvmlite wheel
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: llvmlite-win-64-py${{ matrix.python-version }}
path: dist/*.whl
compression-level: 0
retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }}
if-no-files-found: error
- name: Show Workflow Run ID
run: "echo \"Workflow Run ID: ${{ github.run_id }}\""
win-64-validate:
name: win-64-validate
needs: win-64-build
runs-on: windows-2025
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@835234971496cad1653abb28a638a281cf32541f # v3.2.0
with:
python-version: ${{ env.VALIDATION_PYTHON_VERSION }}
auto-update-conda: true
auto-activate-base: true
- name: Install validation dependencies
run: conda install -c defaults py-lief wheel twine keyring rfc3986
- name: Download llvmlite wheels
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: llvmlite-win-64-py${{ matrix.python-version }}
path: dist
- name: Validate wheels
run: |
cd dist
for WHL_FILE in *.whl; do
wheel unpack "$WHL_FILE"
python "$GITHUB_WORKSPACE"/buildscripts/github/validate_win-64_wheel.py llvmlite/binding/llvmlite.dll
twine check "$WHL_FILE"
done
win-64-test:
name: win-64-test
needs: win-64-validate
runs-on: windows-2025
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
fail-fast: false
steps:
- name: Setup Python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Download llvmlite wheel
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: llvmlite-win-64-py${{ matrix.python-version }}
path: dist
- name: Install and test
env:
LLVMLITE_DIST_TEST: "1"
run: |
# Upgrade pip and install wheel
python -m pip install --upgrade pip wheel
echo "Installing lief for distribution testing"
python -m pip install -v lief
# Install wheel and run tests
cd dist
# Windows compatible way to get the wheel file using bash
whl=$(ls -1 ./*.whl)
echo "Using wheel: $whl"
python -m pip install "$whl"
# Run tests
python -m llvmlite.tests
win-64-upload:
name: win-64-upload
needs: win-64-test
if: github.event_name == 'workflow_dispatch' && inputs.upload_wheel_to_anaconda
runs-on: windows-2025
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
fail-fast: false
steps:
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@835234971496cad1653abb28a638a281cf32541f # v3.2.0
with:
python-version: ${{ env.VALIDATION_PYTHON_VERSION }}
auto-update-conda: true
auto-activate-base: true
- name: Install anaconda-client
run: conda install -c anaconda anaconda-client
- name: Download llvmlite wheel
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: llvmlite-win-64-py${{ matrix.python-version }}
path: dist
- name: Upload wheel to Anaconda Cloud
env:
ANACONDA_API_TOKEN: ${{ secrets.NUMBA_CHANNEL_WHEEL_UPLOAD }}
run: |
cd dist
whl=$(ls -1 ./*.whl)
echo "Uploading wheel: $whl"
anaconda -t "$ANACONDA_API_TOKEN" upload --force -u numba -l dev "$whl"