---
# This is the actual artifact build/release workflow. This workflow exists temporarily
# because GHA doesn't support a dynamic/conditional matrix. Ensure changes are synced with ci.yaml.
name: Manual Artifact Build

on:
#  push:
#  pull_request:
#    types: [opened, synchronize, edited, reopened]
  workflow_dispatch:

env:
  LIBYAML_REPO: https://github.com/yaml/libyaml
  LIBYAML_REF: 0.2.5

jobs:
  python_sdist:
    name: pyyaml sdist
    runs-on: ubuntu-latest
    steps:
    - name: Checkout PyYAML
      uses: actions/checkout@v2

    - name: Install a python
      uses: actions/setup-python@v2
      with:
        python-version: 3.x

    - name: Build sdist
      env:
        PYYAML_FORCE_CYTHON: 1
        PYYAML_FORCE_LIBYAML: 0
      run: |
        python -V
        python -m pip install build

        python -m build .

        # Ensure exactly one artifact was produced.
        [[ $(shopt -s nullglob; ls dist/*.tar.gz | wc -w) == 1 ]] || {
          echo "Unexpected content in dist dir: '$(ls dist/*.tar.gz)'."
          exit 1
        }

    - name: Test sdist
      run: |
        # Install some libyaml headers.
        # TODO Should we smoke test the sdist against the libyaml we built?
        sudo apt update
        sudo apt install libyaml-dev -y

        # Ensure Cython is not present so we use only what's in the sdist.
        python -m pip uninstall Cython -y || true

        # Pass no extra args.
        # We should auto-install with libyaml since it's present.
        python -m pip install dist/*.tar.gz -v

        python packaging/build/smoketest.py

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


  linux_libyaml:
    name: libyaml ${{matrix.cfg.arch}} ${{matrix.cfg.platform}}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        cfg:
        - { platform: manylinux1, arch: x86_64 }
        - { platform: manylinux2014, arch: x86_64 }
        - { platform: manylinux2014, arch: aarch64 }
        - { platform: manylinux2014, arch: s390x }
    env:
      DOCKER_IMAGE: quay.io/pypa/${{matrix.cfg.platform}}_${{matrix.cfg.arch}}
    steps:
    - name: Check cached libyaml state
      id: cached_libyaml
      uses: actions/cache@v2
      with:
        path: libyaml
        key: libyaml_${{matrix.cfg.platform}}_${{matrix.cfg.arch}}_${{env.LIBYAML_REF}}

    - name: configure docker foreign arch support
      uses: docker/setup-qemu-action@v1
      if: matrix.cfg.arch != 'x86_64' && steps.cached_libyaml.outputs.cache-hit != 'true'

    - name: Checkout pyyaml
      uses: actions/checkout@v2
      if: steps.cached_libyaml.outputs.cache-hit != 'true'

    - name: Build libyaml
      run: >
        docker run --rm
        --volume "$(pwd):/io"
        --env LIBYAML_REF
        --env LIBYAML_REPO
        --workdir /io
        "$DOCKER_IMAGE"
        /io/packaging/build/libyaml.sh
      if: steps.cached_libyaml.outputs.cache-hit != 'true'

    - name: ensure output is world readable (or cache fill fails with Permission Denied)
      run: >
        sudo chmod -R a+r ./libyaml/
      if: steps.cached_libyaml.outputs.cache-hit != 'true'


  linux_pyyaml:
    needs: linux_libyaml
    name: pyyaml ${{matrix.arch}} ${{matrix.platform}} ${{matrix.spec}}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - { platform: manylinux1, arch: x86_64, spec: cp36 }
        - { platform: manylinux1, arch: x86_64, spec: cp37 }
        - { platform: manylinux1, arch: x86_64, spec: cp38 }
        - { platform: manylinux1, arch: x86_64, spec: cp39 }
        - { platform: manylinux2014, arch: x86_64, spec: cp310 }
        - { platform: manylinux2014, arch: aarch64, spec: cp36 }
        - { platform: manylinux2014, arch: aarch64, spec: cp37 }
        - { platform: manylinux2014, arch: aarch64, spec: cp38 }
        - { platform: manylinux2014, arch: aarch64, spec: cp39 }
        - { platform: manylinux2014, arch: aarch64, spec: cp310 }
        - { platform: manylinux2014, arch: s390x, spec: cp36 }
        - { platform: manylinux2014, arch: s390x, spec: cp37 }
        - { platform: manylinux2014, arch: s390x, spec: cp38 }
        - { platform: manylinux2014, arch: s390x, spec: cp39 }
        - { platform: manylinux2014, arch: s390x, spec: cp310 }

    steps:
    - name: Checkout PyYAML
      uses: actions/checkout@v2

    - name: Fetch cached libyaml
      id: cached_libyaml
      uses: actions/cache@v2
      with:
        path: libyaml
        key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}}

    - name: Ensure libyaml fetched
      run: exit 1
      if: steps.cached_libyaml.outputs.cache-hit != 'true'

    - name: configure docker foreign arch support
      uses: docker/setup-qemu-action@v1
      if: matrix.arch != 'x86_64'

    - name: Build/Test/Package
      env:
        CIBW_ARCHS: all
        CIBW_BUILD: ${{matrix.spec}}-manylinux_${{matrix.arch}}
        CIBW_BUILD_VERBOSITY: 1
        # containerized Linux builds require explicit CIBW_ENVIRONMENT
        CIBW_ENVIRONMENT: >
          C_INCLUDE_PATH=libyaml/include
          LIBRARY_PATH=libyaml/src/.libs
          LD_LIBRARY_PATH=libyaml/src/.libs
          PYYAML_FORCE_CYTHON=1
          PYYAML_FORCE_LIBYAML=1
        CIBW_TEST_COMMAND: cd {project}; python tests/lib/test_all.py
      run: |
        set -eux
        python3 -V
        python3 -m pip install -U --user cibuildwheel
        python3 -m cibuildwheel --platform auto --output-dir dist .

    - name: Upload artifacts
      uses: actions/upload-artifact@v2
      with:
        name: dist
        path: dist/*.whl
        if-no-files-found: error

  macos_libyaml:
    name: libyaml macos ${{matrix.arch}}
    strategy:
      matrix:
        include:
        - arch: x86_64
        - arch: arm64
          runs_on: [self-hosted, macOS, arm64]
          deployment_target: '11.0'
          run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0}
          sdkroot: macosx11.3
    defaults:
      run:
        shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }}
    runs-on: ${{ matrix.runs_on || 'macos-10.15' }}
    steps:
    - name: Check cached libyaml state
      id: cached_libyaml
      uses: actions/cache@v2
      with:
        path: libyaml
        key: libyaml_macos_${{matrix.arch}}_${{env.LIBYAML_REF}}

    - name: Checkout PyYAML
      uses: actions/checkout@v2
      if: steps.cached_libyaml.outputs.cache-hit != 'true'

    - name: Build libyaml
      env:
        MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target || '10.9' }}
        SDKROOT: ${{ matrix.sdkroot || 'macosx' }}
      run: |
        set -eux
        brew install automake coreutils m4
        bash ./packaging/build/libyaml.sh
        echo "finished artifact arch is $(lipo -archs libyaml/src/.libs/libyaml.a)"
      if: steps.cached_libyaml.outputs.cache-hit != 'true'


  macos_pyyaml:
    needs: macos_libyaml
    name: pyyaml ${{ matrix.spec }}
    runs-on: ${{ matrix.runs_on || 'macos-10.15' }}
    defaults:
      run:
        shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }}
    strategy:
      matrix:
        include:
        - spec: cp36-macosx_x86_64
        - spec: cp37-macosx_x86_64
        - spec: cp38-macosx_x86_64
        - spec: cp39-macosx_x86_64
        - spec: cp310-macosx_x86_64

        # build for arm64 under a hacked macOS 12 self-hosted x86_64-on-arm64 runner until arm64 is fully supported
        # FIXME: ? cp38-macosx_arm64 requires special handling and fails some test_zdist tests under cibw 2.1.2, skip it (so Apple's XCode python3 won't have a wheel)
        - spec: cp39-macosx_arm64
          deployment_target: '11.0'
          runs_on: [self-hosted, macOS, arm64]
          arch: arm64
          run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0}
          sdkroot: macosx11.3

        - spec: cp310-macosx_arm64
          deployment_target: '11.0'
          runs_on: [self-hosted, macOS, arm64]
          arch: arm64
          run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0}
          sdkroot: macosx11.3

    steps:
    - name: Checkout PyYAML
      uses: actions/checkout@v2

    - name: Get cached libyaml state
      id: cached_libyaml
      uses: actions/cache@v2
      with:
        path: libyaml
        key: libyaml_macos_${{ matrix.arch || 'x86_64' }}_${{env.LIBYAML_REF}}

    - name: Ensure libyaml fetched
      run: exit 1
      if: steps.cached_libyaml.outputs.cache-hit != 'true'

    - name: Build/Test/Package
      env:
        C_INCLUDE_PATH: libyaml/include
        CIBW_BUILD: ${{matrix.spec}}
        CIBW_BUILD_VERBOSITY: 1
        CIBW_TEST_COMMAND: cd {project}; python tests/lib/test_all.py
        LIBRARY_PATH: libyaml/src/.libs
        MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target || '10.9' }}
        SDKROOT: ${{ matrix.sdkroot || 'macosx' }}
      run: |
        python3 -V
        python3 -m pip install -U --user cibuildwheel
        python3 -m cibuildwheel --platform auto --output-dir dist .

    - name: Upload artifacts
      uses: actions/upload-artifact@v2
      with:
        name: dist
        path: dist/*.whl
        if-no-files-found: error

  windows_libyaml:
    name: libyaml ${{matrix.platform}} ${{matrix.arch}}
    runs-on: ${{matrix.platform}}
    strategy:
      matrix:
        include:
        - platform: windows-2016
          arch: x64
        - platform: windows-2016
          arch: win32
    steps:
    - name: Get cached libyaml state
      id: cached_libyaml
      uses: actions/cache@v2
      with:
        path: libyaml
        key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}}

    - name: Build libyaml
      shell: bash
      if: steps.cached_libyaml.outputs.cache-hit != 'true'
      run: |
        # git spews all over stderr unless we tell it not to
        export GIT_REDIRECT_STDERR="2>&1"

        if [[ ! -d ./libyaml ]]; then
          git clone -b ${{ env.LIBYAML_REF }} ${{ env.LIBYAML_REPO }} 2>&1
        fi

        pushd libyaml
        git clean -fdx
        popd

        mkdir libyaml/build

        pushd libyaml/build
        cmake.exe -G "Visual Studio 15 2017" -A ${{ matrix.arch }} -DYAML_STATIC_LIB_NAME=yaml ..
        cmake.exe --build . --config Release
        popd


  windows_pyyaml:
    needs: windows_libyaml
    name: pyyaml ${{ matrix.platform }} ${{matrix.python_arch}} ${{matrix.spec}}
    runs-on: ${{matrix.platform}}
    strategy:
      matrix:
        include:
        - platform: windows-2016
          build_arch: x64
          python_arch: x64
          spec: 3.6
        - platform: windows-2016
          build_arch: x64
          python_arch: x64
          spec: 3.7
        - platform: windows-2016
          build_arch: x64
          python_arch: x64
          spec: 3.8
        - platform: windows-2016
          build_arch: x64
          python_arch: x64
          spec: 3.9
        - platform: windows-2016
          build_arch: x64
          python_arch: x64
          spec: '3.10'
        - platform: windows-2016
          build_arch: win32
          python_arch: x86
          spec: 3.6
        - platform: windows-2016
          build_arch: win32
          python_arch: x86
          spec: 3.7
        - platform: windows-2016
          build_arch: win32
          python_arch: x86
          spec: 3.8
        - platform: windows-2016
          build_arch: win32
          python_arch: x86
          spec: 3.9
        - platform: windows-2016
          build_arch: win32
          python_arch: x86
          spec: '3.10'
    steps:
    # autocrlf screws up tests under Windows
    - name: Set git to use LF
      run: |
        git config --global core.autocrlf false
        git config --global core.eol lf

    - name: Checkout pyyaml
      uses: actions/checkout@v2

    - name: Get cached libyaml state
      id: cached_libyaml
      uses: actions/cache@v2
      with:
        path: libyaml
        key: libyaml_${{matrix.platform}}_${{matrix.build_arch}}_${{env.LIBYAML_REF}}

    - name: Ensure libyaml fetched
      run: exit 1
      if: steps.cached_libyaml.outputs.cache-hit != 'true'

    - name: Install python ${{ matrix.spec }}
      uses: actions/setup-python@v2
      with:
        architecture: ${{ matrix.python_arch }}
        python-version: ${{ matrix.spec }}

    - name: Build/Test/Package
      env:
        PYYAML_FORCE_CYTHON: 1
        PYYAML_FORCE_LIBYAML: 1
      shell: bash
      run: |
        set -eux
        python -V
        python -m pip install Cython wheel

        python setup.py \
        --with-libyaml build_ext \
        -I libyaml/include \
        -L libyaml/build/Release \
        -D YAML_DECLARE_STATIC \
        build bdist_wheel

        # run tests on built wheel
        python -m pip install dist/*.whl
        python tests/lib/test_all.py

    - name: Upload artifacts
      uses: actions/upload-artifact@v2
      with:
        name: dist
        path: dist/*.whl
        if-no-files-found: error
...
