Use latest macOS for CI #201
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: Check generated_cpp | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ['ubuntu', 'windows'] | |
qt-version: [ '5.12.*', '5.15.*', '6.7.*' ] | |
python-version: [ '3.12' ] | |
runs-on: ${{ matrix.os }}-latest | |
steps: | |
- name: Install MSVC | |
if: ${{ matrix.os == 'windows' }} | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: amd64 | |
- name: Install Qt ${{matrix.qt-version}} | |
uses: jurplel/install-qt-action@v4 | |
with: | |
# 6.7.* currently does not work with ubuntu with this action | |
version: ${{ matrix.os == 'ubuntu' && matrix.qt-version == '6.7.*' && '6.6.*' || matrix.qt-version }} | |
modules: ${{startsWith(matrix.qt-version, '6') && 'qt5compat qtscxml qtpositioning qtwebchannel qtmultimedia qtwebengine' || '' }} | |
arch: ${{ matrix.os == 'ubuntu' && 'gcc_64' || (startsWith(matrix.qt-version, '5.12') && 'win64_msvc2017_64' || 'win64_msvc2019_64') }} | |
- name: Setup Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '${{ matrix.python-version }}' | |
- name: Checkout PythonQt | |
uses: actions/checkout@v4 | |
- name: Ccache | |
uses: hendrikmuhs/ccache-action@v1.2.14 | |
with: | |
key: ${{ runner.os }}-${{ matrix.qt-version }} | |
if: ${{ matrix.os == 'ubuntu' }} | |
- name: Set environment | |
id: setenv | |
run: | | |
QT_VERSION_MAJOR=$(cut -f 1 -d . <<< "${{matrix.qt-version}}") | |
echo "QT_VERSION_MAJOR=$QT_VERSION_MAJOR" >> $GITHUB_ENV | |
QT_VERSION_SHORT=$(cut -f 1,2 -d . <<< "${{matrix.qt-version}}") | |
echo "QT_VERSION_SHORT=$QT_VERSION_SHORT" >> $GITHUB_OUTPUT | |
PYTHON_VERSION_FULL=$(python --version 2>&1 | cut -f 2 -d ' ') | |
PYTHON_VERSION_SHORT=$(cut -f 1,2 -d . <<< $PYTHON_VERSION_FULL) | |
echo "PYTHON_VERSION_SHORT=$PYTHON_VERSION_SHORT" >> $GITHUB_OUTPUT | |
echo "$pythonLocation/bin" >> $GITHUB_PATH | |
- name: Build generator Ubuntu | |
shell: bash | |
if: ${{ matrix.os == 'ubuntu' }} | |
run: | | |
cd generator | |
qmake -r generator.pro CONFIG+=ccache CONFIG+=release CONFIG-=debug_and_release CONFIG+=force_debug_info \ | |
CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address | |
make -j $(nproc) | |
- name: Build generator Windows | |
shell: cmd | |
if: ${{ matrix.os == 'windows' }} | |
run: | | |
cd generator | |
qmake CONFIG+=release CONFIG-=debug_and_release CONFIG-=debug_and_release_target generator.pro | |
nmake | |
- name: Generate Wrappers | |
shell: bash | |
run: | | |
cd generator | |
QTDIR="$QT_ROOT_DIR" \ | |
UBSAN_OPTIONS="halt_on_error=1" \ | |
ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \ | |
./pythonqt_generator | |
- name: Upload Wrappers | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wrappers_${{ matrix.os }}_${{ steps.setenv.outputs.QT_VERSION_SHORT }} | |
path: generated_cpp | |
- name: Build PythonQt Ubuntu | |
if: ${{ matrix.os == 'ubuntu' }} | |
run: | | |
echo ======= SYSTEM INFO ======== | |
uname -a; gcc --version | grep "gcc"; python3 --version; qmake --version | |
echo ============================ | |
qmake -r PythonQt.pro CONFIG+=ccache CONFIG+=release CONFIG+=force_debug_info \ | |
CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address \ | |
PYTHON_VERSION=$(python3 --version | cut -d " " -f 2 | cut -d "." -f1,2) \ | |
PYTHON_DIR=$(which python3 | xargs dirname | xargs dirname) | |
make -j $(nproc) | |
PYTHONDEVMODE=1 PYTHONASYNCIODEBUG=1 PYTHONWARNINGS=error PYTHONMALLOC=malloc_debug \ | |
UBSAN_OPTIONS="halt_on_error=1" ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \ | |
make check TESTARGS="-platform offscreen" | |
- name: Build PythonQt Windows | |
shell: cmd | |
if: ${{ matrix.os == 'windows' }} | |
run: | | |
qmake -query | |
python --version | |
qmake CONFIG+=release CONFIG-=debug_and_release CONFIG-=debug_and_release_target ^ | |
"PYTHONQTALL_CONFIG=${{ matrix.pythonqtall-config }}" ^ | |
"PYTHON_PATH=%pythonLocation%" ^ | |
"PYTHON_VERSION=${{ steps.setenv.outputs.PYTHON_VERSION_SHORT }}" ^ | |
PythonQt.pro | |
set PYTHONDEVMODE=1 | |
set PYTHONASYNCIODEBUG=1 | |
set PYTHONWARNINGS=error | |
nmake && nmake check "TESTARGS=-platform offscreen" |