Thread: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Marco Atzeri
Date:
On 7/2/2015 5:16 PM, Dave Page wrote:
> The PostgreSQL Global Development Group announces that the alpha
> release of PostgreSQL 9.5, the latest version of the world's leading
> open source database, is available today.  This release contains
> previews of all of the features which will be available in the final
> release of version 9.5, although some details will change before then.
> Please download, test, and report what you find.
>
> Help Test for Bugs
> ------------------



building on cygwin and

$ perl --version

This is perl 5, version 22, subversion 0 (v5.22.0) built for 
cygwin-thread-multi-64int

build fail here, anyone seeing the same on other platforms ?

make -C hstore_plperl all
make[1]: Entering directory 
'/cygdrive/e/cyg_pub/devel/postgresql/prova/postgres        ql-9.5alpha1-1.i686/build/contrib/hstore_plperl'
gcc -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -We                           ndif-labels 
-Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -f                        wrapv
-fexcess-precision=standard-ggdb -O2 
 
-pipe -Wimplicit-function-declaratio                           n 
-I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5a
lpha1/src/pl/plperl
 
-I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr                c/postgresql-9.5alpha1/contrib/hstore -I. 
-I/pub/devel/postgresql/prova/postgres 
ql-9.5alpha1-1.i686/src/postgresql-9.5alpha1/contrib/hstore_plperl 
-I../../src/i                           nclude 
-I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-
9.5alpha1/src/include
 
-I/usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE  -c             -o hstore_plperl.o 
/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/p
ostgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c
In file included from 
/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr 
c/postgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c:6:0:
/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1
/contrib/hstore/hstore.h:79:0:warning: 
 
"HS_KEY" redefined #define HS_KEY(arr_,str_,i_) ((str_) + HSE_OFF((arr_)[2*(i_)])) ^
In file included from 
/usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE/perl.h:              3730:0,                 from 
/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
c/postgresql-9.5alpha1/src/pl/plperl/plperl.h:48,                from 
 
/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr 
c/postgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c:4:
/usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE/util.h:221:0: note: 
this is t                           he location of the previous definition #  define HS_KEY(setxsubfn, popmark, apiver,
xsver)\ ^
 
gcc -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -We                           ndif-labels 
-Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -f                        wrapv
-fexcess-precision=standard-ggdb -O2 
 
-pipe -Wimplicit-function-declaratio                           n 
-shared -o hstore_plperl.dll -Wl,--out-implib=libhstore_plperl.a 
hstore_plpe                           rl.o  -L../../src/port 
-L../../src/common -Wl,-no-undefined -Wl,--allow-multiple             -definition -Wl,--enable-auto-import
-L/usr/local/lib
 
-Wl,--as-needed   -L../..                           /src/backend 
-lpostgres -lpgcommon -lpgport -lintl -lssl -lcrypto -lz -lreadline                        -lcrypt -lldap
hstore_plperl.o: In function `hstore_to_plperl':
/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1
/contrib/hstore_plperl/hstore_plperl.c:16:
 
undefined reference to `hstoreUpgrade                           '



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Michael Paquier
Date:
On Fri, Jul 3, 2015 at 2:47 PM, Marco Atzeri <marco.atzeri@gmail.com> wrote:
> On 7/2/2015 5:16 PM, Dave Page wrote:
>>
>> The PostgreSQL Global Development Group announces that the alpha
>> release of PostgreSQL 9.5, the latest version of the world's leading
>> open source database, is available today.  This release contains
>> previews of all of the features which will be available in the final
>> release of version 9.5, although some details will change before then.
>> Please download, test, and report what you find.
>>
>> Help Test for Bugs
>> ------------------
>
>
>
>
> building on cygwin and
>
> $ perl --version
>
> This is perl 5, version 22, subversion 0 (v5.22.0) built for
> cygwin-thread-multi-64int
>
> build fail here, anyone seeing the same on other platforms ?
>
> make -C hstore_plperl all
> make[1]: Entering directory
> '/cygdrive/e/cyg_pub/devel/postgresql/prova/postgres
> ql-9.5alpha1-1.i686/build/contrib/hstore_plperl'
> gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement
> -We                           ndif-labels -Wmissing-format-attribute
> -Wformat-security -fno-strict-aliasing -f                        wrapv
> -fexcess-precision=standard -ggdb -O2 -pipe -Wimplicit-function-declaratio
> n
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5a
> lpha1/src/pl/plperl
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/contrib/hstore -I.
> -I/pub/devel/postgresql/prova/postgres
> ql-9.5alpha1-1.i686/src/postgresql-9.5alpha1/contrib/hstore_plperl
> -I../../src/i                           nclude
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-
> 9.5alpha1/src/include -I/usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE
> -c             -o hstore_plperl.o
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/p
> ostgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c
> In file included from
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c:6:0:
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1
> /contrib/hstore/hstore.h:79:0: warning: "HS_KEY" redefined
>  #define HS_KEY(arr_,str_,i_) ((str_) + HSE_OFF((arr_)[2*(i_)]))
>  ^
> In file included from
> /usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE/perl.h:
> 3730:0,
>                  from
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/src/pl/plperl/plperl.h:48,
>                  from
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c:4:
> /usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE/util.h:221:0: note: this
> is t                           he location of the previous definition
>  #  define HS_KEY(setxsubfn, popmark, apiver, xsver) \
>  ^
> gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement
> -We                           ndif-labels -Wmissing-format-attribute
> -Wformat-security -fno-strict-aliasing -f                        wrapv
> -fexcess-precision=standard -ggdb -O2 -pipe -Wimplicit-function-declaratio
> n -shared -o hstore_plperl.dll -Wl,--out-implib=libhstore_plperl.a
> hstore_plpe                           rl.o  -L../../src/port
> -L../../src/common -Wl,-no-undefined -Wl,--allow-multiple
> -definition -Wl,--enable-auto-import  -L/usr/local/lib -Wl,--as-needed
> -L../..                           /src/backend -lpostgres -lpgcommon
> -lpgport -lintl -lssl -lcrypto -lz -lreadline                        -lcrypt
> -lldap
> hstore_plperl.o: In function `hstore_to_plperl':
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1
> /contrib/hstore_plperl/hstore_plperl.c:16: undefined reference to
> `hstoreUpgrade                           '

