|
|
- name: modified_scripts
- on: [pull_request]
- jobs:
- discover_modified_scripts:
- runs-on: ubuntu-latest
- outputs:
- versions: ${{steps.modified-versions.outputs.versions}}
- steps:
- - uses: actions/checkout@v2
- - run: git fetch origin "$GITHUB_BASE_REF"
- - shell: bash
- run: >
- versions=$(git diff "origin/$GITHUB_BASE_REF" --name-only -z
- | perl -ne 'BEGIN {$\="\n";$/="\0";} chomp;
- if (/^plugins\/python-build\/share\/python-build\/(?:([^\/]+)|patches\/([^\/]+)\/.*)$/ and -e $& )
- { print $1.$2; }' \
- | sort -u);
- echo -e "versions<<!\\n$versions\\n!" >> $GITHUB_ENV
- - id: modified-versions
- run: |
- echo -n "::set-output name=versions::"
- echo "${{ env.versions }}" | jq -R . | jq -sc .
- macos_build:
- needs: discover_modified_scripts
- if: needs.discover_modified_scripts.outputs.versions != '[""]'
- strategy:
- fail-fast: false
- matrix:
- python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
- os: ["macos-11", "macos-12"]
- runs-on: ${{ matrix.os }}
- steps:
- - uses: actions/checkout@v2
- - run: |
- brew install openssl openssl@1.1 readline sqlite3 xz zlib
- - run: |
- export PYENV_ROOT="$GITHUB_WORKSPACE"
- echo "PYENV_ROOT=$PYENV_ROOT" >> $GITHUB_ENV
- echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
- - run: |
- pyenv install -v ${{ matrix.python-version }}
- pyenv global ${{ matrix.python-version }}
- # Micropython doesn't support --version
- - run: >
- if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
- python -c 'import sys; print(sys.version)'
- else
- python --version;
- python -m pip --version
- fi
- # Micropython doesn't support sys.executable, os.path, older versions even os
- - env:
- EXPECTED_PYTHON: ${{ matrix.python-version }}
- run: |
- if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
- [[ $(pyenv which python) == "${{ env.PYENV_ROOT }}/versions/${{ matrix.python-version }}/bin/python" ]] || exit 1
- python -c 'import sys; assert sys.implementation.name == "micropython"'
- else
- python -c 'if True:
- import os, sys, os.path
- correct_dir = os.path.join(
- os.environ["PYENV_ROOT"],
- "versions",
- os.environ["EXPECTED_PYTHON"],
- "bin")
- assert os.path.dirname(sys.executable) == correct_dir'
- fi
- # bundled executables in some Anaconda releases cause the post-run step to hang in MacOS
- - run: |
- pyenv global system
- rm -f "$(pyenv root)"/shims/*
-
- ubuntu_build:
- needs: discover_modified_scripts
- if: needs.discover_modified_scripts.outputs.versions != '[""]'
- strategy:
- fail-fast: false
- matrix:
- python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
- os: ["ubuntu-20.04", "ubuntu-22.04"]
- runs-on: ${{ matrix.os }}
- steps:
- - uses: actions/checkout@v2
- - run: |
- sudo apt-get update -q; sudo apt-get install -yq make build-essential \
- libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
- curl llvm libncurses5-dev libncursesw5-dev \
- xz-utils tk-dev libffi-dev liblzma-dev
- - run: |
- export PYENV_ROOT="$GITHUB_WORKSPACE"
- echo "PYENV_ROOT=$PYENV_ROOT" >> $GITHUB_ENV
- echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
- - run: |
- pyenv install -v ${{ matrix.python-version }}
- pyenv global ${{ matrix.python-version }}
- # Micropython doesn't support --version
- - run: >
- if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
- python -c 'import sys; print(sys.version)'
- else
- python --version;
- python -m pip --version
- fi
- # Micropython doesn't support sys.executable, os.path, older versions even os
- - env:
- EXPECTED_PYTHON: ${{ matrix.python-version }}
- run: |
- if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
- [[ $(pyenv which python) == "${{ env.PYENV_ROOT }}/versions/${{ matrix.python-version }}/bin/python" ]] || exit 1
- python -c 'import sys; assert sys.implementation.name == "micropython"'
- else
- python -c 'if True:
- import os, sys, os.path
- correct_dir = os.path.join(
- os.environ["PYENV_ROOT"],
- "versions",
- os.environ["EXPECTED_PYTHON"],
- "bin")
- assert os.path.dirname(sys.executable) == correct_dir'
- fi
|