Hi, In order to get DBD:Oracle 1.12 to compile AND use OCI8 on our HPUX 11i systems I had to make some modifications to the supplied Makefile.PL.
1. Force join lines which oracle returns as it's build command, in order to be able to use OCI8 calls (otherwise I get the unable to interpret OCI commands error, due to multi-line output) 2. When building against Oracle 9.2.0.2 I noticed that somehow "-l:libcl.a" got into the library list. Obviously that causes troubles when building a shared extension :) So.. I sed/grepped '-l:libcl.a' out of the linkwith list and it compiles fine once again. I'm not sure if the way I force the oci8/line-join is the best or preferred solution, it works for me though. (and yes, I did manage to build a working DBD 1.12 against Oracle 9.2.0.2, that required a perl configured and build for 64bits though) Patch below: # diff -c DBD-Oracle-1.12/Makefile.PL Makefile.fixed *** DBD-Oracle-1.12/Makefile.PL Fri Aug 31 18:27:15 2001 --- Makefile.fixed Wed Mar 12 17:55:23 2003 *************** *** 299,304 **** --- 299,328 ---- @cmds = grep { my $skip = $prev eq "echo $_"; $prev=$_; !$skip } @cmds; my @prolog; push @prolog, shift @cmds while @cmds && $cmds[0] !~ /DBD_ORA_EXE/; print "Oracle oci build prolog:\n\t", join("\n\t", @prolog), "\n" if @prolog; + + # Try harder to get OCI8 + # Join multi-line output + my $xx=join(" ",@cmds); + chomp $xx; + + # expand `` commands + $xx=~s/(`[^`]+?`)/$1/eeg; + $xx=~s/[\t\n]+/ /g; + + # strip duplicate libraries but keep order + my %lh; + my $xx2=''; + foreach my $w (split(/ +/,$xx)) { + if (!exists $lh{$w}) { + $xx2.=$w.' '; + $lh{$w}++; + } else { + print "skipped duplicate: $w\n" if $::opt_v; + } + } + undef @cmds; + push (@cmds,"$xx2\n"); + print "Oracle oci build command:\n\t", join("\n\t", @cmds), "\n"; while ($cmds[0] =~ s/\\$/ /) { # join lines split with \'s $cmds[0] .= splice(@cmds,1,1); *************** *** 364,369 **** --- 388,398 ---- . " seems to conflict with -l:libcl.a\n" ; $linkwith =~ s/\s*-lcl\b//g; } + + if ( $os eq "hpux" && $osvers >= 11 and $linkwith =~ m/-l:libcl.a/) { + print "Warning: stripping -l:libcl.a from liblist (conflict with ld looking for shared libs)"; + $linkwith =~ s/\s*-l:libcl.a\b//g; + } if (($linkwith !~ m/-lcl/) || ($linkwith !~ m/-lpthread/)) { print "Warning: Oracle is built with multi-threading libraries\n" ----------------------------------- Frans Postma, (050-58) 81 852 ATOS Origin, Unix Support "If at first you don't succeed, skydiving isn't for you" > -----Oorspronkelijk bericht----- > Van: Tim Bunce [mailto:[EMAIL PROTECTED] > Verzonden: donderdag 13 maart 2003 14:14 > Aan: [EMAIL PROTECTED] > CC: [EMAIL PROTECTED]; [EMAIL PROTECTED] > Onderwerp: Status of DBI 1.35 (was: Install of DBI) > > > On Thu, Mar 13, 2003 at 09:57:12AM +0100, > [EMAIL PROTECTED] wrote: > > > > www.perl.com/CPAN should work nicely :) > > > > Latest stable version of DBI would appear to be 1.30. > Changes coming a bit > > too fast to call the newer versions 'stable' though (sorry Tim). > > No need to appologise. > > The only problems I'm aware of for 1.35 are: > > perl Makefile.PL PREFIX=<whatever> reported not to work > (not checked yet) > Minor tweak to t/80proxy.t test (not important) > The t/zz_* test files are not deleted by 'make clean' (not important) > > So I think it's well worth testing by a wider audience now. > > Tim. >