Hm. dangomushi is using perl 5.22 and the build does not fail:



-- 
Michael



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Michael Paquier
Date:
On Fri, Jul 3, 2015 at 2:47 PM, Marco Atzeri <marco.atzeri@gmail.com> wrote:
> On 7/2/2015 5:16 PM, Dave Page wrote:
>>
>> The PostgreSQL Global Development Group announces that the alpha
>> release of PostgreSQL 9.5, the latest version of the world's leading
>> open source database, is available today.  This release contains
>> previews of all of the features which will be available in the final
>> release of version 9.5, although some details will change before then.
>> Please download, test, and report what you find.
>>
>> Help Test for Bugs
>> ------------------
>
>
>
>
> building on cygwin and
>
> $ perl --version
>
> This is perl 5, version 22, subversion 0 (v5.22.0) built for
> cygwin-thread-multi-64int
>
> build fail here, anyone seeing the same on other platforms ?
>
> make -C hstore_plperl all
> make[1]: Entering directory
> '/cygdrive/e/cyg_pub/devel/postgresql/prova/postgres
> ql-9.5alpha1-1.i686/build/contrib/hstore_plperl'
> gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement
> -We                           ndif-labels -Wmissing-format-attribute
> -Wformat-security -fno-strict-aliasing -f                        wrapv
> -fexcess-precision=standard -ggdb -O2 -pipe -Wimplicit-function-declaratio
> n
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5a
> lpha1/src/pl/plperl
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/contrib/hstore -I.
> -I/pub/devel/postgresql/prova/postgres
> ql-9.5alpha1-1.i686/src/postgresql-9.5alpha1/contrib/hstore_plperl
> -I../../src/i                           nclude
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-
> 9.5alpha1/src/include -I/usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE
> -c             -o hstore_plperl.o
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/p
> ostgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c
> In file included from
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c:6:0:
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1
> /contrib/hstore/hstore.h:79:0: warning: "HS_KEY" redefined
>  #define HS_KEY(arr_,str_,i_) ((str_) + HSE_OFF((arr_)[2*(i_)]))
>  ^
> In file included from
> /usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE/perl.h:
> 3730:0,
>                  from
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/src/pl/plperl/plperl.h:48,
>                  from
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c:4:
> /usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE/util.h:221:0: note: this
> is t                           he location of the previous definition
>  #  define HS_KEY(setxsubfn, popmark, apiver, xsver) \
>  ^
> gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement
> -We                           ndif-labels -Wmissing-format-attribute
> -Wformat-security -fno-strict-aliasing -f                        wrapv
> -fexcess-precision=standard -ggdb -O2 -pipe -Wimplicit-function-declaratio
> n -shared -o hstore_plperl.dll -Wl,--out-implib=libhstore_plperl.a
> hstore_plpe                           rl.o  -L../../src/port
> -L../../src/common -Wl,-no-undefined -Wl,--allow-multiple
> -definition -Wl,--enable-auto-import  -L/usr/local/lib -Wl,--as-needed
> -L../..                           /src/backend -lpostgres -lpgcommon
> -lpgport -lintl -lssl -lcrypto -lz -lreadline                        -lcrypt
> -lldap
> hstore_plperl.o: In function `hstore_to_plperl':
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1
> /contrib/hstore_plperl/hstore_plperl.c:16: undefined reference to
> `hstoreUpgrade                           '

So... dangomushi is able to build it at least. Here are the logs to
the last build for example:
http://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=dangomushi&dt=2015-07-02%2019%3A19%3A39&stg=make-contrib
What is the name of the library generated in hstore? Perhaps there is
a mismatch here.
-- 
Michael



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Marco Atzeri
Date:
On 7/3/2015 8:19 AM, Michael Paquier wrote:
> On Fri, Jul 3, 2015 at 2:47 PM, Marco Atzeri <marco.atzeri@gmail.com> wrote:
>> On 7/2/2015 5:16 PM, Dave Page wrote:
>>>
>> -lldap
>> hstore_plperl.o: In function `hstore_to_plperl':
>> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1
>> /contrib/hstore_plperl/hstore_plperl.c:16: undefined reference to
>> `hstoreUpgrade                           '
>
> So... dangomushi is able to build it at least. Here are the logs to
> the last build for example:
>
http://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=dangomushi&dt=2015-07-02%2019%3A19%3A39&stg=make-contrib
> What is the name of the library generated in hstore? Perhaps there is
> a mismatch here.

