diff options
Diffstat (limited to 'gnome-extra')
8 files changed, 824 insertions, 1 deletions
diff --git a/gnome-extra/libgda/ChangeLog b/gnome-extra/libgda/ChangeLog index d374257f2553..88512e00960b 100644 --- a/gnome-extra/libgda/ChangeLog +++ b/gnome-extra/libgda/ChangeLog @@ -1,6 +1,16 @@ # ChangeLog for gnome-extra/libgda # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/gnome-extra/libgda/ChangeLog,v 1.176 2011/09/13 11:46:42 pacho Exp $ +# $Header: /var/cvsroot/gentoo-x86/gnome-extra/libgda/ChangeLog,v 1.177 2011/09/30 19:27:46 nirbheek Exp $ + +*libgda-4.99.4 (30 Sep 2011) + + 30 Sep 2011; Nirbheek Chauhan <nirbheek@gentoo.org> + +files/libgda-4.99.1-control-center-icon-collision.patch, + +files/libgda-4.99.1-gda-browser-doc-collision.patch, + +files/libgda-4.99.1-gda-browser-help-collision.patch, +libgda-4.99.4.ebuild, + +files/libgda-4.99.4-disable-broken-tests.patch, + +files/libgda-4.99.4-statement-rewriting-fix.patch, metadata.xml: + Bump to 4.99.4 from the gnome overlay, ebuild updates by tetromino 13 Sep 2011; Pacho Ramos <pacho@gentoo.org> -libgda-3.0.4.ebuild: Remove old. diff --git a/gnome-extra/libgda/files/libgda-4.99.1-control-center-icon-collision.patch b/gnome-extra/libgda/files/libgda-4.99.1-control-center-icon-collision.patch new file mode 100644 index 000000000000..06166e6e6e07 --- /dev/null +++ b/gnome-extra/libgda/files/libgda-4.99.1-control-center-icon-collision.patch @@ -0,0 +1,85 @@ +From 6ec47f4cf542ad9f7c4d30d557e4813b5c6f31d5 Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev <tetromino@gmail.com> +Date: Sat, 4 Jun 2011 05:45:35 -0400 +Subject: [PATCH] Prevent file collision with gda-control-center-4.0's icons + +--- + control-center/data/Makefile.am | 12 ++++++------ + ... hicolor_apps_16x16_gda-control-center-5.0.png} | Bin 833 -> 833 bytes + ... hicolor_apps_22x22_gda-control-center-5.0.png} | Bin 1157 -> 1157 bytes + ... hicolor_apps_24x24_gda-control-center-5.0.png} | Bin 1144 -> 1144 bytes + ...icolor_apps_256x256_gda-control-center-5.0.png} | Bin 33543 -> 33543 bytes + ... hicolor_apps_32x32_gda-control-center-5.0.png} | Bin 1867 -> 1867 bytes + ... hicolor_apps_48x48_gda-control-center-5.0.png} | Bin 3144 -> 3144 bytes + control-center/gda-control-center-5.0.desktop.in | 2 +- + 8 files changed, 7 insertions(+), 7 deletions(-) + rename control-center/data/{hicolor_apps_16x16_gda-control-center.png => hicolor_apps_16x16_gda-control-center-5.0.png} (100%) + rename control-center/data/{hicolor_apps_22x22_gda-control-center.png => hicolor_apps_22x22_gda-control-center-5.0.png} (100%) + rename control-center/data/{hicolor_apps_24x24_gda-control-center.png => hicolor_apps_24x24_gda-control-center-5.0.png} (100%) + rename control-center/data/{hicolor_apps_256x256_gda-control-center.png => hicolor_apps_256x256_gda-control-center-5.0.png} (100%) + rename control-center/data/{hicolor_apps_32x32_gda-control-center.png => hicolor_apps_32x32_gda-control-center-5.0.png} (100%) + rename control-center/data/{hicolor_apps_48x48_gda-control-center.png => hicolor_apps_48x48_gda-control-center-5.0.png} (100%) + +diff --git a/control-center/data/Makefile.am b/control-center/data/Makefile.am +index 03fa362..862ec88 100644 +--- a/control-center/data/Makefile.am ++++ b/control-center/data/Makefile.am +@@ -5,12 +5,12 @@ public_icons_themes = \ + $(NULL) + + public_icons = \ +- hicolor_apps_16x16_gda-control-center.png \ +- hicolor_apps_22x22_gda-control-center.png \ +- hicolor_apps_24x24_gda-control-center.png \ +- hicolor_apps_256x256_gda-control-center.png \ +- hicolor_apps_32x32_gda-control-center.png \ +- hicolor_apps_48x48_gda-control-center.png \ ++ hicolor_apps_16x16_gda-control-center-5.0.png \ ++ hicolor_apps_22x22_gda-control-center-5.0.png \ ++ hicolor_apps_24x24_gda-control-center-5.0.png \ ++ hicolor_apps_256x256_gda-control-center-5.0.png \ ++ hicolor_apps_32x32_gda-control-center-5.0.png \ ++ hicolor_apps_48x48_gda-control-center-5.0.png \ + $(NULL) + + private_icons = \ +diff --git a/control-center/data/hicolor_apps_16x16_gda-control-center.png b/control-center/data/hicolor_apps_16x16_gda-control-center-5.0.png +similarity index 100% +rename from control-center/data/hicolor_apps_16x16_gda-control-center.png +rename to control-center/data/hicolor_apps_16x16_gda-control-center-5.0.png +diff --git a/control-center/data/hicolor_apps_22x22_gda-control-center.png b/control-center/data/hicolor_apps_22x22_gda-control-center-5.0.png +similarity index 100% +rename from control-center/data/hicolor_apps_22x22_gda-control-center.png +rename to control-center/data/hicolor_apps_22x22_gda-control-center-5.0.png +diff --git a/control-center/data/hicolor_apps_24x24_gda-control-center.png b/control-center/data/hicolor_apps_24x24_gda-control-center-5.0.png +similarity index 100% +rename from control-center/data/hicolor_apps_24x24_gda-control-center.png +rename to control-center/data/hicolor_apps_24x24_gda-control-center-5.0.png +diff --git a/control-center/data/hicolor_apps_256x256_gda-control-center.png b/control-center/data/hicolor_apps_256x256_gda-control-center-5.0.png +similarity index 100% +rename from control-center/data/hicolor_apps_256x256_gda-control-center.png +rename to control-center/data/hicolor_apps_256x256_gda-control-center-5.0.png +diff --git a/control-center/data/hicolor_apps_32x32_gda-control-center.png b/control-center/data/hicolor_apps_32x32_gda-control-center-5.0.png +similarity index 100% +rename from control-center/data/hicolor_apps_32x32_gda-control-center.png +rename to control-center/data/hicolor_apps_32x32_gda-control-center-5.0.png +diff --git a/control-center/data/hicolor_apps_48x48_gda-control-center.png b/control-center/data/hicolor_apps_48x48_gda-control-center-5.0.png +similarity index 100% +rename from control-center/data/hicolor_apps_48x48_gda-control-center.png +rename to control-center/data/hicolor_apps_48x48_gda-control-center-5.0.png +diff --git a/control-center/gda-control-center-5.0.desktop.in b/control-center/gda-control-center-5.0.desktop.in +index 6fd5b58..429787d 100644 +--- a/control-center/gda-control-center-5.0.desktop.in ++++ b/control-center/gda-control-center-5.0.desktop.in +@@ -1,7 +1,7 @@ + [Desktop Entry] + _Name=Database access control center + _Comment=Configure your database access environment +-Icon=gda-control-center ++Icon=gda-control-center-5.0 + Exec=gda-control-center-5.0 + Terminal=false + Type=Application +-- +1.7.5.3 + diff --git a/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-doc-collision.patch b/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-doc-collision.patch new file mode 100644 index 000000000000..9616a42d7ae3 --- /dev/null +++ b/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-doc-collision.patch @@ -0,0 +1,43 @@ +From bfb0d952d111929174c3326dbc69ab65a808a235 Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev <tetromino@gmail.com> +Date: Sat, 4 Jun 2011 05:59:46 -0400 +Subject: [PATCH] Prevent file collision with gda-browser-4.0's gtk-doc files + +--- + tools/browser/doc/Makefile.am | 2 +- + ...browser-docs.sgml => gda-browser-5.0-docs.sgml} | 0 + ...r-sections.txt => gda-browser-5.0-sections.txt} | 0 + .../{gda-browser.types => gda-browser-5.0.types} | 0 + 4 files changed, 1 insertions(+), 1 deletions(-) + rename tools/browser/doc/{gda-browser-docs.sgml => gda-browser-5.0-docs.sgml} (100%) + rename tools/browser/doc/{gda-browser-sections.txt => gda-browser-5.0-sections.txt} (100%) + rename tools/browser/doc/{gda-browser.types => gda-browser-5.0.types} (100%) + +diff --git a/tools/browser/doc/Makefile.am b/tools/browser/doc/Makefile.am +index 971fa79..cf6637a 100644 +--- a/tools/browser/doc/Makefile.am ++++ b/tools/browser/doc/Makefile.am +@@ -3,7 +3,7 @@ + AUTOMAKE_OPTIONS = 1.6 + + # The name of the module. +-DOC_MODULE=gda-browser ++DOC_MODULE=gda-browser-5.0 + + # The top-level SGML file. + DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml +diff --git a/tools/browser/doc/gda-browser-docs.sgml b/tools/browser/doc/gda-browser-5.0-docs.sgml +similarity index 100% +rename from tools/browser/doc/gda-browser-docs.sgml +rename to tools/browser/doc/gda-browser-5.0-docs.sgml +diff --git a/tools/browser/doc/gda-browser-sections.txt b/tools/browser/doc/gda-browser-5.0-sections.txt +similarity index 100% +rename from tools/browser/doc/gda-browser-sections.txt +rename to tools/browser/doc/gda-browser-5.0-sections.txt +diff --git a/tools/browser/doc/gda-browser.types b/tools/browser/doc/gda-browser-5.0.types +similarity index 100% +rename from tools/browser/doc/gda-browser.types +rename to tools/browser/doc/gda-browser-5.0.types +-- +1.7.5.3 + diff --git a/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-help-collision.patch b/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-help-collision.patch new file mode 100644 index 000000000000..46e728234da4 --- /dev/null +++ b/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-help-collision.patch @@ -0,0 +1,38 @@ +From 01b13e22b215647c2343ec5f633b51d3c2b37824 Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev <tetromino@gmail.com> +Date: Sat, 4 Jun 2011 01:59:14 -0400 +Subject: [PATCH] Prevent file collision with gda-browser-4.0's help files + +--- + tools/browser/help/Makefile.am | 2 +- + tools/browser/support.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tools/browser/help/Makefile.am b/tools/browser/help/Makefile.am +index 93acaf8..48fcdc4 100644 +--- a/tools/browser/help/Makefile.am ++++ b/tools/browser/help/Makefile.am +@@ -1,6 +1,6 @@ + include $(top_srcdir)/gnome-doc-utils.make + +-DOC_ID = gda-browser ++DOC_ID = gda-browser-5.0 + + DOC_INCLUDES = legal.xml + DOC_FIGURES = \ +diff --git a/tools/browser/support.c b/tools/browser/support.c +index 5b1b4e6..f462efc 100644 +--- a/tools/browser/support.c ++++ b/tools/browser/support.c +@@ -223,7 +223,7 @@ browser_show_help (GtkWindow *parent, const gchar *topic) + if (strchr (lang, '.')) + continue; + +- uri = gda_gbr_get_file_path (GDA_DATA_DIR, "gnome", "help", "gda-browser", lang, NULL); ++ uri = gda_gbr_get_file_path (GDA_DATA_DIR, "gnome", "help", "gda-browser-5.0", lang, NULL); + + /*g_print ("TST URI [%s]\n", uri);*/ + if (g_file_test (uri, G_FILE_TEST_EXISTS)) { +-- +1.7.5.3 + diff --git a/gnome-extra/libgda/files/libgda-4.99.4-disable-broken-tests.patch b/gnome-extra/libgda/files/libgda-4.99.4-disable-broken-tests.patch new file mode 100644 index 000000000000..1add00a025a4 --- /dev/null +++ b/gnome-extra/libgda/files/libgda-4.99.4-disable-broken-tests.patch @@ -0,0 +1,15 @@ +diff --git a/tests/value-holders/check_holder.c b/tests/value-holders/check_holder.c +index d014131..289a9ca 100644 +--- a/tests/value-holders/check_holder.c ++++ b/tests/value-holders/check_holder.c +@@ -38,8 +38,8 @@ static gboolean test13 (GError **error); + TestFunc tests[] = { + test1, + test2, +- test3, +- test4, ++// test3, ++// test4, + test5, + test6, + test7, diff --git a/gnome-extra/libgda/files/libgda-4.99.4-statement-rewriting-fix.patch b/gnome-extra/libgda/files/libgda-4.99.4-statement-rewriting-fix.patch new file mode 100644 index 000000000000..07077e5461d8 --- /dev/null +++ b/gnome-extra/libgda/files/libgda-4.99.4-statement-rewriting-fix.patch @@ -0,0 +1,465 @@ +From 7d7742477ad03f19a168c763b988a7807421e9ca Mon Sep 17 00:00:00 2001 +From: Vivien Malerba <malerba@gnome-db.org> +Date: Sat, 17 Sep 2011 14:26:09 +0000 +Subject: Fixed nasty bug introduced in commit #036420a459b0bb241716cd9a14c3dd1eb2b21f63 + +which "Improved statement rewriting for NULL parameters", and in other +commits for each provider +--- +diff --git a/libgda/sqlite/gda-sqlite-provider.c b/libgda/sqlite/gda-sqlite-provider.c +index afeab3c..69ccd16 100644 +--- a/libgda/sqlite/gda-sqlite-provider.c ++++ b/libgda/sqlite/gda-sqlite-provider.c +@@ -2935,7 +2935,33 @@ gda_sqlite_provider_statement_execute (GdaServerProvider *provider, GdaConnectio + else if (!rstmt) + return NULL; + else { ++ /* The strategy here is to execute @rstmt using the prepared ++ * statement associcted to @stmt, but adapted to @rstmt, so all ++ * the column names, etc remain the same. ++ * ++ * The adaptation consists to replace SQLite specific information ++ * in the GdaSqlitePStmt object. ++ * ++ * The trick is to adapt @ps, then associate @ps with @rstmt, then ++ * execute @rstmt, and then undo the trick */ + GObject *obj; ++ GdaSqlitePStmt *tps; ++ if (!gda_sqlite_provider_statement_prepare (provider, cnc, ++ rstmt, error)) ++ return NULL; ++ tps = (GdaSqlitePStmt *) ++ gda_connection_get_prepared_statement (cnc, rstmt); ++ ++ /* adapt @ps with @tps's SQLite specific information */ ++ GdaSqlitePStmt hps; ++ hps.sqlite_stmt = ps->sqlite_stmt; /* save */ ++ ps->sqlite_stmt = tps->sqlite_stmt; /* override */ ++ hps.stmt_used = ps->stmt_used; /* save */ ++ ps->stmt_used = tps->stmt_used; /* override */ ++ g_object_ref (tps); ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps); ++ ++ /* execute rstmt (it will use @ps) */ + obj = gda_sqlite_provider_statement_execute (provider, cnc, + rstmt, params, + model_usage, +@@ -2943,15 +2969,14 @@ gda_sqlite_provider_statement_execute (GdaServerProvider *provider, GdaConnectio + last_inserted_row, + task_id, async_cb, + cb_data, error); ++ ++ /* revert adaptations */ ++ ps->sqlite_stmt = hps.sqlite_stmt; ++ ps->stmt_used = hps.stmt_used; ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps); ++ g_object_unref (tps); + g_object_unref (rstmt); +- if (GDA_IS_DATA_SELECT (obj)) { +- GdaPStmt *pstmt; +- g_object_get (obj, "prepared-stmt", &pstmt, NULL); +- if (pstmt) { +- gda_pstmt_set_gda_statement (pstmt, stmt); +- g_object_unref (pstmt); +- } +- } ++ + if (new_ps) + g_object_unref (ps); + pending_blobs_free_list (blobs_list); +diff --git a/providers/jdbc/gda-jdbc-provider.c b/providers/jdbc/gda-jdbc-provider.c +index 164e67f..c1192fb 100644 +--- a/providers/jdbc/gda-jdbc-provider.c ++++ b/providers/jdbc/gda-jdbc-provider.c +@@ -1429,9 +1429,49 @@ gda_jdbc_provider_statement_execute (GdaServerProvider *provider, GdaConnection + else if (!rstmt) + return NULL; + else { +- GObject *obj; +- g_object_unref (ps); + _gda_jdbc_release_jenv (jni_detach); ++ ++ /* The strategy here is to execute @rstmt using the prepared ++ * statement associcted to @stmt, but adapted to @rstmt, so all ++ * the column names, etc remain the same. ++ * ++ * The adaptation consists to replace Jdbc specific information ++ * in the GdaJdbcPStmt object. ++ * ++ * The trick is to adapt @ps, then associate @ps with @rstmt, then ++ * execute @rstmt, and then undo the trick */ ++ GObject *obj; ++ GdaJdbcPStmt *tps; ++ if (!gda_jdbc_provider_statement_prepare (provider, cnc, ++ rstmt, error)) { ++ g_object_unref (ps); ++ return NULL; ++ } ++ tps = (GdaJdbcPStmt *) ++ gda_connection_get_prepared_statement (cnc, rstmt); ++ ++ /* adapt @ps with @tps's Jdbc specific information */ ++ GdaJdbcPStmt hps; ++ hps.pstmt_obj = ps->pstmt_obj; /* save */ ++ ps->pstmt_obj = tps->pstmt_obj; /* override */ ++ g_object_ref (tps); ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps); ++ ++ /* execute rstmt (it will use @ps) */ ++ obj = gda_jdbc_provider_statement_execute (provider, cnc, ++ rstmt, params, ++ model_usage, ++ col_types, ++ last_inserted_row, ++ task_id, async_cb, ++ cb_data, error); ++ ++ /* revert adaptations */ ++ ps->pstmt_obj = hps.pstmt_obj; ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps); ++ g_object_unref (tps); ++ g_object_unref (rstmt); ++ + obj = gda_jdbc_provider_statement_execute (provider, cnc, + rstmt, params, + model_usage, +@@ -1440,14 +1480,7 @@ gda_jdbc_provider_statement_execute (GdaServerProvider *provider, GdaConnection + task_id, async_cb, + cb_data, error); + g_object_unref (rstmt); +- if (GDA_IS_DATA_SELECT (obj)) { +- GdaPStmt *pstmt; +- g_object_get (obj, "prepared-stmt", &pstmt, NULL); +- if (pstmt) { +- gda_pstmt_set_gda_statement (pstmt, stmt); +- g_object_unref (pstmt); +- } +- } ++ g_object_unref (ps); + return obj; + } + } +diff --git a/providers/mysql/gda-mysql-provider.c b/providers/mysql/gda-mysql-provider.c +index d581828..8baf0a3 100644 +--- a/providers/mysql/gda-mysql-provider.c ++++ b/providers/mysql/gda-mysql-provider.c +@@ -2304,8 +2304,35 @@ gda_mysql_provider_statement_execute (GdaServerProvider *provider, + else if (!rstmt) + return NULL; + else { +- GObject *obj; + free_bind_param_data (mem_to_free); ++ ++ /* The strategy here is to execute @rstmt using the prepared ++ * statement associcted to @stmt, but adapted to @rstmt, so all ++ * the column names, etc remain the same. ++ * ++ * The adaptation consists to replace MySQL specific information ++ * in the GdaMysqlPStmt object. ++ * ++ * The trick is to adapt @ps, then associate @ps with @rstmt, then ++ * execute @rstmt, and then undo the trick */ ++ GObject *obj; ++ GdaMysqlPStmt *tps; ++ if (!gda_mysql_provider_statement_prepare (provider, cnc, ++ rstmt, error)) ++ return NULL; ++ tps = (GdaMysqlPStmt *) ++ gda_connection_get_prepared_statement (cnc, rstmt); ++ ++ /* adapt @ps with @tps's Mysql specific information */ ++ GdaMysqlPStmt hps; ++ hps.mysql_stmt = ps->mysql_stmt; /* save */ ++ ps->mysql_stmt = tps->mysql_stmt; /* override */ ++ hps.stmt_used = ps->stmt_used; /* save */ ++ ps->stmt_used = tps->stmt_used; /* override */ ++ g_object_ref (tps); ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps); ++ ++ /* execute rstmt (it will use @ps) */ + obj = gda_mysql_provider_statement_execute (provider, cnc, + rstmt, params, + model_usage, +@@ -2313,15 +2340,13 @@ gda_mysql_provider_statement_execute (GdaServerProvider *provider, + last_inserted_row, + task_id, async_cb, + cb_data, error); ++ ++ /* revert adaptations */ ++ ps->mysql_stmt = hps.mysql_stmt; ++ ps->stmt_used = hps.stmt_used; ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps); ++ g_object_unref (tps); + g_object_unref (rstmt); +- if (GDA_IS_DATA_SELECT (obj)) { +- GdaPStmt *pstmt; +- g_object_get (obj, "prepared-stmt", &pstmt, NULL); +- if (pstmt) { +- gda_pstmt_set_gda_statement (pstmt, stmt); +- g_object_unref (pstmt); +- } +- } + return obj; + } + } +diff --git a/providers/oracle/gda-oracle-provider.c b/providers/oracle/gda-oracle-provider.c +index 1d40105..9d0f485 100644 +--- a/providers/oracle/gda-oracle-provider.c ++++ b/providers/oracle/gda-oracle-provider.c +@@ -1931,8 +1931,35 @@ gda_oracle_provider_statement_execute (GdaServerProvider *provider, GdaConnectio + else if (!rstmt) + return NULL; + else { ++ /* The strategy here is to execute @rstmt using the prepared ++ * statement associcted to @stmt, but adapted to @rstmt, so all ++ * the column names, etc remain the same. ++ * ++ * The adaptation consists to replace Oracle specific information ++ * in the GdaOraclePStmt object. ++ * ++ * The trick is to adapt @ps, then associate @ps with @rstmt, then ++ * execute @rstmt, and then undo the trick */ + GObject *obj; +- g_object_unref (ps); ++ GdaOraclePStmt *tps; ++ if (!gda_oracle_provider_statement_prepare (provider, cnc, ++ rstmt, error)) { ++ g_object_unref (ps); ++ return NULL; ++ } ++ tps = (GdaOraclePStmt *) ++ gda_connection_get_prepared_statement (cnc, rstmt); ++ ++ /* adapt @ps with @tps's Oracle specific information */ ++ GdaOraclePStmt hps; ++ hps.hstmt = ps->hstmt; /* save */ ++ ps->hstmt = tps->hstmt; /* override */ ++ hps.ora_values = ps->ora_values; /* save */ ++ ps->ora_values = tps->ora_values; /* override */ ++ g_object_ref (tps); ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps); ++ ++ /* execute rstmt (it will use @ps) */ + obj = gda_oracle_provider_statement_execute (provider, cnc, + rstmt, params, + model_usage, +@@ -1940,15 +1967,14 @@ gda_oracle_provider_statement_execute (GdaServerProvider *provider, GdaConnectio + last_inserted_row, + task_id, async_cb, + cb_data, error); ++ ++ /* revert adaptations */ ++ ps->hstmt = hps.hstmt; ++ ps->ora_values = hps.ora_values; ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps); ++ g_object_unref (tps); + g_object_unref (rstmt); +- if (GDA_IS_DATA_SELECT (obj)) { +- GdaPStmt *pstmt; +- g_object_get (obj, "prepared-stmt", &pstmt, NULL); +- if (pstmt) { +- gda_pstmt_set_gda_statement (pstmt, stmt); +- g_object_unref (pstmt); +- } +- } ++ g_object_unref (ps); + return obj; + } + } +diff --git a/providers/postgres/gda-postgres-provider.c b/providers/postgres/gda-postgres-provider.c +index 6adca14..85db58e 100644 +--- a/providers/postgres/gda-postgres-provider.c ++++ b/providers/postgres/gda-postgres-provider.c +@@ -2017,13 +2017,39 @@ gda_postgres_provider_statement_execute (GdaServerProvider *provider, GdaConnect + else if (!rstmt) + return NULL; + else { +- GObject *obj; + params_freev (param_values, param_mem, nb_params); + g_free (param_lengths); + g_free (param_formats); + if (transaction_started) + gda_connection_rollback_transaction (cnc, NULL, NULL); + ++ /* The strategy here is to execute @rstmt using the prepared ++ * statement associcted to @stmt, but adapted to @rstmt, so all ++ * the column names, etc remain the same. ++ * ++ * The adaptation consists to replace Postgresql specific information ++ * in the GdaPostgresPStmt object. ++ * ++ * The trick is to adapt @ps, then associate @ps with @rstmt, then ++ * execute @rstmt, and then undo the trick */ ++ GObject *obj; ++ GdaPostgresPStmt *tps; ++ if (!gda_postgres_provider_statement_prepare (provider, cnc, ++ rstmt, error)) ++ return NULL; ++ tps = (GdaPostgresPStmt *) ++ gda_connection_get_prepared_statement (cnc, rstmt); ++ ++ /* adapt @ps with @tps's SQLite specific information */ ++ GdaPostgresPStmt hps; ++ hps.pconn = ps->pconn; /* save */ ++ ps->pconn = tps->pconn; /* override */ ++ hps.prep_name = ps->prep_name; /* save */ ++ ps->prep_name = tps->prep_name; /* override */ ++ g_object_ref (tps); ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps); ++ ++ /* execute rstmt (it will use @ps) */ + obj = gda_postgres_provider_statement_execute (provider, cnc, + rstmt, params, + model_usage, +@@ -2031,15 +2057,13 @@ gda_postgres_provider_statement_execute (GdaServerProvider *provider, GdaConnect + last_inserted_row, + task_id, async_cb, + cb_data, error); ++ ++ /* revert adaptations */ ++ ps->pconn = hps.pconn; ++ ps->prep_name = hps.prep_name; ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps); ++ g_object_unref (tps); + g_object_unref (rstmt); +- if (GDA_IS_DATA_SELECT (obj)) { +- GdaPStmt *pstmt; +- g_object_get (obj, "prepared-stmt", &pstmt, NULL); +- if (pstmt) { +- gda_pstmt_set_gda_statement (pstmt, stmt); +- g_object_unref (pstmt); +- } +- } + return obj; + } + } +diff --git a/providers/skel-implementation/capi/gda-capi-provider.c b/providers/skel-implementation/capi/gda-capi-provider.c +index 653f9ea..764d027 100644 +--- a/providers/skel-implementation/capi/gda-capi-provider.c ++++ b/providers/skel-implementation/capi/gda-capi-provider.c +@@ -1181,7 +1181,31 @@ gda_capi_provider_statement_execute (GdaServerProvider *provider, GdaConnection + else if (!rstmt) + return NULL; + else { ++ /* The strategy here is to execute @rstmt using the prepared ++ * statement associcted to @stmt, but adapted to @rstmt, so all ++ * the column names, etc remain the same. ++ * ++ * The adaptation consists to replace Capi specific information ++ * in the GdaCapiPStmt object. ++ * ++ * The trick is to adapt @ps, then associate @ps with @rstmt, then ++ * execute @rstmt, and then undo the trick */ + GObject *obj; ++ GdaCapiPStmt *tps; ++ if (!gda_capi_provider_statement_prepare (provider, cnc, ++ rstmt, error)) ++ return NULL; ++ tps = (GdaCapiPStmt *) ++ gda_connection_get_prepared_statement (cnc, rstmt); ++ ++ /* adapt @ps with @tps's Capi specific information */ ++ GdaCapiPStmt hps; ++ /* TO ADD: hps.capi_stmt = ps->capi_stmt;*/ /* save */ ++ /* TO_ADD: ps->capi_stmt = tps->capi_stmt;*/ /* override */ ++ g_object_ref (tps); ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps); ++ ++ /* execute rstmt (it will use @ps) */ + obj = gda_capi_provider_statement_execute (provider, cnc, + rstmt, params, + model_usage, +@@ -1189,15 +1213,13 @@ gda_capi_provider_statement_execute (GdaServerProvider *provider, GdaConnection + last_inserted_row, + task_id, async_cb, + cb_data, error); ++ ++ /* revert adaptations */ ++ /* TO_ADD: ps->capi_stmt = hps.capi_stmt; */ ++ ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps); ++ g_object_unref (tps); + g_object_unref (rstmt); +- if (GDA_IS_DATA_SELECT (obj)) { +- GdaPStmt *pstmt; +- g_object_get (obj, "prepared-stmt", &pstmt, NULL); +- if (pstmt) { +- gda_pstmt_set_gda_statement (pstmt, stmt); +- g_object_unref (pstmt); +- } +- } + return obj; + } + } +diff --git a/providers/web/gda-web-provider.c b/providers/web/gda-web-provider.c +index 4500f01..9061126 100644 +--- a/providers/web/gda-web-provider.c ++++ b/providers/web/gda-web-provider.c +@@ -1572,25 +1572,49 @@ gda_web_provider_statement_execute (GdaServerProvider *provider, GdaConnection * + else if (!rstmt) + return NULL; + else { +- GObject *obj; +- g_object_unref (ps); + xmlFreeDoc (doc); ++ ++ /* The strategy here is to execute @rstmt using the prepared ++ * statement associcted to @stmt, but adapted to @rstmt, so all ++ * the column names, etc remain the same. ++ * ++ * The adaptation consists to replace Web specific information ++ * in the GdaWebPStmt object. ++ * ++ * The trick is to adapt @ps, then associate @ps with @rstmt, then ++ * execute @rstmt, and then undo the trick */ ++ GObject *obj; ++ GdaWebPStmt *tps; ++ if (!gda_web_provider_statement_prepare (provider, cnc, ++ rstmt, error)) { ++ g_object_unref (ps); ++ return NULL; ++ } ++ tps = (GdaWebPStmt *) ++ gda_connection_get_prepared_statement (cnc, rstmt); ++ ++ /* adapt @ps with @tps's Web specific information */ ++ GdaWebPStmt hps; ++ hps.pstmt_hash = ps->pstmt_hash; /* save */ ++ ps->pstmt_hash = tps->pstmt_hash; /* override */ ++ g_object_ref (tps); ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps); ++ ++ /* execute rstmt (it will use @ps) */ + obj = gda_web_provider_statement_execute (provider, cnc, +- rstmt, params, +- model_usage, +- col_types, +- last_inserted_row, +- task_id, async_cb, +- cb_data, error); ++ rstmt, params, ++ model_usage, ++ col_types, ++ last_inserted_row, ++ task_id, async_cb, ++ cb_data, error); ++ ++ /* revert adaptations */ ++ ps->pstmt_hash = hps.pstmt_hash; ++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps); ++ g_object_unref (tps); + g_object_unref (rstmt); +- if (GDA_IS_DATA_SELECT (obj)) { +- GdaPStmt *pstmt; +- g_object_get (obj, "prepared-stmt", &pstmt, NULL); +- if (pstmt) { +- gda_pstmt_set_gda_statement (pstmt, stmt); +- g_object_unref (pstmt); +- } +- } ++ g_object_unref (ps); + return obj; + } + } +-- +cgit v0.9.0.2 diff --git a/gnome-extra/libgda/libgda-4.99.4.ebuild b/gnome-extra/libgda/libgda-4.99.4.ebuild new file mode 100644 index 000000000000..7f57bdec9a94 --- /dev/null +++ b/gnome-extra/libgda/libgda-4.99.4.ebuild @@ -0,0 +1,165 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/gnome-extra/libgda/libgda-4.99.4.ebuild,v 1.1 2011/09/30 19:27:46 nirbheek Exp $ + +EAPI="3" +GNOME2_LA_PUNT="yes" +GCONF_DEBUG="yes" +GNOME_TARBALL_SUFFIX="xz" # remove when python eclass supports EAPI 4 +PYTHON_DEPEND="2" + +inherit autotools db-use eutils flag-o-matic gnome2 java-pkg-opt-2 python + +DESCRIPTION="Gnome Database Access Library" +HOMEPAGE="http://www.gnome-db.org/" +LICENSE="GPL-2 LGPL-2" + +IUSE="berkdb bindist canvas doc firebird gnome-keyring gtk graphviz http +introspection json ldap mdb mysql oci8 postgres sourceview ssl" +SLOT="5" +KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd" + +# FIXME: sqlite is automagic, but maybe it is a hard-dep +# FIXME: autoconf is a hell of inconsistencies +RDEPEND=" + app-text/iso-codes + >=dev-libs/glib-2.16:2 + >=dev-libs/libxml2-2 + dev-libs/libxslt + dev-libs/libunique:3 + sys-libs/readline + sys-libs/ncurses + berkdb? ( sys-libs/db ) + !bindist? ( firebird? ( dev-db/firebird ) ) + gtk? ( + >=x11-libs/gtk+-3.0.0:3 + canvas? ( x11-libs/goocanvas:2.0 ) + sourceview? ( x11-libs/gtksourceview:3.0 ) + graphviz? ( media-gfx/graphviz ) + ) + gnome-keyring? ( || ( gnome-base/libgnome-keyring <gnome-base/gnome-keyring-2.29.4 ) ) + http? ( >=net-libs/libsoup-2.24:2.4 ) + introspection? ( >=dev-libs/gobject-introspection-0.6.5 ) + json? ( dev-libs/json-glib ) + ldap? ( net-nds/openldap ) + mdb? ( >app-office/mdbtools-0.5 ) + mysql? ( virtual/mysql ) + postgres? ( dev-db/postgresql-base ) + ssl? ( dev-libs/openssl ) + >=dev-db/sqlite-3.6.22:3" + +DEPEND="${RDEPEND} + >=dev-util/pkgconfig-0.18 + >=dev-util/intltool-0.35.5 + >=app-text/gnome-doc-utils-0.9 + doc? ( >=dev-util/gtk-doc-1 )" + +# XXX: some tests fail when run from portage (but pass when building by hand) +RESTRICT="test" + +pkg_setup() { + DOCS="AUTHORS ChangeLog NEWS README" + + if use canvas || use graphviz || use sourceview; then + if ! use gtk; then + ewarn "You must enable USE=gtk to make use of canvas, graphivz or sourceview USE flag." + ewarn "Disabling for now." + G2CONF="${G2CONF} --without-goocanvas --without-graphivz --without-gtksourceview" + else + G2CONF="${G2CONF} + $(use_with canvas goocanvas) + $(use_with graphviz) + $(use_with sourceview gtksourceview)" + fi + fi + + G2CONF="${G2CONF} + --with-unique + --disable-scrollkeeper + --disable-static + --enable-system-sqlite + $(use_with berkdb bdb /usr) + $(use_with gnome-keyring) + $(use_with gtk ui) + $(use_with http libsoup) + $(use_enable introspection) + $(use_with java java $JAVA_HOME) + $(use_enable json) + $(use_with ldap) + $(use_with mdb mdb /usr) + $(use_with mysql mysql /usr) + $(use_with postgres postgres /usr) + $(use_enable ssl crypto)" + + if use bindist; then + # firebird license is not GPL compatible + G2CONF="${G2CONF} --without-firebird" + else + G2CONF="${G2CONF} $(use_with firebird firebird /usr)" + fi + + use berkdb && append-cppflags "-I$(db_includedir)" + use oci8 || G2CONF="${G2CONF} --without-oracle" + + # Not in portage + G2CONF="${G2CONF} + --disable-default-binary" +} + +src_prepare() { + # Fix build order for generated content, upstream #630958 + #epatch "${FILESDIR}/${PN}-9999-fix-build-order.patch" + + # Fix compilation failure of keyword_hash.c, upstream #630959 + #epatch "${FILESDIR}/${PN}-4.2.0-missing-include-in-keyword_hash-generator.patch" + + # Upstream patch to fix a serious statement rewriting bug, in next release + epatch "${FILESDIR}/${PN}-4.99.4-statement-rewriting-fix.patch" + + # Disable broken tests so we can check the others + epatch "${FILESDIR}/${PN}-4.99.4-disable-broken-tests.patch" + + # Prevent file collisions with libgda:4 + epatch "${FILESDIR}/${PN}-4.99.1-gda-browser-help-collision.patch" + epatch "${FILESDIR}/${PN}-4.99.1-gda-browser-doc-collision.patch" + epatch "${FILESDIR}/${PN}-4.99.1-control-center-icon-collision.patch" + # Move files with mv (since epatch can't handle rename diffs) and + # update pre-generated gtk-doc files + local f + for f in tools/browser/doc/gda-browser* ; do + mv ${f} ${f/gda-browser/gda-browser-5.0} || die "mv ${f} failed" + done + for f in tools/browser/doc/html/gda-browser.devhelp* ; do + sed -e 's:name="gda-browser":name="gda-browser-5.0":' \ + -i ${f} || die "sed ${f} failed" + mv ${f} ${f/gda-browser/gda-browser-5.0} || die "mv ${f} failed" + done + for f in control-center/data/*_gda-control-center.png ; do + mv ${f} ${f/_gda-control-center.png/_gda-control-center-5.0.png} || + die "mv ${f} failed" + done + + python_convert_shebangs -r 2 libgda-report/RML/trml2{html,pdf} + + eautoreconf + gnome2_src_prepare +} + +src_test() { + emake check XDG_DATA_HOME="${T}/.local" || die "tests failed" +} + +pkg_postinst() { + gnome2_pkg_postinst + local d + for d in /usr/share/libgda-5.0/gda_trml2{html,pdf} ; do + python_mod_optimize ${d} + done +} + +pkg_postrm() { + gnome2_pkg_postrm + local d + for d in /usr/share/libgda-5.0/gda_trml2{html,pdf} ; do + python_mod_cleanup ${d} + done +} diff --git a/gnome-extra/libgda/metadata.xml b/gnome-extra/libgda/metadata.xml index aaa5090824f2..8e73c78908ef 100644 --- a/gnome-extra/libgda/metadata.xml +++ b/gnome-extra/libgda/metadata.xml @@ -8,6 +8,8 @@ <flag name="introspection">Use <pkg>dev-libs/gobject-introspection</pkg> for introspection</flag> <flag name="json">Enable support for JSON format</flag> + <flag name="mdb">Enable support for Microsoft Access Database using + <pkg>app-office/mdbtools</pkg></flag> <flag name="sourceview">Enable support for <pkg>x11-libs/gtksourceview</pkg></flag> </use> </pkgmetadata> |