1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
name: Build wheels
on:
# Run daily at 1:23 UTC
schedule:
- cron: '23 1 * * *'
# Run on demand with workflow dispatch
workflow_dispatch:
# Use from other workflows
workflow_call:
pull_request:
paths:
- .github/workflows/build-wheels.yml
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
determine-source-date-epoch:
name: "Determine SOURCE_DATE_EPOCH"
runs-on: ubuntu-latest
outputs:
source-date-epoch: ${{ steps.log.outputs.source-date-epoch }}
if: github.repository_owner == 'scikit-hep'
steps:
- uses: actions/checkout@v6
with:
submodules: true
fetch-depth: 0
- id: log
name: Compute SOURCE_DATE_EPOCH
run: |
# Find latest unix timestamp in awkward-cpp, and the kernel generation files
epoch=$( git log -1 --format=%at -- awkward-cpp kernel-specification.yml kernel-test-data.json )
echo "source-date-epoch=$epoch" >> $GITHUB_OUTPUT
make_sdist:
name: "Build awkward-cpp sdist"
runs-on: ubuntu-latest
needs: [determine-source-date-epoch]
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v6
with:
submodules: true
- name: Prepare build files
run: pipx run nox -s prepare
- name: Build awkward-cpp sdist
run: pipx run build --sdist awkward-cpp
- name: Check metadata
run: pipx run twine check awkward-cpp/dist/*
- uses: actions/upload-artifact@v6
with:
name: awkward-cpp-sdist
path: awkward-cpp/dist/*.tar.gz
build_wheels:
needs: [determine-source-date-epoch]
name: "Wheel awkward-cpp: ${{ matrix.arch }} on ${{ matrix.os }}"
runs-on: ${{ matrix.os }}
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
strategy:
matrix:
os: [ubuntu-latest, macos-15, macos-15-intel]
arch: [auto64]
include:
- os: windows-latest
arch: auto64
- os: windows-latest
arch: auto32
- os: ubuntu-24.04-arm
arch: auto64
steps:
- uses: actions/checkout@v6
with:
submodules: true
- name: Python 3.12
uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Setup uv
uses: astral-sh/setup-uv@v7
- name: Prepare build files
run: pipx run nox -s prepare
- uses: pypa/cibuildwheel@v3.3
env:
CIBW_ARCHS: ${{ matrix.arch }}
with:
package-dir: awkward-cpp
- name: Check metadata
run: pipx run twine check wheelhouse/*.whl
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: awkward-cpp-wheels-${{ matrix.os }}-${{ matrix.arch }}
path: wheelhouse/*.whl
build_awkward_wheel:
name: "Build awkward sdist and wheel"
runs-on: ubuntu-latest
needs: [determine-source-date-epoch]
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v6
with:
submodules: true
- name: Setup uv
uses: astral-sh/setup-uv@v7
- name: Prepare build files
run: pipx run nox -s prepare
- name: Build distributions
run: pipx run build --installer uv
- name: Check metadata
run: pipx run twine check dist/*
- uses: actions/upload-artifact@v6
with:
name: awkward-wheel
path: dist/*
|