meson: test extensions build by pkg-conf#72
Conversation
44458f8 to
5e20245
Compare
84381e3 to
177fded
Compare
|
Updated based on comments. However, now debian-meson 32bit fails with: [12:25:26.296] 117/245 postgresql / pkg_conf_extensions FAIL 1.97s (exit status 2)
[12:25:26.296]
[12:25:26.296] --- command ---
[12:25:26.296] 12:24:17 /usr/bin/python3 /tmp/cirrus-ci-build/src/tools/ci/test_pkg_conf --rootdir /tmp/cirrus-ci-build --pkgconf_installdir /tmp/meson-install-32/lib/x86_64-linux-gnu/pkgconfig --builddir /tmp/cirrus-ci-build/build-32 --pkg_conf_path /usr/lib/i386-linux-gnu/pkgconfig --meson /usr/bin/meson
[12:25:26.296] --- stdout ---
[12:25:26.296]
[12:25:26.296] ############################################################
[12:25:26.296] Testing postgresql-extension-warnings
[12:25:26.296] [1/2] ccache gcc -Iadminpack.so.p -I. -I.. -I/tmp/meson-install-32/include -I/tmp/meson-install-32/include/postgresql/server -I/usr/include/libxml2 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -g -Og -ggdb -fPIC -Wmissing-prototypes -Wpointer-arith -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -Wdeclaration-after-statement -Wno-format-truncation -Wno-stringop-truncation -pthread -fvisibility=hidden -D_GNU_SOURCE -fno-strict-aliasing -fwrapv -fexcess-precision=standard -isystem /usr/include/mit-krb5 -MD -MQ adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o -MF adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o.d -o adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o -c /tmp/cirrus-ci-build/contrib/adminpack/adminpack.c
[12:25:26.296] [2/2] gcc -o adminpack.so adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o -Wl,--as-needed -Wl,--allow-shlib-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,adminpack.so -Og -ggdb -pthread /usr/lib/i386-linux-gnu/libldap.so /usr/lib/i386-linux-gnu/libpam.so -lm -ldl -lrt -fvisibility=hidden /usr/lib/i386-linux-gnu/mit-krb5/libgssapi_krb5.so /usr/lib/i386-linux-gnu/libicui18n.so /usr/lib/i386-linux-gnu/libicuuc.so /usr/lib/i386-linux-gnu/libicudata.so /usr/lib/i386-linux-gnu/libxml2.so /usr/lib/i386-linux-gnu/liblz4.so /usr/lib/i386-linux-gnu/libssl.so /usr/lib/i386-linux-gnu/libcrypto.so /usr/lib/i386-linux-gnu/libsystemd.so /usr/lib/i386-linux-gnu/libz.so /usr/lib/i386-linux-gnu/libzstd.so -Wl,--end-group
[12:25:26.296] FAILED: adminpack.so
[12:25:26.296] gcc -o adminpack.so adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o -Wl,--as-needed -Wl,--allow-shlib-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,adminpack.so -Og -ggdb -pthread /usr/lib/i386-linux-gnu/libldap.so /usr/lib/i386-linux-gnu/libpam.so -lm -ldl -lrt -fvisibility=hidden /usr/lib/i386-linux-gnu/mit-krb5/libgssapi_krb5.so /usr/lib/i386-linux-gnu/libicui18n.so /usr/lib/i386-linux-gnu/libicuuc.so /usr/lib/i386-linux-gnu/libicudata.so /usr/lib/i386-linux-gnu/libxml2.so /usr/lib/i386-linux-gnu/liblz4.so /usr/lib/i386-linux-gnu/libssl.so /usr/lib/i386-linux-gnu/libcrypto.so /usr/lib/i386-linux-gnu/libsystemd.so /usr/lib/i386-linux-gnu/libz.so /usr/lib/i386-linux-gnu/libzstd.so -Wl,--end-group
[12:25:26.296] /usr/bin/ld: /usr/lib/i386-linux-gnu/libldap.so: error adding symbols: file in wrong format
[12:25:26.296] collect2: error: ld returned 1 exit status
[12:25:26.296] ninja: build stopped: subcommand failed.
[12:25:26.296] ############################################################
[12:25:26.296] Testing postgresql-extension-warnings-uninstalled
[12:25:26.296] [1/2] ccache gcc -Iadminpack.so.p -I. -I.. -I/tmp/cirrus-ci-build/build-32/src/include -I/tmp/cirrus-ci-build/src/include -I/usr/include/libxml2 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -g -Og -ggdb -fPIC -Wmissing-prototypes -Wpointer-arith -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -Wdeclaration-after-statement -Wno-format-truncation -Wno-stringop-truncation -pthread -fvisibility=hidden -D_GNU_SOURCE -fno-strict-aliasing -fwrapv -fexcess-precision=standard -isystem /usr/include/mit-krb5 -MD -MQ adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o -MF adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o.d -o adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o -c /tmp/cirrus-ci-build/contrib/adminpack/adminpack.c
[12:25:26.296] [2/2] gcc -o adminpack.so adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o -Wl,--as-needed -Wl,--allow-shlib-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,adminpack.so -Og -ggdb -pthread /usr/lib/i386-linux-gnu/libldap.so /usr/lib/i386-linux-gnu/libpam.so -lm -ldl -lrt -fvisibility=hidden /usr/lib/i386-linux-gnu/mit-krb5/libgssapi_krb5.so /usr/lib/i386-linux-gnu/libicui18n.so /usr/lib/i386-linux-gnu/libicuuc.so /usr/lib/i386-linux-gnu/libicudata.so /usr/lib/i386-linux-gnu/libxml2.so /usr/lib/i386-linux-gnu/liblz4.so /usr/lib/i386-linux-gnu/libssl.so /usr/lib/i386-linux-gnu/libcrypto.so /usr/lib/i386-linux-gnu/libsystemd.so /usr/lib/i386-linux-gnu/libz.so /usr/lib/i386-linux-gnu/libzstd.so -Wl,--end-group
[12:25:26.296] FAILED: adminpack.so
[12:25:26.296] gcc -o adminpack.so adminpack.so.p/_tmp_cirrus-ci-build_contrib_adminpack_adminpack.c.o -Wl,--as-needed -Wl,--allow-shlib-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,adminpack.so -Og -ggdb -pthread /usr/lib/i386-linux-gnu/libldap.so /usr/lib/i386-linux-gnu/libpam.so -lm -ldl -lrt -fvisibility=hidden /usr/lib/i386-linux-gnu/mit-krb5/libgssapi_krb5.so /usr/lib/i386-linux-gnu/libicui18n.so /usr/lib/i386-linux-gnu/libicuuc.so /usr/lib/i386-linux-gnu/libicudata.so /usr/lib/i386-linux-gnu/libxml2.so /usr/lib/i386-linux-gnu/liblz4.so /usr/lib/i386-linux-gnu/libssl.so /usr/lib/i386-linux-gnu/libcrypto.so /usr/lib/i386-linux-gnu/libsystemd.so /usr/lib/i386-linux-gnu/libz.so /usr/lib/i386-linux-gnu/libzstd.so -Wl,--end-group
[12:25:26.334] /usr/bin/ld: /usr/lib/i386-linux-gnu/libldap.so: error adding symbols: file in wrong format |
I think that's because it's missing the relevant flags to use -m32 (passed via CC in configure_32_script). I think that'd be fixed if you forwarded c_args from the "surrounding" meson. |
42bb8ec to
f6d1d46
Compare
8e6e441 to
9ab1497
Compare
f6d1d46 to
8b33d4a
Compare
8b33d4a to
dbb5e89
Compare
| build | ||
| EOF | ||
| build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS}' | ||
| install_script: su postgres -c 'ninja -C build install' |
There was a problem hiding this comment.
We can't require 'install' to have been done to run tests, they need to work without that. Why isn't the tmp_install installation sufficient?
There was a problem hiding this comment.
Because adminpack couldn't find 'postgres.h' so pseudo installed test fails. The cause seems pkg-conf has installation paths for finding required files, not 'tmp_install' path.
For example:
############################################################
Testing postgresql-extension-warnings
The Meson build system
Version: 0.63.3
Source dir: /home/nbyavuz/Desktop/projects/meson-postgres/build/contrib/adminpack_tmp
Build dir: /home/nbyavuz/Desktop/projects/meson-postgres/build/contrib/adminpack_tmp/build
Build type: native build
Project name: adminpack
Project version: undefined
C compiler for the host machine: ccache cc (gcc 12.2.1 "cc (SUSE Linux) 12.2.1 20220830 [revision e927d1cf141f221c5a32574bde0913307e140984]")
C linker for the host machine: cc ld.bfd 2.39.0.20220810-1
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.8.0)
Run-time dependency postgresql-extension-warnings found: YES 16devel
Build targets in project: 1
Found ninja-1.11.1 at /usr/bin/ninja
ninja: Entering directory `build'
[1/2] ccache cc -Iadminpack.so.p -I. -I.. -I/tmp/meson-install/include -I/tmp/meson-install/include/postgresql/server -I/usr/include/libxml2 -I/usr/include/security -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O0 -g -fPIC -Wmissing-prototypes -Wpointer-arith -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -Wdeclaration-after-statement -Wno-format-truncation -Wno-stringop-truncation -pthread -fvisibility=hidden -D_GNU_SOURCE -fno-strict-aliasing -fwrapv -fexcess-precision=standard -DOPENSSL_LOAD_CONF -MD -MQ adminpack.so.p/_home_nbyavuz_Desktop_projects_meson-postgres_contrib_adminpack_adminpack.c.o -MF adminpack.so.p/_home_nbyavuz_Desktop_projects_meson-postgres_contrib_adminpack_adminpack.c.o.d -o adminpack.so.p/_home_nbyavuz_Desktop_projects_meson-postgres_contrib_adminpack_adminpack.c.o -c /home/nbyavuz/Desktop/projects/meson-postgres/contrib/adminpack/adminpack.c
FAILED: adminpack.so.p/_home_nbyavuz_Desktop_projects_meson-postgres_contrib_adminpack_adminpack.c.o
ccache cc -Iadminpack.so.p -I. -I.. -I/tmp/meson-install/include -I/tmp/meson-install/include/postgresql/server -I/usr/include/libxml2 -I/usr/include/security -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O0 -g -fPIC -Wmissing-prototypes -Wpointer-arith -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -Wdeclaration-after-statement -Wno-format-truncation -Wno-stringop-truncation -pthread -fvisibility=hidden -D_GNU_SOURCE -fno-strict-aliasing -fwrapv -fexcess-precision=standard -DOPENSSL_LOAD_CONF -MD -MQ adminpack.so.p/_home_nbyavuz_Desktop_projects_meson-postgres_contrib_adminpack_adminpack.c.o -MF adminpack.so.p/_home_nbyavuz_Desktop_projects_meson-postgres_contrib_adminpack_adminpack.c.o.d -o adminpack.so.p/_home_nbyavuz_Desktop_projects_meson-postgres_contrib_adminpack_adminpack.c.o -c /home/nbyavuz/Desktop/projects/meson-postgres/contrib/adminpack/adminpack.c
/home/nbyavuz/Desktop/projects/meson-postgres/contrib/adminpack/adminpack.c:15:10: fatal error: postgres.h: No such file or directory
15 | #include "postgres.h"
| ^~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
There was a problem hiding this comment.
Sure, but the installation in tmp_install/ will have postgres.h - isn't this just a question of referencing that?
There was a problem hiding this comment.
Yes. It is set in postgresql-extension-warnings.pc file:
prefix=/usr/local/pgsql
includedir=${prefix}/include
build_inc0=""
src_inc0=""
pkglibdir=${prefix}/lib/x86_64-linux-gnu
dir_mod=${pkglibdir}
dir_data=${prefix}/share/extension
bindir=${prefix}/bin
Name: postgresql-extension-warnings
Description: PostgreSQL Extension Support - Compiler Warnings
URL: https://www.postgresql.org/
Version: 16beta1
Requires: postgresql-extension
Cflags: -I${includedir} -Wmissing-prototypes -Wpointer-arith -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -Wdeclaration-after-statement -Wno-format-truncation -Wno-stringop-truncation
As you said earlier, we can set -Dpkgconfig.relocatable=true but this option is introduced since meson 0.63.0.
There was a problem hiding this comment.
I don't know if you would prefer it, but I was trying a couple of ways and I solved that using a bit of an hacky way :( I edited prefix part in the .pc file while pkg_config_tests were running, so that it will reference where postgres files are.
Test passed on all tasks except Windows and Centos 8. I didn't debug Centos 8 yet. It couldn't find Pkg-config binary on Windows, so I disabled this test on Windows for now.
|
Could you rebase this? |
This should work with several other buildsystems. TODO: Docs and example
This needs a bit more love before being ready...
This is part of the series to be able to test meson on more platforms than normally part of CI. Author: Andres Freund <andres@anarazel.de> Author: Nazir Bilal Yavuz <byavuz81@gmail.com> Author: Justin Pryzby <pryzby@telsasoft.com>
Fixes #58.