OK thanks for the feedback.
It may be a cygwin perl specific issue.
I will investigate

Regards
Marco




Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/03/2015 01:47 AM, Marco Atzeri wrote:
> On 7/2/2015 5:16 PM, Dave Page wrote:
>> The PostgreSQL Global Development Group announces that the alpha
>> release of PostgreSQL 9.5, the latest version of the world's leading
>> open source database, is available today.  This release contains
>> previews of all of the features which will be available in the final
>> release of version 9.5, although some details will change before then.
>> Please download, test, and report what you find.
>>
>> Help Test for Bugs
>> ------------------
>
>
>
> building on cygwin and
>
> $ perl --version
>
> This is perl 5, version 22, subversion 0 (v5.22.0) built for 
> cygwin-thread-multi-64int
>
> build fail here, anyone seeing the same on other platforms ?
>
> make -C hstore_plperl all
> make[1]: Entering directory 
> '/cygdrive/e/cyg_pub/devel/postgresql/prova/postgres 
> ql-9.5alpha1-1.i686/build/contrib/hstore_plperl'
> gcc -Wall -Wmissing-prototypes -Wpointer-arith 
> -Wdeclaration-after-statement -We ndif-labels 
> -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -f 
>                        wrapv -fexcess-precision=standard -ggdb -O2 
> -pipe -Wimplicit-function-declaratio                           n 
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5a 
>                           lpha1/src/pl/plperl 
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr 
>                c/postgresql-9.5alpha1/contrib/hstore -I. 
> -I/pub/devel/postgresql/prova/postgres 
> ql-9.5alpha1-1.i686/src/postgresql-9.5alpha1/contrib/hstore_plperl 
> -I../../src/i                           nclude 
> -I/pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql- 
>                          9.5alpha1/src/include 
> -I/usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE  -c             
> -o hstore_plperl.o 
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/p 
> ostgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c
> In file included from 
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c:6:0:
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1 
>                           /contrib/hstore/hstore.h:79:0: warning: 
> "HS_KEY" redefined
>  #define HS_KEY(arr_,str_,i_) ((str_) + HSE_OFF((arr_)[2*(i_)]))
>  ^
> In file included from 
> /usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE/perl.h: 
>              3730:0,
>                  from 
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr 
>              c/postgresql-9.5alpha1/src/pl/plperl/plperl.h:48,
>                  from 
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/sr
> c/postgresql-9.5alpha1/contrib/hstore_plperl/hstore_plperl.c:4:
> /usr/lib/perl5/5.22/i686-cygwin-threads-64int/CORE/util.h:221:0: note: 
> this is t                           he location of the previous 
> definition
>  #  define HS_KEY(setxsubfn, popmark, apiver, xsver) \
>  ^
> gcc -Wall -Wmissing-prototypes -Wpointer-arith 
> -Wdeclaration-after-statement -We ndif-labels 
> -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -f 
>                        wrapv -fexcess-precision=standard -ggdb -O2 
> -pipe -Wimplicit-function-declaratio                           n 
> -shared -o hstore_plperl.dll -Wl,--out-implib=libhstore_plperl.a 
> hstore_plpe                           rl.o  -L../../src/port 
> -L../../src/common -Wl,-no-undefined -Wl,--allow-multiple             
> -definition -Wl,--enable-auto-import  -L/usr/local/lib 
> -Wl,--as-needed   -L../..                           /src/backend 
> -lpostgres -lpgcommon -lpgport -lintl -lssl -lcrypto -lz -lreadline 
>                        -lcrypt -lldap
> hstore_plperl.o: In function `hstore_to_plperl':
> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1 
> /contrib/hstore_plperl/hstore_plperl.c:16: undefined reference to 
> `hstoreUpgrade                           '
>
>


That #define clash is annoying, We should probably #undefine HS_KEY if 
it's defined before including hstore.h.

cheers

andrew



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Marco Atzeri
Date:

On 7/3/2015 2:31 PM, Marco Atzeri wrote:
> On 7/3/2015 8:19 AM, Michael Paquier wrote:
>> On Fri, Jul 3, 2015 at 2:47 PM, Marco Atzeri <marco.atzeri@gmail.com>
>> wrote:
>>> On 7/2/2015 5:16 PM, Dave Page wrote:
>>>>
>>> -lldap
>>> hstore_plperl.o: In function `hstore_to_plperl':
>>> /pub/devel/postgresql/prova/postgresql-9.5alpha1-1.i686/src/postgresql-9.5alpha1
>>>
>>> /contrib/hstore_plperl/hstore_plperl.c:16: undefined reference to
>>> `hstoreUpgrade                           '
>>


for what I see the hstore_plperl link has a double problem.

It requires a link to hstore
as it also requires a link to perl.

Attached patch for solving this and a similar issue with python.

Regards
MArco




Attachment

Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Tom Lane
Date:
Marco Atzeri <marco.atzeri@gmail.com> writes:
> for what I see the hstore_plperl link has a double problem.
> It requires a link to hstore
> as it also requires a link to perl.
> Attached patch for solving this and a similar issue with python.

