Opened 19 years ago

Closed 18 years ago

#1470 closed enhancement (fixed)

Request support for Oracle Instant Client

Reported by: b.veldkamp@… Owned by: dmorissette
Priority: high Milestone:
Component: Build Problems Version: unspecified
Severity: minor Keywords:
Cc: fsimon@…

Description

Another enhancement request: 

I'd like to have proper build support for Oracle Instant Client.

By default, Instant Client libraries are installed in:
/usr/lib/oracle/<version>/client 
and header files are located in:
/usr/lib/oracle/<version>/client/sdk/include. 

I run configure with the following parameter:
./configure --with-oraclespatial=/usr/lib/oracle/10g/client

The makefile then contains:
ORACLESPATIAL_LIB=-L/usr/lib/oracle/10g/client/sdk/include/lib -lclntsh
ORACLESPATIAL_INC=-I/usr/lib/oracle/10g/client/sdk/include/rdbms/demo
-I/usr/lib/oracle/10g/client/sdk/include/rdbms/public

Which should be:
ORACLESPATIAL_LIB=-L/usr/lib/oracle/10g/client -lclntsh
ORACLESPATIAL_INC=-I/usr/lib/oracle/10g/client/sdk/include 

Similar changes are needed for mapscript/php3/Makefile

If I manually change the makefile(s), everything works, but obviously I'd prefer
not to do that.

Berend

Change History (6)

comment:1 by dmorissette, 19 years ago

Cc: fsimon@… added
Owner: changed from mapserverbugs to dmorissette@…
I don't have oracle to test this, so I'll need more infos from you: In order to
properly detect which path to use for each variable in the Makefile, we need to
identify at least one file that the configure script should look for in each
directory. 

After a quick look at the code, it seems that we could look for "oci.h" in the
ORACLESPATIAL_INC directory and for "libclntsh.so" in the ORACLESPATIAL_LIB
directory. Can you please confirm that it's ok to base our tests on those files?

comment:2 by b.veldkamp@…, 19 years ago

Instant Client can freely be downloaded here (35MB):
http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html

One thing: libclntsh.so is *not* included, it is a symlink to libclntsh.so.10.1
which I created myself, since most application look for libclntsh.so anyway.

Here's a complete file listing for Instant Client 10g:

The directory /usr/lib/oracle/<version>/client contains the files:
classes12.jar
libclntsh.so.10.1
libnnz10.so
libocci.so.10.1
libociei.so
libocijdbc10.so
ojdbc14.jar


Or under Windows:
oraociei10.dll
oci.dll
ocijdbc10.dll
ociw32.dll
ojdbc14.jar
orannzsbb10.dll
oraocci10.dll
classes12.jar


/usr/lib/oracle/<version>/client/sdk/include contains the files:
nzerror.h
nzt.h
occiAQ.h
occiCommon.h
occiControl.h
occiData.h
occi.h
occiObjects.h
oci1.h
oci8dp.h
ociap.h
ociapr.h
ocidef.h
ocidem.h
ocidfn.h
ociextp.h
oci.h
ocikpr.h
ocixmldb.h
odci.h
oratypes.h
orid.h
ori.h
orl.h
oro.h
ort.h
xa.h

comment:3 by dmorissette, 18 years ago

Cc: hobu@… added
Status: newassigned
ORACLESPATIAL_INC used to contain "-I$ORA_HOME/rdbms/demo" which is a directory
in the "full sdk" distribution, but I do not know which file we need from that
directory, and checking with Howard he doesn't see any required file in his copy
of the 10i distribution.

Does anyone know why we need the rdbms/demo directory in the include path? Which
file do we need and should the configure script look for in that directory?

Anyway, for now to avoid breaking things I left the "-I$ORA_HOME/rdbms/demo" in
the include path in all cases, it won't hurt even if the directory does not
exist or is unused, but it would be nice to get rid of this dir in the include
path if it's not needed.

I have applied the patch in CVS HEAD and tested against
instantclient-basic-linux32-10.2.0.1 and the build passes.

Howard, can you please test the latest configure script against the regular set
of libs that you have, and if everything still passes then I will backport to 4.8.2

comment:4 by dmorissette, 18 years ago

Howard reported that his RPM-based install has oci.h in
/usr/include/oracle/10g/client and libclntsh in /usr/include/oracle/10g/client.

Added the following ugly hack to support that case. Note that this may break if
multiple versions of Oracle Instant Client are installed in this manner on the
same machine:

@@ -1352,6 +1352,7 @@
   dnl Try to locate lib directory
   test -f $ORA_HOME/lib/libclntsh.so && ORA_LIBDIR="$ORA_HOME/lib"
   test -f $ORA_HOME/libclntsh.so &&     ORA_LIBDIR="$ORA_HOME"
+  test -f $ORA_HOME/lib/oracle/10*/client/lib/libclntsh.so &&
ORA_LIBDIR=`dirname $ORA_HOME/lib/oracle/10*/client/lib/libclntsh.so`
  
   if test -z "$ORA_LIBDIR" ; then
     AC_MSG_ERROR([Oracle Spatial: libclntsh.so not found.])
@@ -1360,6 +1361,7 @@
   dnl Try to locate include directory
   test -f $ORA_HOME/sdk/include/oci.h && ORA_INCDIR="$ORA_HOME/sdk/include"
   test -f $ORA_HOME/rdbms/public/oci.h && ORA_INCDIR="$ORA_HOME/rdbms/public"
+  test -f $ORA_HOME/include/oracle/10*/client/oci.h && ORA_INCDIR=`dirname
$ORA_HOME/include/oracle/10*/client/oci.h`
  
   if test -z "$ORA_INCDIR" ; then
     AC_MSG_ERROR([Oracle Spatial: oci.h not found.])

comment:5 by dmorissette, 18 years ago

*** Bug 1683 has been marked as a duplicate of this bug. ***

comment:6 by dmorissette, 18 years ago

Resolution: fixed
Status: assignedclosed
Fixed. Committed to both 4.9 and 4.8.2 in CVS.
Note: See TracTickets for help on using tickets.