summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2013-10-19 22:57:40 +0200
committerLionel Elie Mamane <lionel@mamane.lu>2013-10-19 23:03:14 +0200
commit02a11749da521e8e2099b464c0fcbebce9e95e22 (patch)
treee7e9b5bac422843ae8b031f9b59f4769e81a4845
parent96953171bf0503a89611b7c518668f749fe14425 (diff)
fdo#70496 revert to using libmysqlclient
Change-Id: I5b98b5e7840e4f1c6005aee0c1f43ef814ecf77b
-rw-r--r--config_host.mk.in3
-rw-r--r--configure.ac43
-rw-r--r--external/mysqlcppconn/Library_mysqlcppconn.mk1
-rw-r--r--mysqlc/Extension_mysql-connector-ooo.mk6
-rw-r--r--mysqlc/Library_mysqlc.mk2
-rw-r--r--mysqlc/source/mysqlc_driver.cxx23
-rw-r--r--mysqlc/source/mysqlc_driver.hxx4
7 files changed, 76 insertions, 6 deletions
diff --git a/config_host.mk.in b/config_host.mk.in
index aba2735c34ab..3c891372c513 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -357,6 +357,9 @@ export MARIADBC_MICRO=@MARIADBC_MICRO@
export MARIADBC_MINOR=@MARIADBC_MINOR@
export MARIADB_CFLAGS=$(gb_SPACE)@MARIADB_CFLAGS@
export MARIADB_LIBS=$(gb_SPACE)@MARIADB_LIBS@
+export LIBMARIADB=@LIBMARIADB@
+export LIBMARIADB_PATH=@LIBMARIADB_PATH@
+export BUNDLE_MARIADB=@BUNDLE_MARIADB@
export MD5SUM=@MD5SUM@
export MDDS_CPPFLAGS=$(gb_SPACE)@MDDS_CPPFLAGS@
export MERGELIBS=@MERGELIBS@
diff --git a/configure.ac b/configure.ac
index 02a1687c0f00..3f3d809db9c6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1520,6 +1520,11 @@ AC_ARG_WITH(system-mariadb,
extension.]),,
[with_system_mariadb="$with_system_libs"])
+AC_ARG_ENABLE(bundle-mariadb,
+ AS_HELP_STRING([--enable-bundle-mariadb],
+ [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice extension.])
+)
+
AC_ARG_WITH(system-mysql-cppconn,
AS_HELP_STRING([--with-system-mysql-cppconn],
[Use MySQL C++ Connector libraries already on system.]),,
@@ -8185,11 +8190,12 @@ if test "$ENABLE_MARIADBC" = "TRUE"; then
if test "$with_system_mariadb" = "yes"; then
AC_MSG_RESULT([external])
SYSTEM_MARIADB=YES
- AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
+ #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
if test -z "$MARIADBCONFIG"; then
AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
if test -z "$MARIADBCONFIG"; then
- AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL package.])
+ #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL package.])
+ AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
fi
fi
AC_MSG_CHECKING([MariaDB version])
@@ -8202,10 +8208,36 @@ if test "$ENABLE_MARIADBC" = "TRUE"; then
fi
AC_MSG_CHECKING([for MariaDB Client library])
MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
- MARIADB_LIBS=`$MARIADBCONFIG --libs`
- AC_MSG_RESULT([includes $MARIADB_CFLAGS, libraries $MARIADB_LIBS])
+ MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
+ AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
+ AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
+ if test "$enable_bundle_mariadb" = "yes"; then
+ AC_MSG_RESULT([yes])
+ BUNDLE_MARIADB=YES
+ LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\+-l/\n/g' | grep -E '(mysqlclient|mariadb)')
+ if test "$_os" = "Darwin"; then
+ LIBMARIADB=${LIBMARIADB}.dylib
+ elif test "$_os" = "WINNT"; then
+ LIBMARIADB=${LIBMARIADB}.dll
+ else
+ LIBMARIADB=${LIBMARIADB}.so
+ fi
+ LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
+ AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
+ if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
+ AC_MSG_RESULT([found.])
+ PathFormat "$LIBMARIADB_PATH"
+ LIBMARIADB_PATH="$formatted_path"
+ else
+ AC_MSG_ERROR([not found.])
+ fi
+ else
+ AC_MSG_RESULT([no])
+ BUNDLE_MARIADB=NO
+ fi
else
AC_MSG_RESULT([internal])
+ AC_MSG_ERROR([libmariadb is known to be broken as of 2013-10; use libmysqlclient])
SYSTEM_MARIADB=NO
MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb/include"
MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadblib"
@@ -8215,6 +8247,9 @@ if test "$ENABLE_MARIADBC" = "TRUE"; then
AC_SUBST(SYSTEM_MARIADB)
AC_SUBST(MARIADB_CFLAGS)
AC_SUBST(MARIADB_LIBS)
+ AC_SUBST(LIBMARIADB)
+ AC_SUBST(LIBMARIADB_PATH)
+ AC_SUBST(BUNDLE_MARIADB)
AC_LANG_PUSH([C++])
dnl ===================================================================
diff --git a/external/mysqlcppconn/Library_mysqlcppconn.mk b/external/mysqlcppconn/Library_mysqlcppconn.mk
index adebc5b027bc..eccc52173d8e 100644
--- a/external/mysqlcppconn/Library_mysqlcppconn.mk
+++ b/external/mysqlcppconn/Library_mysqlcppconn.mk
@@ -12,7 +12,6 @@ $(eval $(call gb_Library_Library,mysqlcppconn))
$(eval $(call gb_Library_use_unpacked,mysqlcppconn,mysqlcppconn))
$(eval $(call gb_Library_use_externals,mysqlcppconn, \
- mysql \
boost_headers \
mariadb \
))
diff --git a/mysqlc/Extension_mysql-connector-ooo.mk b/mysqlc/Extension_mysql-connector-ooo.mk
index 810ede57ad78..d94905745271 100644
--- a/mysqlc/Extension_mysql-connector-ooo.mk
+++ b/mysqlc/Extension_mysql-connector-ooo.mk
@@ -26,4 +26,10 @@ ifeq ($(SYSTEM_MYSQL_CPPCONN),NO)
$(eval $(call gb_Extension_add_library,mysql-connector-ooo,mysqlcppconn))
endif
+ifeq ($(BUNDLE_MARIADB),YES)
+$(eval $(call gb_Extension_add_files,mysql-connector-ooo,,\
+ $(LIBMARIADB_PATH)/$(LIBMARIADB) \
+))
+endif
+
# vim: set noet sw=4 ts=4:
diff --git a/mysqlc/Library_mysqlc.mk b/mysqlc/Library_mysqlc.mk
index 72787fc1855b..00c35e300bea 100644
--- a/mysqlc/Library_mysqlc.mk
+++ b/mysqlc/Library_mysqlc.mk
@@ -42,6 +42,8 @@ $(eval $(call gb_Library_add_defs,mysqlc,\
-DMARIADBC_VERSION_MICRO=$(MARIADBC_MICRO) \
$(if $(filter NO,$(SYSTEM_MYSQL_CPPCONN)),\
-DCPPCONN_LIB=\"$(call gb_Library_get_runtime_filename,mysqlcppconn)\") \
+ $(if $(filter YES,$(BUNDLE_MARIADB)),\
+ -DBUNDLE_MARIADB=\"$(LIBMARIADB)\") \
))
$(eval $(call gb_Library_add_exception_objects,mysqlc,\
diff --git a/mysqlc/source/mysqlc_driver.cxx b/mysqlc/source/mysqlc_driver.cxx
index abd29776ba03..f6181e70ff74 100644
--- a/mysqlc/source/mysqlc_driver.cxx
+++ b/mysqlc/source/mysqlc_driver.cxx
@@ -143,9 +143,30 @@ void MysqlCDriver::impl_initCppConn_lck_throw()
#ifdef SYSTEM_MYSQL_CPPCONN
cppDriver = get_driver_instance();
#else
+#ifdef BUNDLE_MARIADB
+ if ( !m_bAttemptedLoadCConn )
+ {
+ const OUString sModuleName(BUNDLE_MARIADB);
+ m_hCConnModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 );
+ m_bAttemptedLoadCConn = true;
+ }
+
+ // attempted to load - was it successful?
+ if ( !m_hCConnModule )
+ {
+ OSL_FAIL( "MysqlCDriver::impl_initCppConn_lck_throw: could not load the " BUNDLE_MARIADB " library!");
+ throw SQLException(
+ OUString( "Unable to load the " BUNDLE_MARIADB " library." ),
+ *this,
+ OUString( "08001" ), // "unable to connect"
+ 0,
+ Any()
+ );
+ }
+#endif
if ( !m_bAttemptedLoadCppConn )
{
- const OUString sModuleName(CPPCONN_LIB );
+ const OUString sModuleName(CPPCONN_LIB);
m_hCppConnModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 );
m_bAttemptedLoadCppConn = true;
}
diff --git a/mysqlc/source/mysqlc_driver.hxx b/mysqlc/source/mysqlc_driver.hxx
index 0c14e8a3cb81..d63ed055e6f0 100644
--- a/mysqlc/source/mysqlc_driver.hxx
+++ b/mysqlc/source/mysqlc_driver.hxx
@@ -63,6 +63,10 @@ namespace connectivity
// of all the Connection objects
// for this Driver
#ifndef SYSTEM_MYSQL_CPPCONN
+#ifdef BUNDLE_MARIADB
+ oslModule m_hCConnModule;
+ bool m_bAttemptedLoadCConn;
+#endif
oslModule m_hCppConnModule;
bool m_bAttemptedLoadCppConn;
#endif