> +ifeq ($(PORTNAME), cygwin)
> +# This means we need an in-tree build on Windows, not a pgxs build
> +SHLIB_LINK += -L../hstore -lhstore -L$(perl_archlibexp)/CORE -lperl
> +endif
> [ and likewise for the other contrib transform modules ]

I wondered how come we had not seen this problem in the buildfarm,
but the answer appears to be that our only working Cygwin critter
(brolga) doesn't build any of the optional PLs, so it skips these
modules altogether.  Seems like we need to improve that situation.

Also, I noted that the "regular win32" path in these makefiles
says, eg,

ifeq ($(PORTNAME), win32)
# these settings are the same as for plperl
override CPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment
# This means we need an in-tree build on Windows, not a pgxs build
SHLIB_LINK += ../hstore/libhstore.a $(wildcard ../../src/pl/plperl/libperl*.a)
endif

It's not apparent to me how that works at all.  It seems to specify
hard-linking a copy of hstore as well as a copy of plperl into the
shlib for hstore_plperl.  Then at runtime, there will *also* be the
hstore and plperl shlibs in memory.  At best that means substantial
memory bloat, but it seems likely to me that it would fail altogether,
particular for plperl which has got a substantial amount of semantically-
important static storage.  Two copies of that storage will not end well.
        regards, tom lane



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/04/2015 11:02 AM, Tom Lane wrote:
> Marco Atzeri <marco.atzeri@gmail.com> writes:
>> for what I see the hstore_plperl link has a double problem.
>> It requires a link to hstore
>> as it also requires a link to perl.
>> Attached patch for solving this and a similar issue with python.
>> +ifeq ($(PORTNAME), cygwin)
>> +# This means we need an in-tree build on Windows, not a pgxs build
>> +SHLIB_LINK += -L../hstore -lhstore -L$(perl_archlibexp)/CORE -lperl
>> +endif
>> [ and likewise for the other contrib transform modules ]
> I wondered how come we had not seen this problem in the buildfarm,
> but the answer appears to be that our only working Cygwin critter
> (brolga) doesn't build any of the optional PLs, so it skips these
> modules altogether.  Seems like we need to improve that situation.
>
> Also, I noted that the "regular win32" path in these makefiles
> says, eg,
>
> ifeq ($(PORTNAME), win32)
> # these settings are the same as for plperl
> override CPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment
> # This means we need an in-tree build on Windows, not a pgxs build
> SHLIB_LINK += ../hstore/libhstore.a $(wildcard ../../src/pl/plperl/libperl*.a)
> endif
>
> It's not apparent to me how that works at all.  It seems to specify
> hard-linking a copy of hstore as well as a copy of plperl into the
> shlib for hstore_plperl.  Then at runtime, there will *also* be the
> hstore and plperl shlibs in memory.  At best that means substantial
> memory bloat, but it seems likely to me that it would fail altogether,
> particular for plperl which has got a substantial amount of semantically-
> important static storage.  Two copies of that storage will not end well.
>
>             



Windows finds the DLL in its path. I just tested this by removing the 
intree pl DLLs after installing and then running contrib installcheck, 
and it worked fine. Whether or not it actually loads the DLL twice when 
it can find the intree DLL I don't know for sure, maybe someone with 
more Windows-fu than me can inform our ignorance.

cheers

andrew



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/04/2015 11:02 AM, Tom Lane wrote:
>
> I wondered how come we had not seen this problem in the buildfarm,
> but the answer appears to be that our only working Cygwin critter
> (brolga) doesn't build any of the optional PLs, so it skips these
> modules altogether.  Seems like we need to improve that situation.
>
>

brolga has been on life support for quite a long time. The reason it 
hasn't been retired is that for a long time I was unable to get a 
buildfarm member running successfully on a more modern Cygwin. That now 
appears to have resolved itself, so in a week or so I will set up a 
Cygwin buildfarm member running on a modern Cygwin on Windows 8.1, and 
build with perl, python, openssl, libxml and libxslt. Note that I have 
only tested 32 bit Cygwin - 64-bit might well be a whole different story.

cheers

andrew



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Marco Atzeri
Date:
On 7/5/2015 11:35 PM, Andrew Dunstan wrote:
>
> On 07/04/2015 11:02 AM, Tom Lane wrote:
>>
>> I wondered how come we had not seen this problem in the buildfarm,
>> but the answer appears to be that our only working Cygwin critter
>> (brolga) doesn't build any of the optional PLs, so it skips these
>> modules altogether.  Seems like we need to improve that situation.
>>
>>
>
> brolga has been on life support for quite a long time. The reason it
> hasn't been retired is that for a long time I was unable to get a
> buildfarm member running successfully on a more modern Cygwin. That now
> appears to have resolved itself, so in a week or so I will set up a
> Cygwin buildfarm member running on a modern Cygwin on Windows 8.1, and
> build with perl, python, openssl, libxml and libxslt. Note that I have
> only tested 32 bit Cygwin - 64-bit might well be a whole different story.

Hi Andrew,
I have not seen any particular difference between the two cygwin flavors
I am running both versions on my W7 64 bit.

The only trick is to have two different names for the cygserver service
to avoid collision. Those services are capable to run at the same time.

