Skip to content

meson: test extensions build by pkg-conf#72

Open
nbyavuz wants to merge 14 commits intoanarazel:mesonfrom
nbyavuz:meson-pkg-conf-extensions
Open

meson: test extensions build by pkg-conf#72
nbyavuz wants to merge 14 commits intoanarazel:mesonfrom
nbyavuz:meson-pkg-conf-extensions

Conversation

@nbyavuz
Copy link
Collaborator

@nbyavuz nbyavuz commented Sep 16, 2022

Fixes #58.

@anarazel anarazel force-pushed the meson branch 30 times, most recently from 44458f8 to 5e20245 Compare September 26, 2022 00:30
@nbyavuz nbyavuz force-pushed the meson-pkg-conf-extensions branch from 84381e3 to 177fded Compare October 12, 2022 12:16
@nbyavuz
Copy link
Collaborator Author

nbyavuz commented Oct 12, 2022

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

@nbyavuz nbyavuz requested a review from anarazel October 12, 2022 15:29
@anarazel
Copy link
Owner

However, now debian-meson 32bit fails with:

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.

@nbyavuz nbyavuz force-pushed the meson-pkg-conf-extensions branch 3 times, most recently from 42bb8ec to f6d1d46 Compare October 14, 2022 06:35
@anarazel anarazel force-pushed the meson branch 2 times, most recently from 8e6e441 to 9ab1497 Compare October 15, 2022 21:01
@nbyavuz nbyavuz force-pushed the meson-pkg-conf-extensions branch from f6d1d46 to 8b33d4a Compare October 17, 2022 07:47
@nbyavuz nbyavuz force-pushed the meson-pkg-conf-extensions branch from 8b33d4a to dbb5e89 Compare October 21, 2022 11:59
build
EOF
build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS}'
install_script: su postgres -c 'ninja -C build install'
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, but the installation in tmp_install/ will have postgres.h - isn't this just a question of referencing that?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

CI Run
Commit
Edit .pc part

@anarazel
Copy link
Owner

anarazel commented Jun 3, 2023

Could you rebase this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants