meson: Add _static and _shared suffixes to the library names

From: Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Cc: Andres Freund <andres(at)anarazel(dot)de>
Subject: meson: Add _static and _shared suffixes to the library names
Date: 2025-08-12 15:45:44
Message-ID: CAN55FZ1RuBhJmPWs3Oi=9UoezDfrtO-VaU67db5+0_uy19uF+A@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

Windows CI images are updated ~15 hours ago [1] and Windows CI task
started to fail with [2]:

```
FAILED: [code=2] src/interfaces/libpq/libpq.a.p/meson_pch-c.obj
src/interfaces/libpq/libpq.a.p/postgres_fe_pch.pch

"cl" "-Isrc/interfaces/libpq\libpq.a.p" "-Isrc/interfaces/libpq"
"-I..\src\interfaces\libpq" "-Isrc\port" "-I..\src\port"
"-Isrc\include" "-I..\src\include" "-Ic:\openssl\1.1\include"
"-I..\src\include\port\win32" "-I..\src\include\port\win32_msvc"
"-IC:/cirrus/src/include/pch" "/nologo" "/showIncludes" "/utf-8" "/W2"
"/Od" "/Zi" "/Zc:preprocessor" "/DWIN32" "/DWINDOWS" "/D__WINDOWS__"
"/D__WIN32__" "/D_CRT_SECURE_NO_DEPRECATE"
"/D_CRT_NONSTDC_NO_DEPRECATE" "/wd4018" "/wd4244" "/wd4273" "/wd4101"
"/wd4102" "/wd4090" "/wd4267" "/Ycpostgres_fe_pch.h"
"/Fpsrc/interfaces/libpq\libpq.a.p\postgres_fe_pch.pch"
"/Fosrc/interfaces/libpq\libpq.a.p\meson_pch-c.obj" "/MDd" "/nologo"
"/showIncludes" "/utf-8" "/W2" "/Od" "/Zi" "/Zc:preprocessor"
"/DWIN32" "/DWINDOWS" "/D__WINDOWS__" "/D__WIN32__"
"/D_CRT_SECURE_NO_DEPRECATE" "/D_CRT_NONSTDC_NO_DEPRECATE" "/wd4018"
"/wd4244" "/wd4273" "/wd4101" "/wd4102" "/wd4090" "/wd4267"
"-DSO_MAJOR_VERSION=5" "/FS"
"/FdC:\cirrus\build\src/interfaces/libpq\libpq.pdb" "/c"
src/interfaces/libpq/libpq.a.p/meson_pch-c.c

src/interfaces/libpq/libpq.a.p/meson_pch-c.c: fatal error C1052:
program database file,
'C:\cirrus\build\src\interfaces\libpq\libpq.pdb', was generated by the
linker with /DEBUG:fastlink; compiler cannot update such PDB files;
please delete it or use /Fd to specify a different PDB filename
```

After talking with Andres, we realized that the problem is caused by
static and shared libraries having the same name, so they overwrite
each other's debug file. This was not seen before, our guess is that
the ninja version is upgraded on the Windows CI image from 1.11.1 to
1.13.0 and new ninja optimized the build. Older ninja was building two
libraries concurrently and that hid the problem but the new ninja
optimized/changed the build, so these two libraries weren't built
concurrently and caused the failure.

The solution is changing the libraries' names [3]. Changing
conflicting libraries' names is actually enough but I wanted to add
_static and _shared suffixes to all of the libraries' names as I think
this is more future proof.

Any feedback would be appreciated.

Note: Since there is no new commit after the Windows CI image update
[1], this problem is not visible on the upstream Postgres for now. The
first commit will trigger this problem.

[1] https://cirrus-ci.com/task/5683237017616384
[2] https://cirrus-ci.com/task/5906793164963840
[3] https://cirrus-ci.com/task/5204554066690048

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachment Content-Type Size
v1-0001-meson-Add-_static-and-_shared-suffixes-to-the-lib.patch text/x-patch 13.5 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jacob Champion 2025-08-12 15:46:00 Re: Update LDAP Protocol in fe-connect.c to v3
Previous Message Jeff Davis 2025-08-12 15:42:48 Re: Adding locks statistics