E.G. from 64 bit point of view:
$ cygrunsrv.exe -L
(cygserver)
cygserver64
(sshd)

in brackets the 32bit services.

Let me know if you need any support

> cheers
>
> andrew

Regards
Marco



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/04/2015 01:09 PM, Andrew Dunstan wrote:
>
> On 07/04/2015 11:02 AM, Tom Lane wrote:
>> Marco Atzeri <marco.atzeri@gmail.com> writes:
>>> for what I see the hstore_plperl link has a double problem.
>>> It requires a link to hstore
>>> as it also requires a link to perl.
>>> Attached patch for solving this and a similar issue with python.
>>> +ifeq ($(PORTNAME), cygwin)
>>> +# This means we need an in-tree build on Windows, not a pgxs build
>>> +SHLIB_LINK += -L../hstore -lhstore -L$(perl_archlibexp)/CORE -lperl
>>> +endif
>>> [ and likewise for the other contrib transform modules ]
>> I wondered how come we had not seen this problem in the buildfarm,
>> but the answer appears to be that our only working Cygwin critter
>> (brolga) doesn't build any of the optional PLs, so it skips these
>> modules altogether.  Seems like we need to improve that situation.
>>
>> Also, I noted that the "regular win32" path in these makefiles
>> says, eg,
>>
>> ifeq ($(PORTNAME), win32)
>> # these settings are the same as for plperl
>> override CPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment
>> # This means we need an in-tree build on Windows, not a pgxs build
>> SHLIB_LINK += ../hstore/libhstore.a $(wildcard 
>> ../../src/pl/plperl/libperl*.a)
>> endif
>>
>> It's not apparent to me how that works at all.  It seems to specify
>> hard-linking a copy of hstore as well as a copy of plperl into the
>> shlib for hstore_plperl.  Then at runtime, there will *also* be the
>> hstore and plperl shlibs in memory.  At best that means substantial
>> memory bloat, but it seems likely to me that it would fail altogether,
>> particular for plperl which has got a substantial amount of 
>> semantically-
>> important static storage.  Two copies of that storage will not end well.
>>
>>
>
>
>
> Windows finds the DLL in its path. I just tested this by removing the 
> intree pl DLLs after installing and then running contrib installcheck, 
> and it worked fine. Whether or not it actually loads the DLL twice 
> when it can find the intree DLL I don't know for sure, maybe someone 
> with more Windows-fu than me can inform our ignorance.
>

BTW, the .a files being linked to above are not like Unix .a static 
archives - they are import library files, which I think they are only 
used at link time, not run time. The path to the DLLs isn't being hardcoded.

Unless there is further argument I propose to commit something very like 
Marco's suggestion for hstore_plperl, hstore_plpython and ltree_plpython

cheers

andrew



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
>> On 07/04/2015 11:02 AM, Tom Lane wrote:
>>> It's not apparent to me how that works at all.

> BTW, the .a files being linked to above are not like Unix .a static 
> archives - they are import library files, which I think they are only 
> used at link time, not run time. The path to the DLLs isn't being hardcoded.

Ah, I see.  So then what Marco is suggesting is copying a coding pattern
that does work.

> Unless there is further argument I propose to commit something very like 
> Marco's suggestion for hstore_plperl, hstore_plpython and ltree_plpython

No objection here.
        regards, tom lane



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Noah Misch
Date:
On Sun, Jul 12, 2015 at 05:02:51PM -0400, Andrew Dunstan wrote:
> >>Marco Atzeri <marco.atzeri@gmail.com> writes:
> >>>for what I see the hstore_plperl link has a double problem.
> >>>It requires a link to hstore
> >>>as it also requires a link to perl.
> >>>Attached patch for solving this and a similar issue with python.
> >>>+ifeq ($(PORTNAME), cygwin)
> >>>+# This means we need an in-tree build on Windows, not a pgxs build
> >>>+SHLIB_LINK += -L../hstore -lhstore -L$(perl_archlibexp)/CORE -lperl
> >>>+endif

That's the right general strategy, agreed.

> Unless there is further argument I propose to commit something very like
> Marco's suggestion for hstore_plperl, hstore_plpython and ltree_plpython

Would you post the final patch for review?

Thanks,
nm



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/12/2015 05:06 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>>> On 07/04/2015 11:02 AM, Tom Lane wrote:
>>>> It's not apparent to me how that works at all.
>> BTW, the .a files being linked to above are not like Unix .a static
>> archives - they are import library files, which I think they are only
>> used at link time, not run time. The path to the DLLs isn't being hardcoded.
> Ah, I see.  So then what Marco is suggesting is copying a coding pattern
> that does work.
>
>> Unless there is further argument I propose to commit something very like
>> Marco's suggestion for hstore_plperl, hstore_plpython and ltree_plpython
> No objection here.
>
>

OK, I tried the attached patch.

