name: Packaging Tests

on:
  pull_request:
  workflow_dispatch:


concurrency:
  group: packaging-test-${{ github.head_ref }}
  cancel-in-progress: true

env:
  SOURCE_DATE_EPOCH: "1668811211"

jobs:
  build_awkward_sdist_wheel:
    name: "Build awkward"
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
      with:
        submodules: true

    - name: Prepare build files
      run: pipx run nox -s prepare

    - name: Build awkward SDist & wheel
      run: pipx run build

    - name: Check metadata
      run: pipx run twine check dist/*

    - name: Build awkward-cpp SDist
      run: pipx run build --sdist awkward-cpp

    - uses: actions/upload-artifact@v5
      with:
        name: awkward-sdist
        path: dist/*.tar.gz

    - uses: actions/upload-artifact@v5
      with:
        name: awkward-wheel
        path: dist/*.whl

    - uses: actions/upload-artifact@v5
      with:
        name: awkward-cpp-sdist
        path: awkward-cpp/dist/*.tar.gz


  build_cpp_wheels:
    name: "Build awkward-cpp: ${{ matrix.os }}"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [windows-latest, macos-latest, ubuntu-latest]

    steps:
    - uses: actions/checkout@v5
      with:
        submodules: true

    - name: Setup uv
      uses: astral-sh/setup-uv@v7

    - name: Prepare build files
      run: pipx run nox -s prepare

    - uses: pypa/cibuildwheel@v3.2
      env:
        CIBW_ARCHS_MACOS: universal2
        CIBW_BUILD: cp39-win_amd64 cp310-manylinux_x86_64 cp39-macosx_universal2
      with:
        package-dir: awkward-cpp

    - uses: pypa/cibuildwheel@v3.2
      if: matrix.os == 'ubuntu-latest'
      env:
        CIBW_BUILD: cp312-manylinux_x86_64
      with:
        package-dir: awkward-cpp

    - name: Upload wheels
      uses: actions/upload-artifact@v5
      with:
        name: awkward-cpp-wheels-${{ matrix.os }}
        path: wheelhouse/*.whl
