Backpatch "Use the preferred version of xsubpp."
authorAndrew Dunstan <andrew@dunslane.net>
Mon, 28 Nov 2011 12:46:47 +0000 (07:46 -0500)
committerAndrew Dunstan <andrew@dunslane.net>
Mon, 28 Nov 2011 12:46:47 +0000 (07:46 -0500)
As requested this is backpatched all the way to release 8.2.

src/pl/plperl/GNUmakefile
src/tools/msvc/mkvcbuild.pl

index fed7508ad8c6ed048a75b5acb85eb8898108fa55..b84a3b30033c502a2e99b5345bc62cc140af9655 100644 (file)
@@ -52,6 +52,9 @@ endif
 # where to find psql for running the tests
 PSQLDIR = $(bindir)
 
+# where to find xsubpp for building XS.
+XSUBPPDIR = $(shell $(PERL) -e 'use List::Util qw(first); print first { -r "$$_/ExtUtils/xsubpp" } @INC')
+
 include $(top_srcdir)/src/Makefile.shlib
 
 
@@ -64,7 +67,7 @@ plperl_opmask.h: plperl_opmask.pl
 
 
 SPI.c: SPI.xs
-   $(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@
+   $(PERL) $(XSUBPPDIR)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@
 
 # When doing a VPATH build, copy over the .sql and .out files so that the
 # test script can find them.  See comments in src/test/regress/GNUmakefile.
index 8bf35aefb4c0b05cb2979774e991ca240b77f9ec..5282781fb3478a43f9422f35681775dab9cdf7de 100644 (file)
@@ -5,6 +5,8 @@ use warnings;
 use Project;
 use Solution;
 use Cwd;
+use Config;
+use List::Util qw(first);
 
 chdir('..\..\..') if (-d '..\msvc' && -d '..\..\..\src');
 die 'Must run from root or msvc directory' unless (-d 'src\tools\msvc' && -d 'src');
@@ -52,8 +54,9 @@ if ($solution->{options}->{perl}) {
    $plperl->AddIncludeDir($solution->{options}->{perl} . '/lib/CORE');
    $plperl->AddDefine('PLPERL_HAVE_UID_GID');
    if (Solution::IsNewer('src\pl\plperl\SPI.c','src\pl\plperl\SPI.xs')) {
+       my $xsubppdir = first { -e "$_\\ExtUtils\\xsubpp" } @INC;
        print 'Building src\pl\plperl\SPI.c...' . "\n";
-       system($solution->{options}->{perl} . '/bin/perl ' . $solution->{options}->{perl} . '/lib/ExtUtils/xsubpp -typemap ' . $solution->{options}->{perl} . '/lib/ExtUtils/typemap src\pl\plperl\SPI.xs >src\pl\plperl\SPI.c');
+       system($solution->{options}->{perl} . '/bin/perl ' . "$xsubppdir/ExtUtils/xsubpp -typemap " . $solution->{options}->{perl} . '/lib/ExtUtils/typemap src\pl\plperl\SPI.xs >src\pl\plperl\SPI.c');
        if ((!(-f 'src\pl\plperl\SPI.c')) || -z 'src\pl\plperl\SPI.c') {
            unlink('src\pl\plperl\SPI.c'); # if zero size
            die 'Failed to create SPI.c' . "\n";