agora inbox for [email protected]
help / color / mirror / Atom feed[PATCH v2 1/1] pgindent: Fix spacing after != when member name matches typedef.
144+ messages / 2 participants
[nested] [flat]
* [PATCH v2 1/1] pgindent: Fix spacing after != when member name matches typedef.
@ 2026-05-06 16:02 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Nathan Bossart @ 2026-05-06 16:02 UTC (permalink / raw)
When a struct member name matches a registered typedef, pgindent
removes the space after "!=" (and some other operators), like so:
entry->dsh.dsa_handle !=DSA_HANDLE_INVALID
The problem is that the related code in lexi.c sets last_u_d to
true before jumping to found_typename, causing the next operator to
be classified as unary and suppressing the following space. This
is correct for type names, but not for struct members. For
example, "Datum *x" needs "*" to be unary to suppress the space
before "x". To fix, only set last_u_d before jumping to
found_typename if the typedef name doesn't appear after "." or
"->".
Note that this does not bump INDENT_VERSION. We'll do that just
once after some other changes to pg_bsd_indent are committed.
Reviewed-by: Chao Li <[email protected]>
Reviewed-by: Tom Lane <[email protected]>
Discussion: https://postgr.es/m/aS9hkwnkWf3dZIA_%40nathan
---
src/tools/pg_bsd_indent/lexi.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/tools/pg_bsd_indent/lexi.c b/src/tools/pg_bsd_indent/lexi.c
index 943bf7ce6b0..e846188d6f4 100644
--- a/src/tools/pg_bsd_indent/lexi.c
+++ b/src/tools/pg_bsd_indent/lexi.c
@@ -363,7 +363,8 @@ lexi(struct parser_state *state)
bsearch(s_token, typenames, typename_top + 1,
sizeof(typenames[0]), strcmp_type))) {
state->keyword = 4; /* a type name */
- state->last_u_d = true;
+ if (state->last_token != period && state->last_token != unary_op)
+ state->last_u_d = true;
goto found_typename;
}
} else { /* we have a keyword */
--
2.50.1 (Apple Git-155)
--1t/m2eK+hqhKaVEb--
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster
@ 2026-06-09 14:18 Andres Freund <[email protected]>
0 siblings, 0 replies; 144+ messages in thread
From: Andres Freund @ 2026-06-09 14:18 UTC (permalink / raw)
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"
^ permalink raw reply [nested|flat] 144+ messages in thread
end of thread, other threads:[~2026-06-09 14:18 UTC | newest]
Thread overview: 144+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2026-05-06 16:02 [PATCH v2 1/1] pgindent: Fix spacing after != when member name matches typedef. Nathan Bossart <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox