ports/81382: [fix] databases/php5-oracle: oracle extension doesn't work
Simun Mikecin
sime at logos.hr
Mon May 23 07:00:22 UTC 2005
>Number: 81382
>Category: ports
>Synopsis: [fix] databases/php5-oracle: oracle extension doesn't work
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon May 23 07:00:20 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Simun Mikecin
>Release: FreeBSD 5.4-STABLE i386
>Organization:
>Environment:
System: FreeBSD data.home.hr 5.4-STABLE FreeBSD 5.4-STABLE #0: Sat May 21 00:02:50 CEST 2005 root at data.home.hr:/var/obj/usr/src/sys/DATA i386
>Description:
oracle.so has undefined symbols, so it isn't usable at all. This is
because of the way it is linked to the libraries from the
oracle7-client port. Those libraries have circular dependency to
each other, and that can't be solved if linking using gcc since gcc
removes duplicate "-larchive" parameters before sending it to ld.
My patch solves this by linking with only one library (recreated
from libraries in the oracle7-client port).
>How-To-Repeat:
$ php -r 'echo "Hello World\n";'
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20041030/oracle.so' - /usr/local/lib/php/20041030/oracle.so: Undefined symbol "nscontrol" in Unknown on line 0
Hello World
>Fix:
--- lang/php5/Makefile.ext.orig Wed May 18 09:56:15 2005
+++ lang/php5/Makefile.ext Sun May 22 00:10:02 2005
@@ -237,6 +237,7 @@
.endif
.if ${PHP_MODNAME} == "oracle"
+USE_REINPLACE= yes
BUILD_DEPENDS+= ${LOCALBASE}/oracle7/lib/libcore3.a:${PORTSDIR}/databases/oracle7-client
RUN_DEPENDS+= ${LOCALBASE}/oracle7/lib/libcore3.a:${PORTSDIR}/databases/oracle7-client
@@ -481,4 +482,16 @@
.if ${PHP_MODNAME} == "zlib"
post-extract:
@${MV} ${WRKSRC}/config0.m4 ${WRKSRC}/config.m4
+.endif
+
+.if ${PHP_MODNAME} == "oracle"
+post-patch:
+ @${REINPLACE_CMD} -e "s|LIBORACLE7_DIR|${WRKDIR}|" ${WRKSRC}/config.m4
+
+pre-configure:
+ @cd ${WRKDIR}; \
+ for lib in c3v6 client common core3 epc generic ncr nlsrtl3 sqlnet wrap; do \
+ /usr/bin/ar x ${LOCALBASE}/oracle7/lib/lib$${lib}.a; \
+ done; \
+ /usr/bin/ar rcs liboracle7.a *.o
.endif
--- databases/php5-oracle/files/patch-config.m4.orig Mon Jul 19 10:57:06 2004
+++ databases/php5-oracle/files/patch-config.m4 Sat May 21 23:25:34 2005
@@ -1,8 +1,8 @@
---- config.m4.orig Thu Jul 8 10:22:35 2004
-+++ config.m4 Thu Jul 8 10:30:31 2004
+--- config.m4.orig Thu Dec 30 08:04:11 2004
++++ config.m4 Sat May 21 23:06:02 2005
@@ -4,8 +4,8 @@
- AC_DEFUN(AC_ORACLE_VERSION,[
+ AC_DEFUN([AC_ORACLE_VERSION],[
AC_MSG_CHECKING([Oracle version])
- if test -s "$ORACLE_DIR/orainst/unix.rgs"; then
- ORACLE_VERSION=`grep '"ocommon"' $ORACLE_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
@@ -11,11 +11,30 @@
test -z "$ORACLE_VERSION" && ORACLE_VERSION=7.3
elif test -f $ORACLE_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then
ORACLE_VERSION=9.0
-@@ -113,6 +113,7 @@
+@@ -112,25 +112,7 @@
+ if test -f $ORACLE_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME; then
PHP_ADD_LIBRARY_WITH_PATH(clntsh, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
else
- PHP_ADD_LIBRARY_WITH_PATH(core3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
-+ PHP_ADD_LIBRARY_WITH_PATH(wrap, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
- PHP_ADD_LIBRARY_WITH_PATH(nlsrtl3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
- PHP_ADD_LIBRARY_WITH_PATH(core3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
- PHP_ADD_LIBRARY_WITH_PATH(c3v6, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(core3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(nlsrtl3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(core3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(c3v6, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(nlsrtl3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(epc, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(generic, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(common, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(client, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(ncr, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(generic, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(common, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(client, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(ncr, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(client, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(oracle7, LIBORACLE7_DIR, ORACLE_SHARED_LIBADD)
+ fi
+ ;;
+
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list