Date: Thu, 1 Sep 2005 20:15:17 GMT From: "Brian A. Seklecki" <lavalamp@spiritual-machines.org> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/85586: ports/databases/mdbtools ODBC support Message-ID: <200509012015.j81KFG4K073792@www.freebsd.org> Resent-Message-ID: <200509012020.j81KKM9W079864@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 85586 >Category: ports >Synopsis: ports/databases/mdbtools ODBC support >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Sep 01 20:20:22 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Brian A. Seklecki >Release: 5.3 RELENG i386 >Organization: Spiritual, Machines >Environment: FreeBSD krok 5.3-RELEASE-p17 FreeBSD 5.3-RELEASE-p17 #0: Tue Jul 5 06:16:28 EDT 2005 root@krok.collaborativefusion.com:/usr/obj/usr/src/sys/KROK i386 >Description: From: mdbtools-dev@lists.sourceforge.net > For whatever reason, FreeBSD's ports/mdbtools isn't linking (or even offering > to link) against unixODBC or iODBC. > > I was browsing the list archives and someone hinted that v0.5 is "several > years" old, but thanks to sf.net's anti-spam measures on list archives, I > don't have that contact's e-mail. > > Anyway, the port lacks a maintainer and if there hasn't been an official > release in that period, that may explain a great many things. > > Anyway, It's hard to believe I'm the first person to try > >How-To-Repeat: If you simply add CONFIGURE_ARGS+= --with-unixodbc=/usr/local ..to the Makefile, it bombs out when it descends into src/odbc/ with: Making all in odbc Error expanding embedded variable. *** Error code 1 Stop in /usr/ports/databases/mdbtools/work/mdbtools-0.5/src. *** Error code 1 Stop in /usr/ports/databases/mdbtools/work/mdbtools-0.5. *** Error code 1 Stop in /usr/ports/databases/mdbtools. ..which is actually it failing on a GNU gmake(1) specific trap. If I manually gmake(1) in that dir: $ sudo cd /usr/ports/databases/mdbtools/work/mdbtools-0.5/src/odbc/ && sudo gmake source='odbc.c' object='odbc.lo' libtool=yes \ depfile='.deps/odbc.Plo' tmpdepfile='.deps/odbc.TPlo' \ depmode=gcc3 /bin/sh ../../depcomp \ /bin/sh /usr/local/bin/libtool15 --mode=compile cc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"mdbtools\" -DVERSION=\"0.5\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DYYTEXT_POINTER=1 -DSTDC_HEADERS=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_WORDEXP_H=1 -DHAVE_READLINE=1 -I. -I. -I ./../include `glib-config --cflags` -O -pipe -march=pentium3 -DSQL -DUNIXODBC -c -o odbc.lo `test -f 'odbc.c' || echo './'`odbc.c mkdir .libs cc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"mdbtools\" -DVERSION=\"0.5\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DYYTEXT_POINTER=1 -DSTDC_HEADERS=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_WORDEXP_H=1 -DHAVE_READLINE=1 -DHAVE_DLFCN_H=1 -DYYTEXT_POINTER=1 -DSTDC_HEADERS=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_WORDEXP_H=1 -DHAVE_READLINE=1 -I. -I. -I ../../include -I/usr/local/include/glib12 -O -pipe -march=pentium3 -DSQL -DUNIXODBC -c odbc.c -MT odbc.lo -MD -MP -MF .deps/odbc.TPlo -fPIC -DPIC -o .libs/odbc.o odbc.c:21:17: sql.h: No such file or directory odbc.c:22:20: sqlext.h: No such file or directory odbc.c:39: error: syntax error before "_odbc_get_client_type" odbc.c:39: warning: data definition has no type or storage class odbc.c:43: error: syntax error before "SQL_API" odbc.c:43: error: syntax error before "henv" odbc.c:43: warning: data definition has no type or storage class odbc.c:44: error: syntax error before "SQL_API" ..which is obviously a result of it not properly #include'ing /usr/local/include/sql.h Anyway, when I fetch mdbtools-0.6pre1.tar.gz, from last year, and manually roll it with ./configure --prefix=/opt --with-unixodbc=/usr/local, it compiles /opt/lib/libmdbodbc.0, which I would normally expect to be a *.so lrwxr-xr-x 1 root wheel 12 Sep 1 14:44 libmdbodbc@ -> libmdbodbc.0 -rwxr-xr-x 1 root wheel 276986 Sep 1 14:44 libmdbodbc.0* -rw-r--r-- 1 root wheel 407048 Sep 1 14:44 libmdbodbc.a -rwxr-xr-x 1 root wheel 836 Sep 1 14:44 libmdbodbc.la* $ ldd /opt/lib/libmdbodbc.0 /opt/lib/libmdbodbc.0: libglib-2.0.so.600 => /usr/local/lib/libglib-2.0.so.600 (0x2818d000) libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28214000) libodbcinst.so.1 => /usr/local/lib/libodbcinst.so.1 (0x28304000) libintl.so.6 => /usr/local/lib/libintl.so.6 (0x28316000) >Fix: The solution is to upgrade the port to 0.6pre1 (0.6 will hopefully be out soon). Then add a conditional check for OBDC linkage such as that in the ports/databases/postgresql-odbc/Makefile : .if ${DRIVER_MANAGER} == "unixodbc" PKGNAMESUFFIX= -unixodbc CONFIGURE_ARGS+= --with-unixodbc LIB_DEPENDS+= odbc.1:${PORTSDIR}/databases/unixODBC .else # assume we're using iodbc LIB_DEPENDS+= iodbc.3:${PORTSDIR}/databases/libiodbc CONFIGURE_ARGS+= --with-iodbc --with-odbcinst=${LOCALBASE}/etc/libiodbc .endif ...or: .if defined(WITH_IODBC) CONFIGURE_ARGS+= --with-iodbc=${PREFIX} LIB_DEPENDS+= iodbc.3:${PORTSDIR}/databases/libiodbc .endif .if defined(WITH_UNIXODBC) LIB_DEPENDS+= odbc.1:${PORTSDIR}/databases/unixODBC CONFIGURE_ARGS+=--with-unixodbc=${PREFIX} .endif .if defined(WITH_UNIXODBC) && defined(WITH_IODBC) .error "iOnly one ODBC driver supported." .endif .. ~BAS >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200509012015.j81KFG4K073792>