Remove duplicated find python #19
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: Build and Test | |
on: push | |
jobs: | |
build-and-test: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu | |
os_ver: "24.04" | |
config: Release | |
coverage: false | |
cc: gcc-14 | |
cxx: g++-14 | |
python_bindings: false | |
arch: x86_64 | |
- os: ubuntu | |
os_ver: "22.04" | |
config: Release | |
coverage: false | |
cc: gcc-10 | |
cxx: g++-10 | |
python_bindings: true | |
arch: x86_64 | |
- os: windows | |
os_ver: "2022" | |
config: Release | |
coverage: false | |
cc: cl | |
cxx: cl | |
python_bindings: true | |
arch: x86_64 | |
- os: macos | |
os_ver: "14" | |
config: Release | |
coverage: false | |
cc: clang | |
cxx: clang++ | |
python_bindings: true | |
arch: arm64 | |
- os: macos | |
os_ver: "13" | |
config: Release | |
coverage: false | |
cc: clang | |
cxx: clang++ | |
python_bindings: true | |
arch: x86_64 | |
- os: ubuntu | |
os_ver: "22.04" | |
config: Debug | |
coverage: true | |
cc: gcc-10 | |
cxx: g++-10 | |
python_bindings: false | |
arch: x86_64 | |
defaults: | |
run: | |
shell: bash | |
name: ${{ matrix.os }}-${{ matrix.os_ver }} ${{ matrix.cxx }} ${{ matrix.config }} coverage=${{ matrix.coverage }} | |
env: | |
CC: ${{ matrix.cc }} | |
CXX: ${{ matrix.cxx }} | |
runs-on: ${{ matrix.os }}-${{ matrix.os_ver }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set Project Name | |
run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV | |
- name: Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/build | |
- name: Set coverage variables | |
id: cov | |
run: | | |
if ${{matrix.coverage}}; then | |
echo "COVERAGE=ON" >> $GITHUB_OUTPUT | |
echo "STATIC_LIB=OFF" >> $GITHUB_OUTPUT | |
else | |
echo "COVERAGE=OFF" >> $GITHUB_OUTPUT | |
echo "STATIC_LIB=ON" >> $GITHUB_OUTPUT | |
fi | |
- name: Configure CMake | |
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.config }} -D${{ env.REPOSITORY_NAME }}_BUILD_TESTING=ON -D${{ env.REPOSITORY_NAME }}_STATIC_LIB=${{ steps.cov.outputs.STATIC_LIB }} -D${{ env.REPOSITORY_NAME }}_COVERAGE=${{ steps.cov.outputs.COVERAGE }} | |
- name: Build | |
run: | | |
cmake --build build --config ${{ matrix.config }} | |
- name: Test | |
run: ctest -C ${{ matrix.config }} --output-on-failure | |
working-directory: build | |
- name: Code Coverage Analysis | |
if: "matrix.coverage" | |
run: make gcov | |
working-directory: build | |
- name: Upload Code Coverage Report | |
if: "matrix.coverage" | |
uses: codecov/codecov-action@v3 | |
with: | |
flags: integration | |
functionalities: "gcov" | |
move_coverage_to_trash: true | |
- name: Set up Python 3.12 | |
if: ${{ matrix.python_bindings }} | |
id: setup-python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: Build Python Wheel | |
if: ${{ matrix.python_bindings }} | |
working-directory: ./build/ | |
run: | | |
begin_group() { echo -e "::group::\033[93m$1\033[0m"; } | |
begin_group "Install other python dependencies" | |
python -m pip install --upgrade pip | |
# Ubuntu 22.04 from apt will get swig that's too old to support attributes like [[ nodiscard ]], so get from PyPi | |
pip install setuptools wheel twine requests packaging pytest swig | |
echo -e "::endgroup::" | |
begin_group "Build target" | |
cmake -DBUILD_PYTHON_BINDINGS:BOOL=ON -DPython_REQUIRED_VERSION:STRING=${{ steps.setup-python.outputs.python-version }} -DPython_ROOT_DIR:PATH=$RUNNER_TOOL_CACHE/Python/${{ steps.setup-python.outputs.python-version }}/${{ matrix.arch }}/ . | |
cmake --build . --config ${{ matrix.config }} --target python_package | |
echo -e "::endgroup::" | |
- name: Python CTest | |
if: ${{ matrix.python_bindings }} | |
working-directory: ./build/ | |
run: | | |
ctest -C ${{ matrix.config }} -R python -VV | |
- name: Zip the wheel to maintain case sensitivy and file permissions | |
if: ${{ matrix.python_bindings }} | |
working-directory: ./build/python | |
shell: bash | |
run: | | |
TGZ_STEM="btwxt-python-${{ matrix.os }}-${{ matrix.os_ver }}-${{ matrix.arch }}" | |
echo "TGZ_STEM=$TGZ_STEM" >> $GITHUB_ENV | |
tar -cvzf "$TGZ_STEM.tar.gz" dist/ | |
- name: Upload .whl to artifact | |
if: ${{ matrix.python_bindings }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.TGZ_STEM }} | |
path: "./build/python/${{ env.TGZ_STEM }}.tar.gz" |