Thread: Bug in PL/Perl makefile

Bug in PL/Perl makefile

From
David Jack Olrik
Date:
Your name               : David Jack Olrik
Your email address      : david@olrik.dk

System Configuration
---------------------
  Architecture (example: Intel Pentium)         : Intel Pentium III

  Operating System (example: Linux 2.0.26 ELF)  : Linux 2.2.14 ELF

  PostgreSQL version (example: PostgreSQL-6.5.1): PostgreSQL-7.0beta1

  Compiler used (example:  gcc 2.8.0)           : gcc 2.95.2


Please enter a FULL description of your problem:
------------------------------------------------
pl/perl does not work.


Please describe a way to repeat the problem.   Please try to provide a
concise reproducible example, if at all possible:
----------------------------------------------------------------------
install pl/perl and create this function:

    CREATE FUNCTION addints(int4, int4) RETURNS int4 AS '
    return $_[0] + $_[1]
    ' LANGUAGE 'plperl';

Then select from it:

    select addints(3,4);

Result:

    ERROR:  Load of file /usr/local/pgsql/lib/plperl.so failed:
    /usr/local/pgsql/lib/plperl.so: undefined symbol: elog_DEBUG


If you know how this problem might be fixed, list the solution below:
---------------------------------------------------------------------
Missing .o file in make file. Patchfile attached with this mail fixes the
problem!

--
Best regards,
David Jack Olrik <david@olrik.dk> http://david.olrik.dk
[ Linux: Because rebooting is for adding new hardware ]

Re: [BUGS] Bug in PL/Perl makefile

From
Tom Lane
Date:
David Jack Olrik <david@olrik.dk> writes:
> Missing .o file in make file. Patchfile attached with this mail fixes the
> problem!

David, the plperl makefile has been completely rewritten by Mark Hollomon
in the last couple days.  I have not had time yet to check it and commit
it to CVS, but I am attaching what he sent me; would you like to try it?

            regards, tom lane

use ExtUtils::MakeMaker;
use ExtUtils::Embed;
use DynaLoader;
use Config;

#
# get the location of the Opcode module
#
my $opcode = '';
{

    $modname = 'Opcode';

    my $dir;
    foreach (@INC) {
        if (-d "$_/auto/$modname") {
            $dir = "$_/auto/$modname";
            last;
        }
    }

    if (defined $dir) {
        $opcode = DynaLoader::dl_findfile("-L$dir", $modname);
    }

}

WriteMakefile( 'NAME' => 'plperl',
    dynamic_lib => { 'OTHERLDFLAGS' => "$opcode -L\$(LIBPQDIR) -lpq @{[ldopts()]}" } ,
    INC => '-I$(LIBPQDIR) -I$(SRCDIR)/include -I$(SRCDIR)/backend',
    XS => { 'SPI.xs' => 'SPI.c' },
    OBJECT => 'plperl.o eloglvl.o SPI.o',
    );

sub MY::post_initialize {

q[
SRCDIR=../../../src
include $(SRCDIR)/Makefile.global
];

}

sub MY::install {

q[
install :: all
    cp $(INST_DYNAMIC) $(LIBDIR)
];

}



Re: [BUGS] Bug in PL/Perl makefile

From
Bruce Momjian
Date:
This has been fixed by the plperl maintainer.  Beta tomorrow should show
the new code.

> Your name               : David Jack Olrik
> Your email address      : david@olrik.dk
>
> System Configuration
> ---------------------
>   Architecture (example: Intel Pentium)         : Intel Pentium III
>
>   Operating System (example: Linux 2.0.26 ELF)  : Linux 2.2.14 ELF
>
>   PostgreSQL version (example: PostgreSQL-6.5.1): PostgreSQL-7.0beta1
>
>   Compiler used (example:  gcc 2.8.0)           : gcc 2.95.2
>
>
> Please enter a FULL description of your problem:
> ------------------------------------------------
> pl/perl does not work.
>
>
> Please describe a way to repeat the problem.   Please try to provide a
> concise reproducible example, if at all possible:
> ----------------------------------------------------------------------
> install pl/perl and create this function:
>
>     CREATE FUNCTION addints(int4, int4) RETURNS int4 AS '
>     return $_[0] + $_[1]
>     ' LANGUAGE 'plperl';
>
> Then select from it:
>
>     select addints(3,4);
>
> Result:
>
>     ERROR:  Load of file /usr/local/pgsql/lib/plperl.so failed:
>     /usr/local/pgsql/lib/plperl.so: undefined symbol: elog_DEBUG
>
>
> If you know how this problem might be fixed, list the solution below:
> ---------------------------------------------------------------------
> Missing .o file in make file. Patchfile attached with this mail fixes the
> problem!
>
> --
> Best regards,
> David Jack Olrik <david@olrik.dk> http://david.olrik.dk
> [ Linux: Because rebooting is for adding new hardware ]
Content-Description: fix for bad makefile

[Attachment, skipping...]


--
  Bruce Momjian                        |  http://www.op.net/~candle
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026