Re: [RFC] building postgres with meson

From: Andres Freund <andres(at)anarazel(dot)de>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: [RFC] building postgres with meson
Date: 2021-10-13 17:26:54
Message-ID: 20211013172654.mjtiwpezmczk6ppy@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2021-10-13 08:55:38 -0400, Andrew Dunstan wrote:
> On 10/12/21 9:03 PM, Andres Freund wrote:
> > I managed to get this working. At first it failed because I don't have
> > pexports - it's not available inside msys as far as I could tell. And seems to
> > be unmaintained. But replacing pexports with gendef fixed that.
> >
> > There's this comment in src/pl/plperl/GNUmakefile
> >
> > # Perl on win32 ships with import libraries only for Microsoft Visual C++,
> > # which are not compatible with mingw gcc. Therefore we need to build a
> > # new import library to link with.
> >
> > but I seem to be able to link fine without going through that song-and-dance?
> >
>
>
> It looks like you're not building a native postgres, but rather one
> targeted at msys. To build one that's native (i.e. runs without any
> presence of msys) you need to do these things before building:
>
> MSYSTEM=MINGW64
> MSYSTEM_CHOST=x86_64-w64-mingw32
> PATH="/mingw64/bin:$PATH"

I had a config equivalent to this (slight difference in PATH, but the same gcc
being picked), and I just verified that it still works if I set up PATH like
that. I get a working plperl out of it. Without msys on PATH or such.

where perl526.dll
C:\perl\strawberry-5.26.3.1-64bit\perl\bin\perl526.dll

dumpbin /imports 'C:/Users/anfreund/src/pg-meson/build-mingw/tmp_install/lib/plperl.dll'|grep dll

Dump of file C:\Users\anfreund\src\pg-meson\build-mingw\tmp_install\lib\plperl.dll
KERNEL32.dll
msvcrt.dll
perl526.dll

dumpbin /imports .\build-mingw\tmp_install\bin\postgres.exe|grep dll
ADVAPI32.dll
KERNEL32.dll
msvcrt.dll
Secur32.dll
WLDAP32.dll
WS2_32.dll

do $$elog(NOTICE, "blob");$$ language plperl;
NOTICE: blob
DO

To me this looks like it's a plperl built without the import file recreation,
without being msys dependent?

> pexports will be in the resulting path, and the build will use the
> native compiler.

I don't see pexports anywhere in the msys installation. I can see it available
on sourceforge, and I see a few others asking where to get it from in the
context of msys, and being pointed to manually downloading it.

Seems like we should consider using gendef instead of pexports, given it's
available in msys?

$ pacman -Fy
$ pacman -F gendef.exe
...
mingw64/mingw-w64-x86_64-tools-git 9.0.0.6316.acdc7adc9-1 (mingw-w64-x86_64-toolchain) [installed]
mingw64/bin/gendef.exe
..
$ pacman -F pexports.exe
$ pacman -Fx pexports
<bunch of packages containing smtpexports.h>

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2021-10-13 17:27:58 Re: prevent immature WAL streaming
Previous Message Bossart, Nathan 2021-10-13 17:20:56 Re: BUG #17220: ALTER INDEX ALTER COLUMN SET (..) with an optionless opclass makes index and table unusable