but when trying to build with python 3 I get this (no such problems with
python2, which builds and tests fine):

    make -C hstore_plpython all
    make[1]: Entering directory
    '/home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython'
    ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith
    -Wdeclaration-after-statement -Wendif-labels
    -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
    -fwrapv -fexcess-precision=standard -g -O2 -I../../src/pl/plpython
    -I/usr/include/python3.4m -I../../contrib/hstore -I. -I.
    -I../../src/include -I/usr/include/libxml2   -c -o hstore_plpython.o
    hstore_plpython.c
    ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith
    -Wdeclaration-after-statement -Wendif-labels
    -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
    -fwrapv -fexcess-precision=standard -g -O2   -shared -o
    hstore_plpython3.dll  hstore_plpython.o  -L../../src/port
    -L../../src/common -Wl,--allow-multiple-definition
    -Wl,--enable-auto-import -L/usr/lib  -L/usr/local/lib
    -Wl,--as-needed   -L../../src/backend -lpostgres -L../hstore
    -lhstore -L../../src/pl/plpython -lplpython3
    -L/usr/lib/python3.4/config-3.4m -lpython3.4m -lpgcommon -lpgport
    -lxslt -lxml2 -lssl -lcrypto -lz -lreadline -lcrypt
    hstore_plpython.o: In function `hstore_to_plpython':
    /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:35:
    undefined reference to `PLyUnicode_FromStringAndSize'
    /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:35:(.text+0x99):
    relocation truncated to fit: R_X86_64_PC32 against undefined symbol
    `PLyUnicode_FromStringAndSize'
    /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:28:
    undefined reference to `PLyUnicode_FromStringAndSize'
    /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:28:(.text+0xf1):
    relocation truncated to fit: R_X86_64_PC32 against undefined symbol
    `PLyUnicode_FromStringAndSize'
    hstore_plpython.o: In function `plpython_to_hstore':
    /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:96:
    undefined reference to `PLyObject_AsString'
    /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:96:(.text+0x2cc):
    relocation truncated to fit: R_X86_64_PC32 against undefined symbol
    `PLyObject_AsString'
    /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:84:
    undefined reference to `PLyObject_AsString'
    /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:84:(.text+0x321):
    relocation truncated to fit: R_X86_64_PC32 against undefined symbol
    `PLyObject_AsString'
    collect2: error: ld returned 1 exit status
    ../../src/Makefile.shlib:358: recipe for target
    'hstore_plpython3.dll' failed
    make[1]: *** [hstore_plpython3.dll] Error 1
    make[1]: Leaving directory
    '/home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython'
    Makefile:92: recipe for target 'all-hstore_plpython-recurse' failed
    make: *** [all-hstore_plpython-recurse] Error 2

I'd like to get that fixed before applying anything. Marco, any ideas?

To build with python 3, set the environment like this:
PYTHON=/usr/bin/python3 - this can be done in the config file.


cheers

andrew


Attachment

Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Marco Atzeri
Date:
On 7/13/2015 5:36 PM, Andrew Dunstan wrote:
>
> On 07/12/2015 05:06 PM, Tom Lane wrote:
>> Andrew Dunstan <andrew@dunslane.net> writes:
>>>> On 07/04/2015 11:02 AM, Tom Lane wrote:
>>>>> It's not apparent to me how that works at all.
>>> BTW, the .a files being linked to above are not like Unix .a static
>>> archives - they are import library files, which I think they are only
>>> used at link time, not run time. The path to the DLLs isn't being
>>> hardcoded.
>> Ah, I see.  So then what Marco is suggesting is copying a coding pattern
>> that does work.
>>
>>> Unless there is further argument I propose to commit something very like
>>> Marco's suggestion for hstore_plperl, hstore_plpython and ltree_plpython
>> No objection here.
>>
>>
>
> OK, I tried the attached patch.
>
> but when trying to build with python 3 I get this (no such problems with
> python2, which builds and tests fine):
>
>     make -C hstore_plpython all
>     make[1]: Entering directory
>     '/home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython'
>     ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith
>     -Wdeclaration-after-statement -Wendif-labels
>     -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
>     -fwrapv -fexcess-precision=standard -g -O2 -I../../src/pl/plpython
>     -I/usr/include/python3.4m -I../../contrib/hstore -I. -I.
>     -I../../src/include -I/usr/include/libxml2   -c -o hstore_plpython.o
>     hstore_plpython.c
>     ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith
>     -Wdeclaration-after-statement -Wendif-labels
>     -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
>     -fwrapv -fexcess-precision=standard -g -O2   -shared -o
>     hstore_plpython3.dll  hstore_plpython.o  -L../../src/port
>     -L../../src/common -Wl,--allow-multiple-definition
>     -Wl,--enable-auto-import -L/usr/lib  -L/usr/local/lib
>     -Wl,--as-needed   -L../../src/backend -lpostgres -L../hstore
>     -lhstore -L../../src/pl/plpython -lplpython3
>     -L/usr/lib/python3.4/config-3.4m -lpython3.4m -lpgcommon -lpgport
>     -lxslt -lxml2 -lssl -lcrypto -lz -lreadline -lcrypt
>     hstore_plpython.o: In function `hstore_to_plpython':
>
> /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:35:
>
>     undefined reference to `PLyUnicode_FromStringAndSize'
>
[cut]
> I'd like to get that fixed before applying anything. Marco, any ideas?
>
> To build with python 3, set the environment like this:
> PYTHON=/usr/bin/python3 - this can be done in the config file.

I am only building with python2, but on cygwin
there is an additional "intl" library for python3 binding

$ python2-config --libs
-lpython2.7 -ldl

$ python3-config --libs
-lpython3.4m -lintl -ldl

