Package: unixodbc
Version: 2.2.4-11
Severity: important
Tags: patch

When the unixodbc package is built, the SHLIBEXT C pre-processor macro
is not defined.  (I believe this is because the libltdl library is
intentionally not built by the Debian package, although I haven't tested
this hypothesis.)  The lack of definition may be seen in the buildd logs
by searching for "SHLIBEXT":

http://buildd.debian.org/fetch.php?&pkg=unixodbc&ver=2.2.4-11&arch=i386&stamp=1097873269&file=log&as=raw

Because SHLIBEXT is not set, code in DriverManager/SQLConnect.c attempts
to load a file named "/usr/lib/libodbccr.1" at runtime (which obviously
doesn't exist) instead of "/usr/lib/libodbccr.so.1".  I ran into this
while trying to configure phpbb2 to connect to a SQL Server 2000
database via ODBC.  The initial error looked like this:

Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open
cursor lib 'libodbccr' : /usr/lib/libodbccr.1: cannot open shared object
file: No such file or directory, SQL state 01000 in SQLConnect in
/usr/share/phpbb2/site/db/mssql-odbc.php on line 54

The attached patch fixes the build-time issue by modifying configure.in
and configure to simply use the $shrext variable which is set for all
configurations anyway.  This forces SHLIBEXT to be defined during build
time.  (NOTE: I tried re-running autoconf[2.*], but unixodbc has trouble
finding X libraries while running "configure" after doing this.)

Alas, this change did not fix the problem I was seeing with phpbb2.  :(

-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.4.27-2-386
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)

Versions of packages unixodbc depends on:
ii  libc6                       2.3.2.ds1-22 GNU C Library: Shared libraries an
ii  libltdl3                    1.5.6-6      A system independent dlopen wrappe
ii  libncurses5                 5.4-4        Shared libraries for terminal hand
ii  libreadline4                4.3-11       GNU readline and history libraries
ii  odbcinst1                   2.2.4-11     Support library and helper program

-- no debconf information
diff -urN unixodbc-2.2.4-11.orig/configure unixodbc-2.2.4/configure
--- unixodbc-2.2.4-11.orig/configure    2005-08-23 18:22:19.000000000 -0500
+++ unixodbc-2.2.4/configure    2005-08-23 18:29:13.000000000 -0500
@@ -19261,31 +19261,31 @@
 subdirs="$subdirs libltdl"
 
 
-echo "$as_me:$LINENO: checking which extension is used for shared libraries" 
>&5
-echo $ECHO_N "checking which extension is used for shared libraries... 
$ECHO_C" >&6
-if test "${libltdl_cv_shlibext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_last=
-  for ac_spec in $library_names_spec; do
-    ac_last="$ac_spec"
-  done
-  echo "$ac_last" | sed 's/\[.*\]//;s/^[^.]*//;s/\$.*$//;s/\.$//' > conftest
-libltdl_cv_shlibext=`cat conftest`
-rm -f conftest
 
-fi
-echo "$as_me:$LINENO: result: $libltdl_cv_shlibext" >&5
-echo "${ECHO_T}$libltdl_cv_shlibext" >&6
-if test -n "$libltdl_cv_shlibext"; then
 
-cat >>confdefs.h <<_ACEOF
-#define LTDL_SHLIB_EXT "$libltdl_cv_shlibext"
-_ACEOF
 
-fi
 
-SHLIBEXT="$libltdl_cv_shlibext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SHLIBEXT="$shrext"
 
 
 if test "x$iconv" = "xtrue";
diff -urN unixodbc-2.2.4-11.orig/configure.in unixodbc-2.2.4/configure.in
--- unixodbc-2.2.4-11.orig/configure.in 2005-08-23 18:22:19.000000000 -0500
+++ unixodbc-2.2.4/configure.in 2005-08-23 18:30:04.000000000 -0500
@@ -111,8 +111,7 @@
 AC_CONFIG_SUBDIRS(libltdl)
 
 dnl Find shared lib extension
-AC_LTDL_SHLIBEXT
-SHLIBEXT="$libltdl_cv_shlibext"
+SHLIBEXT="$shrext"
 AC_SUBST(SHLIBEXT)
 
 if test "x$iconv" = "xtrue"; 

Reply via email to