[PHP-DEV] PHP 4.0 Bug #7792 Updated: -lsybctl failure at FreeTDS From: alex <email protected>
Date: 11/13/00

ID: 7792
User Update by: alex <email protected>
Status: Open
Bug Type: Compile Failure
Description: -lsybctl failure at FreeTDS

ok, I had to patch php-4.0.3pl1 in order to compile php --with-sybase-ct using freetds libs (patch at the end of this report)

the problem is that FreeTDS does not have a couple of files that php looks for when compiling --with-sybase-ct support, those files (if I'm not mistaken) are:

libcs.so
libcomn.so
libintl.so
libtcl.so
libsybtcl.so
libinsck.so

now, I've read the bug report #7595 http://bugs.php.net/bugs.php?id=7595 which is directly related to this issue, in fact the patch I built is strictly based on the patch laszlo talks about on that bug-report. But this one works on 4.0.3pl1

Basically: freeTDS is useless on php4 unless you patch php, so It's more a php issue than a freetds issue, would be possible for you guys to help in the next releases of php by including something like --with-freetds instead of --with-sybase-ct (or something like it) in a way that it wont look for those missing files?

Well, unless php team incorporates a way to compile freetds support without hacking php we'll just have to patch php from version to version, (which is not bad for me since I already learned how to do it, but for the rest of the guys who are starting with php... well it can be a real pain!)

and here's the patch I've used to succesfully compile freeTDS as --with-sybase-ct (maybe it has some errors, it's my first patch EVER.. go figure :))

diff -u -r php-4.0.3pl1/configure php-4.0.3pl1-patched/configure
--- php-4.0.3pl1/configure Sun Oct 15 08:47:10 2000
+++ php-4.0.3pl1-patched/configure Mon Nov 13 21:55:17 2000
@@ -16720,7 +16720,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="-lintl $LIBS"
+#LIBS="-lintl $LIBS"
 cat > conftest.$ac_ext <<EOF
 #line 16726 "configure"
 #include "confdefs.h"
@@ -39336,7 +39336,7 @@
  *)
 
    
- LIBS="-lcs $LIBS"
+ #LIBS="-lcs $LIBS"
 
 
   ;;
@@ -39360,7 +39360,7 @@
  *)
 
    
- LIBS="-lcomn $LIBS"
+ #LIBS="-lcomn $LIBS"
 
 
   ;;
@@ -39372,7 +39372,7 @@
  *)
 
    
- LIBS="-lintl $LIBS"
+ #LIBS="-lintl $LIBS"
 
 
   ;;
@@ -39388,7 +39388,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="-ltcl $SYBASE_CT_LIBS $LIBS"
+#LIBS="-ltcl $SYBASE_CT_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
 #line 39394 "configure"
 #include "confdefs.h"
@@ -39422,7 +39422,7 @@
  *)
 
    
- LIBS="-ltcl $LIBS"
+ #LIBS="-ltcl $LIBS"
 
 
   ;;
@@ -39436,7 +39436,7 @@
  *)
 
    
- LIBS="-lsybtcl $LIBS"
+ #LIBS="-lsybtcl $LIBS"
 
 
   ;;
@@ -39451,7 +39451,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="-linsck $LIBS"
+#LIBS="-linsck $LIBS"
 cat > conftest.$ac_ext <<EOF
 #line 39457 "configure"
 #include "confdefs.h"
@@ -39485,7 +39485,7 @@
  *)
 
    
- LIBS="-linsck $LIBS"
+ #LIBS="-linsck $LIBS"
 
 
   ;;
@@ -39502,7 +39502,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="-linsck $LIBS"
+#LIBS="-linsck $LIBS"
 cat > conftest.$ac_ext <<EOF
 #line 39508 "configure"
 #include "confdefs.h"
@@ -39536,7 +39536,7 @@
  *)
 
    
- LIBS="-linsck $LIBS"
+ #LIBS="-linsck $LIBS"
 
 
   ;;
diff -u -r php-4.0.3pl1/ext/sybase_ct/config.m4 php-4.0.3pl1-patched/ext/sybase_ct/config.m4
--- php-4.0.3pl1/ext/sybase_ct/config.m4 Sat Jun 24 06:01:51 2000
+++ php-4.0.3pl1-patched/ext/sybase_ct/config.m4 Mon Nov 13 21:57:19 2000
@@ -20,21 +20,11 @@
     fi
         AC_ADD_INCLUDE($SYBASE_CT_INCDIR)
         AC_ADD_LIBPATH($SYBASE_CT_LIBDIR)
