File: build-wheels.yml

package info (click to toggle)
python-awkward 2.9.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 25,524 kB
  • sloc: python: 187,940; cpp: 33,928; sh: 432; makefile: 21; javascript: 8
file content (144 lines) | stat: -rw-r--r-- 3,601 bytes parent folder | download
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/*