From 0bf3700fa22971d0c83f8f76d2ecfef9f60367aa Mon Sep 17 00:00:00 2001 From: Phil Longstaff Date: Sun, 17 Aug 2008 16:38:31 +0000 Subject: [PATCH] Add support to build trunk with libdbi and dbi backend on win32/mingw git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@17473 57a11ea4-9604-0410-9ed3-97b8803252fd --- packaging/win32/defaults.sh | 12 ++- packaging/win32/install.sh | 73 ++++++++++++++++++- packaging/win32/libdbi-0.8.3.patch | 26 +++++++ .../win32/libdbi-drivers-Makefile.in.patch | 11 +++ .../win32/libdbi-drivers-dbd_sqlite3.c.patch | 24 ++++++ 5 files changed, 142 insertions(+), 4 deletions(-) create mode 100755 packaging/win32/libdbi-0.8.3.patch create mode 100755 packaging/win32/libdbi-drivers-Makefile.in.patch create mode 100755 packaging/win32/libdbi-drivers-dbd_sqlite3.c.patch diff --git a/packaging/win32/defaults.sh b/packaging/win32/defaults.sh index 4b6f3e136f..d13f5ef494 100644 --- a/packaging/win32/defaults.sh +++ b/packaging/win32/defaults.sh @@ -267,6 +267,16 @@ set_default LIBGDA_DIR $GLOBAL_DIR\\libgda set_default LIBGDA_PATCH `pwd`/libgda-3.1.2-patch.diff set_default LIBGDA_PATCH2 `pwd`/libgda-3.1.2-patch2.diff +set_default SQLITE3_URL "http://sqlite.org/sqlite-amalgamation-3.6.1.tar.gz" +set_default SQLITE3_DIR $GLOBAL_DIR\\sqlite3 +set_default LIBDBI_URL "http://downloads.sourceforge.net/libdbi/libdbi-0.8.3.tar.gz" +set_default LIBDBI_DIR $GLOBAL_DIR\\libdbi +set_default LIBDBI_PATCH `pwd`/libdbi-0.8.3.patch +set_default LIBDBI_DRIVERS_URL "http://downloads.sourceforge.net/libdbi-drivers/libdbi-drivers-0.8.3-1.tar.gz" +set_default LIBDBI_DRIVERS_DIR $GLOBAL_DIR\\libdbi-drivers +set_default LIBDBI_DRIVERS_PATCH `pwd`/libdbi-drivers-dbd_sqlite3.c.patch +set_default LIBDBI_DRIVERS_PATCH2 `pwd`/libdbi-drivers-Makefile.in.patch + set_default DOCBOOK_XSL_URL "$SF_MIRROR/docbook/docbook-xsl-1.72.0.zip" set_default UPDATE_DOCS yes set_default DOCS_REV "HEAD" @@ -310,7 +320,7 @@ add_step inst_libofx add_step inst_gwenhywfar add_step inst_ktoblzcheck add_step inst_aqbanking -add_step inst_libgda +add_step inst_libdbi ## if [ "$CROSS_COMPILE" != "yes" ]; then add_step inst_inno diff --git a/packaging/win32/install.sh b/packaging/win32/install.sh index 0dfd02b628..a255d7f6f5 100755 --- a/packaging/win32/install.sh +++ b/packaging/win32/install.sh @@ -23,6 +23,8 @@ register_env_var GUILE_LDFLAGS " " register_env_var HH_CPPFLAGS " " register_env_var HH_LDFLAGS " " register_env_var INTLTOOL_PERL " " +register_env_var LIBDBI_CPPFLAGS " " +register_env_var LIBDBI_LDFLAGS " " register_env_var KTOBLZCHECK_CPPFLAGS " " register_env_var KTOBLZCHECK_LDFLAGS " " register_env_var PATH ":" @@ -929,6 +931,69 @@ function inst_aqbanking() { fi } +function inst_libdbi() { + setup LibDBI + _SQLITE3_UDIR=`unix_path ${SQLITE3_DIR}` + _LIBDBI_UDIR=`unix_path ${LIBDBI_DIR}` + _LIBDBI_DRIVERS_UDIR=`unix_path ${LIBDBI_DRIVERS_DIR}` + add_to_env -I$_LIBDBI_UDIR/include LIBDBI_CPPFLAGS + add_to_env -L$_LIBDBI_UDIR/lib LIBDBI_LDFLAGS + if test -f ${_SQLITE3_UDIR}/bin/libsqlite3-0.dll + then + echo "SQLite3 already installed. skipping." + else + wget_unpacked $SQLITE3_URL $DOWNLOAD_DIR $TMP_DIR + assert_one_dir $TMP_UDIR/sqlite-* + qpushd $TMP_UDIR/sqlite-* + ./configure \ + --prefix=${_SQLITE3_UDIR} + make + make install + qpopd + test -f ${_SQLITE3_UDIR}/bin/libsqlite3-0.dll || die "SQLite3 not installed correctly" + fi + if test -f ${_LIBDBI_UDIR}/bin/libdbi-0.dll + then + echo "libdbi already installed. skipping." + else + wget_unpacked $LIBDBI_URL $DOWNLOAD_DIR $TMP_DIR + assert_one_dir $TMP_UDIR/libdbi-0* + qpushd $TMP_UDIR/libdbi-0* + [ -n "$LIBDBI_PATCH" -a -f "$LIBDBI_PATCH" ] && \ + patch -p0 < $LIBDBI_PATCH + ./configure \ + --disable-docs \ + --prefix=${_LIBDBI_UDIR} + make + make install + qpopd + test -f ${_LIBDBI_UDIR}/bin/libdbi-0.dll || die "libdbi not installed correctly" + fi + if test -f ${_LIBDBI_DRIVERS_UDIR}/lib/dbd/libdbdsqlite3.dll + then + echo "libdbi drivers already installed. skipping." + else + wget_unpacked $LIBDBI_DRIVERS_URL $DOWNLOAD_DIR $TMP_DIR + assert_one_dir $TMP_UDIR/libdbi-drivers-* + qpushd $TMP_UDIR/libdbi-drivers* + [ -n "$LIBDBI_DRIVERS_PATCH" -a -f "$LIBDBI_DRIVERS_PATCH" ] && \ + patch -p0 < $LIBDBI_DRIVERS_PATCH + [ -n "$LIBDBI_DRIVERS_PATCH2" -a -f "$LIBDBI_DRIVERS_PATCH2" ] && \ + patch -p0 < $LIBDBI_DRIVERS_PATCH2 + ./configure \ + --disable-docs \ + --with-dbi-incdir=${_LIBDBI_UDIR}/include \ + --with-dbi-libdir=${_LIBDBI_UDIR}/lib \ + --with-sqlite3 \ + --with-sqlite3-dir=${_SQLITE3_UDIR} \ + --prefix=${_LIBDBI_DRIVERS_UDIR} + make + make install + qpopd + test -f ${_LIBDBI_DRIVERS_UDIR}/lib/dbd/libdbdsqlite3.dll || die "libdbi drivers not installed correctly" + fi +} + function inst_libgda() { setup LibGDA _LIBGDA_UDIR=`unix_path ${LIBGDA_DIR}` @@ -1002,12 +1067,13 @@ function inst_gnucash() { --prefix=$_INSTALL_WFSDIR \ --enable-debug \ --enable-schemas-install=no \ + --enable-dbi \ ${LIBOFX_OPTIONS} \ ${AQBANKING_OPTIONS} \ --enable-binreloc \ --enable-locale-specific-tax \ - CPPFLAGS="${AUTOTOOLS_CPPFLAGS} ${REGEX_CPPFLAGS} ${GNOME_CPPFLAGS} ${GUILE_CPPFLAGS} ${KTOBLZCHECK_CPPFLAGS} ${HH_CPPFLAGS} -D_WIN32" \ - LDFLAGS="${AUTOTOOLS_LDFLAGS} ${REGEX_LDFLAGS} ${GNOME_LDFLAGS} ${GUILE_LDFLAGS} ${KTOBLZCHECK_LDFLAGS} ${HH_LDFLAGS}" \ + CPPFLAGS="${AUTOTOOLS_CPPFLAGS} ${REGEX_CPPFLAGS} ${GNOME_CPPFLAGS} ${GUILE_CPPFLAGS} ${LIBDBI_CPPFLAGS} ${KTOBLZCHECK_CPPFLAGS} ${HH_CPPFLAGS} -D_WIN32" \ + LDFLAGS="${AUTOTOOLS_LDFLAGS} ${REGEX_LDFLAGS} ${GNOME_LDFLAGS} ${GUILE_LDFLAGS} ${LIBDBI_LDFLAGS} ${KTOBLZCHECK_LDFLAGS} ${HH_LDFLAGS}" \ PKG_CONFIG_PATH="${PKG_CONFIG_PATH}" # Windows DLLs don't need relinking @@ -1062,11 +1128,12 @@ function make_install() { # Create a startup script that works without the msys shell qpushd $_INSTALL_UDIR/bin echo "setlocal" > gnucash.bat - echo "set PATH=${INSTALL_DIR}\\bin;${INSTALL_DIR}\\lib;${INSTALL_DIR}\\lib\\gnucash;${GOFFICE_DIR}\\bin;${LIBGSF_DIR}\\bin;${PCRE_DIR}\\bin;${GNOME_DIR}\\bin;${LIBXML2_DIR}\\bin;${GUILE_DIR}\\bin;${REGEX_DIR}\\bin;${AUTOTOOLS_DIR}\\bin;${AQBANKING_PATH};${LIBOFX_DIR}\\bin;${OPENSP_DIR}\\bin;${LIBGDA_DIR}\\bin;%PATH%" > gnucash.bat + echo "set PATH=${INSTALL_DIR}\\bin;${INSTALL_DIR}\\lib;${INSTALL_DIR}\\lib\\gnucash;${GOFFICE_DIR}\\bin;${LIBGSF_DIR}\\bin;${PCRE_DIR}\\bin;${GNOME_DIR}\\bin;${LIBXML2_DIR}\\bin;${GUILE_DIR}\\bin;${REGEX_DIR}\\bin;${AUTOTOOLS_DIR}\\bin;${AQBANKING_PATH};${LIBOFX_DIR}\\bin;${OPENSP_DIR}\\bin;${LIBDBI_DIR}\\bin;${SQLITE3_DIR}\\bin;%PATH%" > gnucash.bat echo "set GUILE_WARN_DEPRECATED=no" >> gnucash.bat echo "set GNC_MODULE_PATH=${INSTALL_DIR}\\lib\\gnucash" >> gnucash.bat echo "set GUILE_LOAD_PATH=${INSTALL_DIR}\\share\\gnucash\\guile-modules;${INSTALL_DIR}\\share\\gnucash\\scm;%GUILE_LOAD_PATH%" >> gnucash.bat echo "set LTDL_LIBRARY_PATH=${INSTALL_DIR}\\lib" >> gnucash.bat + echo "set GNC_DBD_DIR=${LIBDBI_DRIVERS_DIR}\\lib\\dbd" >> gnucash.bat echo "start gnucash-bin %*" >> gnucash.bat qpopd } diff --git a/packaging/win32/libdbi-0.8.3.patch b/packaging/win32/libdbi-0.8.3.patch new file mode 100755 index 0000000000..5e65867189 --- /dev/null +++ b/packaging/win32/libdbi-0.8.3.patch @@ -0,0 +1,26 @@ +Index: dbd.h +=================================================================== +RCS file: /cvsroot/libdbi/libdbi/include/dbi/dbd.h,v +retrieving revision 1.29 +diff -u -r1.29 dbd.h +--- include/dbi/dbd.h 15 Aug 2005 19:18:18 -0000 1.29 ++++ include/dbi/dbd.h 16 Aug 2008 20:20:33 -0000 +@@ -52,7 +52,7 @@ + size_t dbd_quote_binary(dbi_conn_t *conn, const unsigned char *orig, size_t from_length, unsigned char **ptr_dest); + size_t dbd_conn_quote_string(dbi_conn_t *conn, const char *orig, char *dest); + const char *dbd_select_db(dbi_conn_t *conn, const char *db); +-int dbd_geterror(dbi_conn_t *conn, int *errno, char **errstr); ++int dbd_geterror(dbi_conn_t *conn, int *err_no, char **errstr); + unsigned long long dbd_get_seq_last(dbi_conn_t *conn, const char *sequence); + unsigned long long dbd_get_seq_next(dbi_conn_t *conn, const char *sequence); + int dbd_ping(dbi_conn_t *conn); +@@ -63,7 +63,7 @@ + void _dbd_result_add_field(dbi_result_t *result, unsigned int fieldidx, char *name, unsigned short type, unsigned int attribs); + dbi_row_t *_dbd_row_allocate(unsigned int numfields); + void _dbd_row_finalize(dbi_result_t *result, dbi_row_t *row, unsigned long long rowidx); +-void _dbd_internal_error_handler(dbi_conn_t *conn, const char *errmsg, const int errno); ++void _dbd_internal_error_handler(dbi_conn_t *conn, const char *errmsg, const int err_no); + dbi_result_t *_dbd_result_create_from_stringarray(dbi_conn_t *conn, unsigned long long numrows_matched, const char **stringarray); + void _dbd_register_driver_cap(dbi_driver_t *driver, const char *capname, int value); + void _dbd_register_conn_cap(dbi_conn_t *conn, const char *capname, int value); + diff --git a/packaging/win32/libdbi-drivers-Makefile.in.patch b/packaging/win32/libdbi-drivers-Makefile.in.patch new file mode 100755 index 0000000000..0ed49ab94c --- /dev/null +++ b/packaging/win32/libdbi-drivers-Makefile.in.patch @@ -0,0 +1,11 @@ +--- drivers/sqlite3/Makefile.in.save Mon Mar 3 12:41:56 2008 ++++ drivers/sqlite3/Makefile.in Sat Aug 16 17:10:11 2008 +@@ -264,7 +264,7 @@ + @HAVE_SQLITE3_TRUE@sqlite3_sources = dbd_sqlite3.c + INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include @DBI_INCLUDE@ @SQLITE3_INCLUDE@ + lib_LTLIBRARIES = $(sqlite3_ltlibs) +-libdbdsqlite3_la_LDFLAGS = $(sqlite3_ldflags) @SQLITE3_LDFLAGS@ @SQLITE3_LIBS@ @LIBADD_LIBDBI@ ++libdbdsqlite3_la_LDFLAGS = $(sqlite3_ldflags) @SQLITE3_LDFLAGS@ @SQLITE3_LIBS@ @LIBADD_LIBDBI@ -no-undefined + libdbdsqlite3_la_SOURCES = $(sqlite3_sources) + libdbdsqlite3_la_DEPENDENCIES = dbd_sqlite3.h + EXTRA_DIST = dbd_sqlite3.c dbd_sqlite3.h AUTHORS TODO README dbd_sqlite3.sgml dbd_sqlite3.pdf dbd_sqlite3/* diff --git a/packaging/win32/libdbi-drivers-dbd_sqlite3.c.patch b/packaging/win32/libdbi-drivers-dbd_sqlite3.c.patch new file mode 100755 index 0000000000..8cba5f1040 --- /dev/null +++ b/packaging/win32/libdbi-drivers-dbd_sqlite3.c.patch @@ -0,0 +1,24 @@ +Index: dbd_sqlite3.c +=================================================================== +RCS file: /cvsroot/libdbi-drivers/libdbi-drivers/drivers/sqlite3/dbd_sqlite3.c,v +retrieving revision 1.31 +diff -u -r1.31 dbd_sqlite3.c +--- drivers/sqlite3/dbd_sqlite3.c 13 Aug 2008 22:56:03 -0000 1.31 ++++ drivers/sqlite3/dbd_sqlite3.c 16 Aug 2008 20:23:23 -0000 +@@ -1369,11 +1369,11 @@ + return db; + } + +-int dbd_geterror(dbi_conn_t *conn, int *errno, char **errstr) { +- /* put error number into errno, error string into errstr +- * return 0 if error, 1 if errno filled, 2 if errstr filled, 3 if both errno and errstr filled */ ++int dbd_geterror(dbi_conn_t *conn, int *err_no, char **errstr) { ++ /* put error number into err_no, error string into errstr ++ * return 0 if error, 1 if err_no filled, 2 if errstr filled, 3 if both err_no and errstr filled */ + +- *errno = sqlite3_errcode((sqlite3 *)conn->connection); ++ *err_no = sqlite3_errcode((sqlite3 *)conn->connection); + *errstr = strdup((char*)sqlite3_errmsg((sqlite3 *)conn->connection)); + return 3; + } +