Date: Sat, 7 May 2005 01:41:40 +0900 (JST) From: Norikatsu Shigemura <nork@FreeBSD.org> To: freebsd-database@FreeBSD.org Cc: freebsd-hackers@FreeBSD.org Subject: How many people do you need Oracle Instant Client8 on FreeBSD? Message-ID: <200505061641.j46GfeS8016847@sakura.ninth-nine.com>
next in thread | raw e-mail | index | archive | help
How many people do you need Oracle Instant Client a.k.a. OCI8 on FreeBSD native applications? I am tring to use FreeBSD native php5-oci8 with Linux Plugin Wrapper (LPW) technorogy. My attempt succeeded, but it doesn't work. Because there are many functions to have to convert Linux ones to FreeBSD ones. It is a deadlock in me. And so, anyone do you try to implement these ones? ------------------------------------------------------- Step 1-5: 1. Get experimental LPW from following URL(use net/cvsync). cvsync://cvsync.ninth-nine.com/LinuxPluginWrapper/ 2. Compile and install LPW and set /etc/libmap.conf. I confirmed on 6-current. I don't know [45]-stable. 3. Install following ports. ports/databases/linux-oracle-instantclient-sdk ports/databases/linux-oracle-instantclient-basic 4. Install following 000.oci8.sh script to /usr/local/etc/rc.d/ --------------------------------------------------------------- #!/bin/sh # PROVIDE: oci8 # REQUIRE: ldconfig # KEYWORD: FreeBSD . /etc/rc.subr name=oci8 start_cmd=oci8_start stop_cmd=: [ -z "$oci8_libdir" ] && oci8_libdir="/compat/linux/usr/lib/oracle/10.1.0.3/client/lib" oci8_start() { if [ -d "$oci8_libdir" ]; then /sbin/ldconfig -m "$oci8_libdir" fi } load_rc_config $name run_rc_command "$1" --------------------------------------------------------------- 5. Test, please follwoing port skelton. --------------------------------------------------------------- # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # php5-oci8/Makefile # php5-oci8/files/patch-config.m4 # echo x - php5-oci8/Makefile sed 's/^X//' >php5-oci8/Makefile << 'END-of-php5-oci8/Makefile' X# New ports collection makefile for: php5-oci8 X# Date created: 2005-04-26 X# Whom: nork@FreeBSD.org X# X# $FreeBSD$ X# X XCATEGORIES= databases X XMASTERDIR= ${PORTSDIR}/lang/php5 X XPKGNAMESUFFIX= -oci8 X X.include "${MASTERDIR}/Makefile" X X.if ${PHP_MODNAME} == "oci8" XOCI8_VER= 10.1.0.3 XBUILD_DEPENDS+= ${LINUXBASE}/usr/include/oracle/${OCI8_VER}/client/oci.h:${PORTSDIR}/local/linux-oracle-instantclient-sdk XRUN_DEPENDS+= ${LINUXBASE}/usr/include/oracle/${OCI8_VER}/client/oci.h:${PORTSDIR}/local/linux-oracle-instantclient-sdk X XCONFIGURE_ARGS+=--with-oci8-instant-client=${LINUXBASE}/usr/lib/oracle/10.1.0.3/client/lib X.endif X X X X#CONFIGURE_ENV+= LDFLAGS=-R${LINUXBASE}/usr/lib/oracle/10.1.0.3/client/lib /bin/sh -x END-of-php5-oci8/Makefile echo x - php5-oci8/files/patch-config.m4 sed 's/^X//' >php5-oci8/files/patch-config.m4 << 'END-of-php5-oci8/files/patch-config.m4' X--- config.m4.orig Fri Feb 25 20:32:01 2005 X+++ config.m4 Sun May 1 23:48:55 2005 X@@ -18,31 +18,6 @@ X ]) X ]) X X-AC_DEFUN([AC_OCI8_VERSION],[ X- AC_MSG_CHECKING([Oracle version]) X- if test -s "$OCI8_DIR/orainst/unix.rgs"; then X- OCI8_VERSION=`grep '"ocommon"' $OCI8_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4` X- test -z "$OCI8_VERSION" && OCI8_VERSION=7.3 X- elif test -f $OCI8_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then X- OCI8_VERSION=10.1 X- elif test -f $OCI8_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then X- OCI8_VERSION=9.0 X- elif test -f $OCI8_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.8.0; then X- OCI8_VERSION=8.1 X- elif test -f $OCI8_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.1.0; then X- OCI8_VERSION=8.0 X- elif test -f $OCI8_DIR/lib/libclntsh.a; then X- if test -f $OCI8_DIR/lib/libcore4.a; then X- OCI8_VERSION=8.0 X- else X- OCI8_VERSION=8.1 X- fi X- else X- AC_MSG_ERROR([Oracle (OCI8) required libraries not found]) X- fi X- AC_MSG_RESULT($OCI8_VERSION) X-]) X- X AC_DEFUN([AC_OCI8IC_VERSION],[ X AC_MSG_CHECKING([Oracle Instant Client version]) X if test -f $PHP_OCI8_INSTANT_CLIENT/libociei.$SHLIB_SUFFIX_NAME; then X@@ -60,149 +35,15 @@ X AC_MSG_RESULT([$OCI8_VERSION]) X ]) X X-PHP_ARG_WITH(oci8, for Oracle (OCI8) support using ORACLE_HOME installation, X-[ --with-oci8[=DIR] Include Oracle (OCI8) support using an ORACLE_HOME X- install. The default DIR is ORACLE_HOME]) X- X-if test "$PHP_OCI8" = "no"; then X- PHP_ARG_WITH(oci8-instant-client, for Oracle (OCI8) support using Oracle Instant Client, X- [ --with-oci8-instant-client[=DIR] X- Include Oracle (OCI8) support using X- Oracle Instant Client. DIR is the directory with the X- Instant Client libraries. On Linux it will default to X- /usr/lib/oracle/<most_recent_version>/client/lib X- Other platforms will need to have it explicitly specified.]) X-else X- PHP_OCI8_INSTANT_CLIENT="no"; X-fi X- X-if test "$PHP_OCI8" != "no"; then X- X- if test "$PHP_OCI8_INSTANT_CLIENT" != "no"; then X- AC_MSG_ERROR([--with-oci8 and --with-oci8-instant-client are mutually exclusive]) X- fi X- X- AC_MSG_CHECKING([Oracle Install Directory]) X- if test "$PHP_OCI8" = "yes"; then X- OCI8_DIR=$ORACLE_HOME X- else X- OCI8_DIR=$PHP_OCI8 X- fi X- AC_MSG_RESULT($OCI8_DIR) X- X- if test -d "$OCI8_DIR/rdbms/public"; then X- PHP_ADD_INCLUDE($OCI8_DIR/rdbms/public) X- OCI8_INCLUDES="$OCI8_INCLUDES -I$OCI8_DIR/rdbms/public" X- fi X- if test -d "$OCI8_DIR/rdbms/demo"; then X- PHP_ADD_INCLUDE($OCI8_DIR/rdbms/demo) X- OCI8_INCLUDES="$OCI8_INCLUDES -I$OCI8_DIR/rdbms/demo" X- fi X- if test -d "$OCI8_DIR/network/public"; then X- PHP_ADD_INCLUDE($OCI8_DIR/network/public) X- OCI8_INCLUDES="$OCI8_INCLUDES -I$OCI8_DIR/network/public" X- fi X- if test -d "$OCI8_DIR/plsql/public"; then X- PHP_ADD_INCLUDE($OCI8_DIR/plsql/public) X- OCI8_INCLUDES="$OCI8_INCLUDES -I$OCI8_DIR/plsql/public" X- fi X- X- if test -f "$OCI8_DIR/lib/sysliblist"; then X- PHP_EVAL_LIBLINE(`cat $OCI8_DIR/lib/sysliblist`, OCI8_SYSLIB) X- elif test -f "$OCI8_DIR/rdbms/lib/sysliblist"; then X- PHP_EVAL_LIBLINE(`cat $OCI8_DIR/rdbms/lib/sysliblist`, OCI8_SYSLIB) X- fi X- X- AC_OCI8_VERSION($OCI8_DIR) X- case $OCI8_VERSION in X- 8.0) X- PHP_ADD_LIBRARY_WITH_PATH(nlsrtl3, "", OCI8_SHARED_LIBADD) X- PHP_ADD_LIBRARY_WITH_PATH(core4, "", OCI8_SHARED_LIBADD) X- PHP_ADD_LIBRARY_WITH_PATH(psa, "", OCI8_SHARED_LIBADD) X- PHP_ADD_LIBRARY_WITH_PATH(clntsh, $OCI8_DIR/lib, OCI8_SHARED_LIBADD) X- ;; X- X- 8.1) X- PHP_ADD_LIBRARY(clntsh, 1, OCI8_SHARED_LIBADD) X- PHP_ADD_LIBPATH($OCI8_DIR/lib, OCI8_SHARED_LIBADD) X- X- dnl X- dnl OCI_ATTR_STATEMENT is not available in all 8.1.x versions X- dnl X- PHP_OCI_IF_DEFINED(OCI_ATTR_STATEMENT, [AC_DEFINE(HAVE_OCI8_ATTR_STATEMENT,1,[ ])], $OCI8_INCLUDES) X- ;; X- X- 9.0) X- PHP_ADD_LIBRARY(clntsh, 1, OCI8_SHARED_LIBADD) X- PHP_ADD_LIBPATH($OCI8_DIR/lib, OCI8_SHARED_LIBADD) X- AC_DEFINE(HAVE_OCI8_ATTR_STATEMENT,1,[ ]) X- X- dnl These functions are only available in version >= 9.2 X- PHP_CHECK_LIBRARY(clntsh, OCIEnvNlsCreate, X- [ X- PHP_CHECK_LIBRARY(clntsh, OCINlsCharSetNameToId, X- [ X- AC_DEFINE(HAVE_OCI_9_2,1,[ ]) X- OCI8_VERSION=9.2 X- ], [], [ X- -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD X- ]) X- ], [], [ X- -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD X- ]) X- ;; X- X- 10.1) X- PHP_ADD_LIBRARY(clntsh, 1, OCI8_SHARED_LIBADD) X- PHP_ADD_LIBPATH($OCI8_DIR/lib, OCI8_SHARED_LIBADD) X- AC_DEFINE(HAVE_OCI8_ATTR_STATEMENT,1,[ ]) X- AC_DEFINE(HAVE_OCI_9_2,1,[ ]) X- AC_DEFINE(HAVE_OCI8_TEMP_LOB,1,[ ]) X- AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ]) X- ;; X- X- *) X- AC_MSG_ERROR([Unsupported Oracle version]) X- ;; X- esac X- X- dnl X- dnl Check if we need to add -locijdbc8 X- dnl X- PHP_CHECK_LIBRARY(clntsh, OCILobIsTemporary, X- [ X- AC_DEFINE(HAVE_OCI8_TEMP_LOB,1,[ ]) X- ], [ X- PHP_CHECK_LIBRARY(ocijdbc8, OCILobIsTemporary, X- [ X- PHP_ADD_LIBRARY(ocijdbc8, 1, OCI8_SHARED_LIBADD) X- AC_DEFINE(HAVE_OCI8_TEMP_LOB,1,[ ]) X- ], [], [ X- -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD X- ]) X- ], [ X- -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD X- ]) X- X- dnl X- dnl Check if we have collections X- dnl X- PHP_CHECK_LIBRARY(clntsh, OCICollAssign, X- [ X- AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ]) X- ], [], [ X- -L$OCI8_DIR/lib $OCI8_SHARED_LIBADD X- ]) X- X- X- PHP_NEW_EXTENSION(oci8, oci8.c, $ext_shared) X- AC_DEFINE(HAVE_OCI8,1,[ ]) X- X- PHP_SUBST_OLD(OCI8_SHARED_LIBADD) X- PHP_SUBST_OLD(OCI8_DIR) X- PHP_SUBST_OLD(OCI8_VERSION) X+PHP_ARG_WITH(oci8-instant-client, for Oracle (OCI8) support using Oracle Instant Client, X+[ --with-oci8-instant-client[=DIR] X+ Include Oracle (OCI8) support using X+ Oracle Instant Client. DIR is the directory with the X+ Instant Client libraries. On Linux it will default to X+ /usr/lib/oracle/<most_recent_version>/client/lib X+ Other platforms will need to have it explicitly specified.]) X X-elif test "$PHP_OCI8_INSTANT_CLIENT" != "no"; then X+if test "$PHP_OCI8_INSTANT_CLIENT" != "no"; then X X AC_MSG_CHECKING([Oracle Instant Client directory]) X if test "$PHP_OCI8_INSTANT_CLIENT" = "yes"; then X@@ -221,7 +62,7 @@ X AC_MSG_CHECKING([Oracle Instant Client SDK header directory]) X X dnl Header directory for Instant Client SDK RPM install X- OCISDKRPMINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | sed -e 's!^/usr/lib/oracle/\(.*\)/client/lib[[/]]*$!/usr/include/oracle/\1/client!'` X+ OCISDKRPMINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | sed -e 's!lib/oracle/\(.*\)/client/lib[[/]]*$!include/oracle/\1/client!'` X X dnl Header directory for Instant Client SDK zip file install X OCISDKZIPINC=$PHP_OCI8_INSTANT_CLIENT/sdk/include END-of-php5-oci8/files/patch-config.m4 exit ---------------------------------------------------------------
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200505061641.j46GfeS8016847>