agora inbox for pgsql-hackers@postgresql.orghelp / color / mirror / Atom feed
[PATCH v52 07/10] Check for transaction block early in ExecRepack 249+ messages / 2 participants [nested] [flat]
* [PATCH v52 07/10] Check for transaction block early in ExecRepack @ 2026-04-03 15:23 Srinath Reddy Sadipiralla <srinath2133@gmail.com> 0 siblings, 0 replies; 249+ messages in thread From: Srinath Reddy Sadipiralla @ 2026-04-03 15:23 UTC (permalink / raw) Currently, executing REPACK (CONCURRENTLY) without a table name inside a transaction block throws the error "REPACK CONCURRENTLY requires explicit table name" instead of the expected transaction block error. This occurs because ExecRepack() validates the parsed options and missing relation before verifying the transaction state. This behavior is inconsistent with other utility commands like VACUUM ,REINDEX, etc; which invoke PreventInTransactionBlock() at the very start of their execution to properly reject execution inside user transactions before validating targets. Add PreventInTransactionBlock to the top of ExecRepack() to enforce the transaction block restriction early. This prevents the user from fixing a missing table error only to immediately hit a transaction block error, and also ensures consistency with rest of the commands. Author: Srinath Reddy Sadipiralla <srinath2133@gmail.com> --- src/backend/commands/repack.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/backend/commands/repack.c b/src/backend/commands/repack.c index d6e446d582d..d4c1f0e7652 100644 --- a/src/backend/commands/repack.c +++ b/src/backend/commands/repack.c @@ -292,6 +292,18 @@ ExecRepack(ParseState *pstate, RepackStmt *stmt, bool isTopLevel) MyProc->statusFlags |= PROC_IN_CONCURRENT_REPACK; ProcGlobal->statusFlags[MyProc->pgxactoff] = MyProc->statusFlags; LWLockRelease(ProcArrayLock); + + /* + * Make sure we're not in a transaction block. + * + * The reason is that repack_setup_logical_decoding() could wait + * indefinitely for our XID to complete. (The deadlock detector would + * not recognize it because we'd be waiting for ourselves, i.e. no + * real lock conflict.) It would be possible to run in a transaction + * block if we had no XID, but this restriction is simpler for users + * to understand and we don't lose anything. + */ + PreventInTransactionBlock(isTopLevel, "REPACK (CONCURRENTLY)"); } /* @@ -523,21 +535,7 @@ cluster_rel(RepackCommand cmd, Relation OldHeap, Oid indexOid, * replica index OID. */ if (concurrent) - { - /* - * Make sure we're not in a transaction block. - * - * The reason is that repack_setup_logical_decoding() could wait - * indefinitely for our XID to complete. (The deadlock detector would - * not recognize it because we'd be waiting for ourselves, i.e. no - * real lock conflict.) It would be possible to run in a transaction - * block if we had no XID, but this restriction is simpler for users - * to understand and we don't lose anything. - */ - PreventInTransactionBlock(isTopLevel, "REPACK (CONCURRENTLY)"); - check_repack_concurrently_requirements(OldHeap, &ident_idx); - } /* Check for user-requested abort. */ CHECK_FOR_INTERRUPTS(); -- 2.47.3 --gp2pyozrd5pweboh Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename="v52-0008-Introduce-an-option-to-make-logical-replication-.patch" ^ permalink raw reply [nested|flat] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ 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 <andres@anarazel.de> 0 siblings, 0 replies; 249+ 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] 249+ messages in thread
end of thread, other threads:[~2026-06-09 14:18 UTC | newest] Thread overview: 249+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2026-04-03 15:23 [PATCH v52 07/10] Check for transaction block early in ExecRepack Srinath Reddy Sadipiralla <srinath2133@gmail.com> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de> 2026-06-09 14:18 [PATCH v13a 2/9] ci: Use meson for most of CompilerWarnings, it's a lot faster Andres Freund <andres@anarazel.de>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox