Repository: common-workflow-language/schema_salad (language: python)

Issue:
Add support to release linux aarch64 wheels
Problem
---------
On aarch64, pip install schema_salad builds the wheels from source code and then install it. It requires user to have development environment installed on his system. also, it take some time to build the wheels than downloading and extracting the wheels from pypi.

Resolution
-----------
On aarch64, pip install schema_salad should download the wheels from pypi

@mr-c, Please let me know your interest on releasing aarch64 wheels. I can help in this.


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml
index a2ebccbb..5f70e56a 100644
--- a/.github/workflows/wheels.yml
+++ b/.github/workflows/wheels.yml
@@ -27,3 +27,23 @@ jobs:
         user: __token__
         password: ${{ secrets.PYPI_API_TOKEN }}
         packages_dir: audited_wheels
+
+  deploy_aarch64:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up QEMU
+      uses: docker/setup-qemu-action@v1
+    - name: Build manylinux2014 Python wheels
+      uses: RalfG/python-wheels-manylinux-build@v0.3.4-manylinux2014_aarch64
+      with:
+        pre-build-command: source .github/workflows/wheel-prep.sh
+        build-requirements: -rrequirements.txt -rmypy_requirements.txt
+    - name: Move audited wheels to new directory
+      run: mkdir audited_wheels && cp dist/*-manylinux*.whl audited_wheels/
+    - name: Publish wheels to PyPI
+      uses: pypa/gh-action-pypi-publish@release/v1
+      with:
+        user: __token__
+        password: ${{ secrets.PYPI_API_TOKEN }}
+        packages_dir: audited_wheels


Test patch:
diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml
index 1946ebea..6b10bee4 100644
--- a/.github/workflows/ci-tests.yml
+++ b/.github/workflows/ci-tests.yml
@@ -57,6 +57,47 @@ jobs:
         uses: codecov/codecov-action@v1
         with:
           fail_ci_if_error: true
+  test-aarch64:
+    name: "Test ${{ matrix.pyver }} aarch64"
+    strategy:
+      matrix:
+        pyver: [cp39-cp39]
+        arch: [aarch64]
+      fail-fast: false
+    runs-on: ubuntu-latest
+    env:
+      py: /opt/python/${{ matrix.pyver }}/bin/python
+      img: quay.io/pypa/manylinux2014_${{ matrix.arch }}
+    steps:
+    - uses: actions/checkout@v2
+      with:
+        fetch-depth: 0
+    - name: Set up QEMU
+      id: qemu
+      uses: docker/setup-qemu-action@v1
+    - name: Install tools
+      run: |
+        docker run --rm -v ${{ github.workspace }}:/ws:rw --workdir=/ws \
+          ${{ env.img }} ${{ env.py }} -m pip install -U  pip build
+    - name: Install dependencies
+      run: |
+            docker run --rm -v ${{ github.workspace }}:/ws:rw --workdir=/ws \
+            ${{ env.img }} \
+            bash -exc '${{ env.py }} -m pip install virtualenv && ${{ env.py }} -m venv .env && \
+            source .env/bin/activate && \
+            python -m pip install --upgrade pip wheel setuptools && \
+            python -m pip install -r mypy_requirements.txt -r requirements.txt && \
+            MYPYPATH=typeshed SCHEMA_SALAD_USE_MYPYC=1 pip install -e . && \
+            deactivate'
+    - name: Test with pytest
+      run: |
+          docker run --rm -v ${{ github.workspace }}:/ws:rw --workdir=/ws \
+            ${{ env.img }} \
+            bash -exc '\
+            source .env/bin/activate && \
+            pip install setuptools wheel -r test-requirements.txt && \
+            make mypyc
+            deactivate'
 
   tox-style:
     name: CI linters via Tox