Meson far from ready on Windows

Поиск
Список
Период
Сортировка
От Dave Page
Тема Meson far from ready on Windows
Дата
Msg-id CA+OCxowQhMHFNRLTsXNuJpC96KRtSPHYKJuOS=b-Zrwmy-P4-g@mail.gmail.com
обсуждение исходный текст
Ответы Re: Meson far from ready on Windows
Список pgsql-hackers
Hi

Further to my previous report [1] about zlib detection not working with Meson on Windows, I found it's similarly or entirely broken for the majority of other dependencies, none of which are tested on the buildfarm as far as I can see.

For convenience, I've put together a number of Github actions [2] that show how to build the various dependencies on Windows, in the most standard/recommended way I can find for each. Another action combines these into a single downloadable archive that people can test with, and another one uses that archive to build PostgreSQL 12 through 16, all successfully.

You can see build logs, and download the various builds/artefacts from the Github Workflow pages. 

My next task was to extend that to support PostgreSQL 17 and beyond, which is where I started to run into problems. I've attempted builds using Meson with each of the dependencies defined in the old-style config.pl, both with and without modifying the INCLUDE/LIBS envvars to include the directories for the dependencies (as was found to work in the previous discussion re zlib):

Will not successfully configure at all:

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dgssapi=enabled build-gssapi

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dicu=enabled build-icu

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dlibxml=enabled build-libxml

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dlz4=enabled build-lz4

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dnls=enabled build-nls

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Duuid=ossp build-uuid

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dzstd=enabled build-zstd

Configured with modified LIBS/INCLUDE:

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dlibxslt=enabled build-libxslt

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dssl=openssl build-openssl

meson setup --auto-features=disabled -Dextra_include_dirs=C:\build64\include -Dextra_lib_dirs=C:\build64\lib;C:\build64\lib64 --wipe -Dzlib=enabled build-zlib

I think it's important to note that Meson largely seems to want to use pkgconfig and cmake to find dependencies. pkgconfig isn't really a thing on Windows (it is available, but isn't commonly used), and even cmake would typically rely on finding things in either known installation directories or through lib/include vars. There really aren't standard directories like /usr/lib or /usr/include as we find on unixes, or pkgconfig files for everything.

For the EDB installers, the team has hand-crafted pkgconfig files for everything, which is clearly not a proper solution.

I can provide logs and run tests if anyone wants me to do so. Testing so far has been with the Ninja backend, in a VS2022 x86_64 native environment.

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Chapman Flack
Дата:
Сообщение: Re: jsonpath: Missing regex_like && starts with Errors?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: CompilerWarnings task does not catch C++ warnings