Re: [RFC] building postgres with meson - v13

From: Andres Freund <andres(at)anarazel(dot)de>
To: Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, Peter Geoghegan <pg(at)bowt(dot)ie>, "wangw(dot)fnst(at)fujitsu(dot)com" <wangw(dot)fnst(at)fujitsu(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Nathan Bossart <nathandbossart(at)gmail(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Justin Pryzby <pryzby(at)telsasoft(dot)com>, samay sharma <smilingsamay(at)gmail(dot)com>, Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: [RFC] building postgres with meson - v13
Date: 2022-09-27 01:19:51
Message-ID: 20220927011951.j3h4o7n6bhf7dwau@awork3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

> I'll include an updated pgxs-compat patch in the next post of the series (in a
> few hours).

Attaches is version 17. Other changes:

- Added a new patch to fix the display of user provided CFLAGS in the meson
summary and to add them to pg_config output, addressing the report by Wang Wei
at [1]. Planning to apply this soon. We can fine tune this later, the
current situation is confusing.

- Added a new patch to set rpath to $libdir. I'd hoped we'd quickly go for
relative rpaths (so the install is relocatable, making it trivial to use
tmp_install), but I now think that might take a bit longer. I'm planning to
push this soon, as multiple people have been hit by this.

- Added a patch to separately define static / shared libraries for the ecpg
runtime libraries. This is a prerequisite patch for adding windows resource
files, since the resource files should only be defined for shared libraries.

- The patch adding windows resource files is, I think, now complete, including
adding resource files to the ecpg libs.

- A few more improvements for the PGXS compatibility. The pieces depending on
the changes discussed below are left in a separate patch for now, as I'm not
sure they'll survive as-is... There's a few more things needed, but I think
it's getting closer.

- Made some of the ecpg libraries use precompiled headers as well (gaining
maybe 500ms in a debug build)

One interesting question for this patch is where to add a note about when it
is sensible for a target to use a precompiled header, and when not. At the
moment meson generates a separate precompiled header "object" for each
target (as the flags can differ), so for a full build precompiled headers
can only be a win when a target has > 1 source file.

- Tweaked the patch adding tests against running instances a bit, mainly by
using a different suite name for the 'running' tests (otherwise meson test
--suite something does bad things) and removing the 'tmp-install', 'running'
suites. Haven't yet renamed 'running', as had been suggested by Peter
Geoghegan, his suggestion seemed a bit long.

- Reordered the series so that the patches that might take a while (including
being moved into a separate CF entry & thread) are last. I left the CI
patches at the start, because they make it easier to test parts of the
patchseries (e.g. [2] just checks up to 0004)

On 2022-09-26 12:44:35 -0700, Andres Freund wrote:
> Looking through a few of the not-nicely-replaced things, I think we can
> simplify at least some away:
>
> - RANLIB: most platforms use AROPT = crs, making ranlib unnecessary. {free,
> net, open}bsd don't currently, but all support it from what I know

Done in the attached 0009.

> - with_gnu_ld: this is only used on solaris, to set export_dynamic = -Wl,-E
> when using a gnu ld. How about moving this to configure instead, and just
> checking if -Wl,-E links?

Done in 0011. Together with 0010, which gets rid of the need for $(LD) on aix
by using $(CC) -r instead, this allows us to get rid of libtool.m4

Right now 0011 adds a PGAC_PROG_CC_LD_EXPORT_DYNAMIC() which tests for
-Wl,-E. It's used on solaris only. Based on its return value
SOLARIS_EXPORT_DYNAMIC is set in Makefile.global.

I'm not convinced by the precise structure I came up with in 0011, I'd welcome
feedback. But the idea as a whole seems promising to me.

0008 unifies CFLAGS_SSE42 and CFLAGS_ARMV8_CRC32C. We really don't need two
different variables for this - on the makefile level we really don't need to
care.

I'm wondering about moving the bulk of the pgxs compatibility stuff from
src/meson.build to src/makefiles/meson.build. Will look a bit uglier ('../'
references), but src/meson.build feels a bit too prominent somehow.

Greetings,

Andres Freund

[1] https://postgr.es/m/OS3PR01MB62751847BC9CD2DB7B29AC129E529%40OS3PR01MB6275.jpnprd01.prod.outlook.com
[2] https://cirrus-ci.com/build/6353192312111104

Attachment Content-Type Size
v17-0001-meson-ci-wip-move-compilerwarnings-task-to-meson.patch text/x-diff 5.5 KB
v17-0002-meson-ci-dontmerge-Add-additional-CI-coverage.patch text/x-diff 17.2 KB
v17-0003-meson-Include-CFLAGS-c_args-in-summary-and-pg_co.patch text/x-diff 2.4 KB
v17-0004-meson-Set-up-absolute-rpaths-to-libdir.patch text/x-diff 1.7 KB
v17-0005-meson-ecpg-Split-definition-of-static-and-shared.patch text/x-diff 7.7 KB
v17-0006-meson-Add-windows-resource-files.patch text/x-diff 91.0 KB
v17-0007-meson-Add-docs-for-building-with-meson.patch text/x-diff 77.6 KB
v17-0008-autoconf-Unify-CFLAGS_SSE42-and-CFLAGS_ARMV8_CRC.patch text/x-diff 9.2 KB
v17-0009-autoconf-Rely-on-ar-supporting-index-creation.patch text/x-diff 9.3 KB
v17-0010-aix-Build-SUBSYS.o-using-CC-r-instead-of-LD-r.patch text/x-diff 2.9 KB
v17-0011-solaris-Check-for-Wl-E-directly-instead-of-check.patch text/x-diff 13.8 KB
v17-0012-meson-Add-PGXS-compatibility.patch text/x-diff 7.5 KB
v17-0013-fixup-meson-Add-PGXS-compatibility.patch text/x-diff 2.2 KB
v17-0014-meson-Add-xmllint-xsltproc-wrapper-script-to-han.patch text/x-diff 7.8 KB
v17-0015-windows-Set-UMDF_USING_NTSTATUS-globally-include.patch text/x-diff 3.7 KB
v17-0016-windows-adjust-FD_SETSIZE-via-commandline-define.patch text/x-diff 5.5 KB
v17-0017-meson-Add-support-for-building-with-precompiled-.patch text/x-diff 16.5 KB
v17-0018-tests-Rename-conflicting-role-names.patch text/x-diff 13.3 KB
v17-0019-meson-Add-installcheck-equivalent.patch text/x-diff 12.3 KB
v17-0020-meson-Add-postgresql-extension.pc-for-building-e.patch text/x-diff 3.7 KB
v17-0021-meson-Add-LLVM-bitcode-emission.patch text/x-diff 5.2 KB
v17-0022-meson-Add-support-for-relative-rpaths-fixing-tes.patch text/x-diff 8.4 KB
v17-0023-meson-wip-headerchecks-cpluspluschecks.patch text/x-diff 3.0 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2022-09-27 01:25:07 Re: kerberos/001_auth test fails on arm CPU darwin
Previous Message Michael Paquier 2022-09-27 01:12:59 Re: GUC tables - use designated initializers