Skip to content

3.13.0b1 WIP

3.13.0b1 WIP #110

Workflow file for this run

#---
## This is the CI workflow (not the artifact build/release workflow). The workflows
## are split because GHA doesn't support a dynamic/conditional matrix. This workflow
## has slow jobs and jobs that require private GHA runners (eg, M1 Mac) commented out.
## Ensure changes are synced with manual_artifact_build.yaml.
#name: PyYAML CI
#
#on:
# push:
# pull_request:
# types: [opened, synchronize, 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@v3
#
# - name: Install a python
# uses: actions/setup-python@v4
# 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@v3
# 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 }
# - { platform: musllinux_1_1, arch: x86_64 }
# env:
# DOCKER_IMAGE: quay.io/pypa/${{matrix.cfg.platform}}_${{matrix.cfg.arch}}
# steps:
# - name: Check cached libyaml state
# id: cached_libyaml
# uses: actions/cache@v3
# 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@v2
# if: matrix.cfg.arch != 'x86_64' && steps.cached_libyaml.outputs.cache-hit != 'true'
#
# - name: Checkout pyyaml
# uses: actions/checkout@v3
# 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: cp38 }
## - { platform: manylinux1, arch: x86_64, spec: cp39 }
## - { platform: manylinux2014, arch: x86_64, spec: cp310 }
## - { platform: manylinux2014, arch: x86_64, spec: cp311 }
# - { platform: manylinux2014, arch: x86_64, spec: cp312 }
## - { platform: manylinux2014, arch: aarch64, spec: cp38 }
## - { platform: manylinux2014, arch: aarch64, spec: cp39 }
## - { platform: manylinux2014, arch: aarch64, spec: cp310 }
## - { platform: manylinux2014, arch: aarch64, spec: cp311 }
## - { platform: manylinux2014, arch: aarch64, spec: cp312 }
## - { platform: manylinux2014, arch: s390x, spec: cp38 }
## - { platform: manylinux2014, arch: s390x, spec: cp39 }
## - { platform: manylinux2014, arch: s390x, spec: cp310 }
## - { platform: manylinux2014, arch: s390x, spec: cp311 }
## - { platform: manylinux2014, arch: s390x, spec: cp312 }
## - { platform: musllinux_1_1, arch: x86_64, spec: cp38 }
## - { platform: musllinux_1_1, arch: x86_64, spec: cp39 }
## - { platform: musllinux_1_1, arch: x86_64, spec: cp310 }
## - { platform: musllinux_1_1, arch: x86_64, spec: cp311 }
# - { platform: musllinux_1_1, arch: x86_64, spec: cp312 }
#
# steps:
# - name: Checkout PyYAML
# uses: actions/checkout@v3
#
# - name: Fetch cached libyaml
# id: cached_libyaml
# uses: actions/cache/restore@v3
# with:
# path: libyaml
# key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}}
# fail-on-cache-miss: true
#
# - name: configure docker foreign arch support
# uses: docker/setup-qemu-action@v2
# if: matrix.arch != 'x86_64'
#
# - name: Build/Test/Package
# env:
# CIBW_ARCHS: all
# # HACK: ick, maybe deconstruct the matrix a bit or query cibuildwheel for its default target *linux spec first?
# CIBW_BUILD: ${{matrix.spec}}-${{ contains(matrix.platform, 'musllinux') && 'musllinux' || '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}; pytest
# CIBW_TEST_REQUIRES: pytest
# 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@v3
# 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-11' }}
# steps:
# - name: Check cached libyaml state
# id: cached_libyaml
# uses: actions/cache@v3
# with:
# path: libyaml
# key: libyaml_macos_${{matrix.arch}}_${{env.LIBYAML_REF}}
#
# - name: Checkout PyYAML
# uses: actions/checkout@v3
# 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-11' }}
# defaults:
# run:
# shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }}
# strategy:
# matrix:
# include:
## - spec: cp38-macosx_x86_64
## cibw_version: cibuildwheel==2.11.1
## - spec: cp39-macosx_x86_64
## - spec: cp310-macosx_x86_64
## - spec: cp311-macosx_x86_64
# - spec: cp312-macosx_x86_64
#
## # build for arm64 under a hacked macOS 12 self-hosted x86_64-on-arm64 runner until arm64 is fully supported
## - 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
##
## - spec: cp311-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: cp312-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@v3
#
# - name: Get cached libyaml state
# id: cached_libyaml
# uses: actions/cache/restore@v3
# with:
# path: libyaml
# key: libyaml_macos_${{ matrix.arch || 'x86_64' }}_${{env.LIBYAML_REF}}
# fail-on-cache-miss: true
#
# - name: Build/Test/Package
# env:
# C_INCLUDE_PATH: libyaml/include
# CIBW_BUILD: ${{matrix.spec}}
# CIBW_BUILD_VERBOSITY: 1
# CIBW_TEST_COMMAND: cd {project}; pytest
# CIBW_TEST_REQUIRES: pytest
# LIBRARY_PATH: libyaml/src/.libs
# MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target || '10.9' }}
# PYYAML_FORCE_CYTHON: 1
# PYYAML_FORCE_LIBYAML: 1
# SDKROOT: ${{ matrix.sdkroot || 'macosx' }}
# run: |
# python3 -V
# python3 -m pip install -U --user ${{ matrix.cibw_version || 'cibuildwheel' }}
# python3 -m cibuildwheel --platform auto --output-dir dist .
#
# - name: Upload artifacts
# uses: actions/upload-artifact@v3
# 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-2019
# arch: x64
# - platform: windows-2019
# arch: win32
# steps:
# - name: Get cached libyaml state
# id: cached_libyaml
# uses: actions/cache@v3
# 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 16 2019" -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-2019
## build_arch: x64
## python_arch: x64
## spec: 3.8
## - platform: windows-2019
## build_arch: x64
## python_arch: x64
## spec: 3.9
## - platform: windows-2019
## build_arch: x64
## python_arch: x64
## spec: '3.10'
## - platform: windows-2019
## build_arch: x64
## python_arch: x64
## spec: '3.11'
# - platform: windows-2019
# build_arch: x64
# python_arch: x64
# spec: '3.12'
## - platform: windows-2019
## build_arch: win32
## python_arch: x86
## spec: 3.8
## - platform: windows-2019
## build_arch: win32
## python_arch: x86
## spec: 3.9
## - platform: windows-2019
## build_arch: win32
## python_arch: x86
## spec: '3.10'
## - platform: windows-2019
## build_arch: win32
## python_arch: x86
## spec: '3.11'
# - platform: windows-2019
# build_arch: win32
# python_arch: x86
# spec: '3.12'
# 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@v3
#
# - name: Get cached libyaml state
# id: cached_libyaml
# uses: actions/cache/restore@v3
# with:
# path: libyaml
# key: libyaml_${{matrix.platform}}_${{matrix.build_arch}}_${{env.LIBYAML_REF}}
# fail-on-cache-miss: true
#
# - name: Install python ${{ matrix.spec }}
# uses: actions/setup-python@v4
# 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<3.0" setuptools 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 pytest
# python -I -m pytest
#
# - name: Upload artifacts
# uses: actions/upload-artifact@v3
# with:
# name: dist
# path: dist/*.whl
# if-no-files-found: error
#...