Meson far from ready on Windows - Mailing list pgsql-hackers
From | Dave Page |
---|---|
Subject | Meson far from ready on Windows |
Date | |
Msg-id | CA+OCxowQhMHFNRLTsXNuJpC96KRtSPHYKJuOS=b-Zrwmy-P4-g@mail.gmail.com Whole thread Raw |
Responses |
Re: Meson far from ready on Windows
|
List | pgsql-hackers |
Hi
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
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 -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 -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 by date: