Re: shared_libperl, shared_libpython

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Peter Eisentraut <peter_e(at)gmx(dot)net>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: shared_libperl, shared_libpython
Date: 2015-04-28 23:14:04
Message-ID: 5540143C.9060305@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers


On 04/28/2015 04:31 PM, Peter Eisentraut wrote:
> On 4/28/15 12:05 AM, Tom Lane wrote:
>> Yeah. Even more specifically, olinguito does have --with-python in its
>> configure flags, but then the plpython Makefile skips the build because
>> libpython isn't available as a shared library. But the contrib test is
>> (I assume, haven't looked) conditional only on the configure flag.
>>
>> I'm not real sure now why we felt that was a good approach. The general
>> project policy is that if you ask for a feature in the configure flags,
>> we'll build it or die trying; how come this specific Python issue gets
>> special treatment contrary to that policy?
>>
>> So I'd vote for changing that to put the shared-library test in configure,
>> or at least make it a build failure later on, not "silently don't build
>> what was asked for". That would mean olinguito's configure flags would
>> have to be adjusted.
>>
>> Plan B would require propagating the shared-libpython test into the
>> contrib makefiles, which seems pretty unpalatable even if you're willing
>> to defend the status quo otherwise.
> I had tried plan B prime, moving the shared_libpython etc. detection
> into Makefile.global. But that doesn't work because contrib/pgxs
> makefiles require setting all variables *before* including the global
> makefiles. So you can't decide whether you want to build something
> before you have told it everything you want to build.
>
> The reason for the current setup is actually that when plperl and later
> plpython was added, we still had Perl and Python client modules in our
> tree (Pg.pm and pygresql), and configure --with-perl and --with-python
> were meant to activate their build primarily. Also, in those days,
> having a shared libperl or libpython was rare. But we didn't want to
> fail the frontend interface builds because of that. So we arrived at
> the current workaround.
>
> My preference would be to rip all that out and let the compiler or
> linker decide when it doesn't want to link something.
>
> The alternative would be creating a configure check that mirrors the
> current logic. Arguably, however, the current logic is quite unworthy
> of a configure check, because it's just a collection of
> on-this-platform-do-that, instead of a real test. Then again, a real
> test would require building and loading a shared library in configure,
> and we are not set up for that.
>
> Preferences?
>
>

In general I prefer things not being available to be tested at configure
time. After all, we check for libxml2, for example. Certainly silent
failure is a bad thing.

cheers

andrew

In response to

Browse pgsql-committers by date

  From Date Subject
Next Message Bruce Momjian 2015-04-29 00:12:17 pgsql: pg_basebackup: canonicalize old and new tablespace paths
Previous Message Bruce Momjian 2015-04-28 21:35:20 pgsql: Warn about tablespace creation in PGDATA

Browse pgsql-hackers by date

  From Date Subject
Next Message Fabrízio de Royes Mello 2015-04-28 23:28:28 Re: Can pg_dump make use of CURRENT/SESSION_USER
Previous Message Tomas Vondra 2015-04-28 21:39:45 Re: FIX : teach expression walker about RestrictInfo