Hi,

Thank you for working on this!

On Fri, 28 Nov 2025 at 17:03, Miłosz Bieniek <[email protected]> wrote:
>
> pt., 28 lis 2025 o 12:53 Peter Eisentraut <[email protected]> napisał(a):
> >
> > On 27.11.25 10:28, Miłosz Bieniek wrote:
> > > While reviewing a patch I noticed that we have a `make -s headerscheck`
> > > but there is no equivalent in meson.
> > > I prepared a small patch that adds `headerscheck` and `cpluspluscheck`
> > > targets.
> >
> > This would be good to have, but I don't think your patch works.  It
> > seems you need to add the srcdir and builddir command-line arguments to
> > the invocations.
> >
>
> I think you are right. I added srcdir and builddir arguments.

The headerscheck script pulls some information from Makefile.global
after the configure [1] but meson does not generate a full version of
Makefile.global [2], so it does not have the required information to
check perl and python headers. If you run 'meson compile
headerscheck', you get errors like:

In file included from
/home/nbyavuz/Desktop/projects/postgres/src/pl/plperl/plperl.h:25,
                 from /tmp/headerscheck.YxsZhn/test.c:2:
/home/nbyavuz/Desktop/projects/postgres/src/pl/plperl/plperl_system.h:85:10:
fatal error: EXTERN.h: No such file or directory
   85 | #include <EXTERN.h>
      |          ^~~~~~~~~~
compilation terminated.

In file included from
/home/nbyavuz/Desktop/projects/postgres/src/pl/plpython/plpython.h:39,
                 from
/home/nbyavuz/Desktop/projects/postgres/src/pl/plpython/plpy_plpymodule.h:8,
                 from /tmp/headerscheck.YxsZhn/test.c:2:
/home/nbyavuz/Desktop/projects/postgres/src/pl/plpython/plpython_system.h:50:10:
fatal error: Python.h: No such file or directory
   50 | #include <Python.h>
      |          ^~~~~~~~~~
compilation terminated.

-----

[1.1] src/tools/pginclude/headerscheck
# Needs to be run after configuring and creating all generated headers.
# It's advisable to configure --with-perl --with-python, else you're
# likely to get errors from associated headers.

[1.2] src/tools/pginclude/headerscheck
# Pull some info from configure's results.
MGLOB="$builddir/src/Makefile.global"
CPPFLAGS=`sed -n 's/^CPPFLAGS[     ]*=[     ]*//p' "$MGLOB"`
CFLAGS=`sed -n 's/^CFLAGS[     ]*=[     ]*//p' "$MGLOB"`
ICU_CFLAGS=`sed -n 's/^ICU_CFLAGS[     ]*=[     ]*//p' "$MGLOB"`
CC=`sed -n 's/^CC[     ]*=[     ]*//p' "$MGLOB"`
CXX=`sed -n 's/^CXX[     ]*=[     ]*//p' "$MGLOB"`
PG_SYSROOT=`sed -n 's/^PG_SYSROOT[     ]*=[     ]*//p' "$MGLOB"`
perl_includespec=`sed -n 's/^perl_includespec[     ]*=[     ]*//p' "$MGLOB"`
python_includespec=`sed -n 's/^python_includespec[     ]*=[     ]*//p' "$MGLOB"`

[2] src/meson.build
makefile_global = configure_file(
  input: 'Makefile.global.in',
  output: 'Makefile.global',
  configuration: pgxs_cdata,
  install: true,
  install_dir: dir_pgxs / 'src',
)
configure_files += makefile_global

-- 
Regards,
Nazir Bilal Yavuz
Microsoft


Reply via email to