name: Python build one single wheel

on:
  workflow_call:
    inputs:
      python-version:
        required: true
        type: string
      os:
        required: true
        type: string
      arch:
        required: true
        type: string

jobs:
  build:
    #name: py${{ inputs.python-version }}-${{ inputs.os }}-${{ inputs.arch }}
    runs-on: ${{ inputs.os }}-latest

    steps:
    - uses: actions/checkout@v3
      with:
        submodules: recursive

    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: 3.9.x

    - name: Install Python dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install requests packaging

    - name: Figure out the TestPyPi/PyPi Version
      shell: bash
      run: |
        if [[ "$GITHUB_REF" == *"refs/tags"* ]]; then
          python dev/extract_version.py --pypi --replace-setup-py
        else
          python dev/extract_version.py --replace-setup-py
        fi;
        
    - name: Set up QEMU
      if: ${{ runner.os == 'Linux' }}
      uses: docker/setup-qemu-action@v2
      with:
        platforms: all
        
    - name: Build and test wheels
      uses: pypa/cibuildwheel@v2.11.3
      env:
        MACOSX_DEPLOYMENT_TARGET: 10.9
        CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=10.9 SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
        CIBW_BEFORE_BUILD: pip install setuptools wheel Cython requests jinja2 pyyaml
        CIBW_ENVIRONMENT_LINUX: COOLPROP_CMAKE=default,NATIVE
        CIBW_BUILD: cp${{ inputs.python-version }}-*
        CIBW_ARCHS_MACOS: ${{ inputs.arch }} # x86_64 arm64 # universal2 is redundant
        CIBW_ARCHS_WINDOWS: ${{ inputs.arch }} # AMD64 x86 # ARM64 creates problems with msgpack-c
        CIBW_ARCHS_LINUX: ${{ inputs.arch }} # i686 x86_64 aarch64 ppc64le s390x
        CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
        CIBW_MANYLINUX_I686_IMAGE: manylinux2014
        CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014
        CIBW_SKIP: "pp*"
        CIBW_TEST_SKIP: "*-macosx_arm64 *-win_arm64"
      with:
        package-dir: ./wrappers/Python/
        output-dir: Python

    - name: Store artifacts
      uses: actions/upload-artifact@v3
      with:
        name: Python
        path: Python
