Skip to content

Commit f3a9b57

Browse files
committed
ci(build): generate wrappers first; then build without generator
Split the pipeline in each job: 1) qmake build with CONFIG+=generator_only 2) run pythonqt_generator 3) qmake build with CONFIG+=exclude_generator and run tests
1 parent eab4330 commit f3a9b57

File tree

2 files changed

+87
-39
lines changed

2 files changed

+87
-39
lines changed

.github/workflows/build.yml

Lines changed: 83 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,43 @@ jobs:
5656
with:
5757
key: ${{ runner.os }}-ubuntu-${{ matrix.container_version }}
5858
evict-old-files: 'job'
59-
60-
- name: Build PythonQt
59+
60+
- name: Build PythonQt (generator_only)
61+
run: |
62+
export QT_SELECT=qt5
63+
echo ======= SYSTEM INFO ========
64+
uname -a; gcc --version | grep "gcc"; qmake --version
65+
echo ============================
66+
qmake -r PythonQt.pro CONFIG+=ccache CONFIG+=release CONFIG+=force_debug_info \
67+
CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address \
68+
CONFIG+=generator_only \
69+
make -j $(nproc)
70+
71+
- name: Generate Wrappers
72+
run: |
73+
# workaround to allow to find the Qt include dirs for installed standard qt packages
74+
mkdir /usr/include/qt5; ln -s /usr/include/x86_64-linux-gnu/qt5 /usr/include/qt5/include
75+
export QTDIR=/usr/include/qt5
76+
cd generator
77+
UBSAN_OPTIONS="halt_on_error=1" ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \
78+
./pythonqt_generator
79+
80+
- name: Build PythonQt (exclude_generator)
6181
run: |
6282
export QT_SELECT=qt5
6383
echo ======= SYSTEM INFO ========
6484
uname -a; gcc --version | grep "gcc"; python3 --version; qmake --version
6585
echo ============================
6686
qmake -r PythonQt.pro CONFIG+=ccache CONFIG+=release CONFIG+=force_debug_info \
6787
CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address \
88+
CONFIG+=exclude_generator \
6889
PYTHON_VERSION=$(python3 --version | cut -d " " -f 2 | cut -d "." -f1,2) \
6990
PYTHON_DIR=$(which python3 | xargs dirname | xargs dirname)
7091
make -j $(nproc)
7192
PYTHONDEVMODE=1 PYTHONASYNCIODEBUG=1 PYTHONWARNINGS=error PYTHONMALLOC=malloc_debug \
7293
UBSAN_OPTIONS="halt_on_error=1" ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \
7394
make check TESTARGS="-platform offscreen"
74-
95+
7596
- name: Run memory tests with sanitizers
7697
run: |
7798
QT_VERSION_FULL=$(qmake -query QT_VERSION)
@@ -99,15 +120,6 @@ jobs:
99120
PYTHONQT_RUN_ONLY_CLEANUP_TESTS=1 \
100121
PYTHONQT_DISABLE_ASYNCIO=1 \
101122
make check TESTARGS="-platform minimal"
102-
103-
- name: Generate Wrappers
104-
run: |
105-
# workaround to allow to find the Qt include dirs for installed standard qt packages
106-
mkdir /usr/include/qt5; ln -s /usr/include/x86_64-linux-gnu/qt5 /usr/include/qt5/include
107-
export QTDIR=/usr/include/qt5
108-
cd generator
109-
UBSAN_OPTIONS="halt_on_error=1" ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \
110-
./pythonqt_generator
111123
112124
- name: Upload Wrappers
113125
uses: actions/upload-artifact@v4
@@ -144,7 +156,25 @@ jobs:
144156
- name: Checkout PythonQt
145157
uses: actions/checkout@v5
146158

