MDEV-3842, MDEV-3923 :
Miscellaneous workarounds for drop-in compatibility problems with Linux distributions, arounf versioning of the
MySQL 5.5 client shared library. There seems to be 3 different ways major distributions handle versioning
1. Fedora (also Mageia, and likely other Redhat descendants) way
old, 5.1 API functions are given version libmysqlclient_16
new API functions (client plugins, mysql_stmt_next ) are given version libmysqlclient_18
some extra functions beyond API are exported.
some functions are renamed.
2.Debian Wheezy way
all functions are given libmysqlclient_18 version
3. Ubuntu way (or MySQL/MariaDB download packages)
no versioning
UIp to this fix, MariaDB distributions did not have any versioning in the libraries, this rendered client library incompatible to distributions
thus exchanging distribution's libmysqlclient.so.18.0.0 with MariaDB's did not work nicely (anywhere but on Ubuntu)
THE FIX
is to build libraries the same way as distributions do it
- when building RPMs, use same version script as Fedora does, Make sure to export extra-symbols, the same as Fedora exports.
- when building DEBs, use the same version script as Debian Wheezy
- do not use version scripts otherwise
Also, makes sure that extensions of MySQL APIs (asynchronous client functionality) is exported by the shared libraries.
2013-01-25 17:26:10 +01:00
|
|
|
# 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;
|
2013-02-18 20:35:11 +01:00
|
|
|
# fedora18 export
|
|
|
|
THR_KEY_mysys;
|
MDEV-3842, MDEV-3923 :
Miscellaneous workarounds for drop-in compatibility problems with Linux distributions, arounf versioning of the
MySQL 5.5 client shared library. There seems to be 3 different ways major distributions handle versioning
1. Fedora (also Mageia, and likely other Redhat descendants) way
old, 5.1 API functions are given version libmysqlclient_16
new API functions (client plugins, mysql_stmt_next ) are given version libmysqlclient_18
some extra functions beyond API are exported.
some functions are renamed.
2.Debian Wheezy way
all functions are given libmysqlclient_18 version
3. Ubuntu way (or MySQL/MariaDB download packages)
no versioning
UIp to this fix, MariaDB distributions did not have any versioning in the libraries, this rendered client library incompatible to distributions
thus exchanging distribution's libmysqlclient.so.18.0.0 with MariaDB's did not work nicely (anywhere but on Ubuntu)
THE FIX
is to build libraries the same way as distributions do it
- when building RPMs, use same version script as Fedora does, Make sure to export extra-symbols, the same as Fedora exports.
- when building DEBs, use the same version script as Debian Wheezy
- do not use version scripts otherwise
Also, makes sure that extensions of MySQL APIs (asynchronous client functionality) is exported by the shared libraries.
2013-01-25 17:26:10 +01:00
|
|
|
# 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
|
2013-02-04 15:43:26 +01:00
|
|
|
# require them. Fedora limits the namespace damage by prefixing mysql_
|
MDEV-3842, MDEV-3923 :
Miscellaneous workarounds for drop-in compatibility problems with Linux distributions, arounf versioning of the
MySQL 5.5 client shared library. There seems to be 3 different ways major distributions handle versioning
1. Fedora (also Mageia, and likely other Redhat descendants) way
old, 5.1 API functions are given version libmysqlclient_16
new API functions (client plugins, mysql_stmt_next ) are given version libmysqlclient_18
some extra functions beyond API are exported.
some functions are renamed.
2.Debian Wheezy way
all functions are given libmysqlclient_18 version
3. Ubuntu way (or MySQL/MariaDB download packages)
no versioning
UIp to this fix, MariaDB distributions did not have any versioning in the libraries, this rendered client library incompatible to distributions
thus exchanging distribution's libmysqlclient.so.18.0.0 with MariaDB's did not work nicely (anywhere but on Ubuntu)
THE FIX
is to build libraries the same way as distributions do it
- when building RPMs, use same version script as Fedora does, Make sure to export extra-symbols, the same as Fedora exports.
- when building DEBs, use the same version script as Debian Wheezy
- do not use version scripts otherwise
Also, makes sure that extensions of MySQL APIs (asynchronous client functionality) is exported by the shared libraries.
2013-01-25 17:26:10 +01:00
|
|
|
# (see mysql-dubious-exports.patch), which means the symbols are not present
|
|
|
|
# in libmysqlclient_16.
|
|
|
|
#
|
2013-02-04 15:43:26 +01:00
|
|
|
# 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.
|
|
|
|
|
MDEV-3842, MDEV-3923 :
Miscellaneous workarounds for drop-in compatibility problems with Linux distributions, arounf versioning of the
MySQL 5.5 client shared library. There seems to be 3 different ways major distributions handle versioning
1. Fedora (also Mageia, and likely other Redhat descendants) way
old, 5.1 API functions are given version libmysqlclient_16
new API functions (client plugins, mysql_stmt_next ) are given version libmysqlclient_18
some extra functions beyond API are exported.
some functions are renamed.
2.Debian Wheezy way
all functions are given libmysqlclient_18 version
3. Ubuntu way (or MySQL/MariaDB download packages)
no versioning
UIp to this fix, MariaDB distributions did not have any versioning in the libraries, this rendered client library incompatible to distributions
thus exchanging distribution's libmysqlclient.so.18.0.0 with MariaDB's did not work nicely (anywhere but on Ubuntu)
THE FIX
is to build libraries the same way as distributions do it
- when building RPMs, use same version script as Fedora does, Make sure to export extra-symbols, the same as Fedora exports.
- when building DEBs, use the same version script as Debian Wheezy
- do not use version scripts otherwise
Also, makes sure that extensions of MySQL APIs (asynchronous client functionality) is exported by the shared libraries.
2013-01-25 17:26:10 +01:00
|
|
|
# mysql-connector-odbc requires these
|
|
|
|
mysql_default_charset_info;
|
|
|
|
mysql_get_charset;
|
|
|
|
mysql_get_charset_by_csname;
|
|
|
|
mysql_net_realloc;
|
2013-02-04 15:43:26 +01:00
|
|
|
default_charset_info;
|
|
|
|
get_charset;
|
|
|
|
get_charset_by_csname;
|
|
|
|
net_realloc;
|
MDEV-3842, MDEV-3923 :
Miscellaneous workarounds for drop-in compatibility problems with Linux distributions, arounf versioning of the
MySQL 5.5 client shared library. There seems to be 3 different ways major distributions handle versioning
1. Fedora (also Mageia, and likely other Redhat descendants) way
old, 5.1 API functions are given version libmysqlclient_16
new API functions (client plugins, mysql_stmt_next ) are given version libmysqlclient_18
some extra functions beyond API are exported.
some functions are renamed.
2.Debian Wheezy way
all functions are given libmysqlclient_18 version
3. Ubuntu way (or MySQL/MariaDB download packages)
no versioning
UIp to this fix, MariaDB distributions did not have any versioning in the libraries, this rendered client library incompatible to distributions
thus exchanging distribution's libmysqlclient.so.18.0.0 with MariaDB's did not work nicely (anywhere but on Ubuntu)
THE FIX
is to build libraries the same way as distributions do it
- when building RPMs, use same version script as Fedora does, Make sure to export extra-symbols, the same as Fedora exports.
- when building DEBs, use the same version script as Debian Wheezy
- do not use version scripts otherwise
Also, makes sure that extensions of MySQL APIs (asynchronous client functionality) is exported by the shared libraries.
2013-01-25 17:26:10 +01:00
|
|
|
# PHP's mysqli.so requires this (via the ER() macro)
|
|
|
|
mysql_client_errors;
|
2013-02-04 15:43:26 +01:00
|
|
|
client_errors;
|
MDEV-3842, MDEV-3923 :
Miscellaneous workarounds for drop-in compatibility problems with Linux distributions, arounf versioning of the
MySQL 5.5 client shared library. There seems to be 3 different ways major distributions handle versioning
1. Fedora (also Mageia, and likely other Redhat descendants) way
old, 5.1 API functions are given version libmysqlclient_16
new API functions (client plugins, mysql_stmt_next ) are given version libmysqlclient_18
some extra functions beyond API are exported.
some functions are renamed.
2.Debian Wheezy way
all functions are given libmysqlclient_18 version
3. Ubuntu way (or MySQL/MariaDB download packages)
no versioning
UIp to this fix, MariaDB distributions did not have any versioning in the libraries, this rendered client library incompatible to distributions
thus exchanging distribution's libmysqlclient.so.18.0.0 with MariaDB's did not work nicely (anywhere but on Ubuntu)
THE FIX
is to build libraries the same way as distributions do it
- when building RPMs, use same version script as Fedora does, Make sure to export extra-symbols, the same as Fedora exports.
- when building DEBs, use the same version script as Debian Wheezy
- do not use version scripts otherwise
Also, makes sure that extensions of MySQL APIs (asynchronous client functionality) is exported by the shared libraries.
2013-01-25 17:26:10 +01:00
|
|
|
};
|