On Wed, Jan 11, 2006 at 10:22:18AM +0000, Tim Bunce wrote:
> > Running
> > 
> >     ORACLE_HOME=/usr/lib/oracle/10.2.0.1/client/lib perl Makefile.PL -m 
> > /usr/share/oracle/10.2.0.1/client/demo.mk
> > 
> > seems to go well for the Makefile.PL, but make is not able to find
> > the header files. So it seems that some more tweaking will be needed
> > for .rpm instalations of Instant Client where the only common path of
> > the installation is /usr.
> 
> I've added /usr/include/oracle/$client_version_full/client to the list
> of directories searched for header files[1], and added an option to
> explicitly add an extra directory to the front of that list.

The directory returned by find_headers is the full

        /usr/include/oracle/10.2.0.1/client

path (in my case). The code

        map { "-I$OH/$_" }

make it into

        -I/usr/lib/oracle/10.2.0.1/client//usr/include/oracle/10.2.0.1/client

for my value of

        ORACLE_HOME=/usr/lib/oracle/10.2.0.1/client

So in my case (but I'm not sure what the general goal of that code is),
just prepending -I (and not -I$OH) fixed the compilation.

--- Makefile.PL.orig    2006-01-16 14:40:52.000000000 +0100
+++ Makefile.PL 2006-01-16 14:51:55.000000000 +0100
@@ -635,7 +635,7 @@
     my $OCIINCLUDE = expand_mkvars($MK{INCLUDE} || '', 0, 0);
     # $OCIINCLUDE .= " -I$OH/rdbms/demo";
     my @h_dirs = find_headers();
-    my $inc = join " ", map { "-I$OH/$_" } @h_dirs;
+    my $inc = join " ", map { "-I$_" } @h_dirs;
     $opts{INC}  = "$inc $OCIINCLUDE -I$dbi_arch_dir";
 }

@@ -1298,6 +1298,7 @@

 sub expand_mkvars {
     my ($string, $strip, $backtick, $level, $maxlevel) = @_;
+    return unless defined $string;
     $level ||= 1;
     local($_) = $string;
     print "$level Expanding $_\n" if $::opt_d;

-- 
------------------------------------------------------------------------
 Honza Pazdziora | [EMAIL PROTECTED] | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
                Only self-confident people can be simple.

Reply via email to