From owner-freebsd-ports@FreeBSD.ORG Fri May 6 16:41:43 2005 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6676516A4D4; Fri, 6 May 2005 16:41:43 +0000 (GMT) Received: from sakura.ninth-nine.com (sakura.ninth-nine.com [219.127.74.120]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8810B43D9C; Fri, 6 May 2005 16:41:42 +0000 (GMT) (envelope-from nork@FreeBSD.org) Received: from nadesico.ninth-nine.com (nadesico.ninth-nine.com [219.127.74.122]) by sakura.ninth-nine.com (8.13.3/8.13.1/NinthNine) with SMTP id j46GfeS8016847; Sat, 7 May 2005 01:41:40 +0900 (JST) (envelope-from nork@FreeBSD.org) Date: Sat, 7 May 2005 01:41:40 +0900 (JST) Message-Id: <200505061641.j46GfeS8016847@sakura.ninth-nine.com> From: Norikatsu Shigemura To: freebsd-database@FreeBSD.org X-Mailer: Sylpheed version 1.9.9 (GTK+ 2.6.7; i386-portbld-freebsd6.0) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-1.6 (sakura.ninth-nine.com [219.127.74.121]); Sat, 07 May 2005 01:41:40 +0900 (JST) cc: ports@FreeBSD.org cc: freebsd-hackers@FreeBSD.org Subject: How many people do you need Oracle Instant Client8 on FreeBSD? X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 May 2005 16:41:43 -0000 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//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//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 ---------------------------------------------------------------