147-
- name: Build PythonQt
159+
- name: Build PythonQt (generator_only)
160+
run: |
161+
export QT_SELECT=qt5
162+
echo ======= SYSTEM INFO ========
163+
uname -a; gcc --version | grep "gcc"; qmake-qt5 --version
164+
echo ============================
165+
qmake-qt5 -r PythonQt.pro CONFIG+=${{ matrix.configuration }} \
166+
CONFIG+=generator_only
167+
make -j $(nproc)
168+
169+
- name: Generate Wrappers
170+
run: |
171+
# workaround to allow to find the Qt include dirs for installed standard qt packages
172+
mkdir /usr/include/qt5ln; ln -s /usr/include/qt5 /usr/include/qt5ln/include
173+
export QTDIR=/usr/include/qt5ln
174+
cd generator
175+
./pythonqt_generator
176+
177+
- name: Build PythonQt (exclude_generator)
148178
run: |
149179
export QT_SELECT=qt5
150180
echo ======= SYSTEM INFO ========
@@ -157,19 +187,12 @@ jobs:
157187
echo PYTHON_VERSION_SHORT=${PYTHON_VERSION_SHORT}
158188
echo PYTHON_DIR=${PYTHON_DIR}
159189
qmake-qt5 -r PythonQt.pro CONFIG+=${{ matrix.configuration }} \
190+
CONFIG+=exclude_generator \
160191
"PYTHON_VERSION=${PYTHON_VERSION_SHORT}" "PYTHON_DIR=${PYTHON_DIR}"
161192
make -j $(nproc) && \
162193
PYTHONDEVMODE=1 PYTHONASYNCIODEBUG=1 PYTHONWARNINGS=error PYTHONMALLOC=malloc_debug \
163194
make check TESTARGS="-platform offscreen"
164195
165-
- name: Generate Wrappers
166-
run: |
167-
# workaround to allow to find the Qt include dirs for installed standard qt packages
168-
mkdir /usr/include/qt5ln; ln -s /usr/include/qt5 /usr/include/qt5ln/include
169-
export QTDIR=/usr/include/qt5ln
170-
cd generator
171-
./pythonqt_generator
172-
173196
- name: Upload Wrappers
174197
uses: actions/upload-artifact@v4
175198
with:
@@ -235,7 +258,25 @@ jobs:
235258
echo "MACOS_VERSION_FULL=$MACOS_VERSION_FULL" | tee -a $GITHUB_OUTPUT
236259
echo "MACOS_VERSION_SHORT=$MACOS_VERSION_SHORT" | tee -a $GITHUB_OUTPUT
237260
238-
- name: Build PythonQt
261+
- name: Build PythonQt (generator_only)
262+
run: |
263+
set -ue
264+
echo ======= SYSTEM INFO ========
265+
uname -a; gcc --version | head -n 1; qmake --version
266+
echo ============================
267+
qmake CONFIG+=ccache CONFIG+=${{ matrix.configuration }} CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address \
268+
CONFIG+=generator_only \
269+
-r PythonQt.pro
270+
make -j $(nproc)
271+
272+
- name: Generate Wrappers
273+
if: ${{ contains(matrix.configuration, 'release') }}
274+
run: |
275+
cd generator
276+
UBSAN_OPTIONS="halt_on_error=1" ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \
277+
./pythonqt_generator
278+
279+
- name: Build PythonQt (exclude_generator)
239280
run: |
240281
set -ue
241282
echo ======= SYSTEM INFO ========
@@ -246,6 +287,7 @@ jobs:
246287
"python${PYTHON_VERSION_MAJOR}-embed" "python${PYTHON_VERSION_MAJOR}"
247288
do if pkg-config --exists "$i"; then PYTHON_PKGCONFIG_NAME="$i"; break; fi; done
248289
qmake CONFIG+=ccache CONFIG+=${{ matrix.configuration }} CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address \
290+
CONFIG+=exclude_generator \
249291
PYTHON_VERSION=${{ steps.versions.outputs.PYTHON_VERSION_SHORT }} \
250292
PYTHON_DIR="$pythonLocation" \
251293
PKGCONFIG+=$PYTHON_PKGCONFIG_NAME \
@@ -255,13 +297,6 @@ jobs:
255297
UBSAN_OPTIONS="halt_on_error=1" ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \
256298
make check TESTARGS="-platform offscreen"
257299
258-
- name: Generate Wrappers
259-
if: ${{ contains(matrix.configuration, 'release') }}
260-
run: |
261-
cd generator
262-
UBSAN_OPTIONS="halt_on_error=1" ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \
263-
./pythonqt_generator
264-
265300
- name: Upload Wrappers
266301
if: ${{ contains(matrix.configuration, 'release') }}
267302
uses: actions/upload-artifact@v4
@@ -351,13 +386,31 @@ jobs:
351386
echo "QT_VERSION_SHORT=$QT_VERSION_SHORT" | tee -a $GITHUB_OUTPUT
352387
echo "PYTHON_VERSION_SHORT=$PYTHON_VERSION_SHORT" | tee -a $GITHUB_OUTPUT
353388
354-
- name: Build PythonQt
389+
- name: Build PythonQt (generator_only)
390+
shell: cmd
391+
run: |
392+
qmake -query
393+
qmake CONFIG+=release CONFIG-=debug_and_release CONFIG-=debug_and_release_target ^
394+
CONFIG+=generator_only ^
395+
PythonQt.pro
396+
mingw32-make -j 2 ^
397+
|| set CL=/MP && nmake
398+
399+
- name: Generate Wrappers
400+
shell: cmd
401+
run: |
402+
cd generator
403+
set QTDIR=%QT_ROOT_DIR%
404+
pythonqt_generator
405+
406+
- name: Build PythonQt (exclude_generator)
355407
shell: cmd
356408
run: |
357409
qmake -query
358410
python --version
359411
set PYTHONQTALL_CONFIG=${{ matrix.pythonqtall-config }}
360412
qmake CONFIG+=release CONFIG-=debug_and_release CONFIG-=debug_and_release_target ^
413+
CONFIG+=exclude_generator ^
361414
"PYTHON_PATH=%pythonLocation%" ^
362415
"PYTHON_VERSION=${{ steps.versions.outputs.PYTHON_VERSION_SHORT }}" ^
363416
PythonQt.pro
@@ -367,13 +420,6 @@ jobs:
367420
mingw32-make -j 2 && mingw32-make check "TESTARGS=-platform offscreen" ^
368421
|| set CL=/MP && nmake && nmake check "TESTARGS=-platform offscreen"
369422
370-
- name: Generate Wrappers
371-
shell: cmd
372-
run: |
373-
cd generator
374-
set QTDIR=%QT_ROOT_DIR%
375-
pythonqt_generator
376-
377423
- name: Upload Wrappers
378424
if: (matrix.pythonqtall-config || '') == ''
379425
uses: actions/upload-artifact@v4

