Skip to content

Commit ccf36ea

Browse files
committed
ci: Add 32bit build and test
It's easy enough to make changes that break on 32bit platforms and few people test that locally. Add a test for that to CI. LLVM is disabled on 32bit because installing it would bloat the image size further. The debian w/ meson task is fast enough that we can afford to test both. Use the occasion of a separate run of the tests to run them under LANG=C, we've recently discovered there's not a lot of testing in the buildfarm for the case. Discussion: https://postgr.es/m/4033181.1664395633@sss.pgh.pa.us
1 parent 80a0567 commit ccf36ea

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

.cirrus.yml

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ on_failure_ac: &on_failure_ac
4040
on_failure_meson: &on_failure_meson
4141
testrun_artifacts:
4242
paths:
43-
- "build/testrun/**/*.log"
44-
- "build/testrun/**/*.diffs"
45-
- "build/testrun/**/regress_log_*"
43+
- "build*/testrun/**/*.log"
44+
- "build*/testrun/**/*.diffs"
45+
- "build*/testrun/**/regress_log_*"
4646
type: text/plain
4747

4848
# In theory it'd be nice to upload the junit files meson generates, so that
@@ -51,7 +51,7 @@ on_failure_meson: &on_failure_meson
5151
# don't end up useful. We could probably improve on that with a some custom
5252
# conversion script, but ...
5353
meson_log_artifacts:
54-
path: "build/meson-logs/*.txt"
54+
path: "build*/meson-logs/*.txt"
5555
type: text/plain
5656

5757

@@ -229,6 +229,9 @@ task:
229229

230230
- name: Linux - Debian Bullseye - Meson
231231

232+
env:
233+
CCACHE_MAXSIZE: "400M" # tests two different builds
234+
232235
configure_script: |
233236
su postgres <<-EOF
234237
meson setup \
@@ -239,14 +242,44 @@ task:
239242
build
240243
EOF
241244
245+
# Also build & test in a 32bit build - it's gotten rare to test that
246+
# locally.
247+
configure_32_script: |
248+
su postgres <<-EOF
249+
export CC='ccache gcc -m32'
250+
meson setup \
251+
--buildtype=debug \
252+
-Dcassert=true \
253+
${LINUX_MESON_FEATURES} \
254+
-Dllvm=disabled \
255+
--pkg-config-path /usr/lib/i386-linux-gnu/pkgconfig/ \
256+
-DPERL=perl5.32-i386-linux-gnu \
257+
-DPG_TEST_EXTRA="$PG_TEST_EXTRA" \
258+
build-32
259+
EOF
260+
242261
build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS}'
262+
build_32_script: su postgres -c 'ninja -C build-32 -j${BUILD_JOBS}'
263+
243264
upload_caches: ccache
244265

245266
test_world_script: |
246267
su postgres <<-EOF
247268
ulimit -c unlimited
248269
meson test $MTEST_ARGS --num-processes ${TEST_JOBS}
249270
EOF
271+
# so that we don't upload 64bit logs if 32bit fails
272+
rm -rf build/
273+
274+
# There's currently no coverage of icu with LANG=C in the buildfarm. We
275+
# can easily provide some here by running one of the sets of tests that
276+
# way. Newer versions of python insist on changing the LC_CTYPE away
277+
# from C, prevent that with PYTHONCOERCECLOCALE.
278+
test_world_32_script: |
279+
su postgres <<-EOF
280+
ulimit -c unlimited
281+
PYTHONCOERCECLOCALE=0 LANG=C meson test $MTEST_ARGS -C build-32 --num-processes ${TEST_JOBS}
282+
EOF
250283
251284
on_failure:
252285
<<: *on_failure_meson

0 commit comments

Comments
 (0)