- AC_ADD_LIBRARY(cs)
         AC_ADD_LIBRARY(ct)
- AC_ADD_LIBRARY(comn)
- AC_ADD_LIBRARY(intl)
- SYBASE_CT_LIBS="-lcs -lct -lcomn -lintl"
+ SYBASE_CT_LIBS="-lct"
     old_LDFLAGS=$LDFLAGS
     LDFLAGS="$LDFLAGS -L$SYBASE_CT_LIBDIR"
- AC_CHECK_LIB(tcl, netg_errstr,
- [ AC_ADD_LIBRARY(tcl) ],
- [ AC_ADD_LIBRARY(sybtcl) ],
- [ $SYBASE_CT_LIBS ])
- AC_CHECK_LIB(insck, insck__getVdate,
- [ AC_ADD_LIBRARY(insck) ])
- AC_CHECK_LIB(insck, bsd_tcp,
- [ AC_ADD_LIBRARY(insck) ])
+
       LDFLAGS=$old_LDFLAGS
   else
     AC_MSG_RESULT(no)

Previous Comments:
---------------------------------------------------------------------------

[2000-11-13 15:02:54] alex <email protected>
php4.0.3pl1 'make' fails when using ./configure --with-sybase-ct=/usr/local/freetds with the following error:

make[1]: Entering directory `/src/php-4.0.3pl1'
/bin/sh /src/php-4.0.3pl1/libtool --silent --mode=link gcc -I. -I/src/php-4.0.3pl1/ -I/src/php-4.0.3pl1 -I/src/php-4.0.3pl1/main -I/www/include -I/src/php-4.0.3pl1/Zend -I/src/php-4.0.3pl1 -I/usr/local/include/mysql -I/usr/local/freetds/include -I/src/php-4.0.3pl1/ext/xml/expat/xmltok -I/src/php-4.0.3pl1/ext/xml/expat/xmlparse -I/src/php-4.0.3pl1/TSRM -DXML_BYTE_ORDER=12 -g -O2 -o libphp4.la -rpath /src/php-4.0.3pl1/libs -avoid-version -L/usr/local/lib/mysql -L/usr/local/pgsql/lib -L/usr/local/freetds/lib -R /usr/local/lib/mysql -R /usr/local/pgsql/lib -R /usr/local/freetds/lib stub.lo Zend/libZend.la sapi/apache/libsapi.la main/libmain.la regex/libregex.la ext/gettext/libgettext.la ext/mysql/libmysql.la ext/pcre/libpcre.la ext/pgsql/libpgsql.la ext/posix/libposix.la ext/session/libsession.la ext/standard/libstandard.la ext/sybase_ct/libsybase_ct.la ext/xml/libxml.la TSRM/libtsrm.la -ldl -lsybtcl -lintl -lcomn -lct -lcs -lpq -lmysqlclient -lresolv -lm -ldl -lcrypt -lnsl -lresolv
/usr/bin/ld: cannot find -lsybtcl
collect2: ld returned 1 exit status
make[1]: *** [libphp4.la] Error 1
make[1]: Leaving directory `/src/php-4.0.3pl1'
make: *** [all-recursive] Error 1

here's the details of my installation:

freeTDS from cvs (version 0.51)
was compiled with:
./configure --with-tdserver=4.2 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static
make && make install
(everything went ok, no errors)

then at php4.0.3pl1 src dir:
./configure --with-apxs=/www/bin/apxs --with-mysql=/usr/local --with-ftp --with-gettext --with-config-file-path=/etc --disable-debug --enable-track-vars --with-pgsql=/usr/local/pgsql --with-sybase-ct=/usr/local/freetds

as far as I can tell that required libsybctl file is not available at the freetds distribution, it is available though, at the sybase-common-11.9.2-3.i386.rpm (from sybase.com)

I'll now try to mix files from freetds and sybase-common but I never really liked to play Mr. Frankenstein.

anyway, any feedback would be great :)

regards,
Alex Verstraeten

---------------------------------------------------------------------------

Full Bug description available at: http://bugs.php.net/?id=7792

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: php-dev-unsubscribe <email protected>
For additional commands, e-mail: php-dev-help <email protected>
To contact the list administrators, e-mail: php-list-admin <email protected>