.github/workflows/build_latest.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,28 +98,30 @@ jobs:
9898
path: generated_cpp
9999
if-no-files-found: error
100100

101-
- name: Build PythonQt Ubuntu
101+
- name: Build PythonQt Ubuntu (exclude_generator)
102102
if: ${{ matrix.os == 'ubuntu' }}
103103
run: |
104104
echo ======= SYSTEM INFO ========
105105
uname -a; gcc --version | grep "gcc"; python3 --version; qmake --version
106106
echo ============================
107107
qmake -r PythonQt.pro CONFIG+=ccache CONFIG+=release CONFIG+=force_debug_info \
108108
CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address \
109+
CONFIG+=exclude_generator \
109110
PYTHON_VERSION=$(python3 --version | cut -d " " -f 2 | cut -d "." -f1,2) \
110111
PYTHON_DIR=$(which python3 | xargs dirname | xargs dirname)
111112
make -j $(nproc)
112113
PYTHONDEVMODE=1 PYTHONASYNCIODEBUG=1 PYTHONWARNINGS=error PYTHONMALLOC=malloc_debug \
113114
UBSAN_OPTIONS="halt_on_error=1" ASAN_OPTIONS="detect_leaks=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0" \
114115
make check TESTARGS="-platform offscreen"
115116
116-
- name: Build PythonQt Windows
117+
- name: Build PythonQt Windows (exclude_generator)
117118
shell: cmd
118119
if: ${{ matrix.os == 'windows' }}
119120
run: |
120121
qmake -query
121122
python --version
122123
qmake CONFIG+=release CONFIG-=debug_and_release CONFIG-=debug_and_release_target ^
124+
CONFIG+=exclude_generator ^
123125
"PYTHONQTALL_CONFIG=${{ matrix.pythonqtall-config }}" ^
124126
"PYTHON_PATH=%pythonLocation%" ^
125127
"PYTHON_VERSION=${{ steps.setenv.outputs.PYTHON_VERSION_SHORT }}" ^

0 commit comments

Comments
 (0)