agora inbox for pgsql-hackers@postgresql.orghelp / color / mirror / Atom feed
[PATCH v1 1/1] remove pg_spin_delay() 249+ messages / 2 participants [nested] [flat]
* [PATCH v1 1/1] remove pg_spin_delay() @ 2026-05-05 17:37 Nathan Bossart <nathan@postgresql.org> 0 siblings, 0 replies; 249+ messages in thread From: Nathan Bossart @ 2026-05-05 17:37 UTC (permalink / raw) --- src/include/port/atomics.h | 5 --- src/include/port/atomics/arch-x86.h | 54 ----------------------------- src/include/port/atomics/generic.h | 6 ---- 3 files changed, 65 deletions(-) diff --git a/src/include/port/atomics.h b/src/include/port/atomics.h index d8b1d20fe60..c50d95d29e2 100644 --- a/src/include/port/atomics.h +++ b/src/include/port/atomics.h @@ -154,11 +154,6 @@ #define pg_read_barrier() pg_read_barrier_impl() #define pg_write_barrier() pg_write_barrier_impl() -/* - * Spinloop delay - Allow CPU to relax in busy loops - */ -#define pg_spin_delay() pg_spin_delay_impl() - /* * pg_atomic_init_flag - initialize atomic flag. * diff --git a/src/include/port/atomics/arch-x86.h b/src/include/port/atomics/arch-x86.h index bd6f4f56ca2..b317cf7a188 100644 --- a/src/include/port/atomics/arch-x86.h +++ b/src/include/port/atomics/arch-x86.h @@ -76,60 +76,6 @@ typedef struct pg_atomic_uint64 } pg_atomic_uint64; #endif /* __x86_64__ */ -#endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */ - -#if !defined(PG_HAVE_SPIN_DELAY) -/* - * This sequence is equivalent to the PAUSE instruction ("rep" is - * ignored by old IA32 processors if the following instruction is - * not a string operation); the IA-32 Architecture Software - * Developer's Manual, Vol. 3, Section 7.7.2 describes why using - * PAUSE in the inner loop of a spin lock is necessary for good - * performance: - * - * The PAUSE instruction improves the performance of IA-32 - * processors supporting Hyper-Threading Technology when - * executing spin-wait loops and other routines where one - * thread is accessing a shared lock or semaphore in a tight - * polling loop. When executing a spin-wait loop, the - * processor can suffer a severe performance penalty when - * exiting the loop because it detects a possible memory order - * violation and flushes the core processor's pipeline. The - * PAUSE instruction provides a hint to the processor that the - * code sequence is a spin-wait loop. The processor uses this - * hint to avoid the memory order violation and prevent the - * pipeline flush. In addition, the PAUSE instruction - * de-pipelines the spin-wait loop to prevent it from - * consuming execution resources excessively. - */ -#if defined(__GNUC__) || defined(__INTEL_COMPILER) -#define PG_HAVE_SPIN_DELAY -static inline void -pg_spin_delay_impl(void) -{ - __asm__ __volatile__(" rep; nop \n"); -} -#elif defined(_MSC_VER) && defined(__x86_64__) -#define PG_HAVE_SPIN_DELAY -static __forceinline void -pg_spin_delay_impl(void) -{ - _mm_pause(); -} -#elif defined(_MSC_VER) -#define PG_HAVE_SPIN_DELAY -static __forceinline void -pg_spin_delay_impl(void) -{ - /* See comment for gcc code. Same code, MASM syntax */ - __asm rep nop; -} -#endif -#endif /* !defined(PG_HAVE_SPIN_DELAY) */ - - -#if defined(__GNUC__) || defined(__INTEL_COMPILER) - #define PG_HAVE_ATOMIC_TEST_SET_FLAG static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) diff --git a/src/include/port/atomics/generic.h b/src/include/port/atomics/generic.h index fd64b6cbd86..daa772e9a6d 100644 --- a/src/include/port/atomics/generic.h +++ b/src/include/port/atomics/generic.h @@ -28,12 +28,6 @@ # define pg_write_barrier_impl pg_memory_barrier_impl #endif -#ifndef PG_HAVE_SPIN_DELAY -#define PG_HAVE_SPIN_DELAY -#define pg_spin_delay_impl() ((void)0) -#endif - - /* provide fallback */ #if !defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) && defined(PG_HAVE_ATOMIC_U32_SUPPORT) #define PG_HAVE_ATOMIC_FLAG_SUPPORT -- 2.50.1 (Apple Git-155) --9wPlq30DMLxbhZ5y-- ^ 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-05-05 17:37 [PATCH v1 1/1] remove pg_spin_delay() Nathan Bossart <nathan@postgresql.org> 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