Re: [RFC] building postgres with meson

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: [RFC] building postgres with meson
Дата
Msg-id 20211013172654.mjtiwpezmczk6ppy@alap3.anarazel.de
обсуждение исходный текст
Ответ на Re: [RFC] building postgres with meson  (Andrew Dunstan <andrew@dunslane.net>)
Ответы Re: [RFC] building postgres with meson  (Andrew Dunstan <andrew@dunslane.net>)
Список 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



В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Bossart, Nathan"
Дата:
Сообщение: Re: BUG #17220: ALTER INDEX ALTER COLUMN SET (..) with an optionless opclass makes index and table unusable
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: prevent immature WAL streaming