diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c065b382..0f8e0df6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,4 +1,4 @@ ---- +#--- # 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. @@ -7,442 +7,442 @@ 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 +# 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 -# build_arch: x64 -# python_arch: x64 -# spec: 3.9 +# arch: x64 # - platform: windows-2019 -# build_arch: x64 -# python_arch: x64 -# spec: '3.10' +# 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.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' +# 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.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 -... +# 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 +#... diff --git a/.github/workflows/manual_artifact_build.yaml b/.github/workflows/manual_artifact_build.yaml index ab08367c..83e8be74 100644 --- a/.github/workflows/manual_artifact_build.yaml +++ b/.github/workflows/manual_artifact_build.yaml @@ -4,7 +4,7 @@ name: PyYAML CI on: -# push: + push: # pull_request: # types: [opened, synchronize, reopened] workflow_dispatch: @@ -16,7 +16,7 @@ env: jobs: python_sdist: name: pyyaml sdist - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Checkout PyYAML uses: actions/checkout@v3 @@ -67,14 +67,16 @@ jobs: linux_libyaml: name: libyaml ${{matrix.cfg.arch}} ${{matrix.cfg.platform}} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: matrix: cfg: - - { platform: manylinux1, arch: x86_64 } +# - { platform: manylinux1, arch: x86_64 } - { platform: manylinux2014, arch: x86_64 } - { platform: manylinux2014, arch: aarch64 } - { platform: manylinux2014, arch: s390x } +# - { platform: manylinux2_28, arch: x86_64 } +# - { platform: manylinux2_28, arch: aarch64 } - { platform: musllinux_1_1, arch: x86_64 } env: DOCKER_IMAGE: quay.io/pypa/${{matrix.cfg.platform}}_${{matrix.cfg.arch}} @@ -114,30 +116,34 @@ jobs: linux_pyyaml: needs: linux_libyaml name: pyyaml ${{matrix.arch}} ${{matrix.platform}} ${{matrix.spec}} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 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 } +# - { 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: cp313, cibw_version: https://github.com/nitzmahone/cibuildwheel/archive/refs/heads/py313_support.zip } +# - { 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: aarch64, spec: cp313, cibw_version: https://github.com/nitzmahone/cibuildwheel/archive/refs/heads/py313_support.zip } +# - { 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: manylinux2014, arch: s390x, spec: cp313, cibw_version: https://github.com/nitzmahone/cibuildwheel/archive/refs/heads/py313_support.zip } +# - { 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 } + - { platform: musllinux_1_1, arch: x86_64, spec: cp313, cibw_version: https://github.com/nitzmahone/cibuildwheel/archive/refs/heads/py313_support.zip } steps: - name: Checkout PyYAML @@ -173,7 +179,7 @@ jobs: run: | set -eux python3 -V - python3 -m pip install -U --user cibuildwheel + python3 -m pip install -U --user ${{ matrix.cibw_version || 'cibuildwheel' }} python3 -m cibuildwheel --platform auto --output-dir dist . - name: Upload artifacts @@ -189,15 +195,14 @@ jobs: matrix: include: - arch: x86_64 + runs-on: macos-13 - 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' }} + runs-on: ${{ matrix.runs_on || 'macos-14' }} steps: - name: Check cached libyaml state id: cached_libyaml @@ -225,7 +230,7 @@ jobs: macos_pyyaml: needs: macos_libyaml name: pyyaml ${{ matrix.spec }} - runs-on: ${{ matrix.runs_on || 'macos-11' }} + runs-on: ${{ matrix.runs_on || 'macos-14' }} defaults: run: shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }} @@ -234,39 +239,45 @@ jobs: include: - spec: cp38-macosx_x86_64 cibw_version: cibuildwheel==2.11.1 + runs_on: [macos-13] - spec: cp39-macosx_x86_64 - - spec: cp310-macosx_x86_64 - - spec: cp311-macosx_x86_64 - - spec: cp312-macosx_x86_64 + runs_on: [macos-13] +# - spec: cp310-macosx_x86_64 +# runs_on: [macos-13] +# - spec: cp311-macosx_x86_64 +# runs_on: [macos-13] +# - spec: cp312-macosx_x86_64 +# runs_on: [macos-13] + - spec: cp313-macosx_x86_64 + cibw_version: https://github.com/nitzmahone/cibuildwheel/archive/refs/heads/py313_support.zip + runs_on: [macos-13] # 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 + + - spec: cp313-macosx_arm64 + deployment_target: '11.0' + arch: arm64 + run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} + cibw_version: https://github.com/nitzmahone/cibuildwheel/archive/refs/heads/py313_support.zip steps: - name: Checkout PyYAML @@ -310,9 +321,9 @@ jobs: strategy: matrix: include: - - platform: windows-2019 + - platform: windows-2022 arch: x64 - - platform: windows-2019 + - platform: windows-2022 arch: win32 steps: - name: Get cached libyaml state @@ -352,46 +363,54 @@ jobs: strategy: matrix: include: - - platform: windows-2019 + - platform: windows-2022 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 +# - platform: windows-2022 +# build_arch: x64 +# python_arch: x64 +# spec: 3.9 +# - platform: windows-2022 +# build_arch: x64 +# python_arch: x64 +# spec: '3.10' +# - platform: windows-2022 +# build_arch: x64 +# python_arch: x64 +# spec: '3.11' +# - platform: windows-2022 +# build_arch: x64 +# python_arch: x64 +# spec: '3.12' + - platform: windows-2022 build_arch: x64 python_arch: x64 - spec: '3.11' - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: '3.12' - - platform: windows-2019 + spec: '3.13' + - platform: windows-2022 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 +# - platform: windows-2022 +# build_arch: win32 +# python_arch: x86 +# spec: 3.9 +# - platform: windows-2022 +# build_arch: win32 +# python_arch: x86 +# spec: '3.10' +# - platform: windows-2022 +# build_arch: win32 +# python_arch: x86 +# spec: '3.11' +# - platform: windows-2022 +# build_arch: win32 +# python_arch: x86 +# spec: '3.12' + - platform: windows-2022 build_arch: win32 python_arch: x86 - spec: '3.12' + spec: '3.13' steps: # autocrlf screws up tests under Windows - name: Set git to use LF