Package: rekall Version: 2.2.6-4 Severity: serious Tags: patch upstream Justification: no longer builds from source
Hi Peter, A recent fix to unixodbc is causing rekall to fail to build on 64-bit architectures for the libmysqlclient15off transition[1]: [...] make[4]: Entering directory /build/buildd/rekall-2.2.6/db/odbc' /bin/sh ../../libtool --silent --mode=compile --tag=CXX g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../../libs/common -I ../srclib -I /usr/include -I/usr/include/kde -I/usr/share/qt3/include -I. -D__KB_KDE=1 -D__KB_TKC=0 -D__KB_EMBEDDED=0 -DODBC_NS=NS_KBODBC -DGET_EXTRA=0 -DQT_THREAD_SUPPORT -D_REENTRANT -Wl,--no-undefined -Wnon-virtual-dtor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -O2 -g -Wall -O2 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -c -o kb_odbc.lo kb_odbc.cpp kb_odbc.cpp: In member function 'virtual bool NS_KBODBC::KBODBC::doConnect(KBServerInfo*)': kb_odbc.cpp:693: warning: cast from 'char*' to 'SQLUSMALLINT*' increases required alignment of target type kb_odbc.cpp:714: warning: cast from 'char*' to 'SQLUSMALLINT*' increases required alignment of target type kb_odbc.cpp: In member function 'bool NS_KBODBC::KBODBC::doListTables(KBTableDetailsList&, const QString&, bool, uint)': kb_odbc.cpp:1051: error: cannot convert 'SQLINTEGER*' to 'SQLLEN*' for argument '6' to 'SQLRETURN SQLBindCol(void*, SQLUSMALLINT, SQLSMALLINT, void*, SQLLEN, SQLLEN*)' kb_odbc.cpp:1052: error: cannot convert 'SQLINTEGER*' to 'SQLLEN*' for argument '6' to 'SQLRETURN SQLBindCol(void*, SQLUSMALLINT, SQLSMALLINT, void*, SQLLEN, SQLLEN*)' kb_odbc.cpp:1053: error: cannot convert 'SQLINTEGER*' to 'SQLLEN*' for argument '6' to 'SQLRETURN SQLBindCol(void*, SQLUSMALLINT, SQLSMALLINT, void*, SQLLEN, SQLLEN*)' kb_odbc.cpp: In member function 'bool NS_KBODBC::KBODBC::bindParameters(void*, uint, const KBValue*, QPtrList<KBODBCValue>&, QTextCodec*)': kb_odbc.cpp:1826: error: cannot convert 'SQLINTEGER*' to 'SQLLEN*' for argument '10' to 'SQLRETURN SQLBindParameter(void*, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, void*, SQLLEN, SQLLEN*)' kb_odbc.cpp: In member function 'bool NS_KBODBC::KBODBC::getRowCount(void*, int&)': kb_odbc.cpp:1847: error: cannot convert 'SQLINTEGER*' to 'SQLLEN*' for argument '2' to 'SQLRETURN SQLRowCount(void*, SQLLEN*)' kb_odbc.cpp: In constructor 'NS_KBODBC::KBODBCQrySelect::KBODBCQrySelect(NS_KBODBC::KBODBC*, void*, bool, const QString&, bool&)': kb_odbc.cpp:2011: error: cannot convert 'SQLUINTEGER*' to 'SQLULEN*' for argument '7' to 'SQLRETURN SQLDescribeCol(void*, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*)' kb_odbc.cpp: In member function 'virtual bool NS_KBODBC::KBODBCQrySelect::execute(uint, const KBValue*)': kb_odbc.cpp:2157: error: cannot convert 'SQLUINTEGER*' to 'SQLULEN*' for argument '7' to 'SQLRETURN SQLDescribeCol(void*, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*)' [...] The ODBC API standard includes bugs in the definition of several function calls which take cast pointers as one of their possible arguments, resulting in truncated pointers on 64-bit systems. The Debian unixodbc packages have deviated from this standard since before the sarge release, in order to provide libraries that are actually usable on 64-bit systems. However, owing to an upstream decision to favor standards-compliance over utility by default in this case, the headers did not by default declare this 64-bit-clean API; instead, they declared a 32-bit API that did not match the actual ABI presented by the unixodbc library. unixodbc 2.2.11-10 corrected this oversight on my part, by fixing the headers to export the proper 64-bit interface. The result is that ODBC-using packages which don't know to expect this 64-bit interface will now fail to build, as seen in this build log. The attached patch makes the necessary type changes from SQLINTEGER and SQLUINTEGER to SQLLEN and SQLULEN. Note that SQLLEN is a late addition to the ODBC standard, so its use will prevent rekall from building with older ODBC library versions; if this is a concern for your upstream, please let me know as I would be happy to help devise a patch that degrades gracefully for the sake of portability. Cheers, -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. [EMAIL PROTECTED] http://www.debian.org/ [1] http://buildd.debian.org/fetch.php?pkg=rekall&arch=ia64&ver=2.2.6-4%2Bb1&stamp=1142837162&file=log
diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/db/iodbc/kb_odbc.cpp /tmp/8Nlwaa4yke/rekall-2.2.6/db/iodbc/kb_odbc.cpp --- /tmp/PNNoYydHyZ/rekall-2.2.6/db/iodbc/kb_odbc.cpp 2004-11-25 01:31:06.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/db/iodbc/kb_odbc.cpp 2006-03-20 01:28:05.000000000 -0800 @@ -1026,9 +1026,9 @@ SQLCHAR name [101] = "" ; SQLCHAR type [101] = "" ; SQLCHAR remarks [301] = "" ; - SQLINTEGER indName ; - SQLINTEGER indType ; - SQLINTEGER indRemarks ; + SQLLEN indName ; + SQLLEN indType ; + SQLLEN indRemarks ; long odbcRC ; @@ -1843,7 +1843,7 @@ int &nRows ) { - SQLINTEGER sqlRows ; + SQLLEN sqlRows ; long odbcRC = SQLRowCount (stmHandle, &sqlRows) ; if (!checkRCOK(stmHandle, odbcRC, "Error finding ODBC row count")) @@ -1993,7 +1993,7 @@ SQLCHAR colName[101] ; SQLSMALLINT nameLen ; SQLSMALLINT colType ; - SQLUINTEGER colSize ; + SQLULEN colSize ; SQLSMALLINT decimal ; SQLSMALLINT nullable ; long odbcRC ; @@ -2140,7 +2140,7 @@ SQLCHAR colName[101] ; SQLSMALLINT nameLen ; SQLSMALLINT colType ; - SQLUINTEGER colSize ; + SQLULEN colSize ; SQLSMALLINT decimal ; SQLSMALLINT nullable ; diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/db/iodbc/kb_odbc_jet.cpp /tmp/8Nlwaa4yke/rekall-2.2.6/db/iodbc/kb_odbc_jet.cpp --- /tmp/PNNoYydHyZ/rekall-2.2.6/db/iodbc/kb_odbc_jet.cpp 2004-11-25 01:31:06.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/db/iodbc/kb_odbc_jet.cpp 2006-03-20 01:28:05.000000000 -0800 @@ -136,7 +136,7 @@ } char buffer[32] ; - SQLINTEGER bufflen ; + SQLLEN bufflen ; odbcRC = SQLGetData ( m_getHandle, diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/db/iodbc/kb_odbc_mysql.cpp /tmp/8Nlwaa4yke/rekall-2.2.6/db/iodbc/kb_odbc_mysql.cpp --- /tmp/PNNoYydHyZ/rekall-2.2.6/db/iodbc/kb_odbc_mysql.cpp 2004-11-25 01:31:06.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/db/iodbc/kb_odbc_mysql.cpp 2006-03-20 01:28:05.000000000 -0800 @@ -126,7 +126,7 @@ } char buffer[32] ; - SQLINTEGER bufflen ; + SQLLEN bufflen ; odbcRC = SQLGetData ( m_getHandle, @@ -297,7 +297,7 @@ } char buffer[GETBUFSIZ+8] ; - SQLINTEGER bufflen ; + SQLLEN bufflen ; odbcRC = SQLGetData ( stmHandle, diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/db/odbc/kb_odbc.cpp /tmp/8Nlwaa4yke/rekall-2.2.6/db/odbc/kb_odbc.cpp --- /tmp/PNNoYydHyZ/rekall-2.2.6/db/odbc/kb_odbc.cpp 2004-11-25 01:31:06.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/db/odbc/kb_odbc.cpp 2006-03-20 01:28:05.000000000 -0800 @@ -1026,9 +1026,9 @@ SQLCHAR name [101] = "" ; SQLCHAR type [101] = "" ; SQLCHAR remarks [301] = "" ; - SQLINTEGER indName ; - SQLINTEGER indType ; - SQLINTEGER indRemarks ; + SQLLEN indName ; + SQLLEN indType ; + SQLLEN indRemarks ; long odbcRC ; @@ -1843,7 +1843,7 @@ int &nRows ) { - SQLINTEGER sqlRows ; + SQLLEN sqlRows ; long odbcRC = SQLRowCount (stmHandle, &sqlRows) ; if (!checkRCOK(stmHandle, odbcRC, "Error finding ODBC row count")) @@ -1993,7 +1993,7 @@ SQLCHAR colName[101] ; SQLSMALLINT nameLen ; SQLSMALLINT colType ; - SQLUINTEGER colSize ; + SQLULEN colSize ; SQLSMALLINT decimal ; SQLSMALLINT nullable ; long odbcRC ; @@ -2140,7 +2140,7 @@ SQLCHAR colName[101] ; SQLSMALLINT nameLen ; SQLSMALLINT colType ; - SQLUINTEGER colSize ; + SQLULEN colSize ; SQLSMALLINT decimal ; SQLSMALLINT nullable ; diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/db/odbc/kb_odbc_jet.cpp /tmp/8Nlwaa4yke/rekall-2.2.6/db/odbc/kb_odbc_jet.cpp --- /tmp/PNNoYydHyZ/rekall-2.2.6/db/odbc/kb_odbc_jet.cpp 2004-11-25 01:31:06.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/db/odbc/kb_odbc_jet.cpp 2006-03-20 01:28:05.000000000 -0800 @@ -136,7 +136,7 @@ } char buffer[32] ; - SQLINTEGER bufflen ; + SQLLEN bufflen ; odbcRC = SQLGetData ( m_getHandle, diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/db/odbc/kb_odbc_mysql.cpp /tmp/8Nlwaa4yke/rekall-2.2.6/db/odbc/kb_odbc_mysql.cpp --- /tmp/PNNoYydHyZ/rekall-2.2.6/db/odbc/kb_odbc_mysql.cpp 2004-11-25 01:31:06.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/db/odbc/kb_odbc_mysql.cpp 2006-03-20 01:28:05.000000000 -0800 @@ -126,7 +126,7 @@ } char buffer[32] ; - SQLINTEGER bufflen ; + SQLLEN bufflen ; odbcRC = SQLGetData ( m_getHandle, @@ -297,7 +297,7 @@ } char buffer[GETBUFSIZ+8] ; - SQLINTEGER bufflen ; + SQLLEN bufflen ; odbcRC = SQLGetData ( stmHandle, diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/db/srclib/kb_odbcrow.cpp /tmp/8Nlwaa4yke/rekall-2.2.6/db/srclib/kb_odbcrow.cpp --- /tmp/PNNoYydHyZ/rekall-2.2.6/db/srclib/kb_odbcrow.cpp 2005-02-02 09:05:35.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/db/srclib/kb_odbcrow.cpp 2006-03-20 01:28:05.000000000 -0800 @@ -46,8 +46,8 @@ for (uint colno = 0 ; colno < nvals ; colno += 1) { char buffer[GETBUFSIZ + 8]; - SQLINTEGER bufflen ; - SQLINTEGER bufflen2 ; + SQLLEN bufflen ; + SQLLEN bufflen2 ; SQLRETURN odbcRC ; *(long*)(&buffer[GETBUFSIZ + 4]) = MAGIC; diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/db/srclib/kb_odbcval.h /tmp/8Nlwaa4yke/rekall-2.2.6/db/srclib/kb_odbcval.h --- /tmp/PNNoYydHyZ/rekall-2.2.6/db/srclib/kb_odbcval.h 2004-11-18 10:26:22.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/db/srclib/kb_odbcval.h 2006-03-20 01:28:05.000000000 -0800 @@ -21,7 +21,7 @@ SQLSMALLINT m_vtype ; SQLPOINTER m_vptr ; SQLINTEGER m_vlen ; - SQLINTEGER m_slind ; + SQLLEN m_slind ; public : @@ -33,5 +33,5 @@ inline SQLSMALLINT vtype () { return m_vtype ; } inline SQLPOINTER vptr () { return m_vptr ; } inline SQLINTEGER vlen () { return m_vlen ; } - inline SQLINTEGER *slind () { return &m_slind ; } + inline SQLLEN *slind () { return &m_slind ; } } ; diff -Nru /tmp/PNNoYydHyZ/rekall-2.2.6/debian/changelog /tmp/8Nlwaa4yke/rekall-2.2.6/debian/changelog --- /tmp/PNNoYydHyZ/rekall-2.2.6/debian/changelog 2006-03-20 01:28:02.000000000 -0800 +++ /tmp/8Nlwaa4yke/rekall-2.2.6/debian/changelog 2006-03-20 01:28:05.000000000 -0800 @@ -1,3 +1,11 @@ +rekall (2.2.6-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Additional 64-bit compilation fixes, now that unixodbc is 64-bit + clean out of the box + + -- Steve Langasek <[EMAIL PROTECTED]> Mon, 20 Mar 2006 00:56:37 -0800 + rekall (2.2.6-4) unstable; urgency=low * Set build dependency to libmysqlclient15-dev (closes: #343808)
signature.asc
Description: Digital signature