Hi,

On 2022-09-28 16:07:13 -0400, Tom Lane wrote:
> I agree that it'd be good if CI did some 32-bit testing so it could have
> caught (5) and (6), but that's being worked on.

I wasn't aware of anybody doing so, thus here's a patch for that.

I already added the necessary packages to the image. I didn't install llvm for
32bit because that'd have a) bloated the image unduly b) they can't currently
be installed in parallel afaics.

Attached is the patch adding it to CI. To avoid paying the task startup
overhead twice, it seemed a tad better to build and test 32bit as part of an
existing task. We could instead give each job fewer CPUs and run them
concurrently.

It might be worth changing one of the builds to use -Dwal_blocksize=4 and a
few other flags, to increase our coverage.

Greetings,

Andres Freund
>From 384322a92c845378728057fb38b143ca58185831 Mon Sep 17 00:00:00 2001
From: Andres Freund <and...@anarazel.de>
Date: Thu, 29 Sep 2022 16:09:09 -0700
Subject: [PATCH v1 1/2] ci: Add 32bit build and test

Discussion: https://postgr.es/m/4033181.1664395...@sss.pgh.pa.us
---
 .cirrus.yml | 35 +++++++++++++++++++++++++++++++----
 1 file changed, 31 insertions(+), 4 deletions(-)

diff --git a/.cirrus.yml b/.cirrus.yml
index 7b5cb021027..7a1887ab444 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -40,9 +40,9 @@ on_failure_ac: &on_failure_ac
 on_failure_meson: &on_failure_meson
   testrun_artifacts:
     paths:
-      - "build/testrun/**/*.log"
-      - "build/testrun/**/*.diffs"
-      - "build/testrun/**/regress_log_*"
+      - "build*/testrun/**/*.log"
+      - "build*/testrun/**/*.diffs"
+      - "build*/testrun/**/regress_log_*"
     type: text/plain
 
   # 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
   # don't end up useful. We could probably improve on that with a some custom
   # conversion script, but ...
   meson_log_artifacts:
-    path: "build/meson-logs/*.txt"
+    path: "build*/meson-logs/*.txt"
     type: text/plain
 
 
@@ -229,6 +229,9 @@ task:
 
     - name: Linux - Debian Bullseye - Meson
 
+      env:
+        CCACHE_MAXSIZE: "400M" # tests two different builds
+
       configure_script: |
         su postgres <<-EOF
           meson setup \
@@ -239,7 +242,23 @@ task:
             build
         EOF
 
+      configure_32_script: |
+        su postgres <<-EOF
+          export CC='ccache gcc -m32'
+          meson setup \
+            --buildtype=debug \
+            -Dcassert=true \
+            ${LINUX_MESON_FEATURES} \
+            -Dllvm=disabled \
+            --pkg-config-path /usr/lib/i386-linux-gnu/pkgconfig/ \
+            -DPERL=perl5.32-i386-linux-gnu \
+            -DPG_TEST_EXTRA="$PG_TEST_EXTRA" \
+            build-32
+        EOF
+
       build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS}'
+      build_32_script: su postgres -c 'ninja -C build-32 -j${BUILD_JOBS}'
+
       upload_caches: ccache
 
       test_world_script: |
@@ -247,6 +266,14 @@ task:
           ulimit -c unlimited
           meson test $MTEST_ARGS --num-processes ${TEST_JOBS}
         EOF
+        # so that we don't upload 64bit logs if 32bit fails
+        rm -rf build/
+
+      test_world_32_script: |
+        su postgres <<-EOF
+          ulimit -c unlimited
+          meson test $MTEST_ARGS -C build-32 --num-processes ${TEST_JOBS}
+        EOF
 
       on_failure:
         <<: *on_failure_meson
-- 
2.37.3.542.gdd3f6c4cae

Reply via email to