Xtrig arg validate #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: manylinux-compatibility | |
# Ensure that cylc-flow remains installable with manylinx1 binaries for use | |
# with older systems. | |
# Ideally we would use the Docker images from PyPa | |
# (https://github.com/pypa/manylinux). | |
# The manylinux1 image is based on CentOS=5, glibc=2.5), however, this is so | |
# old that installing contemporary Python on them is quite hard: | |
# * native package manager has no package for CentOS5 | |
# * miniforge can't work with glibc < 2.12 | |
# * micromamba can't work with glibc < 2.6 | |
# * need zlib to compile Python / install pip but the package manager can't | |
# download it because the package stream is offline (past EOL) | |
# So this will have to do. This isn't a perfect test as non manylinux compat | |
# packages may attempt to compile from source. This might succeed here but not | |
# on an older host. | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- 'setup.py' | |
- 'setup.cfg' | |
- '.github/workflows/test_manylinux.yml' | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 40 | |
strategy: | |
fail-fast: false | |
matrix: | |
manylinux: ['1'] | |
os: ['ubuntu-20.04'] # run on the oldest linux we have access to | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure git # Needed by the odd test | |
uses: cylc/release-actions/configure-git@v1 | |
- name: Configure Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Downgrade PIP | |
run: | | |
# pip v22+ will fail on error rather than falling back to the | |
# previous release | |
# the old behaviour is better for this check | |
if (( $(pip --version | sed 's/pip \([0-9]*\).*/\1/') >= 22 )) | |
then | |
pip install 'pip<22' | |
fi | |
- name: Configure Manylinux Compatibility | |
# Make this platform look older than it is. For info see: | |
# https://stackoverflow.com/questions/37231799/ | |
# exclude-manylinux-wheels-when-downloading-from-pip | |
run: | | |
cat > _manylinux.py <<__HERE__ | |
manylinux1_compatible = False | |
manylinux2010_compatible = False | |
manylinux2014_compatible = False | |
__HERE__ | |
echo \ | |
"manylinux${{ matrix.manylinux }}_compatible = True" \ | |
>> _manylinux.py | |
- name: Install | |
timeout-minutes: 35 | |
run: | | |
PYTHONPATH="$PWD:$PYTHONPATH" pip install ."[all]" | |
- name: Test Import | |
shell: python | |
run: | | |
import cylc.flow | |
import cylc.flow.scheduler | |
- name: Test | |
timeout-minutes: 5 | |
run: | | |
pytest -n 5 |