> cheers
>
> andrew

Regards
Marco




Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/13/2015 11:53 AM, Marco Atzeri wrote:
> On 7/13/2015 5:36 PM, Andrew Dunstan wrote:
>>
>> On 07/12/2015 05:06 PM, Tom Lane wrote:
>>> Andrew Dunstan <andrew@dunslane.net> writes:
>>>>> On 07/04/2015 11:02 AM, Tom Lane wrote:
>>>>>> It's not apparent to me how that works at all.
>>>> BTW, the .a files being linked to above are not like Unix .a static
>>>> archives - they are import library files, which I think they are only
>>>> used at link time, not run time. The path to the DLLs isn't being
>>>> hardcoded.
>>> Ah, I see.  So then what Marco is suggesting is copying a coding 
>>> pattern
>>> that does work.
>>>
>>>> Unless there is further argument I propose to commit something very 
>>>> like
>>>> Marco's suggestion for hstore_plperl, hstore_plpython and 
>>>> ltree_plpython
>>> No objection here.
>>>
>>>
>>
>> OK, I tried the attached patch.
>>
>> but when trying to build with python 3 I get this (no such problems with
>> python2, which builds and tests fine):
>>
>>     make -C hstore_plpython all
>>     make[1]: Entering directory
>>     '/home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython'
>>     ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith
>>     -Wdeclaration-after-statement -Wendif-labels
>>     -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
>>     -fwrapv -fexcess-precision=standard -g -O2 -I../../src/pl/plpython
>>     -I/usr/include/python3.4m -I../../contrib/hstore -I. -I.
>>     -I../../src/include -I/usr/include/libxml2   -c -o hstore_plpython.o
>>     hstore_plpython.c
>>     ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith
>>     -Wdeclaration-after-statement -Wendif-labels
>>     -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
>>     -fwrapv -fexcess-precision=standard -g -O2   -shared -o
>>     hstore_plpython3.dll  hstore_plpython.o  -L../../src/port
>>     -L../../src/common -Wl,--allow-multiple-definition
>>     -Wl,--enable-auto-import -L/usr/lib  -L/usr/local/lib
>>     -Wl,--as-needed   -L../../src/backend -lpostgres -L../hstore
>>     -lhstore -L../../src/pl/plpython -lplpython3
>>     -L/usr/lib/python3.4/config-3.4m -lpython3.4m -lpgcommon -lpgport
>>     -lxslt -lxml2 -lssl -lcrypto -lz -lreadline -lcrypt
>>     hstore_plpython.o: In function `hstore_to_plpython':
>>
>> /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:35: 
>>
>>
>>     undefined reference to `PLyUnicode_FromStringAndSize'
>>
> [cut]
>> I'd like to get that fixed before applying anything. Marco, any ideas?
>>
>> To build with python 3, set the environment like this:
>> PYTHON=/usr/bin/python3 - this can be done in the config file.
>
> I am only building with python2, but on cygwin
> there is an additional "intl" library for python3 binding
>
> $ python2-config --libs
> -lpython2.7 -ldl
>
> $ python3-config --libs
> -lpython3.4m -lintl -ldl
>

No this doesn't seem to be the problem. For some reason it's apparently 
not finding the symbol in plpython3.dll, where it should definitely 
exist, unless I'm completely off base. So I'm rather confused.

cheers

andrew



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> On 07/13/2015 11:53 AM, Marco Atzeri wrote:
>> On 7/13/2015 5:36 PM, Andrew Dunstan wrote:
>>> hstore_plpython.o: In function `hstore_to_plpython':
>>> /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:35: 
>>> undefined reference to `PLyUnicode_FromStringAndSize'

> No this doesn't seem to be the problem. For some reason it's apparently 
> not finding the symbol in plpython3.dll, where it should definitely 
> exist, unless I'm completely off base. So I'm rather confused.

Could hstore_plpython and plpython somehow have been built with different
ideas about PY_MAJOR_VERSION?  PLyUnicode_FromStringAndSize is
conditionally compiled, and the reference to it from hstore_plpython
depends on a conditionally-defined macro, and this error would make plenty
of sense if those conditions somehow diverged.  So I'd look for instance
at whether identical -I paths were used in both parts of the build.
        regards, tom lane



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/13/2015 05:18 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> On 07/13/2015 11:53 AM, Marco Atzeri wrote:
>>> On 7/13/2015 5:36 PM, Andrew Dunstan wrote:
>>>> hstore_plpython.o: In function `hstore_to_plpython':
>>>> /home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:35:
>>>> undefined reference to `PLyUnicode_FromStringAndSize'
>> No this doesn't seem to be the problem. For some reason it's apparently
>> not finding the symbol in plpython3.dll, where it should definitely
>> exist, unless I'm completely off base. So I'm rather confused.
> Could hstore_plpython and plpython somehow have been built with different
> ideas about PY_MAJOR_VERSION?  PLyUnicode_FromStringAndSize is
> conditionally compiled, and the reference to it from hstore_plpython
> depends on a conditionally-defined macro, and this error would make plenty
> of sense if those conditions somehow diverged.  So I'd look for instance
> at whether identical -I paths were used in both parts of the build.



Not AFAICT. Here is the contrib build:
   ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith   -Wdeclaration-after-statement -Wendif-labels
