Thread: BUG #6198: init-po fails for plperl due to invalid xsubpp path (contains ExtUtils)
BUG #6198: init-po fails for plperl due to invalid xsubpp path (contains ExtUtils)
From
"init-po fails for plperl due to invalid xsubpp path"
Date:
The following bug has been logged online: Bug reference: 6198 Logged by: init-po fails for plperl due to invalid xsubpp path Email address: tv@fuzzy.cz PostgreSQL version: 9.0.4, 9.1-rc1 Operating system: Linux Description: init-po fails for plperl due to invalid xsubpp path (contains ExtUtils) Details: When I try to prepare a fresh .pot file for plpgsql, it fails like this $ ./configure --enable-nls=cs $ cd src/pl/plperl $ gmake init-po '/usr/bin/perl' /ExtUtils/xsubpp -typemap /ExtUtils/typemap SPI.xs >SPI.c Can't open perl script "/ExtUtils/xsubpp": Directory or file does not exist. gmake: *** [SPI.c] Error 2 gmake: *** Deleting file `SPI.c' This is due to invalid xsubpp/typemap paths - the xsubpp is available here $ which xsubpp /usr/bin/xsubpp but the GNUmakefile contains this: $(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@ After changing to xsubpp -typemap /usr/src/linux-2.6.38-gentoo-r6/tools/perf/scripts/perl/Perf-Trace-Util/type map $< >$@ it works fine.
Re: BUG #6198: init-po fails for plperl due to invalid xsubpp path (contains ExtUtils)
From
Alex Hunsaker
Date:
On Sun, Sep 4, 2011 at 13:48, init-po fails for plperl due to invalid xsubpp path <tv@fuzzy.cz> wrote: > > Description: =C2=A0 =C2=A0 =C2=A0 =C2=A0init-po fails for plperl due to i= nvalid xsubpp path > (contains ExtUtils) > Details: > > When I try to prepare a fresh .pot file for plpgsql, it fails like this > > =C2=A0$ ./configure --enable-nls=3Dcs > =C2=A0$ cd src/pl/plperl > =C2=A0$ gmake init-po > =C2=A0'/usr/bin/perl' /ExtUtils/xsubpp -typemap /ExtUtils/typemap SPI.xs = >SPI.c > =C2=A0Can't open perl script "/ExtUtils/xsubpp": Directory or file does n= ot > exist. > =C2=A0gmake: *** [SPI.c] Error 2 > =C2=A0gmake: *** Deleting file `SPI.c' > > This is due to invalid xsubpp/typemap paths - the xsubpp is available here > > =C2=A0$ which xsubpp > =C2=A0/usr/bin/xsubpp > > but the GNUmakefile contains this: > > $(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap > $(perl_privlibexp)/ExtUtils/typemap $< >$@ Erm... we have been using perl_privlibexp basically forever... What version of perl is this? It might be helpful if you could provide the output of the following: $ perl -e 'use Config; print "$Config{privlibexp}\n";' $ ls `perl -e 'use Config; print "$Config{privlibexp}\n";'`/ExtUtils I get: $ perl -e 'use Config; print "$Config{privlibexp}\n";' /usr/share/perl5/core_perl $ ls `perl -e 'use Config; print "$Config{privlibexp}\n";'`/ExtUtils .... [ snip ] MM_VOS.pm MM_Win32.pm MM_Win95.pm MY.pm Packlist.pm ParseXS.pm testlib.pm typemap xsubpp Here we can see both typemap and xsubpp where we expect them. > After changing to > > =C2=A0xsubpp -typemap > /usr/src/linux-2.6.38-gentoo-r6/tools/perf/scripts/perl/Perf-Trace-Util/t= ype > map $< >$@ Why are you using that for the typemap? it looks like you just used find and decided to use the first file it found named 'typemap'... It would be interesting to know where the real typemap file is. Maybe you could paste the output of find /usr -name typemap?
Re: BUG #6198: init-po fails for plperl due to invalid xsubpp path (contains ExtUtils)
From
"Tomas Vondra"
Date:
On 5 ZáÅà 2011, 0:27, Alex Hunsaker wrote: > On Sun, Sep 4, 2011 at 13:48, init-po fails for plperl due to invalid > xsubpp path <tv@fuzzy.cz> wrote: >> >> Description:     init-po fails for plperl due to invalid xsubpp path >> (contains ExtUtils) >> Details: >> >> When I try to prepare a fresh .pot file for plpgsql, it fails like this >> >>  $ ./configure --enable-nls=cs >>  $ cd src/pl/plperl >>  $ gmake init-po >>  '/usr/bin/perl' /ExtUtils/xsubpp -typemap /ExtUtils/typemap SPI.xs >> >SPI.c >>  Can't open perl script "/ExtUtils/xsubpp": Directory or file does not >> exist. >>  gmake: *** [SPI.c] Error 2 >>  gmake: *** Deleting file `SPI.c' >> >> This is due to invalid xsubpp/typemap paths - the xsubpp is available >> here >> >>  $ which xsubpp >>  /usr/bin/xsubpp >> >> but the GNUmakefile contains this: >> >> $(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap >> $(perl_privlibexp)/ExtUtils/typemap $< >$@ > > > Erm... we have been using perl_privlibexp basically forever... What > version of perl is this? It might be helpful if you could provide the > output of the following: > $ perl -e 'use Config; print "$Config{privlibexp}\n";' > $ ls `perl -e 'use Config; print "$Config{privlibexp}\n";'`/ExtUtils OK, this returns /usr/lib/perl5/5.12.3 .... MM_VOS.pm MM_Win32.pm MM_Win95.pm MY.pm Packlist.pm ParseXS.pm testlib.pm typemap xsubpp So yes, it's almost the same as your results. >> After changing to >> >>  xsubpp -typemap >> /usr/src/linux-2.6.38-gentoo-r6/tools/perf/scripts/perl/Perf-Trace-Util/type >> map $< >$@ > > Why are you using that for the typemap? it looks like you just used > find and decided to use the first file it found named 'typemap'... It > would be interesting to know where the real typemap file is. Maybe you > could paste the output of find /usr -name typemap? Well, basically yes - I've searched and used the file that matched the kernel. But the correct version is obviously in the /usr/lib/perl5/5.12.3 directory. Aha! When I run configure like this $ ./configure --with-perl --enable-nls=cs then it works, so obviously the "--with-perl" option is required. Shouldn't this behave a bit differently, e.g. not allowing "enable-nls" without "with-perl"? Allowing that and getting not-fully-working tree is not a good thing I guess ... Tomas
Re: BUG #6198: init-po fails for plperl due to invalid xsubpp path (contains ExtUtils)
From
Alex Hunsaker
Date:
On Sun, Sep 4, 2011 at 16:57, Tomas Vondra <tv@fuzzy.cz> wrote: > On 5 Z=C3=A1=C5=99=C3=AD 2011, 0:27, Alex Hunsaker wrote: >> On Sun, Sep 4, 2011 at 13:48, init-po fails for plperl due to invalid >> xsubpp path <tv@fuzzy.cz> wrote: .... > So yes, it's almost the same as your results. > > > Aha! When I run configure like this > > =C2=A0$ ./configure --with-perl --enable-nls=3Dcs Whoa, I totally missed that it was without --with-perl. :-) > then it works, so obviously the "--with-perl" option is required. > Shouldn't this behave a bit differently, e.g. not allowing "enable-nls" > without "with-perl"? Allowing that and getting not-fully-working tree is > not a good thing I guess ... Hrm, I don't know much about the nls stuff... but it seems like a reasonable request to me.
Re: BUG #6198: init-po fails for plperl due to invalid xsubpp path (contains ExtUtils)
From
Tom Lane
Date:
Alex Hunsaker <badalex@gmail.com> writes: > On Sun, Sep 4, 2011 at 16:57, Tomas Vondra <tv@fuzzy.cz> wrote: >> Aha! When I run configure like this >> >> $ ./configure --with-perl --enable-nls=cs > Whoa, I totally missed that it was without --with-perl. :-) >> then it works, so obviously the "--with-perl" option is required. >> Shouldn't this behave a bit differently, e.g. not allowing "enable-nls" >> without "with-perl"? Allowing that and getting not-fully-working tree is >> not a good thing I guess ... > Hrm, I don't know much about the nls stuff... but it seems like a > reasonable request to me. Uh, no, because init-po is not needed by mere users of existing translations. Nor does somebody who wants --enable-nls necessarily care about building plperl. The failure here is not about combining NLS with --without-perl, it's about trying to do anything at all with plperl with --without-perl. I'd say the fix is to make plperl's makefile defend itself against somebody cd'ing to that directory and trying to use the makefile without having configured correctly. Another question worth asking is why is the rule being run at all? Do we need to have built SPI.c in order to do init-po for plperl? regards, tom lane