summaryrefslogtreecommitdiff
path: root/libmysql
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@montyprogram.com>2013-02-04 15:43:26 +0100
committerVladislav Vaintroub <wlad@montyprogram.com>2013-02-04 15:43:26 +0100
commitbfd179e8ed5fcbad67880933d85d8852d05c7f3b (patch)
tree0d74289df638bf00f6c773f9571810cb40588546 /libmysql
parent7f444caa0ad6b2eddc730de3cd9c94bfb9037b51 (diff)
downloadmariadb-git-bfd179e8ed5fcbad67880933d85d8852d05c7f3b.tar.gz
MDEV-4127 : Export additional symbols when building RPM,
to enable both recompiling mysqli or odbc from sources in addition to drop-in replacement functionality. The case in question is compiling mysqli from sources, that needs client_errors via ER() macro. Previously, we exported it as mysql_client_errors (compatibly to Fedora's style symbol renaming, see MDEV-3842). However, if MariaDB header files are used when compiling mysqli, client_errors needs to be exported with its original name.
Diffstat (limited to 'libmysql')
-rw-r--r--libmysql/CMakeLists.txt13
-rw-r--r--libmysql/libmysql_rpm_version.in14
2 files changed, 23 insertions, 4 deletions
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
index 5ad6b197379..d23a255e1b7 100644
--- a/libmysql/CMakeLists.txt
+++ b/libmysql/CMakeLists.txt
@@ -243,15 +243,22 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
IF(RPM)
# Fedora & Co declared following functions as part of API
- # These functions are alias of another function (given mysql_ prefix=. The
- # renaming is handled in rpm_support.cc below
SET(CLIENT_API_EXTRA
mysql_default_charset_info
mysql_get_charset
mysql_get_charset_by_csname
mysql_net_realloc
mysql_client_errors
- )
+
+ # Also export the non-renamed variants
+ # (in case someone wants to rebuild mysqli-php or something similar)
+ # See MDEV-4127
+ default_charset_info
+ get_charset
+ get_charset_by_csname
+ net_realloc
+ client_errors)
+
# Add special script to fix symbols renames by Fedora
SET(CLIENT_SOURCES_EXTRA ${CLIENT_SOURCES} rpm_support.cc)
SET(VERSION_SCRIPT_TEMPLATE
diff --git a/libmysql/libmysql_rpm_version.in b/libmysql/libmysql_rpm_version.in
index ad15c8aa2c8..b153b02e381 100644
--- a/libmysql/libmysql_rpm_version.in
+++ b/libmysql/libmysql_rpm_version.in
@@ -34,15 +34,27 @@ libmysqlclient_18 {
@CLIENT_API_5_5_LIST@
#
# Ideally the following symbols wouldn't be exported, but various applications
-# require them. We limit the namespace damage by prefixing mysql_
+# require them. Fedora limits the namespace damage by prefixing mysql_
# (see mysql-dubious-exports.patch), which means the symbols are not present
# in libmysqlclient_16.
#
+# MariaDB does not do the Fedora-style function renaming via #define in headers,
+# however it exports mysql_ prefixed symbols in addition to the "normal" ones.
+#
+# To ensure successful recompilation of affected projects, as well as drop-in replacement
+# for MySQL libraries, provided by distribution, both original symbols and their mysql_
+# prefixed counterparts have to be exported.
+
# mysql-connector-odbc requires these
mysql_default_charset_info;
mysql_get_charset;
mysql_get_charset_by_csname;
mysql_net_realloc;
+ default_charset_info;
+ get_charset;
+ get_charset_by_csname;
+ net_realloc;
# PHP's mysqli.so requires this (via the ER() macro)
mysql_client_errors;
+ client_errors;
};