-Wmissing-format-attribute-Wformat-security -fno-strict-aliasing   -fwrapv -fexcess-precision=standard -g -O2
-I../../src/pl/plpython  -I/usr/include/python3.4m -I../../contrib/hstore -I. -I.   -I../../src/include
-I/usr/include/libxml2  -c -o hstore_plpython.o   hstore_plpython.c   ccache gcc -Wall -Wmissing-prototypes
-Wpointer-arith  -Wdeclaration-after-statement -Wendif-labels   -Wmissing-format-attribute -Wformat-security
-fno-strict-aliasing  -fwrapv -fexcess-precision=standard -g -O2   -shared -o   hstore_plpython3.dll  hstore_plpython.o
-L../../src/port   -L../../src/common -Wl,--allow-multiple-definition   -Wl,--enable-auto-import -L/usr/lib
-L/usr/local/lib  -Wl,--as-needed   -L../../src/backend -lpostgres -L../hstore   -lhstore -L../../src/pl/plpython
-lplpython3  -L/usr/lib/python3.4/config-3.4m -lpython3.4m -lpgcommon -lpgport   -lxslt -lxml2 -lssl -lcrypto -lz
-lreadline-lcrypt
 

and here is the plpython build:
   ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith   -Wdeclaration-after-statement -Wendif-labels
-Wmissing-format-attribute-Wformat-security -fno-strict-aliasing   -fwrapv -fexcess-precision=standard -g -O2  -I. -I.
-I/usr/include/python3.4m -I../../../src/include   -I/usr/include/libxml2  -DUSE_DL_IMPORT  -c -o plpy_util.o
plpy_util.c  ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith   -Wdeclaration-after-statement -Wendif-labels
-Wmissing-format-attribute-Wformat-security -fno-strict-aliasing   -fwrapv -fexcess-precision=standard -g -O2   -shared
-o  plpython3.dll  plpy_cursorobject.o plpy_elog.o plpy_exec.o   plpy_main.o plpy_planobject.o plpy_plpymodule.o
plpy_procedure.o  plpy_resultobject.o plpy_spi.o plpy_subxactobject.o plpy_typeio.o   plpy_util.o  -L../../../src/port
-L../../../src/common  -Wl,--allow-multiple-definition -Wl,--enable-auto-import -L/usr/lib    -L/usr/local/lib
-Wl,--as-needed-L/usr/lib/python3.4/config-3.4m   -lpython3.4m -lintl -ldl -L../../../src/backend -lpostgres
-lpgcommon-lpgport -lxslt -lxml2 -lssl -lcrypto -lz -lreadline -lcrypt
 


The functions are in fact apparently built - the names are present in 
the object file and the DLL.

cheers

andrew

>
>             regards, tom lane
>




Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> Not AFAICT. Here is the contrib build:

Hm ... what does -DUSE_DL_IMPORT do?
        regards, tom lane



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/13/2015 07:33 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> Not AFAICT. Here is the contrib build:
> Hm ... what does -DUSE_DL_IMPORT do?
>
>             

NFI - I tried building with that but it made no difference.

cheers

andrew




Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Michael Paquier
Date:
On Tue, Jul 14, 2015 at 8:49 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
>
> On 07/13/2015 07:33 PM, Tom Lane wrote:
>>
>> Andrew Dunstan <andrew@dunslane.net> writes:
>>>
>>> Not AFAICT. Here is the contrib build:
>>
>> Hm ... what does -DUSE_DL_IMPORT do?
>
> NFI - I tried building with that but it made no difference.

Is your python3 build a 32b version?
-- 
Michael



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Andrew Dunstan
Date:
On 07/13/2015 07:55 PM, Michael Paquier wrote:
> On Tue, Jul 14, 2015 at 8:49 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
>> On 07/13/2015 07:33 PM, Tom Lane wrote:
>>> Andrew Dunstan <andrew@dunslane.net> writes:
>>>> Not AFAICT. Here is the contrib build:
>>> Hm ... what does -DUSE_DL_IMPORT do?
>> NFI - I tried building with that but it made no difference.
> Is your python3 build a 32b version?

No, this is all 64 bit.

cheers

andrew



Re: PostgreSQL 9.5 Alpha 1 build fail with perl 5.22

From
Noah Misch
Date:
On Mon, Jul 13, 2015 at 06:19:49PM -0400, Andrew Dunstan wrote:
> >>>On 7/13/2015 5:36 PM, Andrew Dunstan wrote:
> >>>>hstore_plpython.o: In function `hstore_to_plpython':
> >>>>/home/andrew/bf64/root/HEAD/pgsql/contrib/hstore_plpython/hstore_plpython.c:35:
> >>>>undefined reference to `PLyUnicode_FromStringAndSize'

> The functions are in fact apparently built - the names are present in the
> object file and the DLL.

Per "objdump -x src/pl/plpython/plpython3.dll | less -pOrdinal/Name", those
symbols aren't exported.  The Cygwin toolchain appears to export every
function until you mark one with __declspec (dllexport), after which it
exports just the ones so marked.  Since plpython3.dll has an explicit
__declspec on PyInit_plpy(), that's the sole function exported.  Adding
-Wl,--export-all-symbols to the PL/Python link lets the build complete; I have
not researched whether it is a proper fix.