Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
1c654f16
Commit
1c654f16
authored
Jan 26, 2013
by
Vladislav Vaintroub
Browse files
Options
Browse Files
Download
Plain Diff
Merge MDEV-3842, MDEV-3923, MDEV-3971
parents
772bd60a
8199838a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
262 additions
and
8 deletions
+262
-8
cmake/cpack_rpm.cmake
cmake/cpack_rpm.cmake
+2
-2
libmysql/CMakeLists.txt
libmysql/CMakeLists.txt
+159
-5
libmysql/libmysql_rpm_version.in
libmysql/libmysql_rpm_version.in
+48
-0
libmysql/rpm_support.cc
libmysql/rpm_support.cc
+41
-0
libmysqld/CMakeLists.txt
libmysqld/CMakeLists.txt
+12
-1
No files found.
cmake/cpack_rpm.cmake
View file @
1c654f16
...
...
@@ -107,8 +107,8 @@ SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files
SET
(
CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE
${
CMAKE_SOURCE_DIR
}
/support-files/rpm/server-postin.sh
)
SET
(
CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE
${
CMAKE_SOURCE_DIR
}
/support-files/rpm/server-postun.sh
)
SET
(
CPACK_RPM_shared_PACKAGE_OBSOLETES
"mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared"
)
SET
(
CPACK_RPM_shared_PACKAGE_PROVIDES
"MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.18 libmysqlclient.so.18(libmysqlclient_16) libmysqlclient.so.18(libmysqlclient_18) libmysqlclient_r.so.18 libmysqlclient_r.so.18(libmysqlclient_18)"
)
SET
(
CPACK_RPM_shared_PACKAGE_OBSOLETES
"mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared
mysql-libs
"
)
SET
(
CPACK_RPM_shared_PACKAGE_PROVIDES
"MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.18 libmysqlclient.so.18(libmysqlclient_16) libmysqlclient.so.18(libmysqlclient_18) libmysqlclient_r.so.18 libmysqlclient_r.so.18(libmysqlclient_18)
mysql-libs
"
)
SET
(
CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE
${
CMAKE_SOURCE_DIR
}
/support-files/rpm/shared-post.sh
)
SET
(
CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE
${
CMAKE_SOURCE_DIR
}
/support-files/rpm/shared-post.sh
)
...
...
libmysql/CMakeLists.txt
View file @
1c654f16
...
...
@@ -23,7 +23,7 @@ INCLUDE_DIRECTORIES(
${
ZLIB_INCLUDE_DIR
}
)
ADD_DEFINITIONS
(
${
SSL_DEFINES
}
)
SET
(
CLIENT_API_FUNCTIONS
SET
(
CLIENT_API_FUNCTIONS
_5_1
get_tty_password
handle_options
load_defaults
...
...
@@ -58,6 +58,7 @@ mysql_field_count
mysql_field_seek
mysql_field_tell
mysql_free_result
mysql_get_parameters
mysql_get_client_info
mysql_get_host_info
mysql_get_proto_info
...
...
@@ -129,12 +130,164 @@ mysql_server_init
mysql_server_end
mysql_set_character_set
mysql_get_character_set_info
mysql_stmt_next_result
)
CACHE INTERNAL
"Functions exported by client API"
SET
(
CLIENT_API_FUNCTIONS_5_5
mysql_stmt_next_result
# Client plugins
mysql_client_find_plugin
mysql_client_register_plugin
mysql_load_plugin
mysql_load_plugin_v
mysql_plugin_options
# Async API
mysql_autocommit_cont
mysql_autocommit_start
mysql_change_user_cont
mysql_change_user_start
mysql_close_cont
mysql_close_slow_part_cont
mysql_close_slow_part_start
mysql_close_start
mysql_commit_cont
mysql_commit_start
mysql_fetch_row_cont
mysql_fetch_row_start
mysql_free_result_cont
mysql_free_result_start
mysql_kill_cont
mysql_kill_start
mysql_list_dbs_cont
mysql_list_dbs_start
mysql_list_fields_cont
mysql_list_fields_start
mysql_list_processes_cont
mysql_list_processes_start
mysql_list_tables_cont
mysql_list_tables_start
mysql_next_result_cont
mysql_next_result_start
mysql_ping_cont
mysql_ping_start
mysql_query_cont
mysql_query_start
mysql_read_query_result_cont
mysql_read_query_result_start
mysql_real_connect_cont
mysql_real_connect_start
mysql_real_query_cont
mysql_real_query_start
mysql_refresh_cont
mysql_refresh_start
mysql_rollback_cont
mysql_rollback_start
mysql_select_db_cont
mysql_select_db_start
mysql_send_query_cont
mysql_send_query_start
mysql_set_character_set_cont
mysql_set_character_set_start
mysql_set_server_option_cont
mysql_set_server_option_start
mysql_shutdown_cont
mysql_shutdown_start
mysql_stat_cont
mysql_stat_start
mysql_stmt_close_cont
mysql_stmt_close_start
mysql_stmt_execute_cont
mysql_stmt_execute_start
mysql_stmt_fetch_cont
mysql_stmt_fetch_start
mysql_stmt_free_result_cont
mysql_stmt_free_result_start
mysql_stmt_next_result_cont
mysql_stmt_next_result_start
mysql_stmt_prepare_cont
mysql_stmt_prepare_start
mysql_stmt_reset_cont
mysql_stmt_reset_start
mysql_stmt_send_long_data_cont
mysql_stmt_send_long_data_start
mysql_stmt_store_result_cont
mysql_stmt_store_result_start
mysql_store_result_cont
mysql_store_result_start
)
SET
(
CLIENT_API_FUNCTIONS
${
CLIENT_API_FUNCTIONS_5_1
}
${
CLIENT_API_FUNCTIONS_5_5
}
CACHE INTERNAL
"Client functions"
)
IF
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
# When building RPM, or DEB package on Debian, use ELF symbol versioning
# for compatibility with distribution packages, so client shared library can
# painlessly replace the one supplied by the distribution.
# Also list of exported symbols in distributions may differ from what is considered
# official API. Define CLIENT_API_EXTRA for the set of symbols, that required to
# be exported on different platforms.
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
)
# Add special script to fix symbols renames by Fedora
SET
(
CLIENT_SOURCES_EXTRA
${
CLIENT_SOURCES
}
rpm_support.cc
)
SET
(
VERSION_SCRIPT_TEMPLATE
${
CMAKE_CURRENT_SOURCE_DIR
}
/libmysql_rpm_version.in
)
ELSEIF
(
DEB
)
# libmyodbc on Ubuntu is using functions below
# If we don't export them, linker would just remove
# them (they are not used inside libmysqlclient)
SET
(
CLIENT_API_EXTRA
strfill
init_dynamic_string
)
# MySQL supplied with Ubuntu does not have versioning, bug Debian does.
IF
(
DEB MATCHES
"debian"
)
SET
(
VERSION_SCRIPT_TEMPLATE
${
CMAKE_CURRENT_SOURCE_DIR
}
/libmysql.ver.in
)
ENDIF
()
ENDIF
()
IF
(
VERSION_SCRIPT_TEMPLATE
)
# Generate version script.
# Create semicolon separated lists of functions to export from
# Since RPM packages use separate versioning for 5.1 API
# and 5.5 API (libmysqlclient_16 vs libmysqlclient_18),
# we need 2 lists.
SET
(
CLIENT_API_5_1_LIST
)
FOREACH
(
f
${
CLIENT_API_FUNCTIONS_5_1
}
)
SET
(
CLIENT_API_5_1_LIST
"
${
CLIENT_API_5_1_LIST
}
\n
${
f
}
;"
)
ENDFOREACH
()
SET
(
CLIENT_API_5_5_LIST
)
FOREACH
(
f
${
CLIENT_API_FUNCTIONS_5_5
}
)
SET
(
CLIENT_API_5_5_LIST
"
${
CLIENT_API_5_5_LIST
}
\n
${
f
}
;"
)
ENDFOREACH
()
CONFIGURE_FILE
(
${
VERSION_SCRIPT_TEMPLATE
}
${
CMAKE_CURRENT_BINARY_DIR
}
/libmysql.version
@ONLY@
)
SET
(
VERSION_SCRIPT_LINK_FLAGS
"-Wl,--version-script=
${
CMAKE_CURRENT_BINARY_DIR
}
/libmysql.version"
)
ENDIF
()
ENDIF
()
SET
(
CLIENT_SOURCES
get_password.c
libmysql.c
...
...
@@ -146,6 +299,7 @@ SET(CLIENT_SOURCES
../sql/net_serv.cc
../sql-common/pack.c
../sql/password.c
${
CLIENT_SOURCES_EXTRA
}
)
ADD_CONVENIENCE_LIBRARY
(
clientlib
${
CLIENT_SOURCES
}
)
DTRACE_INSTRUMENT
(
clientlib
)
...
...
@@ -193,13 +347,13 @@ IF(NOT DISABLE_SHARED)
OUTPUT_NAME mysqlclient
VERSION
"
${
OS_SHARED_LIB_VERSION
}
"
SOVERSION
"
${
SHARED_LIB_MAJOR_VERSION
}
"
)
IF
(
LINK_FLAG_NO_UNDEFINED
)
IF
(
LINK_FLAG_NO_UNDEFINED
OR VERSION_SCRIPT_LINK_FLAGS
)
GET_TARGET_PROPERTY
(
libmysql_link_flags libmysql LINK_FLAGS
)
IF
(
NOT libmysql_link_flag
)
SET
(
libmysql_link_flags
)
ENDIF
()
SET_TARGET_PROPERTIES
(
libmysql PROPERTIES LINK_FLAGS
"
${
libmysql_link_flags
}
${
LINK_FLAG_NO_UNDEFINED
}
"
)
"
${
libmysql_link_flags
}
${
LINK_FLAG_NO_UNDEFINED
}
${
VERSION_SCRIPT_LINK_FLAGS
}
"
)
ENDIF
()
# clean direct output needs to be set several targets have the same name
#(mysqlclient in this case)
...
...
libmysql/libmysql_rpm_version.in
0 → 100644
View file @
1c654f16
# This version script is heavily inspired by Fedora's and Mageia's version scripts for
# MySQL client shared library. It is used in MariaDB for building RPMs.
libmysqlclient_16 {
global:
@CLIENT_API_5_1_LIST@
# some stuff from Mageia, I have no idea why it is there
# But too afraid to throw anything away
_fini;
_init;
my_init;
my_progname;
myodbc_remove_escape;
# These are documented in Paul DuBois' MySQL book, so we treat them as part
# of the de-facto API.
free_defaults;
handle_options;
load_defaults;
my_print_help;
# pure-ftpd requires this
my_make_scrambled_password;
# hydra requires this
scramble;
# DBD::mysql requires this
is_prefix;
local:
*;
};
libmysqlclient_18 {
global:
@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_
# (see mysql-dubious-exports.patch), which means the symbols are not present
# in libmysqlclient_16.
#
# mysql-connector-odbc requires these
mysql_default_charset_info;
mysql_get_charset;
mysql_get_charset_by_csname;
mysql_net_realloc;
# PHP's mysqli.so requires this (via the ER() macro)
mysql_client_errors;
};
libmysql/rpm_support.cc
0 → 100644
View file @
1c654f16
/*
Provide aliases for several symbols, to support drop-in replacement for
MariaDB on Fedora and several derives distributions.
These distributions redefine several symbols (in a way that is no compatible
with either MySQL or MariaDB) and export it from the client library ( as seen
e.g from this patch)
http://lists.fedoraproject.org/pipermail/scm-commits/2010-December/537257.html
MariaDB handles compatibility distribution by providing the same symbols from
the client library if it is built with -DRPM
*/
#include <errmsg.h>
#include <my_sys.h>
#include <mysql.h>
extern
"C"
{
CHARSET_INFO
*
mysql_default_charset_info
=
default_charset_info
;
CHARSET_INFO
*
mysql_get_charset
(
uint
cs_number
,
myf
flags
)
{
return
get_charset
(
cs_number
,
flags
);
}
CHARSET_INFO
*
mysql_get_charset_by_csname
(
const
char
*
cs_name
,
uint
cs_flags
,
myf
my_flags
)
{
return
get_charset_by_csname
(
cs_name
,
cs_flags
,
my_flags
);
}
my_bool
mysql_net_realloc
(
NET
*
net
,
size_t
length
)
{
return
net_realloc
(
net
,
length
);
}
const
char
**
mysql_client_errors
=
client_errors
;
}
/*extern "C" */
libmysqld/CMakeLists.txt
View file @
1c654f16
...
...
@@ -146,8 +146,19 @@ IF(UNIX)
${
CMAKE_STATIC_LIBRARY_PREFIX
}
mysqld-debug
)
ENDIF
()
# List of exported functions in embedded (client api except client plugin or
# async (*_start/*_cont functions)
SET
(
EMBEDDED_API
)
FOREACH
(
f
${
CLIENT_API_FUNCTIONS
}
)
IF
(
NOT
(
f MATCHES
"plugin|_start$|_cont$"
))
SET
(
EMBEDDED_API
${
EMBEDDED_API
}
${
f
}
)
ENDIF
()
ENDFOREACH
()
IF
(
NOT DISABLE_SHARED
)
MERGE_LIBRARIES
(
libmysqld SHARED mysqlserver EXPORTS
${
CLIENT_API_FUNCTIONS
}
MERGE_LIBRARIES
(
libmysqld SHARED mysqlserver EXPORTS
${
EMBEDDED_API
}
COMPONENT Server
)
IF
(
UNIX
)
# Name the shared library, handle versioning (provides same api as client
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment