agora inbox for [email protected]
help / color / mirror / Atom feedFrom: Andres Freund <[email protected]>
Subject: [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
Date: Tue, 9 Jun 2026 10:18:50 -0400
Previously, with a cold cache or a change in a central header, the
CompilerWarnings job would take ~35 minutes. The worst aspect of that was the
windows cross build, which would take about 8-10 minutes.
Migrate the compiler warnings tasks to meson, that generally makes the
cold-cache build a bit faster, and makes the windows cross build a *lot*
faster, due to being able to use precompiled headers.
With that the cold cache performance improves to about 12 minutes.
Discussion: https://postgr.es/m/a2ejn7lfqolutzz7kozalbhy3bixdrujb4buc3pgbtlk4am2ba@wbv6v7riia33
---
.github/workflows/pg-ci.yml | 38 +++++++++++++--------------
src/tools/ci/meson-cross-w64-ucrt.txt | 21 +++++++++++++++
2 files changed, 40 insertions(+), 19 deletions(-)
create mode 100644 src/tools/ci/meson-cross-w64-ucrt.txt
diff --git a/.github/workflows/pg-ci.yml b/.github/workflows/pg-ci.yml
index 742a8431782..81801800dac 100644
--- a/.github/workflows/pg-ci.yml
+++ b/.github/workflows/pg-ci.yml
@@ -1171,6 +1171,8 @@ jobs:
# compilers / flag combinations.
CCACHE_MAXSIZE: "1G"
DEFAULT_BUILD: world-bin
+ CCACHE_SLOPPINESS: pch_defines,time_macros
+ CCACHE_DEPEND: 1
steps:
- *nix_sysinfo_step
@@ -1186,53 +1188,56 @@ jobs:
- name: gcc warnings + (dtrace)
if: ${{ !cancelled() }}
env:
- CONF: ${{env.LINUX_CONFIGURE_FEATURES}} --cache gcc.cache --enable-dtrace
+ CONF: ${{env.MESON_COMMON_FEATURES}} -Ddtrace=enabled
CC: ccache gcc
CXX: ccache g++
CLANG: ccache clang
run: &compiler_warnings_cmd |
echo "::group::configure"
- ./configure \
- ${{env.CONF}} \
- CLANG="ccache clang"
+ rm -rf build-meson
+ meson setup -Dwerror=true $CONF build-meson
echo "::endgroup::"
- make -s -j${{env.BUILD_JOBS}} clean
- make -s -j${{env.BUILD_JOBS}} ${{env.DEFAULT_BUILD}}
+ ninja -C build-meson --quiet -j${{env.BUILD_JOBS}} ${{env.MBUILD_TARGET}}
# gcc, cassert on, dtrace off
- name: gcc warnings + (cassert)
if: ${{ !cancelled() }}
env:
- CONF: ${{env.LINUX_CONFIGURE_FEATURES}} --cache gcc.cache --enable-cassert
+ CONF: ${{env.MESON_COMMON_FEATURES}} -Dcassert=true
CC: ccache gcc
CXX: ccache g++
+ CLANG: ccache clang
run: *compiler_warnings_cmd
# clang, cassert off, dtrace off
- name: clang warnings
if: ${{ !cancelled() }}
env:
- CONF: ${{env.LINUX_CONFIGURE_FEATURES}} --cache clang.cache
+ CONF: ${{env.MESON_COMMON_FEATURES}}
CC: ccache clang
CXX: ccache clang++
+ CLANG: ccache clang
run: *compiler_warnings_cmd
# clang, cassert on, dtrace on
- name: clang warnings + (cassert + dtrace)
if: ${{ !cancelled() }}
env:
- CONF: ${{env.LINUX_CONFIGURE_FEATURES}} --cache clang.cache --enable-cassert --enable-dtrace
+ CONF: ${{env.MESON_COMMON_FEATURES}} -Dcassert=true -Ddtrace=enabled
CC: ccache clang
CXX: ccache clang++
+ CLANG: ccache clang
run: *compiler_warnings_cmd
- name: mingw warnings (cross compilation)
if: ${{ !cancelled() }}
env:
- CONF: --host=x86_64-w64-mingw32ucrt --enable-cassert --without-icu
- CC: ccache x86_64-w64-mingw32ucrt-gcc
- CXX: ccache x86_64-w64-mingw32ucrt-g++
+ CONF: >-
+ --cross-file src/tools/ci/meson-cross-w64-ucrt.txt
+ --buildtype debug
+ -Db_pch=true
+ -Dcassert=true
run: *compiler_warnings_cmd
###
@@ -1241,12 +1246,8 @@ jobs:
# XXX: Only do this if there have been changes in doc/ since last build
- name: Build documentation
if: ${{ !cancelled() }}
- env:
- CONF: --cache gcc.cache
- CC: ccache gcc
- CXX: ccache g++
- DEFAULT_BUILD: -C doc
- run: *compiler_warnings_cmd
+ run:
+ ninja -C build-meson docs
###
# Verify headerscheck / cpluspluscheck succeed
@@ -1261,7 +1262,6 @@ jobs:
echo "::group::configure"
./configure \
${{env.LINUX_CONFIGURE_FEATURES}} \
- --cache gcc.cache \
--quiet \
CC="ccache gcc" CXX="ccache g++" CLANG="ccache clang"
echo "::endgroup::"
diff --git a/src/tools/ci/meson-cross-w64-ucrt.txt b/src/tools/ci/meson-cross-w64-ucrt.txt
new file mode 100644
index 00000000000..b6144979416
--- /dev/null
+++ b/src/tools/ci/meson-cross-w64-ucrt.txt
@@ -0,0 +1,21 @@
+[constants]
+triple = 'x86_64-w64-mingw32ucrt'
+prefix = '/usr/bin' / triple + '-'
+
+[binaries]
+c = ['ccache', prefix + 'gcc']
+cpp = ['ccache', prefix + 'g++']
+ar = prefix + 'ar'
+strip = prefix + 'strip'
+pkg-config = prefix + 'pkg-config'
+windres = prefix + 'windres'
+
+[properties]
+# Directory that contains 'bin', 'lib', etc
+root = '/usr/x86_64-w64-mingw32ucrt'
+
+[host_machine]
+system = 'windows'
+cpu_family = 'x86_64'
+cpu = 'x86_64'
+endian = 'little'
--
2.54.0.450.g9ac3f193c0
--mr2uqtieh2e2xvha
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
filename="v13a-0003-ci-Make-msys2-install-smaller.patch"
view thread (94+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
In-Reply-To: <no-message-id-818469@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox