[Zope] re: trouble compiling DCOracle

Erik Myllymaki erik@pacific-shores.com
Sat, 14 Oct 2000 22:29:53 -0700


--- In zope@egroups.com, Ayhan Ergul <ergul@c...> wrote:
> > The output from *make* had a number of errors, but compiled the
shared
> > objects:
> 
> Warnings from C compilers are always part of the fun! They say
something
> can potentially be/go wrong, but not necessarily so. Take a deep
breath
> and move on.
> 
> > Testing the created shared object files went something like this:
> >
> > [sweetrig@shamalama src]# python DCOracle_test.py
> > Traceback (innermost last):
> >   File &#34;DCOracle_test.py&#34;, line 1, in ?
> >     import Buffer, oci_, sys
> > ImportError: libclntsh.so.8.0: cannot open shared object file: No
such
> > file or directory
> 
> 
> Make sure your ORACLE_HOME environment var is properly set before
running
> the test script. You'll probably want to put it in your zope start
script
> too.
> 
> 
> Ayhan Ergul <ergul@a...>


So I tried a different Setup script that I got from a post on the
zopesite:

######## START SETUP Script ##########

*shared*

# Setup file for Oracle 8.1.6 (Tested for Linux on Intel).
#
# Unfortunately, the libraries needed to link Oracle change from revision
# to revision.
#
# Oracle provides a make file for building "demo" programs in
# $ORACLE_HOME/rdbms/demo/demo_rdbms.mk.  I have been unable to
# use this make file to build Python extensions. Adapting it is
# not adequate, because it may change for new Oracle revs.
# My approach is to use demo_rdbms.mk to build one of the
# demo programs, look at the libraries linked, and start from there. :-(
#

ORACLE_INCLUDES=$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/rdbms/public
-I$(ORACLE_HOME)/network/public -I$(ORACLE_HOME)/plsql/public

ORACLE_L=-lJNLSLib3 -lgslsg8 -lnsslb8 -lserver8 -lJNLSTool -lgslssb8 -lntcp8
\
-lsgsl_s8 -lagent8 -lgslssf8 -lntcps8 -lskgxp8 -lgx8 -lntns8 \
-lskgxpd -lnus8 -lslax8 -lclient8 -lldapclnt8 -lnzjs8 \
-lslpm -lclntsh -lmm -locijdbc8 -lsql8 -lcommon8 -ln8 -locijdbc8_g \
-lsqlplus -lcore8 -lnbeq8 -lordim8 -lsvrmgrl -lnent8 -lordim8 \
-ltrace8 -lctx8 -lnhost8 -lordsdo8 -ltracefe8 -lctxc8 -lnjni8 -lordts8 \
-ltracept8 -lctxs8 -lordvirt8 -ldbicx8 -lnl8 -lowm2 \
-lvppdc -lgeneric8 -lnldap8 -lplc8 -lvsn8 -lgslavl8 -lnls8 -lplp8 \
-lwtc8 -lgslber_s8 -lnoname8 -lpls8 -lzx8 -lgsldb8 -lnro8 -lpsa8 -lgslr8 \
-lnsgr8 -lqsmashr

ORACLE_LIBS=$(ORACLE_HOME)/lib/ -L$(ORACLE_HOME)/rdbms/lib
$(ORACLE_HOME)/rdbms/lib/defopt.o
$(ORACLE_HOME)/lib/sscoreed.o $(ORACLE_HOME)/lib/nautab.o
$(ORACLE_HOME)/lib/naeet.o
$(ORACLE_HOME)/lib/naect.o $(ORACLE_HOME)/lib/naedhs.o $(ORACLE_L)
$(ORACLE_L)

oci_ oci_.c -I$(ORACLE_INCLUDES) -L$(ORACLE_LIBS) -DDCORACLE8

Buffer Buffer.c

######## END of SETUP Script ##########


This time the error is a little different:

Traceback (innermost last):
  File "DCOracle_test.py", line 1, in ?
    import Buffer, oci_, sys
ImportError: ./oci_.so: undefined symbol: kpumfs


I tried the trick in the README - got a list of all symbols in the
Oracle libs and it turns out kpumfs is in four, all of which are
included in the setup file:

% grep kpumfs /var/tmp/oracle.symbols
libclient8.a[kpum.o]: kpumfs T 00000140
libclntsh.so: kpumfs T 0018eb10
libclntsh.so.8.0: kpumfs T 0018eb10
libvppdc.so: kpumfs T 000e2a40

I'm at a bit of a loose end here...

Thanks again,

Erik Myllymaki