Thread: How to build plperl with PostgreSQL 9 on Windows

How to build plperl with PostgreSQL 9 on Windows

From
tuanhoanganh
Date:
I has set config.pl to
$config->{perl};
1;
and run build.bat, everything is ok, there is plpgsql.dll but don't found plperl.dll.
I use strawberry perl 5.10 or must I use ActiveState Perl.

Please help me. Thank in advance

Tuan Hoang ANh

Re: How to build plperl with PostgreSQL 9 on Windows

From
Alex Hunsaker
Date:
On Tue, Jan 4, 2011 at 10:12, tuanhoanganh <hatuan05@gmail.com> wrote:
> I has set config.pl to
> $config->{perl};
> 1;

I don't know anything about the windows build system, but shouldn't
that be something like:
$config->{perl} = 1; ?

Re: How to build plperl with PostgreSQL 9 on Windows

From
tuanhoanganh
Date:
Thanks for answer me but it have error

Detected Visual Studio version 8.00
Detected hardware platform: Win32
Generating win32ver.rc for src\backend
Building src\pl\plperl\SPI.c...
'1' is not recognized as an internal or external command,
operable program or batch file.
Failed to create SPI.c.

Please help me.

Tuan Hoang ANh

On Wed, Jan 5, 2011 at 9:14 AM, Alex Hunsaker <badalex@gmail.com> wrote:
On Tue, Jan 4, 2011 at 10:12, tuanhoanganh <hatuan05@gmail.com> wrote:
> I has set config.pl to
> $config->{perl};
> 1;

I don't know anything about the windows build system, but shouldn't
that be something like:
$config->{perl} = 1; ?

Re: How to build plperl with PostgreSQL 9 on Windows

From
Alex Hunsaker
Date:
On Tue, Jan 4, 2011 at 19:27, tuanhoanganh <hatuan05@gmail.com> wrote:
> Thanks for answer me but it have error
>
> Detected Visual Studio version 8.00
> Detected hardware platform: Win32
> Generating win32ver.rc for src\backend
> Building src\pl\plperl\SPI.c...
> '1' is not recognized as an internal or external command,

Instead of 1, try the path to the perl directory (such that
$config->{'perl'} . "\bin\perl" is the perl binary).  For example:
$config->{perl} = "C:\strawberry\perl\";

Re: How to build plperl with PostgreSQL 9 on Windows

From
tuanhoanganh
Date:
Thanks you very much
Here is my config.pl
$config->{perl} = "c:\\perl";
1;

Strawberry Perl don't work because It don't have perl lib in c:\Perl\lib\CORE\.
I swiched to ActivePerl to build plperl.

Tuan Hoang ANh

On Wed, Jan 5, 2011 at 9:52 AM, Alex Hunsaker <badalex@gmail.com> wrote:
On Tue, Jan 4, 2011 at 19:27, tuanhoanganh <hatuan05@gmail.com> wrote:
> Thanks for answer me but it have error
>
> Detected Visual Studio version 8.00
> Detected hardware platform: Win32
> Generating win32ver.rc for src\backend
> Building src\pl\plperl\SPI.c...
> '1' is not recognized as an internal or external command,

Instead of 1, try the path to the perl directory (such that
$config->{'perl'} . "\bin\perl" is the perl binary).  For example:
$config->{perl} = "C:\strawberry\perl\";

Re: How to build plperl with PostgreSQL 9 on Windows

From
tuanhoanganh
Date:
I have error when build plperl

1>------ Build started: Project: plperl, Configuration: Release Win32 ------
1>Generate DEF file
1>Not re-generating PLPERL.DEF, file already exists.
1>Linking...
1>   Creating library Release\plperl\plperl.lib and object Release\plperl\plperl.exp
1>SPI.obj : error LNK2019: unresolved external symbol _Perl_Tstack_base_ptr referenced in function _XS__spi_exec_query
1>Util.obj : error LNK2001: unresolved external symbol _Perl_Tstack_base_ptr
1>SPI.obj : error LNK2019: unresolved external symbol _Perl_Tmarkstack_ptr_ptr referenced in function _XS__spi_exec_query
1>Util.obj : error LNK2001: unresolved external symbol _Perl_Tmarkstack_ptr_ptr
1>SPI.obj : error LNK2019: unresolved external symbol _Perl_Tstack_sp_ptr referenced in function _XS__spi_exec_query
1>Util.obj : error LNK2001: unresolved external symbol _Perl_Tstack_sp_ptr
1>Util.obj : error LNK2019: unresolved external symbol _Perl_Tcurpad_ptr referenced in function _XS___aliased_constants
1>Util.obj : error LNK2019: unresolved external symbol _Perl_Top_ptr referenced in function _XS___aliased_constants
1>.\Release\plperl\plperl.dll : fatal error LNK1120: 5 unresolved externals

My ActivePerl version  :"This is perl, v5.10.1 built for MSWin32-x86-multi-thread"

How to fix it?

Please help me. Thanks in advance

Tuan Hoang ANh

On Wed, Jan 5, 2011 at 10:32 AM, tuanhoanganh <hatuan05@gmail.com> wrote:
Thanks you very much
Here is my config.pl
$config->{perl} = "c:\\perl";
1;

Strawberry Perl don't work because It don't have perl lib in c:\Perl\lib\CORE\.
I swiched to ActivePerl to build plperl.Bu

Tuan Hoang ANh


On Wed, Jan 5, 2011 at 9:52 AM, Alex Hunsaker <badalex@gmail.com> wrote:
On Tue, Jan 4, 2011 at 19:27, tuanhoanganh <hatuan05@gmail.com> wrote:
> Thanks for answer me but it have error
>
> Detected Visual Studio version 8.00
> Detected hardware platform: Win32
> Generating win32ver.rc for src\backend
> Building src\pl\plperl\SPI.c...
> '1' is not recognized as an internal or external command,

Instead of 1, try the path to the perl directory (such that
$config->{'perl'} . "\bin\perl" is the perl binary).  For example:
$config->{perl} = "C:\strawberry\perl\";


Re: How to build plperl with PostgreSQL 9 on Windows

From
Alex Hunsaker
Date:
On Wed, Jan 5, 2011 at 05:49, tuanhoanganh <hatuan05@gmail.com> wrote:
> I have error when build plperl
>
> 1>------ Build started: Project: plperl, Configuration: Release Win32 ------
> 1>Generate DEF file
> 1>Not re-generating PLPERL.DEF, file already exists.
> 1>Linking...
> 1>   Creating library Release\plperl\plperl.lib and object
> Release\plperl\plperl.exp
> 1>SPI.obj : error LNK2019: unresolved external symbol _Perl_Tstack_base_ptr
> referenced in function _XS__spi_exec_query

Hrm, my guess would be its trying to link against a different perl dll
than it was compiled against. Perhaps there is some lingering
files/state from the strawberry perl install? I'd first try doing a
clean build (make clean-- only I dont know what the windows equivalent
is, for me that would be remove the postgres source and try again).
If that still fails I'd look for references to the non activestate
perl in your environment (like %PATH%).