At 9:51 PM +0000 2/17/07, Tim Bunce wrote:
On Sat, Feb 17, 2007 at 03:22:14AM -0800, Darren Duncan wrote:
> So I updated t/85gofer.t and re-ran 'make test'.
This time, I just showed the output of testing t/85gofer.t rather
than the whole test suite.
> FYI, the Perl I ran the original DBI Makefile under is 5.8.8 no
threads, installed in a non-standard location (shown in the output
below). My system Perl is 5.8.6 with threads, and I have left it
pristine, except for SVK. So I don't know if the error message is
mentioning 5.8.6 because that's my system perl version or if there is
some other reason.
The pipeone (and stream) transports use IPC::Open3 to launch perl in a
subprocess that data can be sent to and received from via stdio:
perl -MDBI::Gofer::Transport::pipeone -e run_one_stdio
To try to make sure the same libs are used by the subprocess, it does this:
local $ENV{PERL5LIB} = join ":", @INC;
It presumes it'll get the same perl executable because it assumes the
perl being used is the first in the PATH.
Does that help you shed some light on what's happening?
What command did you use to execute Makefile.PL?
This is what I did on my system, after unpacking the DBI archive:
cd /Volumes/Programming160/downloads/DBI-1.54/
/Volumes/Programming160/perl6 Makefile.PL
make
make test
The "perl6" is a soft link, and the actual Perl is at:
/Volumes/Programming160/Perl/perl588_v6/bin/perl
(It is called "perl6" because I created that mainly to use v6.pm
with; but I didn't get to installing that yet, and it is otherwise
pristine, afaik.)
Is the PATH the same now as when you executed Makefile.PL?
What does "grep '^FULLPERL' Makefile" show?
It shows this:
FULLPERL = /Volumes/Programming160/perl6
FULLPERLRUN = $(FULLPERL)
FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
FULLPERL = /Volumes/Programming160/perl6
... which I would have expected.
FYI, I also develop Pugs with a Perl 5 installed in a custom location
(called "/Volumes/Programming160/perl58"), in the same way, and its
build system works just fine despite invoking various external Perl
processes, and it is just using the custom Perl.
AFAIK, whatever Perl executable one uses when invoking any
Makefile.PL is the one that should be used by the distro thereafter,
and that's what usually happens.
And in case you were wondering whether I do anything funny, I do in
fact customize Perl's location using the well-documented:
sh Configure -d -Dprefix=/Volumes/Programming160/Perl/nnn/
make
make test
make install
... so I don't clobber my system perl, and its easy to work with
multiple Perl installs at the same time ... if something blows up, I
can just toss that custom Perl folder and 'make install' on Perl
again to get a pristine one.
This also works well if I want to install my own Perl on a machine I
don't own, such as a shared web host.
-- Darren Duncan