Skip to content

feat(cmake): Move to find_package #863

feat(cmake): Move to find_package

feat(cmake): Move to find_package #863

Workflow file for this run

name: manylinux2014
on:
push:
paths-ignore:
- '**.md'
tags:
- '*'
branches:
- '**'
pull_request:
paths-ignore:
- '**.md'
branches:
- '**'
env:
BUILD_TYPE: Release
DEV_MODE: ON
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build-info:
name: Build info
runs-on: ubuntu-latest
outputs:
python-versions: ${{ steps.setVariables.outputs.matrix }}
steps:
- id: setVariables
run: |
echo 'matrix=["3.7", "3.8", "3.9", "3.10", "3.11" ]' >> $GITHUB_OUTPUT
build-wheel:
name: Build native wheel
runs-on: ubuntu-latest
needs: [build-info ]
strategy:
fail-fast: true
matrix:
PYTHON_VERSION: ${{ fromJson(needs.build-info.outputs.python-versions) }}
container: quay.io/pypa/manylinux_2_28_x86_64
steps:
- uses: actions/checkout@v4
- name: Set env
run: |
export PYTHON_SHORT_VERSION=$(echo '${{ matrix.PYTHON_VERSION }}' | tr -d '.')
echo "PYTHON_SHORT_VERSION=${PYTHON_SHORT_VERSION}" >> $GITHUB_ENV
export PYTHON_PATH=/opt/python/cp${PYTHON_SHORT_VERSION}-cp$(if [[ $PYTHON_SHORT_VERSION =~ ^3[67]$ ]]; then echo $PYTHON_SHORT_VERSION'm';else echo $PYTHON_SHORT_VERSION; fi )
export PATH=$PYTHON_PATH:$PYTHON_PATH/bin:$PATH
echo "PYTHON_PATH=${PYTHON_PATH}" >> $GITHUB_ENV
echo "PATH=${PATH}" >> $GITHUB_ENV
- name: Install system packages
run: |
yum install -y ninja-build python3-pip python3-devel wget unzip zip
- name: Set env conan dependencies
run: |
pip3 install --retries=30 conan==1.64.0
conan user
conan profile new default --detect --force
conan profile update settings.compiler.libcxx=libstdc++11 default
conan config set general.parallel_download=$(nproc)
conan config set general.cpu_count=$(nproc)
conan config install conan
conan remote add duckstax http://conan.duckstax.com
- name: Download and Install conan dependencies
run: |
pwd
ls
conan install conanfile.txt --build missing \
--build fmt \
--build spdlog \
-s build_type=Release
- name: Build wheel
run: |
cp integration/python/otterbrix/setup.py .
cp integration/python/otterbrix/pyproject.toml .
cp integration/python/otterbrix/get_path.py .
touch MANIFEST.in
python3 -m pip install wheel setuptools scikit-build==0.16.6 pytest==6.2.5
mkdir -p $(echo "./$(python3 get_path.py )")
conan install conanfile.txt --build missing -s build_type=Release -if=$(echo "./$(python3 get_path.py )")
python3 setup.py bdist_wheel --verbose
- name: Repair wheel
run: |
for whl in dist/otterbrix*.whl; do
auditwheel repair ${whl} -w ./work/dist/
rm ${whl};
done
- name: Save library
uses: actions/upload-artifact@v4
with:
name: artifact-wheel-${{ env.PYTHON_SHORT_VERSION }}
path: ./work/dist/otterbrix*cp${{ env.PYTHON_SHORT_VERSION }}*.whl
test-wheel:
name: Test wheel
runs-on: ${{ matrix.operating-system }}
needs: [ build-wheel, build-info ]
strategy:
fail-fast: true
matrix:
operating-system: [ ubuntu-20.04 ]
python-version: ${{ fromJson(needs.build-info.outputs.python-versions) }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Set env
run: |
export PYTHON_SHORT_VERSION=$(echo '${{ matrix.python-version }}' | tr -d '.')
echo "PYTHON_SHORT_VERSION=${PYTHON_SHORT_VERSION}" >> $GITHUB_ENV
- name: Install pytest
run: |
sudo apt update
sudo apt install -y python3-pip python3-venv
pip3 install --retries=30 pytest==6.2.5
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: artifact-wheel-${{ env.PYTHON_SHORT_VERSION }}
path: ./app
- name: Inspect artifacts
run: |
ls -l ./app/*whl
- name: Install package from wheel
run: |
python3 --version
pip3 install --retries=30 ./app/otterbrix-*.whl
- name: Test package imports
run: |
python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))"
python3 -c "from otterbrix import Client, DataBase, Collection, Connection, Cursor"
- name: Run pytest
run: |
pytest
upload-wheel:
name: Upload wheel
runs-on: ${{ matrix.operating-system }}
needs: [ test-wheel, build-info ]
if: github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/')
strategy:
fail-fast: false
matrix:
operating-system: [ ubuntu-20.04 ]
python-version: ${{ fromJson(needs.build-info.outputs.python-versions) }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Set env
run: |
export PYTHON_SHORT_VERSION=$(echo '${{ matrix.python-version }}' | tr -d '.')
echo "PYTHON_SHORT_VERSION=${PYTHON_SHORT_VERSION}" >> $GITHUB_ENV
- name: Install pip3
run: |
sudo apt update
sudo apt install -y python3-pip
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: artifact-wheel-${{ env.PYTHON_SHORT_VERSION }}
path: ./app
- name: Inspect artifacts
run: |
ls -l ./app/*whl
- name: Install twine
run: |
pip3 install --retries=30 twine
- name: Publish wheels
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: |
echo "Pretend to upload"
twine upload --skip-existing *
working-directory: ./app