Hi, On Thu, 3 Jul 2025 at 17:07, Daniel Gustafsson <dan...@yesql.se> wrote: > > > On 3 Jul 2025, at 15:50, Nazir Bilal Yavuz <byavu...@gmail.com> wrote: > > On Thu, 3 Jul 2025 at 16:21, Daniel Gustafsson <dan...@yesql.se> wrote: > > >> + # Like 'MESON_COMMON_FEATURES' but not shared with 'Windows - VS' task > >> too > >> + MESON_NON_VS_FEATURES: >- > >> > >> I'm not a fan of this name, it feel a bit unintuitive to describe what it > >> isn't > >> instead of what it is. How about MESON_LINUX_UNIX_FEATURES or something > >> along > >> those lines? > > > > I agree that MESON_NON_VS_FEATURES is not intuitive but can MinGW be > > considered as LINUX or UNIX? > > That is an excellent question, according to our fine documentation it is a > "Unix-like build environment". > > An alternative approach would be to instead of having opt-in's for non-Windows > have opt-outs for Windows, ie a MESON_WINDOWS_EXCLUDES which does =disabled on > the specific features we dont want on Windows?
I think this would make things complicated. Instead, we can set Windows VS tasks' features in its task, then we can have a one common feature variable at the top level and have a comment about this variable not being used in the Windows VS task. Basically the same with your approach but instead of using a common feature variable and disabling features from it, we enable them again in the Windows VS task. I used this approach in the v3-0002. > > >> The MinGW build no longer disables nls, or am I missing something? > > > > Auto features are already disabled. So, there is no need to disable > > nls manually. By saying that, it would be better to remove this > > comment now. > > Aha, that explains it. Maybe reword the comment to retain the knowledge for > the future without making it sound like something is missing from the command. > How about something like: > > - # disable -Dnls as the number of files it creates cause a noticable > slowdown > + # -Dnls need to be disabled as the number of files it creates cause a > + # noticable slowdown Yes, I think this is better. Done. -- Regards, Nazir Bilal Yavuz Microsoft
From a9158cfcb9c98c4193dea85894e91101ed5c0a0b Mon Sep 17 00:00:00 2001 From: Nazir Bilal Yavuz <byavu...@gmail.com> Date: Wed, 2 Jul 2025 18:07:51 +0300 Subject: [PATCH v3 1/3] ci: Remove PG_TEST_EXTRA from NetBSD and OpenBSD PG_TEST_EXTRA environment variable is already set at the top level. NetBSD and OpenBSD tasks will use this top level PG_TEST_EXTRA as default. Discussion: https://www.postgresql.org/message-id/flat/CAN55FZ0aO8d_jkyRijcGP8qO%3DXH09qG%3Dpw0ZZDvB4LMzuXYU1w%40mail.gmail.com --- .cirrus.tasks.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index 92057006c93..a7f75c5b59f 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -318,7 +318,6 @@ task: --pkg-config-path ${PKGCONFIG_PATH} \ -Dcassert=true -Dinjection_points=true \ -Dssl=openssl ${UUID} ${TCL} \ - -DPG_TEST_EXTRA="$PG_TEST_EXTRA" \ build EOF -- 2.49.0
From 5241a9412b430c7bd4dc89664685f038a69104ed Mon Sep 17 00:00:00 2001 From: Nazir Bilal Yavuz <byavu...@gmail.com> Date: Wed, 25 Jun 2025 11:14:26 +0300 Subject: [PATCH v3 2/3] ci: meson: Explicitly enable meson features By default, Meson silently disables features it cannot detect, which can lead to incomplete builds. Explicitly enabling these features causes the build to fail if they are missing, making such issues visible early. Please note that, libcurl is disabled for OpenBSD until the fix in the https://www.postgresql.org/message-id/CAOYmi%2BkdR218ke2zu74oTJvzYJcqV1MN5%3DmGAPqZQuc79HMSVA%40mail.gmail.com is committed. Suggested-by: Jacob Champion <jacob.champ...@enterprisedb.com> Reviewed-by: Peter Eisentraut <pe...@eisentraut.org> Discussion: https://www.postgresql.org/message-id/flat/CAN55FZ0aO8d_jkyRijcGP8qO%3DXH09qG%3Dpw0ZZDvB4LMzuXYU1w%40mail.gmail.com --- .cirrus.tasks.yml | 111 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 93 insertions(+), 18 deletions(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index a7f75c5b59f..e8f166dba2c 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -31,6 +31,25 @@ env: TEMP_CONFIG: ${CIRRUS_WORKING_DIR}/src/tools/ci/pg_ci_base.conf PG_TEST_EXTRA: kerberos ldap ssl libpq_encryption load_balance oauth + # Meson feature flags, shared between all meson tasks except the + # 'SanityCheck' and 'Windows - VS' tasks + MESON_COMMON_FEATURES: >- + -Dauto_features=disabled + -Dldap=enabled + -Dssl=openssl + -Dtap_tests=enabled + -Dplperl=enabled + -Dplpython=enabled + -Ddocs=enabled + -Dicu=enabled + -Dlibxml=enabled + -Dlibxslt=enabled + -Dlz4=enabled + -Dpltcl=enabled + -Dreadline=enabled + -Dzlib=enabled + -Dzstd=enabled + # What files to preserve in case tests fail on_failure_ac: &on_failure_ac @@ -164,6 +183,15 @@ task: -c debug_parallel_query=regress PG_TEST_PG_UPGRADE_MODE: --link + MESON_FEATURES: >- + -Ddtrace=enabled + -Dgssapi=enabled + -Dlibcurl=enabled + -Dnls=enabled + -Dpam=enabled + -Dtcl_version=tcl86 + -Duuid=bsd + <<: *freebsd_task_template depends_on: SanityCheck @@ -198,8 +226,8 @@ task: meson setup \ --buildtype=debug \ -Dcassert=true -Dinjection_points=true \ - -Duuid=bsd -Dtcl_version=tcl86 -Ddtrace=auto \ -Dextra_lib_dirs=/usr/local/lib -Dextra_include_dirs=/usr/local/include/ \ + ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ build EOF build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET}' @@ -269,6 +297,12 @@ task: LC_ALL: "C" # -Duuid is not set for the NetBSD, see the comment below, above # configure_script, for more information. + MESON_FEATURES: >- + -Dgssapi=enabled + -Dlibcurl=enabled + -Dnls=enabled + -Dpam=enabled + setup_additional_packages_script: | #pkgin -y install ... <<: *netbsd_task_template @@ -279,8 +313,16 @@ task: OS_NAME: openbsd IMAGE_FAMILY: pg-ci-openbsd-postgres PKGCONFIG_PATH: '/usr/lib/pkgconfig:/usr/local/lib/pkgconfig' - UUID: -Duuid=e2fs - TCL: -Dtcl_version=tcl86 + + # libcurl is disabled until the fix in the + # https://www.postgresql.org/message-id/CAOYmi%2BkdR218ke2zu74oTJvzYJcqV1MN5%3DmGAPqZQuc79HMSVA%40mail.gmail.com + # is committed. + MESON_FEATURES: >- + -Dbsd_auth=enabled + -Dlibcurl=disabled + -Dtcl_version=tcl86 + -Duuid=e2fs + setup_additional_packages_script: | #pkg_add -I ... # Always core dump to ${CORE_DUMP_DIR} @@ -317,7 +359,7 @@ task: --buildtype=debugoptimized \ --pkg-config-path ${PKGCONFIG_PATH} \ -Dcassert=true -Dinjection_points=true \ - -Dssl=openssl ${UUID} ${TCL} \ + ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ build EOF @@ -364,10 +406,6 @@ LINUX_CONFIGURE_FEATURES: &LINUX_CONFIGURE_FEATURES >- --with-uuid=ossp --with-zstd -LINUX_MESON_FEATURES: &LINUX_MESON_FEATURES >- - -Dllvm=enabled - -Duuid=e2fs - # Check SPECIAL in the matrix: below task: @@ -408,7 +446,6 @@ task: LLVM_CONFIG: llvm-config-16 LINUX_CONFIGURE_FEATURES: *LINUX_CONFIGURE_FEATURES - LINUX_MESON_FEATURES: *LINUX_MESON_FEATURES <<: *linux_task_template @@ -502,12 +539,37 @@ task: PG_TEST_INITDB_EXTRA_OPTS: >- -c io_method=io_uring + LINUX_64_MESON_FEATURES: >- + -Ddocs_pdf=enabled + -Dgssapi=enabled + -Dlibcurl=enabled + -Dlibnuma=enabled + -Dliburing=enabled + -Dllvm=enabled + -Dnls=enabled + -Dpam=enabled + -Dplperl=enabled + -Dselinux=enabled + -Dsystemd=enabled + -Duuid=e2fs + + LINUX_32_MESON_FEATURES: >- + -Ddocs_pdf=enabled + -Dgssapi=enabled + -Dlibcurl=enabled + -Dliburing=enabled + -Dnls=enabled + -Dpam=enabled + -Dselinux=enabled + -Dsystemd=enabled + -Duuid=e2fs + configure_script: | su postgres <<-EOF meson setup \ --buildtype=debug \ -Dcassert=true -Dinjection_points=true \ - ${LINUX_MESON_FEATURES} \ + ${MESON_COMMON_FEATURES} ${LINUX_64_MESON_FEATURES} \ build EOF @@ -519,11 +581,9 @@ task: meson setup \ --buildtype=debug \ -Dcassert=true -Dinjection_points=true \ - ${LINUX_MESON_FEATURES} \ - -Dllvm=disabled \ --pkg-config-path /usr/lib/i386-linux-gnu/pkgconfig/ \ -DPERL=perl5.36-i386-linux-gnu \ - -Dlibnuma=disabled \ + ${MESON_COMMON_FEATURES} ${LINUX_32_MESON_FEATURES} \ build-32 EOF @@ -587,6 +647,14 @@ task: CCACHE_DIR: ${HOME}/ccache MACPORTS_CACHE: ${HOME}/macports-cache + MESON_FEATURES: >- + -Dbonjour=enabled + -Ddtrace=enabled + -Dgssapi=enabled + -Dlibcurl=enabled + -Dnls=enabled + -Duuid=e2fs + MACOS_PACKAGE_LIST: >- ccache icu @@ -660,7 +728,7 @@ task: -Dextra_include_dirs=/opt/local/include \ -Dextra_lib_dirs=/opt/local/lib \ -Dcassert=true -Dinjection_points=true \ - -Duuid=e2fs -Ddtrace=auto \ + ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ build build_script: ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET} @@ -715,6 +783,14 @@ task: # 0x8001 is SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX CIRRUS_WINDOWS_ERROR_MODE: 0x8001 + MESON_FEATURES: + -Dauto_features=disabled + -Dldap=enabled + -Dssl=openssl + -Dtap_tests=enabled + -Dplperl=enabled + -Dplpython=enabled + <<: *windows_task_template depends_on: SanityCheck @@ -732,7 +808,7 @@ task: # Use /DEBUG:FASTLINK to avoid high memory usage during linking configure_script: | vcvarsall x64 - meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% build + meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% %MESON_FEATURES% build build_script: | vcvarsall x64 @@ -790,9 +866,9 @@ task: %BASH% -c "where perl" %BASH% -c "perl --version" - # disable -Dnls as the number of files it creates cause a noticable slowdown + # -Dnls need to be disabled as the number of files it creates cause a noticable slowdown configure_script: | - %BASH% -c "meson setup -Ddebug=true -Doptimization=g -Dcassert=true -Dinjection_points=true -Db_pch=true -Dnls=disabled -DTAR=%TAR% build" + %BASH% -c "meson setup -Ddebug=true -Doptimization=g -Dcassert=true -Dinjection_points=true -Db_pch=true %MESON_COMMON_FEATURES% -DTAR=%TAR% build" build_script: | %BASH% -c "ninja -C build ${MBUILD_TARGET}" @@ -830,7 +906,6 @@ task: CCACHE_DIR: "/tmp/ccache_dir" LINUX_CONFIGURE_FEATURES: *LINUX_CONFIGURE_FEATURES - LINUX_MESON_FEATURES: *LINUX_MESON_FEATURES # GCC emits a warning for llvm-14, so switch to a newer one. LLVM_CONFIG: llvm-config-16 -- 2.49.0
From 3cf48a338cfdf8888828f63fbfd27c0f44b35b71 Mon Sep 17 00:00:00 2001 From: Nazir Bilal Yavuz <byavu...@gmail.com> Date: Wed, 2 Jul 2025 17:30:59 +0300 Subject: [PATCH v3 3/3] ci: meson: Store common Postgres configuration options in one variable This helps to keep things aligned. Suggested-by: Peter Eisentraut <pe...@eisentraut.org> Discussion: https://www.postgresql.org/message-id/flat/CAN55FZ0aO8d_jkyRijcGP8qO%3DXH09qG%3Dpw0ZZDvB4LMzuXYU1w%40mail.gmail.com --- .cirrus.tasks.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index e8f166dba2c..e40ccd00e29 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -31,6 +31,10 @@ env: TEMP_CONFIG: ${CIRRUS_WORKING_DIR}/src/tools/ci/pg_ci_base.conf PG_TEST_EXTRA: kerberos ldap ssl libpq_encryption load_balance oauth + # Postgres config args for the meson builds, shared between all meson tasks + # except the 'SanityCheck' task + MESON_COMMON_PG_CONFIG_ARGS: -Dcassert=true -Dinjection_points=true + # Meson feature flags, shared between all meson tasks except the # 'SanityCheck' and 'Windows - VS' tasks MESON_COMMON_FEATURES: >- @@ -224,8 +228,8 @@ task: configure_script: | su postgres <<-EOF meson setup \ + ${MESON_COMMON_PG_CONFIG_ARGS} \ --buildtype=debug \ - -Dcassert=true -Dinjection_points=true \ -Dextra_lib_dirs=/usr/local/lib -Dextra_include_dirs=/usr/local/include/ \ ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ build @@ -356,9 +360,9 @@ task: configure_script: | su postgres <<-EOF meson setup \ + ${MESON_COMMON_PG_CONFIG_ARGS} \ --buildtype=debugoptimized \ --pkg-config-path ${PKGCONFIG_PATH} \ - -Dcassert=true -Dinjection_points=true \ ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ build EOF @@ -567,8 +571,8 @@ task: configure_script: | su postgres <<-EOF meson setup \ + ${MESON_COMMON_PG_CONFIG_ARGS} \ --buildtype=debug \ - -Dcassert=true -Dinjection_points=true \ ${MESON_COMMON_FEATURES} ${LINUX_64_MESON_FEATURES} \ build EOF @@ -579,8 +583,8 @@ task: su postgres <<-EOF export CC='ccache gcc -m32' meson setup \ + ${MESON_COMMON_PG_CONFIG_ARGS} \ --buildtype=debug \ - -Dcassert=true -Dinjection_points=true \ --pkg-config-path /usr/lib/i386-linux-gnu/pkgconfig/ \ -DPERL=perl5.36-i386-linux-gnu \ ${MESON_COMMON_FEATURES} ${LINUX_32_MESON_FEATURES} \ @@ -724,10 +728,10 @@ task: configure_script: | export PKG_CONFIG_PATH="/opt/local/lib/pkgconfig/" meson setup \ + ${MESON_COMMON_PG_CONFIG_ARGS} \ --buildtype=debug \ -Dextra_include_dirs=/opt/local/include \ -Dextra_lib_dirs=/opt/local/lib \ - -Dcassert=true -Dinjection_points=true \ ${MESON_COMMON_FEATURES} ${MESON_FEATURES} \ build @@ -808,7 +812,7 @@ task: # Use /DEBUG:FASTLINK to avoid high memory usage during linking configure_script: | vcvarsall x64 - meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% %MESON_FEATURES% build + meson setup --backend ninja %MESON_COMMON_PG_CONFIG_ARGS% --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% %MESON_FEATURES% build build_script: | vcvarsall x64 @@ -868,7 +872,7 @@ task: # -Dnls need to be disabled as the number of files it creates cause a noticable slowdown configure_script: | - %BASH% -c "meson setup -Ddebug=true -Doptimization=g -Dcassert=true -Dinjection_points=true -Db_pch=true %MESON_COMMON_FEATURES% -DTAR=%TAR% build" + %BASH% -c "meson setup %MESON_COMMON_PG_CONFIG_ARGS% -Ddebug=true -Doptimization=g -Db_pch=true %MESON_COMMON_FEATURES% -DTAR=%TAR% build" build_script: | %BASH% -c "ninja -C build ${MBUILD_TARGET}" -- 2.49.0