Explode multiarch matrix for ML2014/aarch64/s390x
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index c67847b..5454149 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -68,26 +68,27 @@
linux_libyaml:
- name: libyaml ${{matrix.arch}} ${{matrix.platform}}
+ name: libyaml ${{matrix.cfg.arch}} ${{matrix.cfg.platform}}
runs-on: ubuntu-latest
strategy:
matrix:
- platform:
- # manylinux1 is forward-compatible to 2010/2014.
- #- manylinux2014
- #- manylinux2010
- - manylinux1
- arch:
- - x86_64
+ cfg:
+ - { platform: manylinux1, arch: x86_64 }
+ - { platform: manylinux2014, arch: aarch64 }
+ - { platform: manylinux2014, arch: s390x }
env:
- DOCKER_IMAGE: quay.io/pypa/${{matrix.platform}}_${{matrix.arch}}
+ 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.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}}
+ key: libyamlX_${{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
@@ -104,36 +105,36 @@
/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.python_tag}}
+ name: pyyaml ${{matrix.cfg.arch}} ${{matrix.cfg.platform}} ${{matrix.cfg.python_tag}}
runs-on: ubuntu-latest
strategy:
matrix:
- platform:
- # So long as manylinux1 container builds work, they're
- # forward-compatible to 2010/2014.
- # - manylinux2014
- # - manylinux2010
- - manylinux1
- arch:
- - x86_64
- python_tag:
- # NB manylinux >=2014 containers don't have Python 2.7, so we have to
- # use exclude to skip it.
- - cp27-cp27mu
- - cp36-cp36m
- - cp37-cp37m
- - cp38-cp38
- - cp39-cp39
-# exclude:
-# - platform: manylinux2014
-# arch: x86_64
-# python_tag: cp27-cp27mu
+ cfg:
+ - { platform: manylinux1, arch: x86_64, python_tag: cp27-cp27mu }
+ - { platform: manylinux1, arch: x86_64, python_tag: cp36-cp36m }
+ - { platform: manylinux1, arch: x86_64, python_tag: cp37-cp37m }
+ - { platform: manylinux1, arch: x86_64, python_tag: cp38-cp38 }
+ - { platform: manylinux1, arch: x86_64, python_tag: cp39-cp39 }
+ - { platform: manylinux2014, arch: aarch64, python_tag: cp36-cp36m }
+ - { platform: manylinux2014, arch: aarch64, python_tag: cp37-cp37m }
+ - { platform: manylinux2014, arch: aarch64, python_tag: cp38-cp38 }
+ - { platform: manylinux2014, arch: aarch64, python_tag: cp39-cp39 }
+ - { platform: manylinux2014, arch: s390x, python_tag: cp36-cp36m }
+ - { platform: manylinux2014, arch: s390x, python_tag: cp37-cp37m }
+ - { platform: manylinux2014, arch: s390x, python_tag: cp38-cp38 }
+ - { platform: manylinux2014, arch: s390x, python_tag: cp39-cp39 }
env:
- AW_PLAT: ${{matrix.platform}}_${{matrix.arch}}
- DOCKER_IMAGE: quay.io/pypa/${{matrix.platform}}_${{matrix.arch}}
- PYTHON_TAG: ${{matrix.python_tag}}
+ AW_PLAT: ${{matrix.cfg.platform}}_${{matrix.cfg.arch}}
+ DOCKER_IMAGE: quay.io/pypa/${{matrix.cfg.platform}}_${{matrix.cfg.arch}}
+ PYTHON_TAG: ${{matrix.cfg.python_tag}}
PYYAML_BUILD_WHEELS: 1
steps:
- uses: actions/checkout@v2
@@ -143,12 +144,16 @@
uses: actions/cache@v2
with:
path: libyaml
- key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}}
+ key: libyamlX_${{matrix.cfg.platform}}_${{matrix.cfg.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.cfg.arch != 'x86_64'
+
- name: Start container
run: >
docker run --rm --tty --detach