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