Fix handling of multiple DynamicProvider #172
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: P4P | |
on: [push, pull_request, workflow_dispatch] | |
jobs: | |
build: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
env: | |
# used by .ci/build-deps.sh for Make builds | |
BRBASE: ${{ matrix.base }} | |
BRPVXS: ${{ matrix.pvxs }} | |
# cf. https://github.com/numpy/numpy/issues/22623 | |
SETUPTOOLS_USE_DISTUTILS: stdlib | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# Linux Makefile builds | |
- name: Make Linux py3.x e7.0 | |
os: ubuntu-latest | |
python: "3.x" | |
base: "7.0" | |
pvxs: "master" | |
profile: latest | |
skip_cothread: yes | |
- name: Make Linux py3.x e3.15 | |
os: ubuntu-latest | |
python: "3.x" | |
base: "3.15" | |
pvxs: "master" | |
profile: latest | |
skip_cothread: yes | |
- name: Make Linux py3.x e3.14 | |
# https://github.com/epics-base/epics-base/issues/330 | |
os: ubuntu-latest | |
python: "3.x" | |
base: "3.14" | |
pvxs: "master" | |
profile: latest | |
skip_cothread: yes | |
# Check build from .tar | |
- name: Source | |
os: ubuntu-latest | |
python: "3.9" | |
source: true | |
# Linux py builds x64 | |
- name: linux 2.7 amd64 | |
os: ubuntu-latest | |
pyver: cp27-cp27m | |
piparch: manylinux1_x86_64 | |
numpy: numpy==1.8.2 | |
cython: Cython==0.29.2 | |
- name: linux 2.7u amd64 | |
os: ubuntu-latest | |
pyver: cp27-cp27mu | |
piparch: manylinux1_x86_64 | |
numpy: numpy==1.8.2 | |
cython: Cython==0.29.2 | |
- name: linux 3.5 amd64 | |
os: ubuntu-latest | |
pyver: cp35-cp35m | |
piparch: manylinux1_x86_64 | |
numpy: numpy==1.12.1 | |
cython: Cython==0.29.2 | |
- name: linux 3.6 amd64 | |
os: ubuntu-latest | |
pyver: cp36-cp36m | |
piparch: manylinux1_x86_64 | |
numpy: numpy==1.12.1 | |
cython: Cython==0.29.2 | |
- name: linux 3.7 amd64 | |
os: ubuntu-latest | |
pyver: cp37-cp37m | |
piparch: manylinux1_x86_64 | |
numpy: numpy==1.16.2 | |
cython: Cython==0.29.2 | |
- name: linux 3.8 amd64 | |
os: ubuntu-latest | |
pyver: cp38-cp38 | |
piparch: manylinux1_x86_64 | |
numpy: numpy==1.17.3 | |
cython: Cython==0.29.2 | |
- name: linux 3.9 amd64 | |
os: ubuntu-latest | |
pyver: cp39-cp39 | |
piparch: manylinux2010_x86_64 | |
numpy: numpy==1.19.3 | |
cython: Cython==0.29.23 | |
- name: linux 3.10 amd64 | |
os: ubuntu-latest | |
pyver: cp310-cp310 | |
piparch: manylinux2014_x86_64 | |
numpy: numpy==1.22.0 | |
cython: Cython==0.29.23 | |
- name: linux 3.11 amd64 | |
os: ubuntu-latest | |
pyver: cp311-cp311 | |
piparch: manylinux2014_x86_64 | |
numpy: numpy==1.23.5 | |
cython: Cython==0.29.35 | |
skip_cothread: yes | |
# Linux py builds x64 | |
- name: linux 2.7 i686 | |
os: ubuntu-latest | |
pyver: cp27-cp27m | |
piparch: manylinux1_i686 | |
numpy: numpy==1.11.1 | |
cython: Cython==0.29.2 | |
pre: linux32 | |
- name: linux 2.7u i686 | |
os: ubuntu-latest | |
pyver: cp27-cp27mu | |
piparch: manylinux1_i686 | |
numpy: numpy==1.11.1 | |
cython: Cython==0.29.2 | |
pre: linux32 | |
- name: linux 3.5 i686 | |
os: ubuntu-latest | |
pyver: cp35-cp35m | |
piparch: manylinux1_i686 | |
numpy: numpy==1.12.1 | |
cython: Cython==0.29.2 | |
pre: linux32 | |
- name: linux 3.6 i686 | |
os: ubuntu-latest | |
pyver: cp36-cp36m | |
piparch: manylinux1_i686 | |
numpy: numpy==1.12.1 | |
cython: Cython==0.29.2 | |
pre: linux32 | |
- name: linux 3.7 i686 | |
os: ubuntu-latest | |
pyver: cp37-cp37m | |
piparch: manylinux1_i686 | |
numpy: numpy==1.16.2 | |
cython: Cython==0.29.2 | |
pre: linux32 | |
- name: linux 3.8 i686 | |
os: ubuntu-latest | |
pyver: cp38-cp38 | |
piparch: manylinux1_i686 | |
numpy: numpy==1.17.3 | |
cython: Cython==0.29.2 | |
pre: linux32 | |
- name: linux 3.9 i686 | |
os: ubuntu-latest | |
pyver: cp39-cp39 | |
piparch: manylinux2010_i686 | |
numpy: numpy==1.19.3 | |
cython: Cython==0.29.23 | |
pre: linux32 | |
# numpy i386 wheels not built >= 3.10 | |
# OSX py builds | |
- name: osx 3.6 intel | |
os: macos-latest | |
python: "3.6" | |
piparch: macosx_10_9_intel | |
numpy: numpy==1.11.3 | |
cython: Cython==0.29.2 | |
- name: osx 3.7 intel | |
os: macos-latest | |
python: "3.7" | |
piparch: macosx_10_9_intel | |
numpy: numpy==1.16.2 | |
cython: Cython==0.29.2 | |
- name: osx 3.8 intel | |
os: macos-latest | |
python: "3.8" | |
piparch: macosx_10_9_intel | |
numpy: numpy==1.17.3 | |
cython: Cython==0.29.2 | |
- name: osx 3.9 intel | |
os: macos-latest | |
python: "3.9" | |
piparch: macosx_10_9_intel | |
numpy: numpy==1.19.3 | |
cython: Cython==0.29.23 | |
- name: osx 3.10 intel | |
os: macos-latest | |
python: "3.10" | |
piparch: macosx_10_9_intel | |
numpy: numpy==1.22.0 | |
cython: Cython==0.29.23 | |
- name: osx 3.11 intel | |
os: macos-latest | |
python: "3.11" | |
piparch: macosx_10_9_intel | |
numpy: numpy==1.23.5 | |
cython: Cython==0.29.35 | |
skip_cothread: yes | |
# Windows py builds | |
## missing Microsoft Visual C++ 9.0 | |
#- os: windows-latest | |
# python: "2.7" | |
# piparch: win_amd64 | |
- name: win64 3.5 | |
os: windows-2019 | |
python: "3.5" | |
piparch: win_amd64 | |
profile: latest | |
skip_cothread: yes | |
- name: win64 3.6 | |
os: windows-latest | |
python: "3.6" | |
piparch: win_amd64 | |
profile: latest | |
skip_cothread: yes | |
- name: win64 3.7 | |
os: windows-latest | |
python: "3.7" | |
piparch: win_amd64 | |
profile: latest | |
skip_cothread: yes | |
- name: win64 3.8 | |
os: windows-latest | |
python: "3.8" | |
piparch: win_amd64 | |
profile: latest | |
skip_cothread: yes | |
- name: win64 3.9 | |
os: windows-latest | |
python: "3.9" | |
piparch: win_amd64 | |
profile: latest | |
skip_cothread: yes | |
- name: win64 3.10 | |
os: windows-latest | |
python: "3.10" | |
piparch: win_amd64 | |
profile: latest | |
skip_cothread: yes | |
- name: win64 3.11 | |
os: windows-latest | |
python: "3.11" | |
piparch: win_amd64 | |
profile: latest | |
skip_cothread: yes | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup native python | |
if: matrix.python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
#architecture: x64 | |
- name: Automatic core dumper analysis | |
uses: mdavidsaver/ci-core-dumper@master | |
- name: Install Twine | |
if: true && !matrix.base | |
run: | | |
python -m pip install twine | |
python -m twine -h | |
python ./gha-set-pre.py | |
- name: Native Prep/Info | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install setuptools wheel twine | |
which python | |
python --version | |
python -m pip --version | |
python -m twine -h | |
python ./gha-set-pre.py | |
- name: apt-get install | |
if: runner.os=='Linux' && matrix.base | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install libreadline6-dev libncurses5-dev perl | |
- name: Native Deps | |
if: true && !matrix.pyver | |
shell: bash | |
run: | | |
if [ "${{ matrix.profile }}" ] | |
then | |
python -m pip install -r requirements-${{ matrix.profile }}.txt | |
else | |
python -m pip install --only-binary numpy nose2 ply ${{ matrix.numpy }} ${{ matrix.cython }} | |
fi | |
if [ "${{ matrix.skip_cothread }}" != "yes" ] | |
then | |
python -m pip install cothread | |
fi | |
- name: PY Source | |
shell: bash | |
run: | | |
echo "PRE=$PRE" | |
python -m pip install setuptools wheel nose2 | |
python -m pip install --only-binary numpy $PRE setuptools-dso epicscorelibs pvxslibs | |
python setup.py sdist --formats=gztar | |
ls dist/* | |
- name: Native Make build | |
if: matrix.base | |
run: | | |
./.ci/build-deps.sh -j2 | |
make PYTHON=`which python` -j2 | |
python -m ci_core_dumper exec make PYTHON=`which python` nose | |
- name: PEP517 Build | |
if: matrix.python && !matrix.base && matrix.source | |
run: | | |
python -m pip wheel -v -w dist $PRE dist/*.tar.* | |
- name: Native PY build | |
if: matrix.python && !matrix.base && !matrix.source | |
shell: bash | |
run: | | |
python -m pip wheel -v -w dist --no-index --no-deps \ | |
--no-build-isolation --no-use-pep517 \ | |
--build-option --plat-name=${{ matrix.piparch }} \ | |
$PRE \ | |
dist/*.tar.* | |
cd dist | |
python -m pip install p4p*.whl | |
python -m ci_core_dumper exec python -m nose2 -v p4p | |
- name: Docker PY build | |
if: matrix.pyver && !matrix.base && !matrix.source | |
run: | | |
# can't use GHA native docker support since GHA magic binaries need .so absent from old manylinux images :( | |
cat <<EOF > runit.sh | |
#!/bin/sh | |
set -e -x | |
cd /io | |
[ -d dist ] | |
ls dist/* | |
export PATH="/opt/python/${{ matrix.pyver }}/bin:\$PATH" | |
export SETUPTOOLS_USE_DISTUTILS=stdlib | |
which python | |
python -m pip install -U pip | |
python -m pip install setuptools wheel nose2 | |
python -m pip install --only-binary numpy $PRE setuptools-dso epicscorelibs pvxslibs | |
if [ "${{ matrix.profile }}" ] | |
then | |
python -m pip install --only-binary numpy -r requirements-${{ matrix.profile }}.txt | |
else | |
python -m pip install --only-binary numpy nose2 ply ${{ matrix.numpy }} ${{ matrix.cython }} | |
fi | |
if [ "${{ matrix.skip_cothread }}" != "yes" ] | |
then | |
python -m pip install cothread | |
fi | |
python -m pip wheel -v -w dist --no-index --no-deps \ | |
--no-build-isolation --no-use-pep517 \ | |
--build-option --plat-name=${{ matrix.piparch }} \ | |
$PRE \ | |
dist/*.tar.* | |
cd dist | |
python -m pip install --only-binary numpy p4p*.whl | |
python -m nose2 -v p4p | |
EOF | |
cat runit.sh | |
chmod +x runit.sh | |
docker pull quay.io/pypa/${{ matrix.piparch }} | |
docker run --rm -v `pwd`:/io quay.io/pypa/${{ matrix.piparch }} ${{ matrix.pre }} /io/runit.sh | |
- name: List Artifacts | |
if: true && !matrix.base | |
run: ls dist/* | |
- name: Save Artifacts | |
if: true && !matrix.base | |
uses: actions/upload-artifact@v3 | |
with: | |
name: p4p | |
path: dist/* | |
- name: Check wheels | |
if: ${{ !matrix.base && !matrix.source }} | |
run: python -m twine check dist/p4p*.whl | |
- name: Check source | |
if: ${{ matrix.source && !matrix.base }} | |
run: python -m twine check dist/p4p*.tar.* | |
- name: Upload wheels | |
if: github.event_name=='push' && github.repository=='mdavidsaver/p4p' && github.ref=='refs/heads/master' && !matrix.base && !matrix.source | |
env: | |
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
run: | | |
python -m twine upload --skip-existing dist/p4p*.whl | |
- name: Upload source | |
if: github.event_name=='push' && github.repository=='mdavidsaver/p4p' && github.ref=='refs/heads/master' && matrix.source && !matrix.base | |
env: | |
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
run: | | |
python -m twine upload --skip-existing dist/p4p*.tar.* |