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.
> 

Reply via email to