From 80384c6aa51c5d9a2d3ea0ed139dfc87f344023a Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jun 04 2015 07:23:27 +0000 Subject: import rh-mysql56-mysql-5.6.24-3.el7 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99571b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/mysql-5.6.24.tar.gz diff --git a/.rh-mysql56-mysql.metadata b/.rh-mysql56-mysql.metadata new file mode 100644 index 0000000..acc6a0f --- /dev/null +++ b/.rh-mysql56-mysql.metadata @@ -0,0 +1 @@ +107333582f65ccfbeabef1e602d76a824ac1f6ce SOURCES/mysql-5.6.24.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/README.mysql-docs b/SOURCES/README.mysql-docs new file mode 100644 index 0000000..dd894a7 --- /dev/null +++ b/SOURCES/README.mysql-docs @@ -0,0 +1,4 @@ +The official MySQL documentation is not freely redistributable, so we cannot +include it in RHEL or Fedora. You can find it on-line at + +http://dev.mysql.com/doc/ diff --git a/SOURCES/README.mysql-license b/SOURCES/README.mysql-license new file mode 100644 index 0000000..ceabbcf --- /dev/null +++ b/SOURCES/README.mysql-license @@ -0,0 +1,9 @@ +MySQL is distributed under GPL v2, but there are some licensing exceptions +that allow the client libraries to be linked with a non-GPL application, +so long as the application is under a license approved by Oracle. +For details see + +http://www.mysql.com/about/legal/licensing/foss-exception/ + +Some innobase code from Percona and Google is under BSD license. +Some code related to test-suite is under LGPLv2. diff --git a/SOURCES/daemon-scl-helper.sh b/SOURCES/daemon-scl-helper.sh new file mode 100644 index 0000000..7f0ec05 --- /dev/null +++ b/SOURCES/daemon-scl-helper.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +# This helper script is necessary for having proper SELinux context of daemon +# process run in SCL environment via systemd unit file. +# Without this script the process looses SELinux type because /usr/bin/scl +# has context bin_t and unit_t -> bin_t results in unconfined process running. +# If this helper script has the same SELinux context as the original binary, +# the process will have proper SELinux context. +# +# This script was designed to be usable the same as the scl command is used, +# including the collections given as more arguments, separated from binary +# itself by -- separator. +# So it is possible to use the list of collections to be enabled via +# environment file. +# Thus, instead of: +# /usr/bin/scl enable scl1 scl2 -- /path/to/bin arg1 arg2 +# you can use: +# /usr/bin/this-script enable scl1 scl2 -- /path/to/bin arg1 arg2 +# +# Notice: do not forget to set proper SELinux context for this file. +# The context should be the same as the binary running has. +# +# More information at http://bugzilla.redhat.com/show_bug.cgi?id=1172683 + +action="$1" +shift + +while [ -n "$1" ] && [ "$1" != "--" ] ; do + source scl_source "$action" "$1" + shift +done + +if [ $# -le 2 ] ; then + echo "Usage `basename $0` enable sclname [sclname ...] -- /path/to/bin [arg ...]" >&2 + exit 1 +fi + +shift + +exec "$@" + + + diff --git a/SOURCES/my.cnf.in b/SOURCES/my.cnf.in new file mode 100644 index 0000000..1e9009e --- /dev/null +++ b/SOURCES/my.cnf.in @@ -0,0 +1,18 @@ +# +# This group is read both both by the client and the server +# use it for options that affect everything +# +[client-server] + +# +# This group is read by the server +# +[mysqld] +# Disabling symbolic-links is recommended to prevent assorted security risks +symbolic-links=0 + +# +# include all files from the config directory +# +!includedir @SYSCONF2DIR@ + diff --git a/SOURCES/my_config.h b/SOURCES/my_config.h new file mode 100644 index 0000000..0672f49 --- /dev/null +++ b/SOURCES/my_config.h @@ -0,0 +1,34 @@ +/* + * Kluge to support multilib installation of both 32- and 64-bit RPMS: + * we need to arrange that header files that appear in both RPMs are + * identical. Hence, this file is architecture-independent and calls + * in an arch-dependent file that will appear in just one RPM. + * + * To avoid breaking arches not explicitly supported by Red Hat, we + * use this indirection file *only* on known multilib arches. + * + * Note: this may well fail if user tries to use gcc's -I- option. + * But that option is deprecated anyway. + */ +#if defined(__x86_64__) +#include "my_config_x86_64.h" +#elif defined(__i386__) +#include "my_config_i386.h" +#elif defined(__ppc64__) || defined(__powerpc64__) +#include "my_config_ppc64.h" +#elif defined(__ppc__) || defined(__powerpc__) +#include "my_config_ppc.h" +#elif defined(__s390x__) +#include "my_config_s390x.h" +#elif defined(__s390__) +#include "my_config_s390.h" +#elif defined(__sparc__) && defined(__arch64__) +#include "my_config_sparc64.h" +#elif defined(__sparc__) +#include "my_config_sparc.h" +#elif defined(__arm__) +#include "my_config_arm.h" +#elif defined(__aarch64__) +#include "my_config_aarch64.h" +#endif + diff --git a/SOURCES/mysql-5.6.10-rpmlintrc b/SOURCES/mysql-5.6.10-rpmlintrc new file mode 100644 index 0000000..dfcdf39 --- /dev/null +++ b/SOURCES/mysql-5.6.10-rpmlintrc @@ -0,0 +1,48 @@ +# Filtered out until upstream fixes them +# Upstream bug: http://bugs.mysql.com/68518 +addFilter("incorrect-fsf-address") + +# Done to avoid _prefix/lib64/tmpfiles.d +addFilter("E: hardcoded-library-path in %\{_prefix\}/lib/tmpfiles.d") + +# Keeping the old summary for now +addFilter("W: name-repeated-in-summary C MySQL") + +# Spellchecked +addFilter("W: spelling-error %description -l en_US multi -> mulch, mufti") +addFilter("W: spelling-error %description -l en_US benchmarking -> bench marking, bench-marking, benchmark") +addFilter("W: spelling-error Summary(en_US) embeddable -> embedded") +addFilter("W: spelling-error.*embeddable -> embedded") + +# As long as the manual is part of the original tarball, we have do to +# this +addFilter("mysql.src: W: invalid-url Source0: mysql-5.6.[0-9]+-nodocs.tar.gz") + +# Leave the logfile where it is for now +addFilter("E: non-root-user-log-file /var/log/mysqld.log mysql") +addFilter("E: non-root-group-log-file /var/log/mysqld.log mysql") +addFilter("E: non-ghost-file /var/log/mysqld.log") +addFilter("E: zero-length /var/log/mysqld.log") + +addFilter("E: incoherent-logrotate-file /etc/logrotate.d/mysqld") + +# Hidden files and zero lenght files is normal for some tests +addFilter("W: hidden-file-or-dir /usr/share/mysql-test/std_data/.mylogin.cnf") +addFilter("E: zero-length /usr/share/mysql-test/suite/parts/t/disabled.def") +addFilter("E: zero-length /usr/share/mysql-test/std_data/bug37631.MYD") +addFilter("E: zero-length /usr/share/mysql-test/std_data/cluster_7022_table.MYD") +addFilter("E: zero-length /usr/share/mysql-test/collections/disabled-weekly.list") +addFilter("E: zero-length /usr/share/mysql-test/collections/disabled-daily.list") + +# debuginfo bug? +addFilter("E: non-standard-dir-perm /usr/src/debug/tmp 01777") + +# mysql-config *script* in lib +addFilter("W: only-non-binary-in-usr-lib") + +# missing +addFilter("W: no-manual-page-for-binary my_safe_process") + +# cluster is gone +addFilter("W: obsolete-not-provided mysql-cluster") + diff --git a/SOURCES/mysql-5.6.13-major.patch b/SOURCES/mysql-5.6.13-major.patch new file mode 100644 index 0000000..8d65acf --- /dev/null +++ b/SOURCES/mysql-5.6.13-major.patch @@ -0,0 +1,11 @@ +--- mysql-5.6.13/cmake/mysql_version.cmake.orig 2013-08-15 13:48:26.177017731 +0200 ++++ mysql-5.6.13/cmake/mysql_version.cmake 2013-08-15 13:49:35.478949928 +0200 +@@ -17,7 +17,7 @@ + # Global constants, only to be changed between major releases. + # + +-SET(SHARED_LIB_MAJOR_VERSION "18") ++SET(SHARED_LIB_MAJOR_VERSION "1018") + SET(SHARED_LIB_MINOR_VERSION "1") + SET(PROTOCOL_VERSION "10") + SET(DOT_FRM_VERSION "6") diff --git a/SOURCES/mysql-5.6.16-libmysql-version.patch b/SOURCES/mysql-5.6.16-libmysql-version.patch new file mode 100644 index 0000000..e16e65a --- /dev/null +++ b/SOURCES/mysql-5.6.16-libmysql-version.patch @@ -0,0 +1,960 @@ +diff -rup old/libmysql/libmysql.c new/libmysql/libmysql.c +--- old/libmysql/libmysql.c 2013-11-04 20:15:10.000000000 +0100 ++++ new/libmysql/libmysql.c 2014-01-14 12:10:27.148374504 +0100 +@@ -4898,3 +4898,612 @@ my_bool STDCALL mysql_read_query_result( + return (*mysql->methods->read_query_result)(mysql); + } + ++#ifndef EMBEDDED_LIBRARY ++ ++// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions ++ ++#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16") ++ ++void STDCALL symver16_myodbc_remove_escape(MYSQL *mysql,char *name) ++{ ++ return myodbc_remove_escape(mysql, name); ++} ++SYM_16(myodbc_remove_escape); ++ ++ ++my_ulonglong STDCALL symver16_mysql_affected_rows(MYSQL *mysql) ++{ ++ return mysql_affected_rows(mysql); ++} ++SYM_16(mysql_affected_rows); ++ ++ ++my_bool STDCALL symver16_mysql_autocommit(MYSQL * mysql, my_bool auto_mode) ++{ ++ return mysql_autocommit(mysql, auto_mode); ++} ++SYM_16(mysql_autocommit); ++ ++ ++my_bool STDCALL symver16_mysql_change_user(MYSQL *mysql, const char *user, const char *passwd, const char *db) ++{ ++ return mysql_change_user(mysql, user, passwd, db); ++} ++SYM_16(mysql_change_user); ++ ++ ++const char * STDCALL symver16_mysql_character_set_name(MYSQL *mysql) ++{ ++ return mysql_character_set_name(mysql); ++} ++SYM_16(mysql_character_set_name); ++ ++ ++my_bool STDCALL symver16_mysql_commit(MYSQL * mysql) ++{ ++ return mysql_commit(mysql); ++} ++SYM_16(mysql_commit); ++ ++ ++void STDCALL symver16_mysql_data_seek(MYSQL_RES *result, my_ulonglong row) ++{ ++ return mysql_data_seek(result, row); ++} ++SYM_16(mysql_data_seek); ++ ++ ++void STDCALL symver16_mysql_debug(const char *debug __attribute__((unused))) ++{ ++ return mysql_debug(debug); ++} ++SYM_16(mysql_debug); ++ ++ ++int STDCALL symver16_mysql_dump_debug_info(MYSQL *mysql) ++{ ++ return mysql_dump_debug_info(mysql); ++} ++SYM_16(mysql_dump_debug_info); ++ ++ ++my_bool STDCALL symver16_mysql_embedded(void) ++{ ++ return mysql_embedded(); ++} ++SYM_16(mysql_embedded); ++ ++ ++my_bool STDCALL symver16_mysql_eof(MYSQL_RES *res) ++{ ++ return mysql_eof(res); ++} ++SYM_16(mysql_eof); ++ ++ ++ulong STDCALL symver16_mysql_escape_string(char *to,const char *from,ulong length) ++{ ++ return mysql_escape_string(to, from, length); ++} ++SYM_16(mysql_escape_string); ++ ++ ++MYSQL_FIELD * STDCALL symver16_mysql_fetch_field(MYSQL_RES *result) ++{ ++ return mysql_fetch_field(result); ++} ++SYM_16(mysql_fetch_field); ++ ++ ++MYSQL_FIELD * STDCALL symver16_mysql_fetch_field_direct(MYSQL_RES *res,uint fieldnr) ++{ ++ return mysql_fetch_field_direct(res, fieldnr); ++} ++SYM_16(mysql_fetch_field_direct); ++ ++ ++MYSQL_FIELD * STDCALL symver16_mysql_fetch_fields(MYSQL_RES *res) ++{ ++ return mysql_fetch_fields(res); ++} ++SYM_16(mysql_fetch_fields); ++ ++ ++unsigned int STDCALL symver16_mysql_field_count(MYSQL *mysql) ++{ ++ return mysql_field_count(mysql); ++} ++SYM_16(mysql_field_count); ++ ++ ++MYSQL_FIELD_OFFSET STDCALL symver16_mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET field_offset) ++{ ++ return mysql_field_seek(result, field_offset); ++} ++SYM_16(mysql_field_seek); ++ ++ ++MYSQL_FIELD_OFFSET STDCALL symver16_mysql_field_tell(MYSQL_RES *res) ++{ ++ return mysql_field_tell(res); ++} ++SYM_16(mysql_field_tell); ++ ++ ++void STDCALL symver16_mysql_get_character_set_info(MYSQL *mysql, MY_CHARSET_INFO *csinfo) ++{ ++ return mysql_get_character_set_info(mysql, csinfo); ++} ++SYM_16(mysql_get_character_set_info); ++ ++ ++const char * STDCALL symver16_mysql_get_client_info(void) ++{ ++ return mysql_get_client_info(); ++} ++SYM_16(mysql_get_client_info); ++ ++ulong STDCALL symver16_mysql_get_client_version(void) ++{ ++ return mysql_get_client_version(); ++} ++SYM_16(mysql_get_client_version); ++ ++ ++const char * STDCALL symver16_mysql_get_host_info(MYSQL *mysql) ++{ ++ return mysql_get_host_info(mysql); ++} ++SYM_16(mysql_get_host_info); ++ ++ ++MYSQL_PARAMETERS *STDCALL symver16_mysql_get_parameters(void) ++{ ++ return mysql_get_parameters(); ++} ++SYM_16(mysql_get_parameters); ++ ++ ++uint STDCALL symver16_mysql_get_proto_info(MYSQL *mysql) ++{ ++ return mysql_get_proto_info(mysql); ++} ++SYM_16(mysql_get_proto_info); ++ ++ ++const char * STDCALL symver16_mysql_get_server_info(MYSQL *mysql) ++{ ++ return mysql_get_server_info(mysql); ++} ++SYM_16(mysql_get_server_info); ++ ++ ++ulong STDCALL symver16_mysql_hex_string(char *to, const char *from, ulong length) ++{ ++ return mysql_hex_string(to, from, length); ++} ++SYM_16(mysql_hex_string); ++ ++ ++const char *STDCALL symver16_mysql_info(MYSQL *mysql) ++{ ++ return mysql_info(mysql); ++} ++SYM_16(mysql_info); ++ ++ ++my_ulonglong STDCALL symver16_mysql_insert_id(MYSQL *mysql) ++{ ++ return mysql_insert_id(mysql); ++} ++SYM_16(mysql_insert_id); ++ ++ ++int STDCALL symver16_mysql_kill(MYSQL *mysql,ulong pid) ++{ ++ return mysql_kill(mysql, pid); ++} ++SYM_16(mysql_kill); ++ ++ ++MYSQL_RES * STDCALL symver16_mysql_list_dbs(MYSQL *mysql, const char *wild) ++{ ++ return mysql_list_dbs(mysql, wild); ++} ++SYM_16(mysql_list_dbs); ++ ++ ++MYSQL_RES * STDCALL symver16_mysql_list_fields(MYSQL *mysql, const char *table, const char *wild) ++{ ++ return mysql_list_fields(mysql, table, wild); ++} ++SYM_16(mysql_list_fields); ++ ++ ++MYSQL_RES * STDCALL symver16_mysql_list_processes(MYSQL *mysql) ++{ ++ return mysql_list_processes(mysql); ++} ++SYM_16(mysql_list_processes); ++ ++ ++MYSQL_RES * STDCALL symver16_mysql_list_tables(MYSQL *mysql, const char *wild) ++{ ++ return mysql_list_tables(mysql, wild); ++} ++SYM_16(mysql_list_tables); ++ ++ ++my_bool STDCALL symver16_mysql_more_results(MYSQL *mysql) ++{ ++ return mysql_more_results(mysql); ++} ++SYM_16(mysql_more_results); ++ ++ ++int STDCALL symver16_mysql_next_result(MYSQL *mysql) ++{ ++ return mysql_next_result(mysql); ++} ++SYM_16(mysql_next_result); ++ ++ ++int STDCALL symver16_mysql_ping(MYSQL *mysql) ++{ ++ return mysql_ping(mysql); ++} ++SYM_16(mysql_ping); ++ ++ ++int STDCALL symver16_mysql_query(MYSQL *mysql, const char *query) ++{ ++ return mysql_query(mysql, query); ++} ++SYM_16(mysql_query); ++ ++ ++my_bool STDCALL symver16_mysql_read_query_result(MYSQL *mysql) ++{ ++ return mysql_read_query_result(mysql); ++} ++SYM_16(mysql_read_query_result); ++ ++ ++ulong STDCALL symver16_mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, ulong length) ++{ ++ return mysql_real_escape_string(mysql, to, from, length); ++} ++SYM_16(mysql_real_escape_string); ++ ++ ++int STDCALL symver16_mysql_refresh(MYSQL *mysql,uint options) ++{ ++ return mysql_refresh(mysql, options); ++} ++SYM_16(mysql_refresh); ++ ++ ++my_bool STDCALL symver16_mysql_rollback(MYSQL * mysql) ++{ ++ return mysql_rollback(mysql); ++} ++SYM_16(mysql_rollback); ++ ++ ++MYSQL_ROW_OFFSET STDCALL symver16_mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET row) ++{ ++ return mysql_row_seek(result, row); ++} ++SYM_16(mysql_row_seek); ++ ++ ++MYSQL_ROW_OFFSET STDCALL symver16_mysql_row_tell(MYSQL_RES *res) ++{ ++ return mysql_row_tell(res); ++} ++SYM_16(mysql_row_tell); ++ ++ ++void STDCALL symver16_mysql_server_end() ++{ ++ return mysql_server_end(); ++} ++SYM_16(mysql_server_end); ++ ++ ++int STDCALL symver16_mysql_server_init(int argc __attribute__((unused)), char **argv __attribute__((unused)), char **groups __attribute__((unused))) ++{ ++ return mysql_server_init(argc, argv, groups); ++} ++SYM_16(mysql_server_init); ++ ++ ++void symver16_mysql_set_local_infile_default(MYSQL *mysql) ++{ ++ return mysql_set_local_infile_default(mysql); ++} ++SYM_16(mysql_set_local_infile_default); ++ ++ ++void symver16_mysql_set_local_infile_handler(MYSQL *mysql, int (*local_infile_init)(void **, const char *, void *), int (*local_infile_read)(void *, char *, uint), void (*local_infile_end)(void *), int (*local_infile_error)(void *, char *, uint), void *userdata) ++{ ++ return mysql_set_local_infile_handler(mysql, local_infile_init, local_infile_read, local_infile_end, local_infile_error, userdata); ++} ++SYM_16(mysql_set_local_infile_handler); ++ ++ ++int STDCALL symver16_mysql_set_server_option(MYSQL *mysql, enum enum_mysql_set_option option) ++{ ++ return mysql_set_server_option(mysql, option); ++} ++SYM_16(mysql_set_server_option); ++ ++ ++int STDCALL symver16_mysql_shutdown(MYSQL *mysql, enum mysql_enum_shutdown_level shutdown_level) ++{ ++ return mysql_shutdown(mysql, shutdown_level); ++} ++SYM_16(mysql_shutdown); ++ ++ ++const char *STDCALL symver16_mysql_sqlstate(MYSQL *mysql) ++{ ++ return mysql_sqlstate(mysql); ++} ++SYM_16(mysql_sqlstate); ++ ++ ++const char * STDCALL symver16_mysql_stat(MYSQL *mysql) ++{ ++ return mysql_stat(mysql); ++} ++SYM_16(mysql_stat); ++ ++ ++my_ulonglong STDCALL symver16_mysql_stmt_affected_rows(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_affected_rows(stmt); ++} ++SYM_16(mysql_stmt_affected_rows); ++ ++ ++my_bool STDCALL symver16_mysql_stmt_attr_get(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, void *value) ++{ ++ return mysql_stmt_attr_get(stmt, attr_type, value); ++} ++SYM_16(mysql_stmt_attr_get); ++ ++ ++my_bool STDCALL symver16_mysql_stmt_attr_set(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, const void *value) ++{ ++ return mysql_stmt_attr_set(stmt, attr_type, value); ++} ++SYM_16(mysql_stmt_attr_set); ++ ++ ++my_bool STDCALL symver16_mysql_stmt_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *my_bind) ++{ ++ return mysql_stmt_bind_param(stmt, my_bind); ++} ++SYM_16(mysql_stmt_bind_param); ++ ++ ++my_bool STDCALL symver16_mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *my_bind) ++{ ++ return mysql_stmt_bind_result(stmt, my_bind); ++} ++SYM_16(mysql_stmt_bind_result); ++ ++ ++my_bool STDCALL symver16_mysql_stmt_close(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_close(stmt); ++} ++SYM_16(mysql_stmt_close); ++ ++ ++void STDCALL symver16_mysql_stmt_data_seek(MYSQL_STMT *stmt, my_ulonglong row) ++{ ++ return mysql_stmt_data_seek(stmt, row); ++} ++SYM_16(mysql_stmt_data_seek); ++ ++ ++uint STDCALL symver16_mysql_stmt_errno(MYSQL_STMT * stmt) ++{ ++ return mysql_stmt_errno(stmt); ++} ++SYM_16(mysql_stmt_errno); ++ ++ ++const char *STDCALL symver16_mysql_stmt_error(MYSQL_STMT * stmt) ++{ ++ return mysql_stmt_error(stmt); ++} ++SYM_16(mysql_stmt_error); ++ ++ ++int STDCALL symver16_mysql_stmt_execute(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_execute(stmt); ++} ++SYM_16(mysql_stmt_execute); ++ ++ ++int STDCALL symver16_mysql_stmt_fetch(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_fetch(stmt); ++} ++SYM_16(mysql_stmt_fetch); ++ ++ ++int STDCALL symver16_mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *my_bind, uint column, ulong offset) ++{ ++ return mysql_stmt_fetch_column(stmt, my_bind, column, offset); ++} ++SYM_16(mysql_stmt_fetch_column); ++ ++ ++unsigned int STDCALL symver16_mysql_stmt_field_count(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_field_count(stmt); ++} ++SYM_16(mysql_stmt_field_count); ++ ++ ++my_bool STDCALL symver16_mysql_stmt_free_result(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_free_result(stmt); ++} ++SYM_16(mysql_stmt_free_result); ++ ++ ++MYSQL_STMT * STDCALL symver16_mysql_stmt_init(MYSQL *mysql) ++{ ++ return mysql_stmt_init(mysql); ++} ++SYM_16(mysql_stmt_init); ++ ++ ++my_ulonglong STDCALL symver16_mysql_stmt_insert_id(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_insert_id(stmt); ++} ++SYM_16(mysql_stmt_insert_id); ++ ++ ++my_ulonglong STDCALL symver16_mysql_stmt_num_rows(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_num_rows(stmt); ++} ++SYM_16(mysql_stmt_num_rows); ++ ++ ++ulong STDCALL symver16_mysql_stmt_param_count(MYSQL_STMT * stmt) ++{ ++ return mysql_stmt_param_count(stmt); ++} ++SYM_16(mysql_stmt_param_count); ++ ++ ++MYSQL_RES * STDCALL symver16_mysql_stmt_param_metadata(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_param_metadata(stmt); ++} ++SYM_16(mysql_stmt_param_metadata); ++ ++ ++int STDCALL symver16_mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length) ++{ ++ return mysql_stmt_prepare(stmt, query, length); ++} ++SYM_16(mysql_stmt_prepare); ++ ++ ++my_bool STDCALL symver16_mysql_stmt_reset(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_reset(stmt); ++} ++SYM_16(mysql_stmt_reset); ++ ++ ++MYSQL_RES * STDCALL symver16_mysql_stmt_result_metadata(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_result_metadata(stmt); ++} ++SYM_16(mysql_stmt_result_metadata); ++ ++ ++MYSQL_ROW_OFFSET STDCALL symver16_mysql_stmt_row_seek(MYSQL_STMT *stmt, MYSQL_ROW_OFFSET row) ++{ ++ return mysql_stmt_row_seek(stmt, row); ++} ++SYM_16(mysql_stmt_row_seek); ++ ++ ++MYSQL_ROW_OFFSET STDCALL symver16_mysql_stmt_row_tell(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_row_tell(stmt); ++} ++SYM_16(mysql_stmt_row_tell); ++ ++ ++my_bool STDCALL symver16_mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number, const char *data, ulong length) ++{ ++ return mysql_stmt_send_long_data(stmt, param_number, data, length); ++} ++SYM_16(mysql_stmt_send_long_data); ++ ++ ++const char *STDCALL symver16_mysql_stmt_sqlstate(MYSQL_STMT * stmt) ++{ ++ return mysql_stmt_sqlstate(stmt); ++} ++SYM_16(mysql_stmt_sqlstate); ++ ++ ++int STDCALL symver16_mysql_stmt_store_result(MYSQL_STMT *stmt) ++{ ++ return mysql_stmt_store_result(stmt); ++} ++SYM_16(mysql_stmt_store_result); ++ ++ ++void STDCALL symver16_mysql_thread_end() ++{ ++ return mysql_thread_end(); ++} ++SYM_16(mysql_thread_end); ++ ++ ++ulong STDCALL symver16_mysql_thread_id(MYSQL *mysql) ++{ ++ return mysql_thread_id(mysql); ++} ++SYM_16(mysql_thread_id); ++ ++ ++my_bool STDCALL symver16_mysql_thread_init() ++{ ++ return mysql_thread_init(); ++} ++SYM_16(mysql_thread_init); ++ ++ ++uint STDCALL symver16_mysql_thread_safe(void) ++{ ++ return mysql_thread_safe(); ++} ++SYM_16(mysql_thread_safe); ++ ++ ++MYSQL_RES * STDCALL symver16_mysql_use_result(MYSQL *mysql) ++{ ++ return mysql_use_result(mysql); ++} ++SYM_16(mysql_use_result); ++ ++ ++uint STDCALL symver16_mysql_warning_count(MYSQL *mysql) ++{ ++ return mysql_warning_count(mysql); ++} ++SYM_16(mysql_warning_count); ++ ++/*****/ ++ ++MYSQL * STDCALL symver16_mysql_real_connect(MYSQL *mysql,const char *host, const char *user, const char *passwd, const char *db, uint port, const char *unix_socket,ulong client_flag) ++{ ++ return mysql_real_connect(mysql, host, user, passwd, db, port, unix_socket, client_flag); ++} ++SYM_16(mysql_real_connect); ++ ++/*****/ ++ ++my_bool symver16_my_init(void) ++{ ++ return my_init(); ++} ++SYM_16(my_init); ++ ++#endif +diff -rup old/libmysql/libmysql.ver.in new/libmysql/libmysql.ver.in +--- old/libmysql/libmysql.ver.in 2013-11-04 20:15:10.000000000 +0100 ++++ new/libmysql/libmysql.ver.in 2014-01-14 12:10:27.148374504 +0100 +@@ -1 +1,136 @@ +-libmysqlclient_@SHARED_LIB_MAJOR_VERSION@ { global: *; }; ++libmysqlclient_16 ++{ ++ local: ++ symver16_*; ++}; ++ ++libmysqlclient_18 ++{ ++ global: ++ my_init; ++ myodbc_remove_escape; ++ mysql_affected_rows; ++ mysql_autocommit; ++ mysql_change_user; ++ mysql_character_set_name; ++ mysql_close; ++ mysql_commit; ++ mysql_data_seek; ++ mysql_debug; ++ mysql_dump_debug_info; ++ mysql_embedded; ++ mysql_eof; ++ mysql_errno; ++ mysql_error; ++ mysql_escape_string; ++ mysql_fetch_field; ++ mysql_fetch_field_direct; ++ mysql_fetch_fields; ++ mysql_fetch_lengths; ++ mysql_fetch_row; ++ mysql_field_count; ++ mysql_field_seek; ++ mysql_field_tell; ++ mysql_free_result; ++ mysql_get_character_set_info; ++ mysql_get_client_info; ++ mysql_get_client_version; ++ mysql_get_host_info; ++ mysql_get_parameters; ++ mysql_get_proto_info; ++ mysql_get_server_info; ++ mysql_get_server_version; ++ mysql_get_ssl_cipher; ++ mysql_hex_string; ++ mysql_info; ++ mysql_init; ++ mysql_insert_id; ++ mysql_kill; ++ mysql_list_dbs; ++ mysql_list_fields; ++ mysql_list_processes; ++ mysql_list_tables; ++ mysql_more_results; ++ mysql_next_result; ++ mysql_num_fields; ++ mysql_num_rows; ++ mysql_options; ++ mysql_ping; ++ mysql_query; ++ mysql_read_query_result; ++ mysql_real_connect; ++ mysql_real_escape_string; ++ mysql_real_query; ++ mysql_refresh; ++ mysql_rollback; ++ mysql_row_seek; ++ mysql_row_tell; ++ mysql_select_db; ++ mysql_send_query; ++ mysql_server_end; ++ mysql_server_init; ++ mysql_set_character_set; ++ mysql_set_local_infile_default; ++ mysql_set_local_infile_handler; ++ mysql_set_server_option; ++ mysql_shutdown; ++ mysql_sqlstate; ++ mysql_ssl_set; ++ mysql_stat; ++ mysql_stmt_affected_rows; ++ mysql_stmt_attr_get; ++ mysql_stmt_attr_set; ++ mysql_stmt_bind_param; ++ mysql_stmt_bind_result; ++ mysql_stmt_close; ++ mysql_stmt_data_seek; ++ mysql_stmt_errno; ++ mysql_stmt_error; ++ mysql_stmt_execute; ++ mysql_stmt_fetch; ++ mysql_stmt_fetch_column; ++ mysql_stmt_field_count; ++ mysql_stmt_free_result; ++ mysql_stmt_init; ++ mysql_stmt_insert_id; ++ mysql_stmt_num_rows; ++ mysql_stmt_param_count; ++ mysql_stmt_param_metadata; ++ mysql_stmt_prepare; ++ mysql_stmt_reset; ++ mysql_stmt_result_metadata; ++ mysql_stmt_row_seek; ++ mysql_stmt_row_tell; ++ mysql_stmt_send_long_data; ++ mysql_stmt_sqlstate; ++ mysql_stmt_store_result; ++ mysql_store_result; ++ mysql_thread_end; ++ mysql_thread_id; ++ mysql_thread_init; ++ mysql_thread_safe; ++ mysql_use_result; ++ mysql_warning_count; ++ ++ free_defaults; ++ handle_options; ++ load_defaults; ++ my_print_help; ++ ++ #my_make_scrambled_password; ++ THR_KEY_mysys; ++ ++ mysql_client_find_plugin; ++ mysql_client_register_plugin; ++ mysql_load_plugin; ++ mysql_load_plugin_v; ++ mysql_plugin_options; ++ mysql_stmt_next_result; ++ ++ #mysql_default_charset_info; ++ mysql_get_charset; ++ mysql_get_charset_by_csname; ++ mysql_net_realloc; ++ #mysql_client_errors; ++ *; ++} libmysqlclient_16; +diff -rup old/mysys/charset.c new/mysys/charset.c +--- old/mysys/charset.c 2013-11-04 20:15:10.000000000 +0100 ++++ new/mysys/charset.c 2014-01-14 12:10:27.197377417 +0100 +@@ -1040,3 +1040,20 @@ size_t escape_quotes_for_mysql(CHARSET_I + *to= 0; + return overflow ? (ulong)~0 : (ulong) (to - to_start); + } ++ ++#ifndef EMBEDDED_LIBRARY ++ ++// Hack to provide Fedora symbols ++ ++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 flags) ++{ ++ return get_charset_by_csname(cs_name, cs_flags, flags); ++} ++ ++#endif +diff -rup old/sql/net_serv.cc new/sql/net_serv.cc +--- old/sql/net_serv.cc 2013-11-04 20:15:10.000000000 +0100 ++++ new/sql/net_serv.cc 2014-01-14 12:10:27.252380688 +0100 +@@ -1047,3 +1047,15 @@ void my_net_set_write_timeout(NET *net, + DBUG_VOID_RETURN; + } + ++#ifndef EMBEDDED_LIBRARY ++C_MODE_START ++ ++// Hack to provide Fedora symbols ++ ++my_bool mysql_net_realloc(NET *net, size_t length) ++{ ++ return net_realloc(net, length); ++} ++ ++C_MODE_END ++#endif +diff -rup old/sql/password.c new/sql/password.c +--- old/sql/password.c 2013-11-04 20:15:10.000000000 +0100 ++++ new/sql/password.c 2014-01-14 12:10:27.309384078 +0100 +@@ -584,3 +584,16 @@ void make_password_from_salt(char *to, c + octet2hex(to, (const char*) hash_stage2, SHA1_HASH_SIZE); + } + ++#ifndef EMBEDDED_LIBRARY ++ ++// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions ++ ++#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16") ++ ++void symver16_my_make_scrambled_password(char *to, const char *password, size_t pass_len) ++{ ++ my_make_scrambled_password(to, password, pass_len); ++} ++SYM_16(my_make_scrambled_password); ++ ++#endif +diff -rup old/sql-common/client.c new/sql-common/client.c +--- old/sql-common/client.c 2013-11-04 20:15:10.000000000 +0100 ++++ new/sql-common/client.c 2014-01-14 12:10:27.199377537 +0100 +@@ -4847,3 +4847,136 @@ static int clear_password_auth_client(MY + + return res ? CR_ERROR : CR_OK; + } ++ ++#ifndef EMBEDDED_LIBRARY ++ ++// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions ++ ++#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16") ++ ++void STDCALL symver16_mysql_close(MYSQL *mysql) ++{ ++ return mysql_close(mysql); ++} ++SYM_16(mysql_close); ++ ++ ++uint STDCALL symver16_mysql_errno(MYSQL *mysql) ++{ ++ return mysql_errno(mysql); ++} ++SYM_16(mysql_errno); ++ ++ ++const char * STDCALL symver16_mysql_error(MYSQL *mysql) ++{ ++ return mysql_error(mysql); ++} ++SYM_16(mysql_error); ++ ++ ++ulong * STDCALL symver16_mysql_fetch_lengths(MYSQL_RES *res) ++{ ++ return mysql_fetch_lengths(res); ++} ++SYM_16(mysql_fetch_lengths); ++ ++ ++MYSQL_ROW STDCALL symver16_mysql_fetch_row(MYSQL_RES *res) ++{ ++ return mysql_fetch_row(res); ++} ++SYM_16(mysql_fetch_row); ++ ++ ++void STDCALL symver16_mysql_free_result(MYSQL_RES *result) ++{ ++ return mysql_free_result(result); ++} ++SYM_16(mysql_free_result); ++ ++ ++ulong STDCALL symver16_mysql_get_server_version(MYSQL *mysql) ++{ ++ return mysql_get_server_version(mysql); ++} ++SYM_16(mysql_get_server_version); ++ ++ ++const char * STDCALL symver16_mysql_get_ssl_cipher(MYSQL *mysql __attribute__((unused))) ++{ ++ return mysql_get_ssl_cipher(mysql); ++} ++SYM_16(mysql_get_ssl_cipher); ++ ++ ++MYSQL * STDCALL symver16_mysql_init(MYSQL *mysql) ++{ ++ return mysql_init(mysql); ++} ++SYM_16(mysql_init); ++ ++ ++unsigned int STDCALL symver16_mysql_num_fields(MYSQL_RES *res) ++{ ++ return mysql_num_fields(res); ++} ++SYM_16(mysql_num_fields); ++ ++ ++my_ulonglong STDCALL symver16_mysql_num_rows(MYSQL_RES *res) ++{ ++ return mysql_num_rows(res); ++} ++SYM_16(mysql_num_rows); ++ ++ ++int STDCALL symver16_mysql_options(MYSQL *mysql,enum mysql_option option, const void *arg) ++{ ++ return mysql_options(mysql, option, arg); ++} ++SYM_16(mysql_options); ++ ++ ++int STDCALL symver16_mysql_real_query(MYSQL *mysql, const char *query, ulong length) ++{ ++ return mysql_real_query(mysql, query, length); ++} ++SYM_16(mysql_real_query); ++ ++ ++int STDCALL symver16_mysql_select_db(MYSQL *mysql, const char *db) ++{ ++ return mysql_select_db(mysql, db); ++} ++SYM_16(mysql_select_db); ++ ++ ++int STDCALL symver16_mysql_send_query(MYSQL* mysql, const char* query, ulong length) ++{ ++ return mysql_send_query(mysql, query, length); ++} ++SYM_16(mysql_send_query); ++ ++ ++int STDCALL symver16_mysql_set_character_set(MYSQL *mysql, const char *cs_name) ++{ ++ return mysql_set_character_set(mysql, cs_name); ++} ++SYM_16(mysql_set_character_set); ++ ++ ++my_bool STDCALL symver16_mysql_ssl_set(MYSQL *mysql __attribute__((unused)), const char *key __attribute__((unused)), const char *cert __attribute__((unused)), const char *ca __attribute__((unused)), const char *capath __attribute__((unused)), const char *cipher __attribute__((unused))) ++{ ++ return mysql_ssl_set(mysql, key, cert, ca, capath, cipher); ++} ++SYM_16(mysql_ssl_set); ++ ++ ++MYSQL_RES * STDCALL symver16_mysql_store_result(MYSQL *mysql) ++{ ++ return mysql_store_result(mysql); ++} ++SYM_16(mysql_store_result); ++ ++#endif diff --git a/SOURCES/mysql-5.6.16-mysql-install.patch b/SOURCES/mysql-5.6.16-mysql-install.patch new file mode 100644 index 0000000..5efc4eb --- /dev/null +++ b/SOURCES/mysql-5.6.16-mysql-install.patch @@ -0,0 +1,46 @@ +We have, for security hardening reasons, changed upstream sources to never +create the test database in 5.7. This patch is a backport from 5.7. + +The patch in Fedora is the same that we apply in our own repos. Debian and +Ubuntu are also skipping creation of the test database, so we're trying +to align across distros in this issue. + +diff --git a/scripts/mysql_install_db.pl.in b/scripts/mysql_install_db.pl.in +index 1fa5164..4aa49ca 100644 +--- a/scripts/mysql_install_db.pl.in ++++ b/scripts/mysql_install_db.pl.in +@@ -113,6 +113,7 @@ EOF2 + print <{srcdir} and $opt->{basedir} ) + { + error($opt,"Specify either --basedir or --srcdir, not both"); + } +-if ( $opt->{'keep-my-cnf'} ) ++if ( $opt->{rpm} || $opt->{'keep-my-cnf'} ) + { + $keep_my_cnf = 1; + } +@@ -664,7 +665,7 @@ if ( $opt->{'skip-name-resolve'} and $resolved and $resolved =~ /\s/ ) + } + + # ---------------------------------------------------------------------- +-# Create database directories mysql & test ++# Create database directory mysql + # ---------------------------------------------------------------------- + + # FIXME The shell variant uses "mkdir -p": +@@ -697,7 +698,7 @@ if ($opt_user) + } + } + +-foreach my $dir ( $opt->{ldata}, "$opt->{ldata}/mysql", "$opt->{ldata}/test" ) ++foreach my $dir ( $opt->{ldata}, "$opt->{ldata}/mysql") + { + mkdir($dir, 0700) unless -d $dir; + if ($opt_user and -w "/") diff --git a/SOURCES/mysql-5.6.19-gcc49-aarch64-opt.patch b/SOURCES/mysql-5.6.19-gcc49-aarch64-opt.patch new file mode 100644 index 0000000..15b8f6c --- /dev/null +++ b/SOURCES/mysql-5.6.19-gcc49-aarch64-opt.patch @@ -0,0 +1,102 @@ +diff --git a/storage/perfschema/pfs_account.cc b/storage/perfschema/pfs_account.cc +index 405364a..ed3bef1 100644 +--- a/storage/perfschema/pfs_account.cc ++++ b/storage/perfschema/pfs_account.cc +@@ -201,6 +201,13 @@ static void set_account_key(PFS_account_key *key, + key->m_key_length= ptr - &key->m_hash_key[0]; + } + ++#if defined(__aarch64__) ++PFS_account * ++find_or_create_account(PFS_thread *thread, ++ const char *username, uint username_length, ++ const char *hostname, uint hostname_length) __attribute__((optimize (1))); ++#endif ++ + PFS_account * + find_or_create_account(PFS_thread *thread, + const char *username, uint username_length, +diff --git a/storage/perfschema/pfs_digest.cc b/storage/perfschema/pfs_digest.cc +index addfac1..68e76cd 100644 +--- a/storage/perfschema/pfs_digest.cc ++++ b/storage/perfschema/pfs_digest.cc +@@ -168,6 +168,14 @@ static LF_PINS* get_digest_hash_pins(PFS_thread *thread) + return thread->m_digest_hash_pins; + } + ++#if defined(__aarch64__) ++PFS_statement_stat* ++find_or_create_digest(PFS_thread *thread, ++ PSI_digest_storage *digest_storage, ++ const char *schema_name, ++ uint schema_name_length) __attribute__((optimize (1))); ++#endif ++ + PFS_statement_stat* + find_or_create_digest(PFS_thread *thread, + const sql_digest_storage *digest_storage, +diff --git a/storage/perfschema/pfs_host.cc b/storage/perfschema/pfs_host.cc +index 0c6f5cf..fc624d7 100644 +--- a/storage/perfschema/pfs_host.cc ++++ b/storage/perfschema/pfs_host.cc +@@ -193,6 +193,11 @@ static void set_host_key(PFS_host_key *key, + key->m_key_length= ptr - &key->m_hash_key[0]; + } + ++#if defined(__aarch64__) ++PFS_host *find_or_create_host(PFS_thread *thread, ++ const char *hostname, uint hostname_length) __attribute__((optimize (1))); ++#endif ++ + PFS_host *find_or_create_host(PFS_thread *thread, + const char *hostname, uint hostname_length) + { +diff --git a/storage/perfschema/pfs_instr.cc b/storage/perfschema/pfs_instr.cc +index cf0e6fd..8682e04 100644 +--- a/storage/perfschema/pfs_instr.cc ++++ b/storage/perfschema/pfs_instr.cc +@@ -1149,6 +1149,11 @@ LF_PINS* get_filename_hash_pins(PFS_thread *thread) + @param create create a file instance if none found + @return a file instance, or NULL + */ ++#if defined(__aarch64__) ++PFS_file* ++find_or_create_file(PFS_thread *thread, PFS_file_class *klass, ++ const char *filename, uint len, bool create) __attribute__((optimize (1))); ++#endif + PFS_file* + find_or_create_file(PFS_thread *thread, PFS_file_class *klass, + const char *filename, uint len, bool create) +diff --git a/storage/perfschema/pfs_instr_class.cc b/storage/perfschema/pfs_instr_class.cc +index 4d73396..139a2db 100644 +--- a/storage/perfschema/pfs_instr_class.cc ++++ b/storage/perfschema/pfs_instr_class.cc +@@ -1233,6 +1233,11 @@ static int compare_keys(PFS_table_share *pfs, const TABLE_SHARE *share) + @param share table share + @return a table share, or NULL + */ ++#if defined(__aarch64__) ++PFS_table_share* find_or_create_table_share(PFS_thread *thread, ++ bool temporary, ++ const TABLE_SHARE *share) __attribute__((optimize (1))); ++#endif + PFS_table_share* find_or_create_table_share(PFS_thread *thread, + bool temporary, + const TABLE_SHARE *share) +diff --git a/storage/perfschema/pfs_user.cc b/storage/perfschema/pfs_user.cc +index 9f53702..2f418a7 100644 +--- a/storage/perfschema/pfs_user.cc ++++ b/storage/perfschema/pfs_user.cc +@@ -193,6 +193,12 @@ static void set_user_key(PFS_user_key *key, + key->m_key_length= ptr - &key->m_hash_key[0]; + } + ++#if defined(__aarch64__) ++PFS_user * ++find_or_create_user(PFS_thread *thread, ++ const char *username, uint username_length) __attribute__((optimize (1))); ++#endif ++ + PFS_user * + find_or_create_user(PFS_thread *thread, + const char *username, uint username_length) diff --git a/SOURCES/mysql-admincrash.patch b/SOURCES/mysql-admincrash.patch new file mode 100644 index 0000000..31cbe39 --- /dev/null +++ b/SOURCES/mysql-admincrash.patch @@ -0,0 +1,24 @@ +mysqladmin crash on execution of below command: + + #> mysqladmin -u root -p + ... + Segmentation fault (core dumped) + +This is probably caused by memory corruption based on working with temp_argv[-1]. + +RHBZ: #1207041 +Upstream report: https://mariadb.atlassian.net/browse/MDEV-7883 + +diff -up mariadb-5.5.41/client/mysqladmin.cc.bz1207041 mariadb-5.5.41/client/mysqladmin.cc +--- mariadb-5.5.41/client/mysqladmin.cc.bz1207041 2015-03-30 12:37:31.078880914 +0200 ++++ mariadb-5.5.41/client/mysqladmin.cc 2015-03-30 13:03:32.442152833 +0200 +@@ -1215,7 +1215,8 @@ static char **mask_password(int argc, ch + } + argc--; + } +- temp_argv[argc]= my_strdup((*argv)[argc], MYF(MY_FAE)); ++ if (argc >= 0) ++ temp_argv[argc]= my_strdup((*argv)[argc], MYF(MY_FAE)); + return(temp_argv); + } + diff --git a/SOURCES/mysql-chain-certs.patch b/SOURCES/mysql-chain-certs.patch new file mode 100644 index 0000000..164c22e --- /dev/null +++ b/SOURCES/mysql-chain-certs.patch @@ -0,0 +1,41 @@ +Fix things so that chains of certificates work in the server and client +certificate files. + +This only really works for OpenSSL-based builds, as yassl is unable to read +multiple certificates from a file. The patch below to yassl/src/ssl.cpp +doesn't fix that, but just arranges that the viosslfactories.c patch won't +have any ill effects in a yassl build. Since we don't use yassl in Red Hat/ +Fedora builds, I'm not feeling motivated to try to fix yassl for this. + +See RH bug #598656. Filed upstream at http://bugs.mysql.com/bug.php?id=54158 + + +diff -Naur mysql-5.5.28.orig/extra/yassl/src/ssl.cpp mysql-5.5.28/extra/yassl/src/ssl.cpp +--- mysql-5.5.28.orig/extra/yassl/src/ssl.cpp 2012-08-29 04:50:46.000000000 -0400 ++++ mysql-5.5.28/extra/yassl/src/ssl.cpp 2012-09-29 12:45:19.682287214 -0400 +@@ -1627,10 +1627,10 @@ + } + + +- int SSL_CTX_use_certificate_chain_file(SSL_CTX*, const char*) ++ int SSL_CTX_use_certificate_chain_file(SSL_CTX* ctx, const char* file) + { +- // TDOD: +- return SSL_SUCCESS; ++ // For the moment, treat like use_certificate_file ++ return read_file(ctx, file, SSL_FILETYPE_PEM, Cert); + } + + +diff -Naur mysql-5.5.28.orig/vio/viosslfactories.c mysql-5.5.28/vio/viosslfactories.c +--- mysql-5.5.28.orig/vio/viosslfactories.c 2012-08-29 04:50:46.000000000 -0400 ++++ mysql-5.5.28/vio/viosslfactories.c 2012-09-29 12:46:35.124975585 -0400 +@@ -106,7 +106,7 @@ + key_file= cert_file; + + if (cert_file && +- SSL_CTX_use_certificate_file(ctx, cert_file, SSL_FILETYPE_PEM) <= 0) ++ SSL_CTX_use_certificate_chain_file(ctx, cert_file) <= 0) + { + *error= SSL_INITERR_CERT; + DBUG_PRINT("error",("%s from file '%s'", sslGetErrString(*error), cert_file)); diff --git a/SOURCES/mysql-check-socket.sh b/SOURCES/mysql-check-socket.sh new file mode 100644 index 0000000..b15cd32 --- /dev/null +++ b/SOURCES/mysql-check-socket.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# We check if there is already a process using the socket file, +# since otherwise the systemd service file could report false +# positive result when starting and mysqld_safe could remove +# a socket file, which is actually being used by a different daemon. + +source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common" + +if test -e "$socketfile" ; then + echo "Socket file $socketfile exists." >&2 + + # no write permissions + if ! test -w "$socketfile" ; then + echo "Not enough permission to write to the socket file $socketfile, which is suspicious." >&2 + echo "Please, remove $socketfile manually to start the service." >&2 + exit 1 + fi + + # not a socket file + if ! test -S "$socketfile" ; then + echo "The file $socketfile is not a socket file, which is suspicious." >&2 + echo "Please, remove $socketfile manually to start the service." >&2 + exit 1 + fi + + # some process uses the socket file + if fuser "$socketfile" &>/dev/null ; then + socketpid=$(fuser "$socketfile" 2>/dev/null) + echo "Is another MySQL daemon already running with the same unix socket?" >&2 + echo "Please, stop the process $socketpid or remove $socketfile manually to start the service." >&2 + exit 1 + fi + + # socket file is a garbage + echo "No process is using $socketfile, which means it is a garbage, so it will be removed automatically." >&2 +fi + +exit 0 diff --git a/SOURCES/mysql-check-upgrade.sh b/SOURCES/mysql-check-upgrade.sh new file mode 100644 index 0000000..cf41d84 --- /dev/null +++ b/SOURCES/mysql-check-upgrade.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common" + +upgrade_info_file="$datadir/mysql_upgrade_info" +version=0 +# get version as integer from mysql_upgrade_info file +if [ -f "$upgrade_info_file" ] && [ -r "$upgrade_info_file" ] ; then + version_major=$(cat "$upgrade_info_file" | head -n 1 | sed -e 's/\([0-9]*\)\.\([0-9]*\)\..*$/\1/') + version_minor=$(cat "$upgrade_info_file" | head -n 1 | sed -e 's/\([0-9]*\)\.\([0-9]*\)\..*$/\2/') + if [[ $version_major =~ ^[0-9]+$ ]] && [[ $version_minor =~ ^[0-9]+$ ]] ; then + version=$((version_major*100+version_minor)) + fi +fi + +# compute current version as integer +thisversion=$((@MAJOR_VERSION@*100+@MINOR_VERSION@)) + +# provide warning in cases we should run mysql_upgrade +if [ $version -ne $thisversion ] ; then + + # give extra warning if some version seems to be skipped + if [ $version -gt 0 ] && [ $version -lt 505 ] ; then + echo "The datadir located at $datadir seems to be older than of a version 5.5. Please, mind that as a general rule, to upgrade from one release series to another, go to the next series rather than skipping a series." >&2 + fi + + cat <&2 +The datadir located at $datadir needs to be upgraded using 'mysql_upgrade' tool. This can be done using the following steps: + + 1. Back-up your data before with 'mysql_upgrade' + 2. Start the database daemon using 'service @DAEMON_NAME@ start' + 3. Run 'mysql_upgrade' with a database user that has sufficient privileges + +Read more about 'mysql_upgrade' usage at: +http://dev.mysql.com/doc/refman/5.6/en/mysql-upgrade.html +EOF +fi + +exit 0 diff --git a/SOURCES/mysql-cipherspec.patch b/SOURCES/mysql-cipherspec.patch new file mode 100644 index 0000000..b0c5b09 --- /dev/null +++ b/SOURCES/mysql-cipherspec.patch @@ -0,0 +1,154 @@ +Some test items assume the default SSL cipher is DHE-RSA-AES256-SHA, +which is no longer the case as of openssl 1.0.1. +This patch enhances connect command by an option to specify a cipher +and tests are adjusted to specify the expected cipher explicitly. +Upstream bug report: http://bugs.mysql.com/bug.php?id=64461 + +diff --git a/client/mysqltest.cc b/client/mysqltest.cc +index 2def9bd..128dc00 100644 +--- a/client/mysqltest.cc ++++ b/client/mysqltest.cc +@@ -5503,6 +5503,7 @@ void do_connect(struct st_command *command) + my_bool con_pipe= 0, con_shm= 0, con_cleartext_enable= 0; + my_bool con_secure_auth= 1; + struct st_connection* con_slot; ++ char *con_cipher=NULL; + + static DYNAMIC_STRING ds_connection_name; + static DYNAMIC_STRING ds_host; +@@ -5595,6 +5596,8 @@ void do_connect(struct st_command *command) + con_cleartext_enable= 1; + else if (!strncmp(con_options, "SKIPSECUREAUTH",14)) + con_secure_auth= 0; ++ else if (!strncmp(con_options, "CIPHER:", 7)) ++ con_cipher = con_options + 7; + else + die("Illegal option to connect: %.*s", + (int) (end - con_options), con_options); +@@ -5642,8 +5645,11 @@ void do_connect(struct st_command *command) + if (con_ssl) + { + #if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY) ++ /* default cipher */ ++ if (con_cipher == NULL && opt_ssl_cipher != NULL) ++ con_cipher = opt_ssl_cipher; + mysql_ssl_set(&con_slot->mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, +- opt_ssl_capath, opt_ssl_cipher); ++ opt_ssl_capath, con_cipher); + mysql_options(&con_slot->mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl); + mysql_options(&con_slot->mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath); + #if MYSQL_VERSION_ID >= 50000 +diff --git a/mysql-test/r/openssl_1.result b/mysql-test/r/openssl_1.result +index a767a71..3c1ee27 100644 +--- a/mysql-test/r/openssl_1.result ++++ b/mysql-test/r/openssl_1.result +@@ -197,8 +197,6 @@ Variable_name Value + Ssl_cipher EDH-RSA-DES-CBC3-SHA + Variable_name Value + Ssl_cipher AES256-SHA +-Variable_name Value +-Ssl_cipher RC4-SHA + select 'is still running; no cipher request crashed the server' as result from dual; + result + is still running; no cipher request crashed the server +diff --git a/mysql-test/t/openssl_1.test b/mysql-test/t/openssl_1.test +index 426de1e..f8c6203 100644 +--- a/mysql-test/t/openssl_1.test ++++ b/mysql-test/t/openssl_1.test +@@ -20,13 +20,13 @@ grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA + grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx"; + flush privileges; + +-connect (con1,localhost,ssl_user1,,,,,SSL); +-connect (con2,localhost,ssl_user2,,,,,SSL); +-connect (con3,localhost,ssl_user3,,,,,SSL); +-connect (con4,localhost,ssl_user4,,,,,SSL); ++connect (con1,localhost,ssl_user1,,,,,SSL CIPHER:DHE-RSA-AES256-SHA); ++connect (con2,localhost,ssl_user2,,,,,SSL CIPHER:DHE-RSA-AES256-SHA); ++connect (con3,localhost,ssl_user3,,,,,SSL CIPHER:DHE-RSA-AES256-SHA); ++connect (con4,localhost,ssl_user4,,,,,SSL CIPHER:DHE-RSA-AES256-SHA); + --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT + --error ER_ACCESS_DENIED_ERROR +-connect (con5,localhost,ssl_user5,,,,,SSL); ++connect (con5,localhost,ssl_user5,,,,,SSL CIPHER:DHE-RSA-AES256-SHA); + + connection con1; + # Check ssl turned on +@@ -125,7 +125,7 @@ drop table t1; + # verification of servers certificate by setting both ca certificate + # and ca path to NULL + # +---exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1 ++--exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1 + --echo End of 5.0 tests + + # +@@ -215,7 +215,6 @@ DROP TABLE t1; + --exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=DHE-RSA-AES256-SHA + --exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=EDH-RSA-DES-CBC3-SHA + --exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=AES256-SHA +---exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=RC4-SHA + --disable_query_log + --disable_result_log + +@@ -250,7 +249,7 @@ select 'is still running; no cipher request crashed the server' as result from d + + GRANT SELECT ON test.* TO bug42158@localhost REQUIRE X509; + FLUSH PRIVILEGES; +-connect(con1,localhost,bug42158,,,,,SSL); ++connect(con1,localhost,bug42158,,,,,SSL CIPHER:DHE-RSA-AES256-SHA); + SHOW STATUS LIKE 'Ssl_cipher'; + disconnect con1; + connection default; +diff --git a/mysql-test/t/plugin_auth_sha256_tls.test b/mysql-test/t/plugin_auth_sha256_tls.test +index f99df8a..1b38fda 100644 +--- a/mysql-test/t/plugin_auth_sha256_tls.test ++++ b/mysql-test/t/plugin_auth_sha256_tls.test +@@ -1,7 +1,7 @@ + --source include/not_embedded.inc + --source include/have_ssl.inc + +-connect (ssl_con,localhost,root,,,,,SSL); ++connect (ssl_con,localhost,root,,,,,SSL CIPHER:DHE-RSA-AES256-SHA); + SHOW STATUS LIKE 'Ssl_cipher'; + + CREATE USER 'kristofer' IDENTIFIED WITH 'sha256_password'; +diff --git a/mysql-test/t/ssl.test b/mysql-test/t/ssl.test +index ea8be39..c61ca8b 100644 +--- a/mysql-test/t/ssl.test ++++ b/mysql-test/t/ssl.test +@@ -8,7 +8,7 @@ + # Save the initial number of concurrent sessions + --source include/count_sessions.inc + +-connect (ssl_con,localhost,root,,,,,SSL); ++connect (ssl_con,localhost,root,,,,,SSL CIPHER:DHE-RSA-AES256-SHA); + + # Check ssl turned on + SHOW STATUS LIKE 'Ssl_cipher'; +diff --git a/mysql-test/t/ssl_8k_key.test b/mysql-test/t/ssl_8k_key.test +index d94c2fc..c27ca58 100644 +--- a/mysql-test/t/ssl_8k_key.test ++++ b/mysql-test/t/ssl_8k_key.test +@@ -4,7 +4,7 @@ + # + # Bug#29784 YaSSL assertion failure when reading 8k key. + # +---exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1 ++--exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1 + + ## This test file is for testing encrypted communication only, not other + ## encryption routines that the SSL library happens to provide! +diff --git a/mysql-test/t/ssl_compress.test b/mysql-test/t/ssl_compress.test +index 2cb4c0d..feaa0e7 100644 +--- a/mysql-test/t/ssl_compress.test ++++ b/mysql-test/t/ssl_compress.test +@@ -9,7 +9,7 @@ + # Save the initial number of concurrent sessions + --source include/count_sessions.inc + +-connect (ssl_compress_con,localhost,root,,,,,SSL COMPRESS); ++connect (ssl_compress_con,localhost,root,,,,,SSL COMPRESS CIPHER:DHE-RSA-AES256-SHA); + + # Check ssl turned on + SHOW STATUS LIKE 'Ssl_cipher'; diff --git a/SOURCES/mysql-dh1024.patch b/SOURCES/mysql-dh1024.patch new file mode 100644 index 0000000..620ee0b --- /dev/null +++ b/SOURCES/mysql-dh1024.patch @@ -0,0 +1,63 @@ +Change the DH key length from 512 to 1024 bits to meet minimum requirements +of FIPS 140-2. (In principle we could use the larger size only when FIPS +mode is on, but it doesn't seem worth the trouble.) + +The new parameter value was generated using "openssl dhparam -C 1024". + + +diff -Naur mysql-5.5.28.orig/vio/viosslfactories.c mysql-5.5.28/vio/viosslfactories.c +--- mysql-5.5.28.orig/vio/viosslfactories.c 2012-08-29 04:50:46.000000000 -0400 ++++ mysql-5.5.28/vio/viosslfactories.c 2012-11-15 11:19:38.575701435 -0500 +@@ -20,27 +20,32 @@ + static my_bool ssl_algorithms_added = FALSE; + static my_bool ssl_error_strings_loaded= FALSE; + +-static unsigned char dh512_p[]= ++static unsigned char dh1024_p[]= + { +- 0xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89,0xD0,0xE4,0xAF,0x75, +- 0x6F,0x4C,0xCA,0x92,0xDD,0x4B,0xE5,0x33,0xB8,0x04,0xFB,0x0F, +- 0xED,0x94,0xEF,0x9C,0x8A,0x44,0x03,0xED,0x57,0x46,0x50,0xD3, +- 0x69,0x99,0xDB,0x29,0xD7,0x76,0x27,0x6B,0xA2,0xD3,0xD4,0x12, +- 0xE2,0x18,0xF4,0xDD,0x1E,0x08,0x4C,0xF6,0xD8,0x00,0x3E,0x7C, +- 0x47,0x74,0xE8,0x33, ++ 0xBF,0x5C,0xFA,0xD1,0xDD,0xBB,0xB3,0x0A,0x58,0x29,0x05,0xF5, ++ 0x7D,0x64,0xB2,0xE1,0xCE,0xE8,0xE0,0xE1,0x7A,0xB6,0xBC,0x5B, ++ 0x21,0x56,0xDF,0x2C,0x82,0x60,0xDC,0x31,0xCA,0x1E,0x02,0xFE, ++ 0xC4,0xE7,0x24,0x63,0x31,0xE4,0x67,0x1C,0x0B,0xFF,0x86,0x12, ++ 0x0D,0x2E,0xE6,0x35,0x0A,0x07,0x4F,0xE7,0x3F,0xDE,0xFE,0xF0, ++ 0x13,0x1C,0xA2,0x2B,0xF4,0xEE,0x2C,0x90,0x10,0x57,0x6B,0x2B, ++ 0xB9,0x1E,0x1B,0x47,0xB0,0x25,0xBF,0x45,0x86,0xDA,0x87,0x35, ++ 0x2C,0xF5,0x6A,0x41,0xA2,0x57,0xD8,0x16,0x5E,0x82,0x91,0x99, ++ 0x33,0xA0,0x8B,0x9D,0x34,0xCE,0x03,0x01,0x80,0x32,0x07,0x3B, ++ 0xF2,0x93,0xFC,0x3A,0x25,0xEC,0xB3,0xED,0x5C,0x4E,0x57,0xF2, ++ 0x3C,0x2E,0x0D,0xB1,0x59,0xA2,0x08,0x93, + }; + +-static unsigned char dh512_g[]={ ++static unsigned char dh1024_g[]={ + 0x02, + }; + +-static DH *get_dh512(void) ++static DH *get_dh1024(void) + { + DH *dh; + if ((dh=DH_new())) + { +- dh->p=BN_bin2bn(dh512_p,sizeof(dh512_p),NULL); +- dh->g=BN_bin2bn(dh512_g,sizeof(dh512_g),NULL); ++ dh->p=BN_bin2bn(dh1024_p,sizeof(dh1024_p),NULL); ++ dh->g=BN_bin2bn(dh1024_g,sizeof(dh1024_g),NULL); + if (! dh->p || ! dh->g) + { + DH_free(dh); +@@ -255,7 +260,7 @@ + } + + /* DH stuff */ +- dh=get_dh512(); ++ dh=get_dh1024(); + SSL_CTX_set_tmp_dh(ssl_fd->ssl_context, dh); + DH_free(dh); + diff --git a/SOURCES/mysql-file-contents.patch b/SOURCES/mysql-file-contents.patch new file mode 100644 index 0000000..ed72d5c --- /dev/null +++ b/SOURCES/mysql-file-contents.patch @@ -0,0 +1,45 @@ +Upstream chooses to install INFO_SRC and INFO_BIN into the docs dir, which +breaks at least two packaging commandments, so we put them into $libdir +instead. That means we have to hack the file_contents regression test +to know about this. + +Recommendation they change is at http://bugs.mysql.com/bug.php?id=61425 + + +diff -up mysql-5.6.22/mysql-test/t/file_contents.test.file-contents mysql-5.6.22/mysql-test/t/file_contents.test +--- mysql-5.6.22/mysql-test/t/file_contents.test.file-contents 2014-12-03 15:05:18.629731527 +0100 ++++ mysql-5.6.22/mysql-test/t/file_contents.test 2014-12-03 15:09:36.082081039 +0100 +@@ -11,7 +11,7 @@ + --perl + print "\nChecking 'INFO_SRC' and 'INFO_BIN'\n"; + $dir_bin = $ENV{'MYSQL_BINDIR'}; +-if ($dir_bin =~ m|/usr/|) { ++if ($dir_bin =~ m|.*/usr/$|) { + # RPM package + $dir_docs = $dir_bin; + $dir_docs =~ s|/lib|/share/doc|; +@@ -30,7 +30,7 @@ if ($dir_bin =~ m|/usr/|) { + } + } + } +-} elsif ($dir_bin =~ m|/usr$|) { ++} elsif ($dir_bin =~ m|.*/usr$|) { + # RPM build during development + $dir_docs = "$dir_bin/share/doc"; + if(-d "$dir_docs/packages") { +@@ -47,6 +47,15 @@ if ($dir_bin =~ m|/usr/|) { + $dir_docs = glob "$dir_bin/share/mysql/docs"; + } + } ++ ++ # All the above is entirely wacko, because these files are not docs; ++ # they should be kept in libdir instead. mtr does not provide a nice ++ # way to find libdir though, so we have to kluge it like this: ++ if (-d "$dir_bin/lib64/mysql") { ++ $dir_docs = "$dir_bin/lib64/mysql"; ++ } else { ++ $dir_docs = "$dir_bin/lib/mysql"; ++ } + } + } else { + # tar.gz package, Windows, or developer work (in git) diff --git a/SOURCES/mysql-install-db-sharedir.patch b/SOURCES/mysql-install-db-sharedir.patch new file mode 100644 index 0000000..4949b6d --- /dev/null +++ b/SOURCES/mysql-install-db-sharedir.patch @@ -0,0 +1,38 @@ +Use configured value instead of hardcoded path + +diff -up mariadb-10.0.13/scripts/mysql_install_db.pl.in.pbasedir mariadb-10.0.13/scripts/mysql_install_db.pl.in +--- mariadb-10.0.13/scripts/mysql_install_db.pl.in.pbasedir 2014-09-04 12:50:24.061979080 +0200 ++++ mariadb-10.0.13/scripts/mysql_install_db.pl.in 2014-09-04 12:51:22.929045559 +0200 +@@ -318,7 +318,7 @@ elsif ( $opt->{basedir} ) + find_in_basedir($opt,"file","mysqld-nt", + "bin"); # ,"sql" + $pkgdatadir = find_in_basedir($opt,"dir","fill_help_tables.sql", +- "share","share/mysql"); # ,"scripts" ++ "share","@INSTALL_MYSQLSHAREDIR@"); # ,"scripts" + $scriptdir = "$opt->{basedir}/scripts"; + } + else +diff -up mariadb-10.0.13/scripts/mysql_install_db.sh.pbasedir mariadb-10.0.13/scripts/mysql_install_db.sh +--- mariadb-10.0.13/scripts/mysql_install_db.sh.pbasedir 2014-09-04 12:51:59.005086301 +0200 ++++ mariadb-10.0.13/scripts/mysql_install_db.sh 2014-09-04 12:54:02.794222597 +0200 +@@ -280,16 +280,16 @@ then + cannot_find_file mysqld $basedir/libexec $basedir/sbin $basedir/bin + exit 1 + fi +- langdir=`find_in_basedir --dir errmsg.sys share/english share/mysql/english` ++ langdir=`find_in_basedir --dir errmsg.sys share/english @INSTALL_MYSQLSHAREDIR@/english` + if test -z "$langdir" + then +- cannot_find_file errmsg.sys $basedir/share/english $basedir/share/mysql/english ++ cannot_find_file errmsg.sys $basedir/share/english $basedir/@INSTALL_MYSQLSHAREDIR@/english + exit 1 + fi +- pkgdatadir=`find_in_basedir --dir fill_help_tables.sql share share/mysql` ++ pkgdatadir=`find_in_basedir --dir fill_help_tables.sql share @INSTALL_MYSQLSHAREDIR@` + if test -z "$pkgdatadir" + then +- cannot_find_file fill_help_tables.sql $basedir/share $basedir/share/mysql ++ cannot_find_file fill_help_tables.sql $basedir/share $basedir/@INSTALL_MYSQLSHAREDIR@ + exit 1 + fi + scriptdir="$basedir/scripts" diff --git a/SOURCES/mysql-install-test.patch b/SOURCES/mysql-install-test.patch new file mode 100644 index 0000000..1f67132 --- /dev/null +++ b/SOURCES/mysql-install-test.patch @@ -0,0 +1,52 @@ +Improve the documentation that will be installed in the mysql-test RPM. + + +diff -Naur mysql-5.5.20.orig/mysql-test/README mysql-5.5.20/mysql-test/README +--- mysql-5.5.20.orig/mysql-test/README 2011-12-16 14:52:05.000000000 -0500 ++++ mysql-5.5.20/mysql-test/README 2012-02-10 17:06:19.531082253 -0500 +@@ -1,14 +1,26 @@ + This directory contains a test suite for the MySQL daemon. To run +-the currently existing test cases, simply execute ./mysql-test-run in +-this directory. It will fire up the newly built mysqld and test it. ++the currently existing test cases, execute ./mysql-test-run in ++this directory. + +-Note that you do not have to have to do "make install", and you could +-actually have a co-existing MySQL installation. The tests will not +-conflict with it. +- +-All tests must pass. If one or more of them fail on your system, please +-read the following manual section for instructions on how to report the +-problem: ++For use in Red Hat distributions, you should run the script as user mysql, ++so the best bet is something like ++ cd /usr/share/mysql-test ++ sudo -u mysql ./mysql-test-run --skip-test-list=platform-specific-tests.list ++This will use the installed mysql executables, but will run a private copy ++of the server process (using data files within /usr/share/mysql-test), ++so you need not start the mysqld service beforehand. ++ ++The "--skip-test-list=platform-specific-tests.list" option excludes tests that are ++known to fail on one or more Red-Hat-supported platforms. You can omit it ++if you want to check whether such failures occur for you. Documentation ++about the reasons for omitting such tests can be found in the file ++platform-specific-tests.list. ++ ++To clean up afterwards, remove the created "var" subdirectory, eg ++ sudo -u mysql rm -rf /usr/share/mysql-test/var ++ ++If one or more tests fail on your system, please read the following manual ++section for instructions on how to report the problem: + + http://dev.mysql.com/doc/mysql/en/mysql-test-suite.html + +@@ -25,7 +37,8 @@ + + With no test cases named on the command line, mysql-test-run falls back + to the normal "non-extern" behavior. The reason for this is that some +-tests cannot run with an external server. ++tests cannot run with an external server (because they need to control the ++options with which the server is started). + + + You can create your own test cases. To create a test case, create a new diff --git a/SOURCES/mysql-log-fifo.patch b/SOURCES/mysql-log-fifo.patch new file mode 100644 index 0000000..30f28b2 --- /dev/null +++ b/SOURCES/mysql-log-fifo.patch @@ -0,0 +1,127 @@ +MySQL port of the following MariaDB patch: + +commit 8e781601f46938cb4228bd9a966a9d6871c06859 +Author: Sergei Golubchik +Date: Fri Apr 24 21:41:00 2015 +0200 + + MDEV-6870 Not possible to use FIFO file as a general_log file + + Remove the too restrictive bugfix for bug#67088. + FIFO can be used for general/slow logs, but lseek() and fsync() on + FIFO fail. And open() needs to be non-blocking, in case the other + end isn't reading. + +RHBZ: #1219496 + +diff -up mysql-5.6.24/mysql-test/r/log_errchk.result.logfifo mysql-5.6.24/mysql-test/r/log_errchk.result +--- mysql-5.6.24/mysql-test/r/log_errchk.result.logfifo 2015-03-25 17:34:52.000000000 +0100 ++++ mysql-5.6.24/mysql-test/r/log_errchk.result 2015-05-07 16:06:04.280715628 +0200 +@@ -1,5 +1,4 @@ +-call mtr.add_suppression("Could not open"); +-# Case 1: Setting fife file to general_log_file and slow_query_log_file ++# Case 1: Setting fifo file to general_log_file and slow_query_log_file + # system variable. + SET GLOBAL general_log_file="MYSQLTEST_VARDIR/tmp/general_log.fifo";; + ERROR 42000: Variable 'general_log_file' can't be set to the value of 'MYSQLTEST_VARDIR/tmp/general_log.fifo' +@@ -7,4 +6,6 @@ SET GLOBAL slow_query_log_file="MYSQLTES + ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of 'MYSQLTEST_VARDIR/tmp/slow_log.fifo' + # Case 2: Starting server with fifo file as general log file + # and slow query log file. ++call mtr.add_suppression("Could not open .* for logging \\(error 6\\)"); ++call mtr.add_suppression("File '.*' not found \\(Errcode: 6\\)"); + Setting fifo file as general log file and slow query log failed. +diff -up mysql-5.6.24/mysql-test/t/log_errchk.test.logfifo mysql-5.6.24/mysql-test/t/log_errchk.test +--- mysql-5.6.24/mysql-test/t/log_errchk.test.logfifo 2015-03-25 17:34:52.000000000 +0100 ++++ mysql-5.6.24/mysql-test/t/log_errchk.test 2015-05-07 16:05:16.904547519 +0200 +@@ -7,8 +7,8 @@ + # Bug#14757009 : WHEN THE GENERAL_LOG IS A SOCKET AND THE READER GOES AWAY, + # MYSQL QUITS WORKING. + # +-call mtr.add_suppression("Could not open"); +- ++# MariaDB: MDEV-6870 Not possible to use FIFO file as a general_log file ++# + --let $gen_log_file= $MYSQLTEST_VARDIR/tmp/general_log.fifo + --let $slow_query_log_file= $MYSQLTEST_VARDIR/tmp/slow_log.fifo + --let GREP_FILE=$MYSQLTEST_VARDIR/log/mysqld.1.err +@@ -16,10 +16,9 @@ call mtr.add_suppression("Could not open + --exec mkfifo $gen_log_file + --exec mkfifo $slow_query_log_file + +---echo # Case 1: Setting fife file to general_log_file and slow_query_log_file ++--echo # Case 1: Setting fifo file to general_log_file and slow_query_log_file + --echo # system variable. +-# Only regular files can be set to general log. Setting fifo file to general log +-# reports an error. ++# Setting fifo file to general log reports an error because the other end is closed + --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR + --error ER_WRONG_VALUE_FOR_VAR + --eval SET GLOBAL general_log_file="$gen_log_file"; +@@ -39,11 +38,12 @@ call mtr.add_suppression("Could not open + --exec echo "restart: --general-log-file=$gen_log_file --slow-query-log-file=$slow_query_log_file" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect + --source include/wait_until_connected_again.inc + +-# With fix error should be reported in the error log file if file is not a +-# regular file. ++# Error 6 is reported, because the other end is closed ++call mtr.add_suppression("Could not open .* for logging \\(error 6\\)"); ++call mtr.add_suppression("File '.*' not found \\(Errcode: 6\\)"); + --perl + my $file= $ENV{'GREP_FILE'}; +- my $pattern= "Turning logging off for the whole duration"; ++ my $pattern= "for logging \\(error 6\\)\\. Turning logging off for the whole duration"; + open(FILE, "$file") or die("Unable to open $file: $!\n"); + my $count = 0; + while () { +diff -up mysql-5.6.24/sql/log.cc.logfifo mysql-5.6.24/sql/log.cc +--- mysql-5.6.24/sql/log.cc.logfifo 2015-03-25 17:34:53.000000000 +0100 ++++ mysql-5.6.24/sql/log.cc 2015-05-07 16:03:06.967086459 +0200 +@@ -1526,6 +1526,7 @@ bool MYSQL_LOG::open( + MY_STAT f_stat; + File file= -1; + my_off_t pos= 0; ++ bool is_fifo = false; + int open_flags= O_CREAT | O_BINARY; + DBUG_ENTER("MYSQL_LOG::open"); + DBUG_PRINT("enter", ("log_type: %d", (int) log_type_arg)); +@@ -1543,15 +1544,17 @@ bool MYSQL_LOG::open( + DBUG_EVALUATE_IF("fault_injection_init_name", log_type == LOG_BIN, 0)) + goto err; + +- /* File is regular writable file */ +- if (my_stat(log_file_name, &f_stat, MYF(0)) && !MY_S_ISREG(f_stat.st_mode)) +- goto err; ++ is_fifo = my_stat(log_file_name, &f_stat, MYF(0)) && ++ MY_S_ISFIFO(f_stat.st_mode); + + if (io_cache_type == SEQ_READ_APPEND) + open_flags |= O_RDWR | O_APPEND; + else + open_flags |= O_WRONLY | (log_type == LOG_BIN ? 0 : O_APPEND); + ++ if (is_fifo) ++ open_flags |= O_NONBLOCK; ++ + db[0]= 0; + + #ifdef HAVE_PSI_INTERFACE +@@ -1564,7 +1567,9 @@ bool MYSQL_LOG::open( + MYF(MY_WME | ME_WAITTANG))) < 0) + goto err; + +- if ((pos= mysql_file_tell(file, MYF(MY_WME))) == MY_FILEPOS_ERROR) ++ if (is_fifo) ++ pos= 0; ++ else if ((pos= mysql_file_tell(file, MYF(MY_WME))) == MY_FILEPOS_ERROR) + { + if (my_errno == ESPIPE) + pos= 0; +@@ -1681,7 +1686,7 @@ void MYSQL_LOG::close(uint exiting) + { + end_io_cache(&log_file); + +- if (mysql_file_sync(log_file.file, MYF(MY_WME)) && ! write_error) ++ if (log_type == LOG_BIN && mysql_file_sync(log_file.file, MYF(MY_WME)) && ! write_error) + { + char errbuf[MYSYS_STRERROR_SIZE]; + write_error= 1; diff --git a/SOURCES/mysql-logrotate.patch b/SOURCES/mysql-logrotate.patch new file mode 100644 index 0000000..7c0b7e5 --- /dev/null +++ b/SOURCES/mysql-logrotate.patch @@ -0,0 +1,85 @@ +Adjust the mysql-log-rotate script in several ways: + +* Use the correct log file pathname for Red Hat installations. +* Enable creation of the log file by logrotate (needed since + /var/log/ isn't writable by mysql user); and set the same 640 + permissions we normally use. +* Comment out the actual rotation commands, so that user must edit + the file to enable rotation. This is unfortunate, but the fact + that the script will probably fail without manual configuration + (to set a root password) means that we can't really have it turned + on by default. Fortunately, in most configurations the log file + is low-volume and so rotation is not critical functionality. + +See discussions at RH bugs 799735, 547007 + + +diff -up mysql-5.6.19/support-files/mysql-log-rotate.sh.logrotate mysql-5.6.19/support-files/mysql-log-rotate.sh +--- mysql-5.6.19/support-files/mysql-log-rotate.sh.logrotate 2014-07-25 11:49:37.237448291 +0200 ++++ mysql-5.6.19/support-files/mysql-log-rotate.sh 2014-07-25 11:53:17.096840857 +0200 +@@ -1,14 +1,13 @@ +-# The log file name and location can be set in +-# /etc/my.cnf by setting the "log-error" option +-# in either [mysqld] or [mysqld_safe] section as +-# follows: ++# This logname can be set in /etc/my.cnf ++# by setting the variable "log-error" ++# in the [mysqld_safe] section as follows: + # +-# [mysqld] +-# log-error=@localstatedir@/mysqld.log ++# [mysqld_safe] ++# log-error=@LOG_LOCATION@ + # +-# In case the root user has a password, then you +-# have to create a /root/.my.cnf configuration file +-# with the following content: ++# If the root user has a password you have to create a ++# /root/.my.cnf configuration file with the following ++# content: + # + # [mysqladmin] + # password = +@@ -16,22 +15,24 @@ + # + # where "" is the password. + # +-# ATTENTION: The /root/.my.cnf file should be readable +-# _ONLY_ by root ! ++# ATTENTION: This /root/.my.cnf should be readable ONLY ++# for root ! + +-@localstatedir@/mysqld.log { +- # create 600 mysql mysql +- notifempty +- daily +- rotate 5 +- missingok +- compress +- postrotate +- # just if mysqld is really running +- if test -x @bindir@/mysqladmin && \ +- @bindir@/mysqladmin ping &>/dev/null +- then +- @bindir@/mysqladmin flush-logs +- fi +- endscript +-} ++# Then, un-comment the following lines to enable rotation of mysql's log file: ++ ++#@LOG_LOCATION@ { ++# create 640 mysql mysql ++# notifempty ++# daily ++# rotate 3 ++# missingok ++# compress ++# postrotate ++# # just if mysqld is really running ++# if test -x @bindir@/mysqladmin && \ ++# @bindir@/mysqladmin ping &>/dev/null ++# then ++# @bindir@/mysqladmin flush-logs ++# fi ++# endscript ++#} diff --git a/SOURCES/mysql-noclientlib.patch b/SOURCES/mysql-noclientlib.patch new file mode 100644 index 0000000..692fad3 --- /dev/null +++ b/SOURCES/mysql-noclientlib.patch @@ -0,0 +1,21 @@ +diff -up mysql-5.6.22/scripts/mysql_config.sh.noclientlib mysql-5.6.22/scripts/mysql_config.sh +--- mysql-5.6.22/scripts/mysql_config.sh.noclientlib 2015-01-26 18:14:00.911435126 +0100 ++++ mysql-5.6.22/scripts/mysql_config.sh 2015-01-26 18:14:26.094505426 +0100 +@@ -156,8 +156,6 @@ Options: + --cflags [$cflags] + --cxxflags [$cxxflags] + --include [$include] +- --libs [$libs] +- --libs_r [$libs_r] + --plugindir [$plugindir] + --socket [$socket] + --port [$port] +@@ -178,8 +176,6 @@ while test $# -gt 0; do + --cflags) echo "$cflags" ;; + --cxxflags)echo "$cxxflags";; + --include) echo "$include" ;; +- --libs) echo "$libs" ;; +- --libs_r) echo "$libs_r" ;; + --plugindir) echo "$plugindir" ;; + --socket) echo "$socket" ;; + --port) echo "$port" ;; diff --git a/SOURCES/mysql-paths.patch b/SOURCES/mysql-paths.patch new file mode 100644 index 0000000..d406b96 --- /dev/null +++ b/SOURCES/mysql-paths.patch @@ -0,0 +1,189 @@ +Some hard-coded paths make problems when package is built into chroot like +Software Collections. Removing these hard-coded paths should fix it. + +Upstream report: https://mariadb.atlassian.net/browse/MDEV-6485 + + +diff -up mysql-5.6.23/client/mysql_plugin.c.hardpaths mysql-5.6.23/client/mysql_plugin.c +--- mysql-5.6.23/client/mysql_plugin.c.hardpaths 2015-01-19 14:48:30.000000000 +0100 ++++ mysql-5.6.23/client/mysql_plugin.c 2015-02-23 13:34:21.328484658 +0100 +@@ -90,6 +90,7 @@ static int find_plugin(char *tp_path); + static int build_bootstrap_file(char *operation, char *bootstrap); + static int dump_bootstrap_file(char *bootstrap_file); + static int bootstrap_server(char *server_path, char *bootstrap_file); ++static int find_file_in_path(const char *name, char *to); + + + int main(int argc,char *argv[]) +@@ -121,7 +122,7 @@ int main(int argc,char *argv[]) + */ + if ((error= process_options(argc, argv, operation)) || + (error= check_access()) || +- (error= find_tool("mysqld" FN_EXEEXT, server_path)) || ++ (error= find_file_in_path("mysqld" FN_EXEEXT, server_path)) || + (error= find_plugin(tp_path)) || + (error= build_bootstrap_file(operation, bootstrap))) + goto exit; +@@ -324,7 +325,7 @@ static int get_default_values() + FILE *file= 0; + + memset(tool_path, 0, FN_REFLEN); +- if ((error= find_tool("my_print_defaults" FN_EXEEXT, tool_path))) ++ if ((error= find_file_in_path("my_print_defaults" FN_EXEEXT, tool_path))) + goto exit; + else + { +@@ -989,6 +990,55 @@ exit: + } + + ++#if defined(__WIN__) ++#define F_OK 0 ++#define PATH_SEP ';' ++#define PROGRAM_EXTENSION ".exe" ++#else ++#define PATH_SEP ':' ++#endif ++ ++static int find_file_in_path(const char *name, char *to) ++{ ++ char *path,*pos,dir[2]; ++ const char *ext=""; ++ ++ if (!(path=getenv("PATH"))) ++ goto notfound; ++ dir[0]=FN_LIBCHAR; dir[1]=0; ++#ifdef PROGRAM_EXTENSION ++ if (!fn_ext(name)[0]) ++ ext=PROGRAM_EXTENSION; ++#endif ++ ++ for (pos=path ; (pos=strchr(pos,PATH_SEP)) ; path= ++pos) ++ { ++ if (path != pos) ++ { ++ strxmov(strnmov(to,path,(uint) (pos-path)),dir,name,ext,NullS); ++ if (!access(to,F_OK)) ++ { ++ if (opt_verbose) ++ printf("# Found tool '%s' as '%s'.\n", name, to); ++ return 0; ++ } ++ } ++ } ++#ifdef __WIN__ ++ to[0]=FN_CURLIB; ++ strxmov(to+1,dir,name,ext,NullS); ++ if (!access(to,F_OK)) /* Test in current dir */ ++ { ++ if (opt_verbose) ++ printf("# Found tool '%s' as '%s'.\n", name, to); ++ return 0; ++ } ++#endif ++notfound: ++ fprintf(stderr, "WARNING: Cannot find %s.\n", name); ++ return 1; /* File not found */ ++} ++ + /** + Locate the tool and form tool path. + +diff -up mysql-5.6.23/cmake/install_layout.cmake.hardpaths mysql-5.6.23/cmake/install_layout.cmake +--- mysql-5.6.23/cmake/install_layout.cmake.hardpaths 2015-01-19 14:48:32.000000000 +0100 ++++ mysql-5.6.23/cmake/install_layout.cmake 2015-02-23 13:34:21.330484657 +0100 +@@ -94,7 +94,7 @@ IF(UNIX) + " Choose between ${VALID_INSTALL_LAYOUTS}" ) + ENDIF() + +- SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" ++ SET(SYSCONFDIR "/etc" + CACHE PATH "config directory (for my.cnf)") + MARK_AS_ADVANCED(SYSCONFDIR) + ENDIF() +@@ -145,6 +145,7 @@ SET(INSTALL_PLUGINTESTDIR_STANDALONE + SET(INSTALL_BINDIR_RPM "bin") + SET(INSTALL_SBINDIR_RPM "sbin") + SET(INSTALL_SCRIPTDIR_RPM "bin") ++SET(INSTALL_SYSCONFDIR_RPM "/etc") + # + IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") + SET(INSTALL_LIBDIR_RPM "lib64") +diff -up mysql-5.6.23/mysys_ssl/my_default.cc.hardpaths mysql-5.6.23/mysys_ssl/my_default.cc +--- mysql-5.6.23/mysys_ssl/my_default.cc.hardpaths 2015-01-19 14:48:32.000000000 +0100 ++++ mysql-5.6.23/mysys_ssl/my_default.cc 2015-02-23 13:34:21.329484658 +0100 +@@ -1389,12 +1389,12 @@ static const char **init_default_directo + + #else + +- errors += add_directory(alloc, "/etc/", dirs); +- errors += add_directory(alloc, "/etc/mysql/", dirs); +- + #if defined(DEFAULT_SYSCONFDIR) + if (DEFAULT_SYSCONFDIR[0]) ++ { + errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs); ++ errors += add_directory(alloc, DEFAULT_SYSCONFDIR "/mysql", dirs); ++ } + #endif /* DEFAULT_SYSCONFDIR */ + + #endif +diff -up mysql-5.6.23/scripts/CMakeLists.txt.hardpaths mysql-5.6.23/scripts/CMakeLists.txt +--- mysql-5.6.23/scripts/CMakeLists.txt.hardpaths 2015-02-23 13:34:21.325484657 +0100 ++++ mysql-5.6.23/scripts/CMakeLists.txt 2015-02-23 13:34:21.330484657 +0100 +@@ -219,7 +219,7 @@ INSTALL_SCRIPT( + ) + + SET(prefix "${CMAKE_INSTALL_PREFIX}") +-SET(sysconfdir ${prefix}) ++SET(sysconfdir ${SYSCONFDIR}) + SET(bindir ${prefix}/${INSTALL_BINDIR}) + SET(libexecdir ${prefix}/${INSTALL_SBINDIR}) + SET(scriptdir ${prefix}/${INSTALL_BINDIR}) +diff -up mysql-5.6.23/scripts/mysqlaccess.sh.hardpaths mysql-5.6.23/scripts/mysqlaccess.sh +--- mysql-5.6.23/scripts/mysqlaccess.sh.hardpaths 2015-01-19 14:48:32.000000000 +0100 ++++ mysql-5.6.23/scripts/mysqlaccess.sh 2015-02-23 13:34:21.329484658 +0100 +@@ -483,9 +483,6 @@ MySQLaccess::Report::Print_Header(); + elsif (-f "@sysconfdir@/$script_conf") { + require "@sysconfdir@/$script_conf"; + } +- elsif (-f "/etc/$script_conf") { +- require "/etc/$script_conf"; +- } + + # **************************** + # Read in all parameters +@@ -951,7 +948,6 @@ sub MergeConfigFile { + sub MergeConfigFiles { + my ($name,$pass,$uid,$gid,$quota,$comment,$gcos,$dir,$shell) = getpwuid $<; + MergeConfigFile("@sysconfdir@/my.cnf"); +- MergeConfigFile("/etc/my.cnf"); + MergeConfigFile("$dir/.my.cnf"); + } + +diff -up mysql-5.6.23/scripts/mysqld_multi.sh.hardpaths mysql-5.6.23/scripts/mysqld_multi.sh +--- mysql-5.6.23/scripts/mysqld_multi.sh.hardpaths 2015-01-19 14:48:32.000000000 +0100 ++++ mysql-5.6.23/scripts/mysqld_multi.sh 2015-02-23 13:34:21.329484658 +0100 +@@ -573,9 +573,7 @@ sub list_defaults_files + + my %seen; # Don't list the same file more than once + return grep { defined $_ and not $seen{$_}++ and -f $_ and -r $_ } +- ('/etc/my.cnf', +- '/etc/mysql/my.cnf', +- '@sysconfdir@/my.cnf', ++ ('@sysconfdir@/my.cnf', + ($ENV{MYSQL_HOME} ? "$ENV{MYSQL_HOME}/my.cnf" : undef), + $opt{'extra-file'}, + ($ENV{HOME} ? "$ENV{HOME}/.my.cnf" : undef)); +diff -up mysql-5.6.23/scripts/mysql_install_db.pl.in.hardpaths mysql-5.6.23/scripts/mysql_install_db.pl.in +--- mysql-5.6.23/scripts/mysql_install_db.pl.in.hardpaths 2015-02-23 13:34:37.995485386 +0100 ++++ mysql-5.6.23/scripts/mysql_install_db.pl.in 2015-02-23 13:35:15.505487028 +0100 +@@ -922,7 +922,7 @@ if ( open(PIPE, "| $mysqld_install_cmd_l + "The new default config file was created as $copy_cfg_file,", + "please compare it with your file and take the changes you need."); + } +- foreach my $cfg ( "/etc/my.$cnfext", "/etc/mysql/my.$cnfext" ) ++ foreach my $cfg ( "@SYSCONFDIR@/my.$cnfext", "@SYSCONFDIR@/mysql/my.$cnfext" ) + { + check_sys_cfg_file ($opt, $cfg); + } diff --git a/SOURCES/mysql-pluginerrmsg.patch b/SOURCES/mysql-pluginerrmsg.patch new file mode 100644 index 0000000..a781172 --- /dev/null +++ b/SOURCES/mysql-pluginerrmsg.patch @@ -0,0 +1,78 @@ +In MySQL 5.5, the InnoDB Plugin is the default version and it's compiled in. +In this case, the plugin cannot be uninstalled and we get error when trying +to do so: + +mysql> uninstall plugin innodb; +ERROR 1305 (42000): PLUGIN innodb does not exist + +But the error message is misleading. The plugin does exist, it just cannot +be installed because it's not dynamically loaded. + +MySQL bug report: http://bugs.mysql.com/bug.php?id=51771 +MariaDB bug report: https://mariadb.atlassian.net/browse/MDEV-4573 +MariaDB fix: http://bazaar.launchpad.net/~maria-captains/maria/5.5/revision/3802 + +diff --git a/include/mysql.h b/include/mysql.h +index 38b54de..0b13e92 100644 +--- a/include/mysql.h ++++ b/include/mysql.h +@@ -134,6 +134,7 @@ typedef unsigned long long my_ulonglong; + + /* backward compatibility define - to be removed eventually */ + #define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATED ++#define WARN_PLUGIN_DELETE_BUILTIN ER_PLUGIN_DELETE_BUILTIN + + typedef struct st_mysql_rows { + struct st_mysql_rows *next; /* list of rows */ +diff --git a/mysql-test/r/plugin.result b/mysql-test/r/plugin.result +index a3d7437..8ea475d 100644 +--- a/mysql-test/r/plugin.result ++++ b/mysql-test/r/plugin.result +@@ -232,3 +232,5 @@ DROP PROCEDURE p_install; + SET DEBUG_SYNC='RESET'; + disconnect con1; + disconnect con2; ++UNINSTALL PLUGIN MyISAM; ++ERROR HY000: Built-in plugins cannot be deleted +diff --git a/mysql-test/t/plugin.test b/mysql-test/t/plugin.test +index de68d36..bf9fb7d 100644 +--- a/mysql-test/t/plugin.test ++++ b/mysql-test/t/plugin.test +@@ -277,3 +277,9 @@ disconnect con1; + disconnect con2; + + --disable_connect_log ++ ++# ++# MDEV-4573 UNINSTALL PLUGIN misleading error message for non-dynamic plugins ++# ++--error ER_PLUGIN_DELETE_BUILTIN ++UNINSTALL PLUGIN MyISAM; +diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt +index 15acc66..35e2c3c 100644 +--- a/sql/share/errmsg-utf8.txt ++++ b/sql/share/errmsg-utf8.txt +@@ -6235,7 +6235,7 @@ WARN_NO_MASTER_INFO + WARN_OPTION_IGNORED + eng "<%-.64s> option ignored" + ger "Option <%-.64s> ignoriert" +-WARN_PLUGIN_DELETE_BUILTIN ++ER_PLUGIN_DELETE_BUILTIN + eng "Built-in plugins cannot be deleted" + ger "Eingebaute Plugins können nicht gelöscht werden" + WARN_PLUGIN_BUSY +diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc +index f134e4f..7e34432 100644 +--- a/sql/sql_plugin.cc ++++ b/sql/sql_plugin.cc +@@ -2008,9 +2008,7 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name) + } + if (!plugin->plugin_dl) + { +- push_warning(thd, Sql_condition::WARN_LEVEL_WARN, +- WARN_PLUGIN_DELETE_BUILTIN, ER(WARN_PLUGIN_DELETE_BUILTIN)); +- my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "PLUGIN", name->str); ++ my_error(ER_PLUGIN_DELETE_BUILTIN, MYF(0)); + goto err; + } + if (plugin->load_option == PLUGIN_FORCE_PLUS_PERMANENT) diff --git a/SOURCES/mysql-prepare-db-dir.sh b/SOURCES/mysql-prepare-db-dir.sh new file mode 100644 index 0000000..563f644 --- /dev/null +++ b/SOURCES/mysql-prepare-db-dir.sh @@ -0,0 +1,89 @@ +#!/bin/sh + +# This script creates the mysql data directory during first service start. +# In subsequent starts, it does nothing much. + +source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common" + +# If two args given first is user, second is group +# otherwise the arg is the systemd service file +if [ "$#" -eq 2 ] +then + myuser="$1" + mygroup="$2" +else + # Absorb configuration settings from the specified systemd service file, + # or the default service if not specified + SERVICE_NAME="$1" + if [ x"$SERVICE_NAME" = x ] + then + SERVICE_NAME=@DAEMON_NAME@.service + fi + + myuser=`systemctl show -p User "${SERVICE_NAME}" | + sed 's/^User=//'` + if [ x"$myuser" = x ] + then + myuser=mysql + fi + + mygroup=`systemctl show -p Group "${SERVICE_NAME}" | + sed 's/^Group=//'` + if [ x"$mygroup" = x ] + then + mygroup=mysql + fi +fi + +# Set up the errlogfile with appropriate permissions +touch "$errlogfile" +ret=$? +# Provide some advice if the log file cannot be touched +if [ $ret -ne 0 ] ; then + errlogdir=$(dirname $errlogfile) + if ! [ -d "$errlogdir" ] ; then + echo "The directory $errlogdir does not exist." + elif [ -f "$errlogfile" ] ; then + echo "The log file $errlogfile cannot be touched, please, fix its permissions." + else + echo "The log file $errlogfile could not be created." + fi + echo "The daemon will be run under $myuser:$mygroup" + exit 1 +fi +chown "$myuser:$mygroup" "$errlogfile" +chmod 0640 "$errlogfile" +[ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile" + +# Make the data directory +if [ ! -d "$datadir/mysql" ] ; then + # First, make sure $datadir is there with correct permissions + # (note: if it's not, and we're not root, this'll fail ...) + if [ ! -e "$datadir" -a ! -h "$datadir" ] + then + mkdir -p "$datadir" || exit 1 + fi + chown "$myuser:$mygroup" "$datadir" + chmod 0755 "$datadir" + [ -x /sbin/restorecon ] && /sbin/restorecon "$datadir" + + # Now create the database + echo "Initializing @NICE_PROJECT_NAME@ database" + @bindir@/mysql_install_db --rpm --datadir="$datadir" --user="$myuser" + ret=$? + if [ $ret -ne 0 ] ; then + echo "Initialization of @NICE_PROJECT_NAME@ database failed." >&2 + echo "Perhaps @sysconfdir@/my.cnf is misconfigured." >&2 + # Clean up any partially-created database files + if [ ! -e "$datadir/mysql/user.frm" ] ; then + rm -rf "$datadir"/* + fi + exit $ret + fi + # upgrade does not need to be run on a fresh datadir + echo "@VERSION@" >"$datadir/mysql_upgrade_info" + # In case we're running as root, make sure files are owned properly + chown -R "$myuser:$mygroup" "$datadir" +fi + +exit 0 diff --git a/SOURCES/mysql-s390-tsc.patch b/SOURCES/mysql-s390-tsc.patch new file mode 100644 index 0000000..f995266 --- /dev/null +++ b/SOURCES/mysql-s390-tsc.patch @@ -0,0 +1,41 @@ +Support s390/s390x in performance schema's cycle-counting functions. +Filed upstream at http://bugs.mysql.com/bug.php?id=59953 + + +diff -up mysql-5.5.28/include/my_rdtsc.h.p11 mysql-5.5.28/include/my_rdtsc.h +--- mysql-5.5.28/include/my_rdtsc.h.p11 2012-08-29 10:50:46.000000000 +0200 ++++ mysql-5.5.28/include/my_rdtsc.h 2012-12-06 14:22:13.651823354 +0100 +@@ -125,6 +125,7 @@ C_MODE_END + #define MY_TIMER_ROUTINE_MACH_ABSOLUTE_TIME 25 + #define MY_TIMER_ROUTINE_GETSYSTEMTIMEASFILETIME 26 + #define MY_TIMER_ROUTINE_ASM_SUNPRO_X86_64 27 ++#define MY_TIMER_ROUTINE_ASM_S390 28 + + #endif + +diff -up mysql-5.5.28/mysys/my_rdtsc.c.p11 mysql-5.5.28/mysys/my_rdtsc.c +--- mysql-5.5.28/mysys/my_rdtsc.c.p11 2012-08-29 10:50:46.000000000 +0200 ++++ mysql-5.5.28/mysys/my_rdtsc.c 2012-12-06 14:22:13.672823375 +0100 +@@ -224,6 +224,13 @@ ulonglong my_timer_cycles(void) + clock_gettime(CLOCK_SGI_CYCLE, &tp); + return (ulonglong) tp.tv_sec * 1000000000 + (ulonglong) tp.tv_nsec; + } ++#elif defined(__GNUC__) && defined(__s390__) ++ /* covers both s390 and s390x */ ++ { ++ ulonglong result; ++ __asm__ __volatile__ ("stck %0" : "=Q" (result) : : "cc"); ++ return result; ++ } + #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME) + /* gethrtime may appear as either cycle or nanosecond counter */ + return (ulonglong) gethrtime(); +@@ -533,6 +540,8 @@ void my_timer_init(MY_TIMER_INFO *mti) + mti->cycles.routine= MY_TIMER_ROUTINE_ASM_GCC_SPARC32; + #elif defined(__sgi) && defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_SGI_CYCLE) + mti->cycles.routine= MY_TIMER_ROUTINE_SGI_CYCLE; ++#elif defined(__GNUC__) && defined(__s390__) ++ mti->cycles.routine= MY_TIMER_ROUTINE_ASM_S390; + #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME) + mti->cycles.routine= MY_TIMER_ROUTINE_GETHRTIME; + #else diff --git a/SOURCES/mysql-scl-env-check.patch b/SOURCES/mysql-scl-env-check.patch new file mode 100644 index 0000000..2ae477c --- /dev/null +++ b/SOURCES/mysql-scl-env-check.patch @@ -0,0 +1,149 @@ +diff -up mysql-5.6.23/scripts/mysqld_safe.sh.scl-env-check mysql-5.6.23/scripts/mysqld_safe.sh +--- mysql-5.6.23/scripts/mysqld_safe.sh.scl-env-check 2015-01-19 14:48:32.000000000 +0100 ++++ mysql-5.6.23/scripts/mysqld_safe.sh 2015-03-14 21:30:01.256181451 +0100 +@@ -11,6 +11,12 @@ + # mysql.server works by first doing a cd to the base directory and from there + # executing mysqld_safe + ++# we want start daemon only inside "scl enable" invocation ++if ! scl_enabled @SCL_NAME@ ; then ++ echo "Use \"scl enable @SCL_NAME@ 'service ...'\" invocation" ++ exit 1 ++fi ++ + # Initialize script globals + KILL_MYSQLD=1; + MYSQLD= +diff -up mysql-5.6.23/scripts/mysql.init.in.scl-env-check mysql-5.6.23/scripts/mysql.init.in +--- mysql-5.6.23/scripts/mysql.init.in.scl-env-check 2015-03-14 21:30:01.255181450 +0100 ++++ mysql-5.6.23/scripts/mysql.init.in 2015-03-14 21:30:01.256181451 +0100 +@@ -154,6 +154,18 @@ condrestart(){ + [ -e $lockfile ] && restart || : + } + ++# We have to re-enable SCL environment, because /sbin/service ++# clears almost all environment variables. ++# Since X_SCLS is cleared as well, we lose information about other ++# collections enabled. ++source @SCL_SCRIPTS@/service-environment ++source scl_source enable $@SCL_NAME_UPPER@_SCLS_ENABLED ++ ++# we want start daemon only inside "scl enable" invocation ++if ! scl_enabled @SCL_NAME@ ; then ++ echo "Collection @SCL_NAME@ has to be listed in @SCL_SCRIPTS@/service-environment" ++ exit 1 ++fi + + # See how we were called. + case "$1" in +diff -up mysql-5.6.23/scripts/mysql_install_db.sh.scl-env-check mysql-5.6.23/scripts/mysql_install_db.sh +--- mysql-5.6.23/scripts/mysql_install_db.sh.scl-env-check 2015-03-14 21:30:01.229181430 +0100 ++++ mysql-5.6.23/scripts/mysql_install_db.sh 2015-03-14 21:30:01.256181451 +0100 +@@ -18,6 +18,12 @@ + # + # All unrecognized arguments to this script are passed to mysqld. + ++# we want start daemon only inside "scl enable" invocation ++if ! scl_enabled @SCL_NAME@ ; then ++ echo "Use \"scl enable @SCL_NAME@ 'service ...'\" invocation" ++ exit 1 ++fi ++ + basedir="" + builddir="" + ldata="@localstatedir@" +@@ -410,13 +416,13 @@ else + echo + echo "You can try to start the mysqld daemon with:" + echo +- echo " shell> $mysqld --skip-grant-tables &" ++ echo " shell> su -s /bin/bash - mysql -c 'scl enable @SCL_NAME@ -- $mysqld --skip-grant-tables &" + echo + echo "and use the command line tool $bindir/mysql" + echo "to connect to the mysql database and look at the grant tables:" + echo +- echo " shell> $bindir/mysql -u root mysql" +- echo " mysql> show tables" ++ echo " shell> su -s /bin/bash - mysql -c 'scl enable @SCL_NAME@ -- $bindir/mysql -u root mysql" ++ echo " mysql> show tables;" + echo + echo "Try 'mysqld --help' if you have problems with paths. Using --log" + echo "gives you a log in $ldata that may be helpful." +@@ -447,19 +453,15 @@ fi + # the screen. + if test "$cross_bootstrap" -eq 0 && test -z "$srcdir" + then +- s_echo +- s_echo "To start mysqld at boot time you have to copy" +- s_echo "support-files/mysql.server to the right place for your system" +- + echo + echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !" + echo "To do so, start the server, then issue the following commands:" + echo +- echo "$bindir/mysqladmin -u root password 'new-password'" +- echo "$bindir/mysqladmin -u root -h $hostname password 'new-password'" ++ echo "scl enable @SCL_NAME@ -- $bindir/mysqladmin -u root password 'new-password'" ++ echo "scl enable @SCL_NAME@ -- $bindir/mysqladmin -u root -h $hostname password 'new-password'" + echo + echo "Alternatively you can run:" +- echo "$bindir/mysql_secure_installation" ++ echo "scl enable @SCL_NAME@ -- $bindir/mysql_secure_installation" + echo + echo "which will also give you the option of removing the test" + echo "databases and anonymous user created by default. This is" +@@ -474,7 +476,8 @@ then + echo "cd $basedir ; $bindir/mysqld_safe &" + echo + echo "You can test the MySQL daemon with mysql-test-run.pl" +- echo "cd $basedir/mysql-test ; perl mysql-test-run.pl" ++ echo "after installing @SCL_NAME@-mysql-test package." ++ echo "See @prefix@/share/mysql-test/README for instructions." + fi + + echo +diff -up mysql-5.6.23/scripts/mysql.service.in.scl-env-check mysql-5.6.23/scripts/mysql.service.in +--- mysql-5.6.23/scripts/mysql.service.in.scl-env-check 2015-03-14 21:30:01.254181449 +0100 ++++ mysql-5.6.23/scripts/mysql.service.in 2015-03-14 21:30:51.460219665 +0100 +@@ -35,14 +35,20 @@ Group=mysql + # Execute pre and post scripts as root + PermissionsStartOnly=true + +-ExecStartPre=@libexecdir@/mysql-check-socket +-ExecStartPre=@libexecdir@/mysql-prepare-db-dir %n ++# Load collections set to enabled for this service ++EnvironmentFile=@SCL_SCRIPTS@/service-environment ++ ++# We want to start server only inside "scl enable" invocation ++ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- /usr/bin/scl_enabled @SCL_NAME@ ++ ++ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-socket ++ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-prepare-db-dir %n + # Note: we set --basedir to prevent probes that might trigger SELinux alarms, + # per bug #547485 +-ExecStart=@bindir@/mysqld_safe --basedir=@prefix@ +-ExecStartPost=@libexecdir@/mysql-wait-ready $MAINPID +-ExecStartPost=@libexecdir@/mysql-check-upgrade +-ExecStopPost=@libexecdir@/mysql-wait-stop ++ExecStart=@libexecdir@/mysqld_safe-scl-helper enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @bindir@/mysqld_safe --basedir=@prefix@ ++ExecStartPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-wait-ready $MAINPID ++ExecStartPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-upgrade ++ExecStopPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-wait-stop + + # Give a reasonable amount of time for the server to start up/shut down + TimeoutSec=300 +diff -up mysql-5.6.23/support-files/mysql-log-rotate.sh.scl-env-check mysql-5.6.23/support-files/mysql-log-rotate.sh +--- mysql-5.6.23/support-files/mysql-log-rotate.sh.scl-env-check 2015-03-14 21:30:01.219181423 +0100 ++++ mysql-5.6.23/support-files/mysql-log-rotate.sh 2015-03-14 21:30:01.257181452 +0100 +@@ -30,9 +30,9 @@ + # postrotate + # # just if mysqld is really running + # if test -x @bindir@/mysqladmin && \ +-# @bindir@/mysqladmin ping &>/dev/null ++# /usr/bin/scl enable @SCL_NAME@ -- @bindir@/mysqladmin ping &>/dev/null + # then +-# @bindir@/mysqladmin flush-logs ++# /usr/bin/scl enable @SCL_NAME@ -- @bindir@/mysqladmin flush-logs + # fi + # endscript + #} diff --git a/SOURCES/mysql-scripts-common.sh b/SOURCES/mysql-scripts-common.sh new file mode 100644 index 0000000..9dab30e --- /dev/null +++ b/SOURCES/mysql-scripts-common.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +# Some useful functions used in other MySQL helper scripts +# This scripts defines variables datadir, errlogfile, socketfile + +export LC_ALL=C + +# extract value of a MySQL option from config files +# Usage: get_mysql_option VARNAME DEFAULT SECTION [ SECTION, ... ] +# result is returned in $result +# We use my_print_defaults which prints all options from multiple files, +# with the more specific ones later; hence take the last match. +get_mysql_option(){ + if [ $# -ne 3 ] ; then + echo "get_mysql_option requires 3 arguments: section option default_value" + return + fi + sections="$1" + option_name="$2" + default_value="$3" + result=`@bindir@/my_print_defaults $sections | sed -n "s/^--${option_name}=//p" | tail -n 1` + if [ -z "$result" ]; then + # not found, use default + result="${default_value}" + fi +} + +# Defaults here had better match what mysqld_safe will default to +# The option values are generally defined on three important places +# on the default installation: +# 1) default values are hardcoded in the code of mysqld daemon or +# mysqld_safe script +# 2) configurable values are defined in @sysconfdir@/my.cnf +# 3) default values for helper scripts are specified bellow +# So, in case values are defined in my.cnf, we need to get that value. +# In case they are not defined in my.cnf, we need to get the same value +# in the daemon, as in the helper scripts. Thus, default values here +# must correspond with values defined in mysqld_safe script and source +# code itself. + +server_sections="mysqld_safe mysqld server mysqld-@MAJOR_VERSION@.@MINOR_VERSION@ client-server" + +get_mysql_option "$server_sections" datadir "@MYSQL_DATADIR@" +datadir="$result" + +# if there is log_error in the my.cnf, my_print_defaults still +# returns log-error +# log-error might be defined in mysqld_safe and mysqld sections, +# the former has bigger priority +get_mysql_option "$server_sections" log-error "$datadir/`hostname`.err" +errlogfile="$result" + +get_mysql_option "$server_sections" socket "@MYSQL_UNIX_ADDR@" +socketfile="$result" + +get_mysql_option "$server_sections" pid-file "$datadir/`hostname`.pid" +pidfile="$result" + diff --git a/SOURCES/mysql-scripts.patch b/SOURCES/mysql-scripts.patch new file mode 100644 index 0000000..e7874ce --- /dev/null +++ b/SOURCES/mysql-scripts.patch @@ -0,0 +1,38 @@ +diff -rup mysql-5.6.19-orig/scripts/CMakeLists.txt mysql-5.6.19/scripts/CMakeLists.txt +--- mysql-5.6.19-orig/scripts/CMakeLists.txt 2014-07-22 10:07:12.053410263 +0200 ++++ mysql-5.6.19/scripts/CMakeLists.txt 2014-07-22 10:10:44.102502369 +0200 +@@ -381,6 +381,34 @@ ELSE() + ENDIF() + INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file} COMPONENT ${${file}_COMPONENT}) + ENDFOREACH() ++ ++ # files for systemd ++ SET(SYSTEMD_SCRIPTS ++ mysql.tmpfiles.d ++ mysql.service ++ mysql-prepare-db-dir ++ mysql-wait-ready ++ mysql-wait-stop ++ mysql-check-socket ++ mysql-check-upgrade ++ mysql-scripts-common ++ mysql_config_multilib ++ mysql.init ++ my.cnf ++ server.cnf ++ ) ++ FOREACH(file ${SYSTEMD_SCRIPTS}) ++ IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh) ++ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh ++ ${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY) ++ ELSEIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.in) ++ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.in ++ ${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY) ++ ELSE() ++ MESSAGE(FATAL_ERROR "Can not find ${file}.sh or ${file}.in in " ++ "${CMAKE_CURRENT_SOURCE_DIR}" ) ++ ENDIF() ++ ENDFOREACH() + ENDIF() + + # Install libgcc as mylibgcc.a diff --git a/SOURCES/mysql-sharedir.patch b/SOURCES/mysql-sharedir.patch new file mode 100644 index 0000000..19f0b33 --- /dev/null +++ b/SOURCES/mysql-sharedir.patch @@ -0,0 +1,52 @@ +diff -up mysql-5.5.31/mysql-test/lib/My/ConfigFactory.pm.p22 mysql-5.5.31/mysql-test/lib/My/ConfigFactory.pm +--- mysql-5.5.31/mysql-test/lib/My/ConfigFactory.pm.p22 2013-04-24 20:15:14.085623163 +0200 ++++ mysql-5.5.31/mysql-test/lib/My/ConfigFactory.pm 2013-04-24 20:15:37.456630939 +0200 +@@ -36,7 +36,7 @@ my @pre_rules= + ); + + +-my @share_locations= ("share/mysql", "sql/share", "share"); ++my @share_locations= ("@INSTALL_MYSQLSHAREDIR@", "sql/share", "share"); + + + sub get_basedir { +diff -up mysql-5.5.31/mysql-test/mysql-test-run.pl.p22 mysql-5.5.31/mysql-test/mysql-test-run.pl +--- mysql-5.5.31/mysql-test/mysql-test-run.pl.p22 2013-03-25 14:14:58.000000000 +0100 ++++ mysql-5.5.31/mysql-test/mysql-test-run.pl 2013-04-24 20:18:28.538687866 +0200 +@@ -1238,11 +1238,11 @@ sub command_line_setup { + } + + # Look for language files and charsetsdir, use same share +- $path_language= mtr_path_exists("$bindir/share/mysql", ++ $path_language= mtr_path_exists("$bindir/@INSTALL_MYSQLSHAREDIR@", + "$bindir/sql/share", + "$bindir/share"); + my $path_share= $path_language; +- $path_charsetsdir = mtr_path_exists("$basedir/share/mysql/charsets", ++ $path_charsetsdir = mtr_path_exists("$basedir/@INSTALL_MYSQLSHAREDIR@/charsets", + "$basedir/sql/share/charsets", + "$basedir/share/charsets"); + +@@ -3324,7 +3324,7 @@ sub mysql_install_db { + } + + my $path_sql= my_find_file($install_basedir, +- ["mysql", "sql/share", "share/mysql", ++ ["mysql", "sql/share", "@INSTALL_MYSQLSHAREDIR@", + "share", "scripts"], + "mysql_system_tables.sql", + NOT_REQUIRED); +diff -up mysql-5.6.23/mysql-test/CMakeLists.txt.sharedir mysql-5.6.23/mysql-test/CMakeLists.txt +--- mysql-5.6.23/mysql-test/CMakeLists.txt.sharedir 2015-01-19 14:48:31.000000000 +0100 ++++ mysql-5.6.23/mysql-test/CMakeLists.txt 2015-02-23 13:11:58.358488693 +0100 +@@ -33,6 +33,10 @@ ENDIF() + + + ++# Expand some paths in the perl scripts correctly ++CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/lib/My/ConfigFactory.pm ${CMAKE_CURRENT_SOURCE_DIR}/lib/My/ConfigFactory.pm @ONLY) ++CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql-test-run.pl ${CMAKE_CURRENT_SOURCE_DIR}/mysql-test-run.pl @ONLY) ++ + IF(NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + # Enable running mtr from build directory + CONFIGURE_FILE( diff --git a/SOURCES/mysql-strmov.patch b/SOURCES/mysql-strmov.patch new file mode 100644 index 0000000..1c44f55 --- /dev/null +++ b/SOURCES/mysql-strmov.patch @@ -0,0 +1,34 @@ +Remove overly optimistic definition of strmov() as stpcpy(). + +mysql uses this macro with overlapping source and destination strings, +which is verboten per spec, and fails on some Red Hat platforms. +Deleting the definition is sufficient to make it fall back to a +byte-at-a-time copy loop, which should consistently give the +expected behavior. + +Note: the particular case that prompted this patch is reported and fixed +at http://bugs.mysql.com/bug.php?id=48864. However, my faith in upstream's +ability to detect this type of error is low, and I also see little evidence +of any real performance gain from optimizing these calls. So I'm keeping +this patch. + + +diff -up mysql-5.6.10/include/m_string.h.orig mysql-5.6.10/include/m_string.h +--- mysql-5.6.10/include/m_string.h.orig 2013-01-22 17:54:49.000000000 +0100 ++++ mysql-5.6.10/include/m_string.h 2013-02-19 14:12:58.866241727 +0100 +@@ -65,15 +65,6 @@ extern void *(*my_str_malloc)(size_t); + extern void *(*my_str_realloc)(void *, size_t); + extern void (*my_str_free)(void *); + +-#if defined(HAVE_STPCPY) && MY_GNUC_PREREQ(3, 4) && !defined(__INTEL_COMPILER) +-#define strmov(A,B) __builtin_stpcpy((A),(B)) +-#elif defined(HAVE_STPCPY) +-#define strmov(A,B) stpcpy((A),(B)) +-#ifndef stpcpy +-extern char *stpcpy(char *, const char *); /* For AIX with gcc 2.95.3 */ +-#endif +-#endif +- + /* Declared in int2str() */ + extern char _dig_vec_upper[]; + extern char _dig_vec_lower[]; diff --git a/SOURCES/mysql-wait-ready.sh b/SOURCES/mysql-wait-ready.sh new file mode 100644 index 0000000..2ed5fe1 --- /dev/null +++ b/SOURCES/mysql-wait-ready.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common" + +# This script waits for mysqld to be ready to accept connections +# (which can be many seconds or even minutes after launch, if there's +# a lot of crash-recovery work to do). +# Running this as ExecStartPost is useful so that services declared as +# "After mysqld" won't be started until the database is really ready. + +if [ $# -ne 1 ] ; then + echo "You need to pass daemon pid as an argument for this script." + exit 20 +fi + +# Service file passes us the daemon's PID (actually, mysqld_safe's PID) +daemon_pid="$1" + +# Wait for the server to come up or for the mysqld process to disappear +ret=0 +while /bin/true; do + # Check process still exists + if ! [ -d "/proc/${daemon_pid}" ] ; then + ret=1 + break + fi + RESPONSE=`@bindir@/mysqladmin --no-defaults --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1` + mret=$? + if [ $mret -eq 0 ] ; then + break + fi + # exit codes 1, 11 (EXIT_CANNOT_CONNECT_TO_SERVICE) are expected, + # anything else suggests a configuration error + if [ $mret -ne 1 -a $mret -ne 11 ]; then + echo "Cannot check for @NICE_PROJECT_NAME@ Daemon startup because of mysqladmin failure." >&2 + ret=$mret + break + fi + # "Access denied" also means the server is alive + echo "$RESPONSE" | grep -q "Access denied for user" && break + + sleep 1 +done + +exit $ret diff --git a/SOURCES/mysql-wait-stop.sh b/SOURCES/mysql-wait-stop.sh new file mode 100644 index 0000000..62bde30 --- /dev/null +++ b/SOURCES/mysql-wait-stop.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common" + +# This script waits for mysqld to be properly stopped +# (which can be many seconds in some large load). +# Running this as ExecStopPost is useful so that starting which is done +# as part of restart doesn't see the former process still running. + +# Wait for the server to properly end the main server +ret=0 +TIMEOUT=60 +SECONDS=0 + +if ! [ -f "$pidfile" ]; then + exit 0 +fi + +MYSQLPID=`cat "$pidfile" 2>/dev/null` +if [ -z "$MYSQLPID" ] ; then + exit 2 +fi + +while /bin/true; do + # Check process still exists + if ! [ -d "/proc/${MYSQLPID}" ] ; then + break + fi + if [ $SECONDS -gt $TIMEOUT ] ; then + ret=3 + break + fi + sleep 1 +done + +exit $ret diff --git a/SOURCES/mysql.init.in b/SOURCES/mysql.init.in new file mode 100644 index 0000000..de7b9c0 --- /dev/null +++ b/SOURCES/mysql.init.in @@ -0,0 +1,186 @@ +#!/bin/sh +# +# @DAEMON_NAME@ This shell script takes care of starting and stopping +# the MySQL subsystem (mysqld). +# +# chkconfig: - 64 36 +# description: MySQL database server. +# processname: mysqld +# config: @sysconfdir@/my.cnf +# pidfile: /var/run/@DAEMON_NAME@/@DAEMON_NO_PREFIX@.pid +### BEGIN INIT INFO +# Provides: mysqld +# Required-Start: $local_fs $remote_fs $network $named $syslog $time +# Required-Stop: $local_fs $remote_fs $network $named $syslog $time +# Short-Description: start and stop MySQL server +# Description: MySQL database server +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +# Source networking configuration. +. /etc/sysconfig/network + + +exec="@bindir@/mysqld_safe" +prog="@DAEMON_NAME@" + +# Set timeouts here so they can be overridden from @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@ +STARTTIMEOUT=300 +STOPTIMEOUT=60 + +# User and group the daemon will run under +MYUSER=mysql +MYGROUP=mysql + +# Edit the following file in order to re-write some of the environment +# variables defined above, like $STARTTIMEOUT, $STOPTIMEOUT, $exec +[ -e @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@ ] && . @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@ + +lockfile=/var/lock/subsys/$prog + +# get options from my.cnf +source "@libexecdir@/mysql-scripts-common" + +start(){ + [ -x $exec ] || exit 5 + + # check permissions + if ! touch $(dirname $socketfile) &>/dev/null ; then + action $"Starting $prog: " /bin/false + return 4 + fi + + # check to see if it's already running + MYSQLDRUNNING=0 + if [ -f "$pidfile" ]; then + MYSQLPID=`cat "$pidfile" 2>/dev/null` + if [ -n "$MYSQLPID" ] && [ -d "/proc/$MYSQLPID" ] ; then + MYSQLDRUNNING=1 + fi + fi + RESPONSE=`@bindir@/mysqladmin --no-defaults --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1` + if [ $MYSQLDRUNNING = 1 ] && [ $? = 0 ]; then + # already running, do nothing + action $"Starting $prog: " /bin/true + ret=0 + elif [ $MYSQLDRUNNING = 1 ] && echo "$RESPONSE" | grep -q "Access denied for user" + then + # already running, do nothing + action $"Starting $prog: " /bin/true + ret=0 + else + @libexecdir@/mysql-prepare-db-dir $MYUSER $MYGROUP || return 4 + @libexecdir@/mysql-check-socket || return 1 + + # Pass all the options determined above, to ensure consistent behavior. + # In many cases mysqld_safe would arrive at the same conclusions anyway + # but we need to be sure. (An exception is that we don't force the + # log-error setting, since this script doesn't really depend on that, + # and some users might prefer to configure logging to syslog.) + # Note: set --basedir to prevent probes that might trigger SELinux + # alarms, per bug #547485 + $exec --datadir="$datadir" --socket="$socketfile" \ + --pid-file="$pidfile" \ + --basedir=@prefix@ --user=$MYUSER >/dev/null 2>&1 & + safe_pid=$! + + # Wait until the daemon is up + @libexecdir@/mysql-wait-ready "$safe_pid" + ret=$? + + if [ $ret -eq 0 ]; then + action $"Starting $prog: " /bin/true + chmod o+r $pidfile >/dev/null 2>&1 + touch $lockfile + else + action $"Starting $prog: " /bin/false + fi + fi + return $ret +} + +stop(){ + if [ ! -f "$pidfile" ]; then + # not running; per LSB standards this is "ok" + action $"Stopping $prog: " /bin/true + return 0 + fi + MYSQLPID=`cat "$pidfile" 2>/dev/null` + if [ -n "$MYSQLPID" ]; then + if ! [ -d "/proc/$MYSQLPID" ] ; then + # process doesn't run anymore + action $"Stopping $prog: " /bin/true + return 0 + fi + /bin/kill "$MYSQLPID" >/dev/null 2>&1 + ret=$? + if [ $ret -eq 0 ]; then + TIMEOUT="$STOPTIMEOUT" + while [ $TIMEOUT -gt 0 ]; do + /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break + sleep 1 + let TIMEOUT=${TIMEOUT}-1 + done + if [ $TIMEOUT -eq 0 ]; then + echo "Timeout error occurred trying to stop MySQL Daemon." + ret=1 + action $"Stopping $prog: " /bin/false + else + rm -f $lockfile + rm -f "$socketfile" + action $"Stopping $prog: " /bin/true + fi + else + # kill command failed, probably insufficient permissions + action $"Stopping $prog: " /bin/false + ret=4 + fi + else + # failed to read pidfile, probably insufficient permissions + action $"Stopping $prog: " /bin/false + ret=4 + fi + return $ret +} + +restart(){ + stop + start +} + +condrestart(){ + [ -e $lockfile ] && restart || : +} + + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status -p "$pidfile" $prog + ;; + restart) + restart + ;; + condrestart|try-restart) + condrestart + ;; + reload) + exit 3 + ;; + force-reload) + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac + +exit $? diff --git a/SOURCES/mysql.service.in b/SOURCES/mysql.service.in new file mode 100644 index 0000000..b9adee8 --- /dev/null +++ b/SOURCES/mysql.service.in @@ -0,0 +1,54 @@ +# It's not recommended to modify this file in-place, because it will be +# overwritten during package upgrades. If you want to customize, the +# best way is to create a file "/etc/systemd/system/@DAEMON_NAME@.service", +# containing +# .include /usr/lib/systemd/system/@DAEMON_NAME@.service +# ...make your changes here... +# or create a file "/etc/systemd/system/@DAEMON_NAME@.service.d/foo.conf", +# which doesn't need to include ".include" call and which will be parsed +# after the file @DAEMON_NAME@.service itself is parsed. +# +# For more info about custom unit files, see systemd.unit(5) or +# http://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F + +# For example, if you want to increase mysql's open-files-limit to 10000, +# you need to increase systemd's LimitNOFILE setting, so create a file named +# "/etc/systemd/system/@DAEMON_NAME@.service.d/limits.conf" containing: +# [Service] +# LimitNOFILE=10000 + +# Note: /usr/lib/... is recommended in the .include line though /lib/... +# still works. +# Don't forget to reload systemd daemon after you change unit configuration: +# root> systemctl --system daemon-reload + +[Unit] +Description=@NICE_PROJECT_NAME@ @MAJOR_VERSION@.@MINOR_VERSION@ database server +After=syslog.target +After=network.target + +[Service] +Type=simple +User=mysql +Group=mysql + +# Execute pre and post scripts as root +PermissionsStartOnly=true + +ExecStartPre=@libexecdir@/mysql-check-socket +ExecStartPre=@libexecdir@/mysql-prepare-db-dir %n +# Note: we set --basedir to prevent probes that might trigger SELinux alarms, +# per bug #547485 +ExecStart=@bindir@/mysqld_safe --basedir=@prefix@ +ExecStartPost=@libexecdir@/mysql-wait-ready $MAINPID +ExecStartPost=@libexecdir@/mysql-check-upgrade +ExecStopPost=@libexecdir@/mysql-wait-stop + +# Give a reasonable amount of time for the server to start up/shut down +TimeoutSec=300 + +# Place temp files in a secure directory, not /tmp +PrivateTmp=true + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/mysql.tmpfiles.d.in b/SOURCES/mysql.tmpfiles.d.in new file mode 100644 index 0000000..d2c4b31 --- /dev/null +++ b/SOURCES/mysql.tmpfiles.d.in @@ -0,0 +1 @@ +d @PID_FILE_DIR@ 0755 mysql mysql - diff --git a/SOURCES/mysql_config_multilib.sh b/SOURCES/mysql_config_multilib.sh new file mode 100644 index 0000000..06c2a2b --- /dev/null +++ b/SOURCES/mysql_config_multilib.sh @@ -0,0 +1,26 @@ +#! /bin/sh +# +# Wrapper script for mysql_config to support multilib +# +# This command respects setarch + +bits=$(rpm --eval %__isa_bits) + +case $bits in + 32|64) status=known ;; + *) status=unknown ;; +esac + +if [ "$status" = "unknown" ] ; then + echo "$0: error: command 'rpm --eval %__isa_bits' returned unknown value: $bits" + exit 1 +fi + + +if [ -x @bindir@/mysql_config-$bits ] ; then + @bindir@/mysql_config-$bits "$@" +else + echo "$0: error: needed binary: @bindir@/mysql_config-$bits is missing" + exit 1 +fi + diff --git a/SOURCES/server.cnf.in b/SOURCES/server.cnf.in new file mode 100644 index 0000000..e6e1ca7 --- /dev/null +++ b/SOURCES/server.cnf.in @@ -0,0 +1,17 @@ +# +# These groups are read by MySQL server. +# Use it for options that only the server (but not clients) should see +# +# See the examples of server my.cnf files in /usr/share/mysql/ +# + +# this is read by the standalone daemon and embedded servers +[server] + +# this is only for the mysqld standalone daemon +[mysqld] +datadir=@MYSQL_DATADIR@ +socket=@MYSQL_UNIX_ADDR@ +log-error=@LOG_LOCATION@ +pid-file=@PID_FILE_DIR@/@DAEMON_NO_PREFIX@.pid + diff --git a/SPECS/mysql.spec b/SPECS/mysql.spec new file mode 100644 index 0000000..6e9f7ae --- /dev/null +++ b/SPECS/mysql.spec @@ -0,0 +1,2633 @@ +# SCL stuff +%{?scl:%scl_package mysql} +%{!?scl:%global pkg_name %{name}} + +# Name of the package without any prefixes +%global pkgnamepatch mysql + +# Regression tests may take a long time (many cores recommended), skip them by +# passing --nocheck to rpmbuild or by setting runselftest to 0 if defining +# --nocheck is not possible (e.g. in koji build) +%{!?runselftest:%global runselftest 1} + +# set to 1 to enable +%global with_shared_lib_major_hack 0 + +# In f20+ use unversioned docdirs, otherwise the old versioned one +%global _pkgdocdirname %{pkg_name}%{!?_pkgdocdir:-%{version}} +%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{pkg_name}-%{version}} + +# Use Full RELRO for all binaries (RHBZ#1092548) +%global _hardened_build 1 + +# By default, patch(1) creates backup files when chunks apply with offsets. +# Turn that off to ensure such files don't get included in RPMs (cf bz#884755). +%global _default_patch_flags --no-backup-if-mismatch + +%global skiplist platform-specific-tests.list + +# For some use cases we do not need some parts of the package +%bcond_without devel +%bcond_without client +%bcond_without common +%bcond_without errmsg +%bcond_without bench +%bcond_without test + +%if 0%{?scl:1} +%bcond_with embedded +%bcond_with clibrary +%else +%bcond_without embedded +%bcond_without clibrary +%endif + +# When there is already another package that ships /etc/my.cnf, +# rather include it than ship the file again, since conflicts between +# those files may create issues +%bcond_without config + +# For deep debugging we need to build binaries with extra debug info +%bcond_with debug + +# Include files for SysV init or systemd +%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7 +%bcond_without init_systemd +%bcond_with init_sysv +%else +%bcond_with init_systemd +%bcond_without init_sysv +%endif +%global daemon_name %{?scl_prefix}mysqld +%global daemon_no_prefix mysqld + +# Define where to get propper SELinux context +# and define names and locations specific for the whole collection +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 15 +%{?scl:%global se_daemon_source %{_unitdir}/mysqld} +%global daemondir %{_unitdir} +%else +%{?scl:%global se_daemon_source %{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/rc.d/init.d/mysqld} +%global daemondir %{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/rc.d/init.d +%endif +%{?scl:%global se_log_source %{?_root_localstatedir}/log/mysql} +%if ! 0%{?scl:1} || 0%{?nfsmountable:1} +%global logfiledir %{_localstatedir}/log/mysql +%global dbdatadir %{_localstatedir}/lib/mysql +%else +%global logfiledir %{?_root_localstatedir}/log/%{?scl_prefix}mysql +%global dbdatadir %{?_scl_root}/var/lib/mysql +%endif + +# Directory for storing pid file +%global pidfiledir %{?scl:%{_root_localstatedir}}%{!?scl:%{_localstatedir}}/run/%{daemon_name} + +# We define some system's well known locations here so we can use them easily +# later when building to another location (like SCL) +%global logrotateddir %{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/logrotate.d +%global logfile %{logfiledir}/%{daemon_no_prefix}.log + +# Home directory of mysql user should be same for all packages that create it +%global mysqluserhome /var/lib/mysql + +# Provide mysql names for compatibility +%if 0%{?scl:1} +%bcond_with mysql_names +%bcond_with conflicts +%else +%bcond_without mysql_names +%bcond_without conflicts +%endif + +# Make long macros shorter +%global sameevr %{?epoch:%{epoch}:}%{version}-%{release} + +%if 0%{?scl:1} +%global scl_upper %{lua:print(string.upper(string.gsub(rpm.expand("%{scl}"), "-", "_")))} +%endif + +Name: %{?scl_prefix}mysql +Version: 5.6.24 +Release: 3%{?with_debug:.debug}%{?dist} +Summary: MySQL client programs and shared libraries +Group: Applications/Databases +URL: http://www.mysql.com + +# Exceptions allow client libraries to be linked with most open source SW, +# not only GPL code. See README.mysql-license +License: GPLv2 with exceptions and LGPLv2 and BSD + +Source0: https://cdn.mysql.com/Downloads/MySQL-5.6/mysql-%{version}.tar.gz +Source2: mysql_config_multilib.sh +Source3: my.cnf.in +Source4: my_config.h +Source6: README.mysql-docs +Source7: README.mysql-license +Source10: mysql.tmpfiles.d.in +Source11: mysql.service.in +Source12: mysql-prepare-db-dir.sh +Source13: mysql-wait-ready.sh +Source14: mysql-check-socket.sh +Source15: mysql-scripts-common.sh +Source16: mysql-check-upgrade.sh +Source17: mysql-wait-stop.sh +Source19: mysql.init.in +# To track rpmlint warnings +Source30: mysql-5.6.10-rpmlintrc +# Configuration for server +Source31: server.cnf.in +Source40: daemon-scl-helper.sh + +# Comments for these patches are in the patch files +# Patches common for more mysql-like packages +Patch1: %{pkgnamepatch}-strmov.patch +Patch2: %{pkgnamepatch}-install-test.patch +Patch3: %{pkgnamepatch}-s390-tsc.patch +Patch4: %{pkgnamepatch}-logrotate.patch +Patch5: %{pkgnamepatch}-cipherspec.patch +Patch6: %{pkgnamepatch}-file-contents.patch +Patch7: %{pkgnamepatch}-dh1024.patch +Patch8: %{pkgnamepatch}-scripts.patch +Patch9: %{pkgnamepatch}-install-db-sharedir.patch +Patch10: %{pkgnamepatch}-paths.patch +Patch11: %{pkgnamepatch}-noclientlib.patch +Patch12: %{pkgnamepatch}-admincrash.patch +Patch13: %{pkgnamepatch}-log-fifo.patch + +# Patches specific for this mysql package +Patch51: %{pkgnamepatch}-chain-certs.patch +Patch52: %{pkgnamepatch}-sharedir.patch +Patch53: %{pkgnamepatch}-5.6.16-libmysql-version.patch +Patch55: %{pkgnamepatch}-5.6.16-mysql-install.patch +Patch56: %{pkgnamepatch}-pluginerrmsg.patch +Patch57: %{pkgnamepatch}-5.6.19-gcc49-aarch64-opt.patch +Patch70: %{pkgnamepatch}-5.6.13-major.patch + +# Patches specific for scl +Patch90: %{pkgnamepatch}-scl-env-check.patch + +BuildRequires: cmake +BuildRequires: libaio-devel +BuildRequires: libevent-devel +BuildRequires: openssl-devel +BuildRequires: perl +BuildRequires: ncurses-devel +BuildRequires: systemtap-sdt-devel +BuildRequires: zlib-devel +# Tests requires time and ps and some perl modules +BuildRequires: procps +BuildRequires: time +BuildRequires: perl(Env) +BuildRequires: perl(Exporter) +BuildRequires: perl(Fcntl) +BuildRequires: perl(File::Temp) +BuildRequires: perl(Data::Dumper) +BuildRequires: perl(Getopt::Long) +BuildRequires: perl(IPC::Open3) +BuildRequires: perl(Socket) +BuildRequires: perl(Sys::Hostname) +BuildRequires: perl(Test::More) +BuildRequires: perl(Time::HiRes) +%{?with_init_systemd:BuildRequires: systemd} + +Requires: bash +Requires: fileutils +Requires: grep +Requires: %{name}-common%{?_isa} = %{sameevr} +%{?scl:Requires:%scl_runtime} + +%if %{with mysql_names} +Provides: mysql = %{sameevr} +Provides: mysql%{?_isa} = %{sameevr} +Provides: mysql-compat-client = %{sameevr} +Provides: mysql-compat-client%{?_isa} = %{sameevr} +%endif + +%{?with_conflicts:Conflicts: mariadb} +# mysql-cluster used to be built from this SRPM, but no more +Obsoletes: mysql-cluster < 5.1.44 + +# Filtering: https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering +%if 0%{?fedora} > 14 || 0%{?rhel} > 6 +%global __requires_exclude ^perl\\((hostnames|lib::mtr|lib::v1|mtr_|My::) +%global __provides_exclude_from ^(%{_datadir}/(mysql|mysql-test)/.*|%{_libdir}/mysql/plugin/.*\\.so)$ +%else +%filter_from_requires /perl(\(hostnames\|lib::mtr\|lib::v1\|mtr_\|My::\)/d +%filter_provides_in -P (%{_datadir}/(mysql|mysql-test)/.*|%{_libdir}/mysql/plugin/.*\.so) +%filter_provides_in -P %{_libexecdir}/mysqld +%filter_setup +%endif + +%description +MySQL is a multi-user, multi-threaded SQL database server. MySQL is a +client/server implementation consisting of a server daemon (mysqld) +and many different client programs and libraries. The base package +contains the standard MySQL client programs and generic MySQL files. + + +%if %{with clibrary} +%package libs +Summary: The shared libraries required for MySQL clients +Group: Applications/Databases +Requires: %{name}-common%{?_isa} = %{sameevr} +%{?scl:Requires:%scl_runtime} +%if %{with mysql_names} +Provides: mysql-libs = %{sameevr} +Provides: mysql-libs%{?_isa} = %{sameevr} +%endif + +%description libs +The mysql-libs package provides the essential shared libraries for any +MySQL client program or interface. You will need to install this package +to use any other MySQL package or any clients that need to connect to a +MySQL server. +%endif + + +%if %{with config} +%package config +Summary: The config files required by server and client +Group: Applications/Databases +%{?scl:Requires:%scl_runtime} + +%description config +The package provides the config file my.cnf and my.cnf.d directory used by any +MariaDB or MySQL program. You will need to install this package to use any +other MariaDB or MySQL package if the config files are not provided in the +package itself. +%endif + + +%if %{with common} +%package common +Summary: The shared files required for MySQL server and client +Group: Applications/Databases +Requires: %{_sysconfdir}/my.cnf +%{?scl:Requires:%scl_runtime} + +%description common +The mysql-common package provides the essential shared files for any +MySQL program. You will need to install this package to use any other +MySQL package. +%endif + + +%if %{with errmsg} +%package errmsg +Summary: The error messages files required by server and embedded +Group: Applications/Databases +Requires: %{name}-common%{?_isa} = %{sameevr} +%{?scl:Requires:%scl_runtime} + +%description errmsg +The package provides error messages files for the MySQL daemon and the +embedded server. You will need to install this package to use any of those +MySQL packages. +%endif + + +%package server +Summary: The MySQL server and related files +Group: Applications/Databases + +# note: no version here = %%{sameevr} +%if %{with mysql_names} +Requires: mysql-compat-client%{?_isa} +Requires: mysql%{?_isa} +%else +Requires: %{name}%{?_isa} +%endif +Requires: %{name}-common%{?_isa} = %{sameevr} +Requires: %{_sysconfdir}/my.cnf +Requires: %{_sysconfdir}/my.cnf.d +Requires: %{name}-errmsg%{?_isa} = %{sameevr} +Requires: sh-utils +Requires(pre): /usr/sbin/useradd +%if %{with init_systemd} +# We require this to be present for %%{_tmpfilesdir} +Requires: systemd +# Make sure it's there when scriptlets run, too +Requires(pre): systemd +Requires(posttrans): systemd +%{?systemd_requires: %systemd_requires} +%endif +# mysqlhotcopy needs DBI/DBD support +Requires: perl(DBI) +Requires: perl(DBD::mysql) +%{?scl:Requires:%scl_runtime} +%{?scl:Requires:%{_root_bindir}/scl_source} +%{?scl:Requires(post): policycoreutils-python libselinux-utils} +%if %{with mysql_names} +Provides: mysql-server = %{sameevr} +Provides: mysql-server%{?_isa} = %{sameevr} +Provides: mysql-compat-server = %{sameevr} +Provides: mysql-compat-server%{?_isa} = %{sameevr} +%endif +%{?with_conflicts:Conflicts: mariadb-server} +%{?with_conflicts:Conflicts: mariadb-galera-server} + +%description server +MySQL is a multi-user, multi-threaded SQL database server. MySQL is a +client/server implementation consisting of a server daemon (mysqld) +and many different client programs and libraries. This package contains +the MySQL server and some accompanying files and directories. + + +%if %{with devel} +%package devel +Summary: Files for development of MySQL applications +Group: Applications/Databases +%{?with_clibrary:Requires: %{name}-libs%{?_isa} = %{sameevr}} +Requires: openssl-devel%{?_isa} +%{?scl:Requires:%scl_runtime} +%{?with_conflicts:Conflicts: mariadb-devel} + +%description devel +MySQL is a multi-user, multi-threaded SQL database server. This +package contains the libraries and header files that are needed for +developing MySQL client applications. +%endif + + +%if %{with embedded} +%package embedded +Summary: MySQL as an embeddable library +Group: Applications/Databases +Requires: %{name}-common%{?_isa} = %{sameevr} +Requires: %{name}-errmsg%{?_isa} = %{sameevr} +%{?scl:Requires:%scl_runtime} +%if %{with mysql_names} +Provides: mysql-embedded = %{sameevr} +Provides: mysql-embedded%{?_isa} = %{sameevr} +%endif + +%description embedded +MySQL is a multi-user, multi-threaded SQL database server. This +package contains a version of the MySQL server that can be embedded +into a client application instead of running as a separate process. + + +%package embedded-devel +Summary: Development files for MySQL as an embeddable library +Group: Applications/Databases +Requires: %{name}-embedded%{?_isa} = %{sameevr} +Requires: %{name}-devel%{?_isa} = %{sameevr} +%{?scl:Requires:%scl_runtime} +%{?with_conflicts:Conflicts: mariadb-embedded-devel} + +%description embedded-devel +MySQL is a multi-user, multi-threaded SQL database server. This +package contains files needed for developing and testing with +the embedded version of the MySQL server. +%endif + + +%if %{with bench} +%package bench +Summary: MySQL benchmark scripts and data +Group: Applications/Databases +Requires: %{name}%{?_isa} = %{sameevr} +%{?scl:Requires:%scl_runtime} +%{?with_conflicts:Conflicts: mariadb-bench} +%if %{with mysql_names} +Provides: mysql-bench = %{sameevr} +Provides: mysql-bench%{?_isa} = %{sameevr} +%endif + +%description bench +MySQL is a multi-user, multi-threaded SQL database server. This +package contains benchmark scripts and data for use when benchmarking +MySQL. +%endif + + +%if %{with test} +%package test +Summary: The test suite distributed with MySQL +Group: Applications/Databases +Requires: %{name}%{?_isa} = %{sameevr} +Requires: %{name}-common%{?_isa} = %{sameevr} +Requires: %{name}-server%{?_isa} = %{sameevr} +Requires: perl(Env) +Requires: perl(Exporter) +Requires: perl(Fcntl) +Requires: perl(File::Temp) +Requires: perl(Data::Dumper) +Requires: perl(Getopt::Long) +Requires: perl(IPC::Open3) +Requires: perl(Socket) +Requires: perl(Sys::Hostname) +Requires: perl(Test::More) +Requires: perl(Time::HiRes) +%{?scl:Requires:%scl_runtime} +%{?with_conflicts:Conflicts: mariadb-test} +%if %{with mysql_names} +Provides: mysql-test = %{sameevr} +Provides: mysql-test%{?_isa} = %{sameevr} +%endif + +%description test +MySQL is a multi-user, multi-threaded SQL database server. This +package contains the regression test suite distributed with +the MySQL sources. +%endif + + +%prep +%setup -q -n mysql-%{version} +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch51 -p1 +%patch52 -p1 +%patch53 -p1 +%patch55 -p1 +%patch56 -p1 +%patch57 -p1 +%if %{with_shared_lib_major_hack} +%patch70 -p1 +%endif + +# Modify tests to pass on all archs +pushd mysql-test + +add_test () { + echo $1 >> %{skiplist} +} + +touch %{skiplist} + +# Workaround for upstream bug #http://bugs.mysql.com/56342 +rm -f t/ssl_8k_key-master.opt + +# Archs without hw performance counter, rh 741325 +%ifarch %{arm} aarch64 sparc64 +add_test 'perfschema.func_file_io : rh 741325' +add_test 'perfschema.func_mutex : rh 741325' +add_test 'perfschema.setup_objects : rh 741325' +%endif + +# Archs with collation issues, bugs.mysql.com/46895 +%ifarch %{arm} aarch64 ppc %{power64} s390 s390x +add_test 'innodb.innodb_ctype_ldml : 46895' +add_test 'main.ctype_ldml : 46895' +%endif + +# Archs with ps_ddl issues +%ifarch ppc s390 +add_test 'main.ps_ddl : ps_ddl issue' +add_test 'main.ps_ddl1 : ps_ddl issue' +%endif + +# Arch with other issues +%ifarch ppc +add_test 'main.audit_plugin : unknown' +add_test 'main.upgrade : unknown' +%endif +popd + +cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} \ + %{SOURCE14} %{SOURCE15} %{SOURCE16} %{SOURCE17} %{SOURCE19} %{SOURCE31} scripts + +%if 0%{?scl:1} +%patch90 -p1 +%endif + +%build +# fail quickly and obviously if user tries to build as root +%if %runselftest + if [ x"$(id -u)" = "x0" ]; then + echo "mysql's regression tests fail if run as root." + echo "If you really need to build the RPM as root, use" + echo "--nocheck to skip the regression tests." + exit 1 + fi +%endif + +# build out of source +mkdir build && pushd build + +# The INSTALL_xxx macros have to be specified relative to CMAKE_INSTALL_PREFIX +# so we can't use %%{_datadir} and so forth here. +cmake .. \ + -DBUILD_CONFIG=mysql_release \ + -DFEATURE_SET="community" \ + -DWITH_READLINE=ON \ + -DINSTALL_LAYOUT=RPM \ + -DDAEMON_NAME="%{daemon_name}" \ + -DDAEMON_NO_PREFIX="%{daemon_no_prefix}" \ +%if 0%{?scl:1} + -DSCL_NAME="%{?scl}" \ + -DSCL_NAME_UPPER="%{?scl_upper}" \ + -DSCL_SCRIPTS="%{?_scl_scripts}" \ +%endif + -DLOG_LOCATION="%{logfile}" \ + -DPID_FILE_DIR="%{pidfiledir}" \ + -DNICE_PROJECT_NAME="MySQL" \ + -DCMAKE_INSTALL_PREFIX="%{_prefix}" \ + -DSYSCONFDIR="%{_sysconfdir}" \ + -DSYSCONF2DIR="%{_sysconfdir}/my.cnf.d" \ + -DINSTALL_DOCDIR="share/doc/%{_pkgdocdirname}" \ + -DINSTALL_DOCREADMEDIR="share/doc/%{_pkgdocdirname}" \ + -DINSTALL_INCLUDEDIR=include/mysql \ + -DINSTALL_INFODIR=share/info \ + -DINSTALL_LIBDIR="%{_lib}/mysql" \ + -DINSTALL_MANDIR=share/man \ + -DINSTALL_MYSQLSHAREDIR=share/%{pkg_name} \ + -DINSTALL_MYSQLTESTDIR=share/mysql-test \ + -DINSTALL_PLUGINDIR="%{_lib}/mysql/plugin" \ + -DINSTALL_SBINDIR=libexec \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_SQLBENCHDIR=share \ + -DINSTALL_SUPPORTFILESDIR=share/%{pkg_name} \ + -DMYSQL_DATADIR="%{dbdatadir}" \ + -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock" \ + -DENABLED_LOCAL_INFILE=ON \ + -DENABLE_DTRACE=ON \ + -DWITH_INNODB_MEMCACHED=ON \ + -DWITH_EMBEDDED_SERVER=ON \ + -DWITH_EMBEDDED_SHARED_LIBRARY=ON \ + -DWITH_EDITLINE=bundled \ + -DWITH_LIBEVENT=system \ + -DWITH_SSL=system \ + -DWITH_ZLIB=system \ + -DCMAKE_C_FLAGS="%{optflags}%{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ + -DCMAKE_CXX_FLAGS="%{optflags}%{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ +%{?with_debug: -DWITH_DEBUG=1}\ + -DTMPDIR=/var/tmp \ + %{?_hardened_build:-DWITH_MYSQLD_LDFLAGS="-pie -Wl,-z,relro,-z,now"} + +make %{?_smp_mflags} VERBOSE=1 + +popd + +%install +pushd build +make DESTDIR=%{buildroot} install + +# multilib header support +# we only apply this to known Red Hat multilib arches, per bug #181335 +unamei=$(uname -i) +%ifarch %{arm} +unamei=arm +%endif +%ifarch %{power64} +unamei=ppc64 +%endif +%ifarch %{arm} aarch64 %{ix86} x86_64 ppc %{power64} %{sparc} s390 s390x +mv %{buildroot}%{_includedir}/mysql/my_config.h %{buildroot}%{_includedir}/mysql/my_config_${unamei}.h +install -p -m 644 %{SOURCE4} %{buildroot}%{_includedir}/mysql/ +mv %{buildroot}%{_bindir}/mysql_config %{buildroot}%{_bindir}/mysql_config-%{__isa_bits} +install -p -m 0755 scripts/mysql_config_multilib %{buildroot}%{_bindir}/mysql_config +%endif + +# install INFO_SRC, INFO_BIN into libdir (upstream thinks these are doc files, +# but that's pretty wacko --- see also %%{name}-file-contents.patch) +install -p -m 0644 Docs/INFO_SRC %{buildroot}%{_libdir}/mysql/ +install -p -m 0644 Docs/INFO_BIN %{buildroot}%{_libdir}/mysql/ + +mkdir -p %{buildroot}%{logfiledir} +touch %{buildroot}%{logfile} + +mkdir -p %{buildroot}%{pidfiledir} +install -p -m 0755 -d %{buildroot}%{dbdatadir} + +# create directory for socket +%{?scl:install -p -m 0755 -d %{buildroot}/var/lib/mysql} + +%if %{with config} +install -D -p -m 0644 scripts/my.cnf %{buildroot}%{_sysconfdir}/my.cnf +%endif + +# install systemd unit files and scripts for handling server startup +%if %{with init_systemd} +install -D -p -m 644 scripts/mysql.service %{buildroot}%{_unitdir}/%{daemon_name}.service +install -D -p -m 0644 scripts/mysql.tmpfiles.d %{buildroot}%{_tmpfilesdir}/%{name}.conf +%endif + +# install SysV init script +%if %{with init_sysv} +install -D -p -m 755 scripts/mysql.init %{buildroot}%{daemondir}/%{daemon_name} +%endif + +# helper scripts for service starting +install -p -m 755 scripts/mysql-prepare-db-dir %{buildroot}%{_libexecdir}/mysql-prepare-db-dir +install -p -m 755 scripts/mysql-wait-ready %{buildroot}%{_libexecdir}/mysql-wait-ready +install -p -m 755 scripts/mysql-wait-stop %{buildroot}%{_libexecdir}/mysql-wait-stop +install -p -m 755 scripts/mysql-check-socket %{buildroot}%{_libexecdir}/mysql-check-socket +install -p -m 755 scripts/mysql-check-upgrade %{buildroot}%{_libexecdir}/mysql-check-upgrade +install -p -m 644 scripts/mysql-scripts-common %{buildroot}%{_libexecdir}/mysql-scripts-common +install -D -p -m 0644 scripts/server.cnf %{buildroot}%{_sysconfdir}/my.cnf.d/%{pkg_name}-server.cnf + +# daemon helper for fixing SELinux in systemd +%if %{with init_systemd} && 0%{?scl:1} +install -p -m 755 %{SOURCE40} %{buildroot}%{_libexecdir}/mysqld_safe-scl-helper +%endif + +# mysql-test includes one executable that doesn't belong under /usr/share, +# so move it and provide a symlink +mv %{buildroot}%{_datadir}/mysql-test/lib/My/SafeProcess/my_safe_process %{buildroot}%{_bindir} +ln -s ../../../../../bin/my_safe_process %{buildroot}%{_datadir}/mysql-test/lib/My/SafeProcess/my_safe_process + +# not needed in rpm package +rm -f %{buildroot}%{_bindir}/mysqlaccess.conf +rm -f %{buildroot}%{_bindir}/mysql_embedded +rm -f %{buildroot}%{_libdir}/mysql/*.a +rm -f %{buildroot}%{_datadir}/%{pkg_name}/binary-configure +rm -f %{buildroot}%{_datadir}/%{pkg_name}/magic +rm -f %{buildroot}%{_datadir}/%{pkg_name}/mysql.server +rm -f %{buildroot}%{_datadir}/%{pkg_name}/mysqld_multi.server +rm -f %{buildroot}%{_mandir}/man1/comp_err.1* +rm -f %{buildroot}%{_mandir}/man1/mysql-stress-test.pl.1* +rm -f %{buildroot}%{_mandir}/man1/mysql-test-run.pl.1* + +# put logrotate script where it needs to be +mkdir -p %{buildroot}%{logrotateddir} +mv %{buildroot}%{_datadir}/%{pkg_name}/mysql-log-rotate %{buildroot}%{logrotateddir}/%{daemon_name} +chmod 644 %{buildroot}%{logrotateddir}/%{daemon_name} + +%if %{with clibrary} && 0%{!?scl:1} +mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d +echo "%{_libdir}/mysql" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf +%endif + +%if %{with debug} +mv %{buildroot}%{_libexecdir}/mysqld-debug %{buildroot}%{_libexecdir}/mysqld +%endif + +# Back to src dir +popd + +# copy additional docs into build tree so %%doc will find them +install -p -m 0644 %{SOURCE6} %{basename:%{SOURCE6}} +install -p -m 0644 %{SOURCE7} %{basename:%{SOURCE7}} + +# Install the list of skipped tests to be available for user runs +install -p -m 0644 mysql-test/%{skiplist} %{buildroot}%{_datadir}/mysql-test + +# These are in fact identical +rm %{buildroot}%{_mandir}/man1/{mysqltest,mysql_client_test}_embedded.1 +cp -p %{buildroot}%{_mandir}/man1/mysqltest.1 %{buildroot}%{_mandir}/man1/mysqltest_embedded.1 +cp -p %{buildroot}%{_mandir}/man1/mysql_client_test.1 %{buildroot}%{_mandir}/man1/mysql_client_test_embedded.1 + +%if %{without clibrary} +unlink %{buildroot}%{_libdir}/mysql/libmysqlclient.so +unlink %{buildroot}%{_libdir}/mysql/libmysqlclient_r.so +rm -rf %{buildroot}%{_libdir}/mysql/libmysqlclient*.so.* +rm -rf %{buildroot}%{_sysconfdir}/ld.so.conf.d +%endif + +%if %{without embedded} +rm -f %{buildroot}%{_libdir}/mysql/libmysqld.so* +rm -f %{buildroot}%{_bindir}/{mysql_client_test_embedded,mysqltest_embedded} +rm -f %{buildroot}%{_mandir}/man1/{mysql_client_test_embedded,mysqltest_embedded}.1* +%endif + +%if %{without devel} +rm -f %{buildroot}%{_bindir}/mysql_config* +rm -rf %{buildroot}%{_includedir}/mysql +rm -f %{buildroot}%{_datadir}/aclocal/mysql.m4 +rm -f %{buildroot}%{_libdir}/mysql/libmysqlclient*.so +rm -f %{buildroot}%{_mandir}/man1/mysql_config.1* +%endif + +%if %{without client} +rm -f %{buildroot}%{_bindir}/{msql2mysql,mysql,mysql_config_editor,\ +mysql_find_rows,mysql_plugin,mysql_waitpid,mysqlaccess,mysqladmin,mysqlbinlog,\ +mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,my_print_defaults} +rm -f %{buildroot}%{_mandir}/man1/{msql2mysql,mysql,mysql_config_editor,\ +mysql_find_rows,mysql_plugin,mysql_waitpid,mysqlaccess,mysqladmin,mysqlbinlog,\ +mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,my_print_defaults}.1* +%endif + +%if %{with config} +mkdir -p %{buildroot}%{_sysconfdir}/my.cnf.d +%else +rm -f %{buildroot}%{_sysconfdir}/my.cnf +%endif + +%if %{without common} +rm -rf %{buildroot}%{_datadir}/%{pkg_name}/charsets +%endif + +%if %{without errmsg} +rm -f %{buildroot}%{_datadir}/%{pkg_name}/errmsg-utf8.txt +rm -rf %{buildroot}%{_datadir}/%{pkg_name}/{english,bulgarian,czech,danish,dutch,estonian,\ +french,german,greek,hungarian,italian,japanese,korean,norwegian,norwegian-ny,\ +polish,portuguese,romanian,russian,serbian,slovak,spanish,swedish,ukrainian} +%endif + +%if %{without bench} +rm -rf %{buildroot}%{_datadir}/sql-bench +%endif + +%if %{without test} +rm -f %{buildroot}%{_bindir}/{mysql_client_test,my_safe_process} +rm -rf %{buildroot}%{_datadir}/mysql-test +rm -f %{buildroot}%{_mandir}/man1/mysql_client_test.1* +%endif + +%if 0%{?scl:1} +# generate a configuration file for daemon +cat << EOF | tee -a %{buildroot}%{?_scl_scripts}/service-environment +# Services are started in a fresh environment without any influence of user's +# environment (like environment variable values). As a consequence, +# information of all enabled collections will be lost during service start up. +# If user needs to run a service under any software collection enabled, this +# collection has to be written into %{scl_upper}_SCLS_ENABLED variable +# in %{?_scl_scripts}/service-environment. +%{scl_upper}_SCLS_ENABLED="%{scl}" +EOF +%endif #scl + +%check +%if %{with test} +%if %runselftest +pushd build +make test VERBOSE=1 +pushd mysql-test +cp ../../mysql-test/%{skiplist} . +# builds might happen at the same host, avoid collision +export MTR_BUILD_THREAD=%{__isa_bits} +./mtr \ + --mem --parallel=auto --force --retry=0 \ + --skip-test-list=%{skiplist} \ + --mysqld=--binlog-format=mixed \ + --suite-timeout=720 --testcase-timeout=30 \ + --clean-vardir + rm -rf var/* $(readlink var) +popd +popd +%endif +%endif + +%pre server +/usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 || : +/usr/sbin/useradd -M -N -g mysql -o -r -d %{mysqluserhome} -s /sbin/nologin \ + -c "MySQL Server" -u 27 mysql >/dev/null 2>&1 || : + +%if %{with clibrary} +%post libs -p /sbin/ldconfig +%endif + +%if %{with embedded} +%post embedded -p /sbin/ldconfig +%endif + +%post server +%if 0%{?scl:1} +semanage fcontext -a -e "%{se_daemon_source}" "%{daemondir}/%{daemon_name}%{?with_init_systemd:.service}" >/dev/null 2>&1 || : +semanage fcontext -a -t mysqld_var_run_t "%{pidfiledir}" >/dev/null 2>&1 || : +# work-around for rhbz#1203991 +semanage fcontext -a -t mysqld_etc_t '/etc/my\.cnf\.d/.*' >/dev/null 2>&1 || : +%if %{with init_systemd} +# work-around for rhbz#1172683 +semanage fcontext -a -t mysqld_safe_exec_t %{_root_libexecdir}/mysqld_safe-scl-helper >/dev/null 2>&1 || : +%endif +selinuxenabled && load_policy || : +restorecon -R "%{?_scl_root}/" >/dev/null 2>&1 || : +restorecon -R "%{_sysconfdir}" >/dev/null 2>&1 || : +restorecon -R "%{_localstatedir}" >/dev/null 2>&1 || : +restorecon -R "%{daemondir}/%{daemon_name}%{?with_init_systemd:.service}" >/dev/null 2>&1 || : +restorecon -R "%{pidfiledir}" >/dev/null 2>&1 || : +%endif +%if %{with init_systemd} +%systemd_post %{daemon_name}.service +%endif +%if %{with init_sysv} +if [ $1 = 1 ]; then + /sbin/chkconfig --add %{daemon_name} +fi +%endif + +%preun server +%if %{with init_systemd} +%systemd_preun %{daemon_name}.service +%endif +%if %{with init_sysv} +if [ $1 = 0 ]; then + /sbin/service %{daemon_name} stop >/dev/null 2>&1 + /sbin/chkconfig --del %{daemon_name} +fi +%endif + +%if %{with clibrary} +%postun libs -p /sbin/ldconfig +%endif + +%if %{with embedded} +%postun embedded -p /sbin/ldconfig +%endif + +%postun server +%if %{with init_systemd} +%systemd_postun_with_restart %{daemon_name}.service +%endif +%if %{with init_sysv} +if [ $1 -ge 1 ]; then + /sbin/service %{daemon_name} condrestart >/dev/null 2>&1 || : +fi +%endif + +%if %{with client} +%files +%{_bindir}/msql2mysql +%{_bindir}/mysql +%{_bindir}/mysql_config_editor +%{_bindir}/mysql_find_rows +%{_bindir}/mysql_plugin +%{_bindir}/mysql_waitpid +%{_bindir}/mysqlaccess +%{_bindir}/mysqladmin +%{_bindir}/mysqlbinlog +%{_bindir}/mysqlcheck +%{_bindir}/mysqldump +%{_bindir}/mysqlimport +%{_bindir}/mysqlshow +%{_bindir}/mysqlslap +%{_bindir}/my_print_defaults + +%{_mandir}/man1/msql2mysql.1* +%{_mandir}/man1/mysql.1* +%{_mandir}/man1/mysql_config_editor.1* +%{_mandir}/man1/mysql_find_rows.1* +%{_mandir}/man1/mysql_plugin.1* +%{_mandir}/man1/mysql_waitpid.1* +%{_mandir}/man1/mysqlaccess.1* +%{_mandir}/man1/mysqladmin.1* +%{_mandir}/man1/mysqlbinlog.1* +%{_mandir}/man1/mysqlcheck.1* +%{_mandir}/man1/mysqldump.1* +%{_mandir}/man1/mysqlimport.1* +%{_mandir}/man1/mysqlshow.1* +%{_mandir}/man1/mysqlslap.1* +%{_mandir}/man1/my_print_defaults.1* +%endif + +%if %{with clibrary} +%files libs +%{_libdir}/mysql/libmysqlclient*.so.* +%{!?scl:%config(noreplace) %{_sysconfdir}/ld.so.conf.d/*} + +%endif + +%if %{with config} +%files config +# although the default my.cnf contains only server settings, we put it in the +# common package because it can be used for client settings too. +%dir %{_sysconfdir}/my.cnf.d +%config(noreplace) %{_sysconfdir}/my.cnf +%endif + +%if %{with common} +%files common +%doc README COPYING README.mysql-license README.mysql-docs +%doc storage/innobase/COPYING.Percona storage/innobase/COPYING.Google +%dir %{_libdir}/mysql +%dir %{_datadir}/%{pkg_name} +%{_datadir}/%{pkg_name}/charsets +%endif + +%if %{with errmsg} +%files errmsg +%{_datadir}/%{pkg_name}/errmsg-utf8.txt +%{_datadir}/%{pkg_name}/english +%lang(bg) %{_datadir}/%{pkg_name}/bulgarian +%lang(cs) %{_datadir}/%{pkg_name}/czech +%lang(da) %{_datadir}/%{pkg_name}/danish +%lang(nl) %{_datadir}/%{pkg_name}/dutch +%lang(et) %{_datadir}/%{pkg_name}/estonian +%lang(fr) %{_datadir}/%{pkg_name}/french +%lang(de) %{_datadir}/%{pkg_name}/german +%lang(el) %{_datadir}/%{pkg_name}/greek +%lang(hu) %{_datadir}/%{pkg_name}/hungarian +%lang(it) %{_datadir}/%{pkg_name}/italian +%lang(ja) %{_datadir}/%{pkg_name}/japanese +%lang(ko) %{_datadir}/%{pkg_name}/korean +%lang(no) %{_datadir}/%{pkg_name}/norwegian +%lang(no) %{_datadir}/%{pkg_name}/norwegian-ny +%lang(pl) %{_datadir}/%{pkg_name}/polish +%lang(pt) %{_datadir}/%{pkg_name}/portuguese +%lang(ro) %{_datadir}/%{pkg_name}/romanian +%lang(ru) %{_datadir}/%{pkg_name}/russian +%lang(sr) %{_datadir}/%{pkg_name}/serbian +%lang(sk) %{_datadir}/%{pkg_name}/slovak +%lang(es) %{_datadir}/%{pkg_name}/spanish +%lang(sv) %{_datadir}/%{pkg_name}/swedish +%lang(uk) %{_datadir}/%{pkg_name}/ukrainian +%endif + +%files server +%{_bindir}/myisamchk +%{_bindir}/myisam_ftdump +%{_bindir}/myisamlog +%{_bindir}/myisampack +%{_bindir}/mysql_convert_table_format +%{_bindir}/mysql_fix_extensions +%{_bindir}/mysql_install_db +%{_bindir}/mysql_secure_installation +%{_bindir}/mysql_setpermission +%{_bindir}/mysql_tzinfo_to_sql +%{_bindir}/mysql_upgrade +%{_bindir}/mysql_zap +%{_bindir}/mysqlbug +%{_bindir}/mysqldumpslow +%{_bindir}/mysqld_multi +%{_bindir}/mysqld_safe +%{_bindir}/mysqlhotcopy +%{_bindir}/mysqltest +%{_bindir}/innochecksum +%{_bindir}/perror +%{_bindir}/replace +%{_bindir}/resolve_stack_dump +%{_bindir}/resolveip + +%config(noreplace) %{_sysconfdir}/my.cnf.d/%{pkg_name}-server.cnf +%{_libexecdir}/mysqld +%if %{with init_systemd} && 0%{?scl:1} +%{_libexecdir}/mysqld_safe-scl-helper +%endif + +%{_libdir}/mysql/INFO_SRC +%{_libdir}/mysql/INFO_BIN +%if %{without common} +%dir %{_datadir}/%{pkg_name} +%endif + +%{_libdir}/mysql/plugin + +%{_mandir}/man1/myisamchk.1* +%{_mandir}/man1/myisamlog.1* +%{_mandir}/man1/myisampack.1* +%{_mandir}/man1/mysql_convert_table_format.1* +%{_mandir}/man1/myisam_ftdump.1* +%{_mandir}/man1/mysql.server.1* +%{_mandir}/man1/mysql_fix_extensions.1* +%{_mandir}/man1/mysql_install_db.1* +%{_mandir}/man1/mysql_secure_installation.1* +%{_mandir}/man1/mysql_upgrade.1* +%{_mandir}/man1/mysql_zap.1* +%{_mandir}/man1/mysqlbug.1* +%{_mandir}/man1/mysqldumpslow.1* +%{_mandir}/man1/mysqld_multi.1* +%{_mandir}/man1/mysqld_safe.1* +%{_mandir}/man1/mysqlhotcopy.1* +%{_mandir}/man1/mysqlman.1* +%{_mandir}/man1/mysql_setpermission.1* +%{_mandir}/man1/mysqltest.1* +%{_mandir}/man1/innochecksum.1* +%{_mandir}/man1/perror.1* +%{_mandir}/man1/replace.1* +%{_mandir}/man1/resolve_stack_dump.1* +%{_mandir}/man1/resolveip.1* +%{_mandir}/man1/mysql_tzinfo_to_sql.1* +%{_mandir}/man8/mysqld.8* + +%{_datadir}/%{pkg_name}/dictionary.txt +%{_datadir}/%{pkg_name}/fill_help_tables.sql +%{_datadir}/%{pkg_name}/innodb_memcached_config.sql +%{_datadir}/%{pkg_name}/mysql_security_commands.sql +%{_datadir}/%{pkg_name}/mysql_system_tables.sql +%{_datadir}/%{pkg_name}/mysql_system_tables_data.sql +%{_datadir}/%{pkg_name}/mysql_test_data_timezone.sql +%{_datadir}/%{pkg_name}/my-*.cnf + +%{daemondir}/%{daemon_name}* +%{_libexecdir}/mysql-prepare-db-dir +%{_libexecdir}/mysql-wait-ready +%{_libexecdir}/mysql-wait-stop +%{_libexecdir}/mysql-check-socket +%{_libexecdir}/mysql-check-upgrade +%{_libexecdir}/mysql-scripts-common + +%{?with_init_systemd:%{_tmpfilesdir}/%{name}.conf} +%attr(0755,mysql,mysql) %dir %{dbdatadir} +%{?scl:%attr(0755,mysql,mysql) %dir /var/lib/mysql} +%attr(0755,mysql,mysql) %dir %{pidfiledir} +%attr(0755,mysql,mysql) %dir %{_localstatedir}/lib/mysql +%attr(0750,mysql,mysql) %dir %{logfiledir} +%attr(0640,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{logfile} +%config(noreplace) %{logrotateddir}/%{daemon_name} + +%{?scl:%config(noreplace) %{?_scl_scripts}/service-environment} + +%if %{with devel} +%files devel +%{_bindir}/mysql_config +%{_bindir}/mysql_config-%{__isa_bits} +%{_includedir}/mysql +%{_datadir}/aclocal/mysql.m4 +%if %{with clibrary} +%{_libdir}/mysql/libmysqlclient.so +%{_libdir}/mysql/libmysqlclient_r.so +%endif +%{_mandir}/man1/mysql_config.1* +%endif + +%if %{with embedded} +%files embedded +%{_libdir}/mysql/libmysqld.so.* + +%files embedded-devel +%{_libdir}/mysql/libmysqld.so +%{_bindir}/mysql_client_test_embedded +%{_bindir}/mysqltest_embedded +%{_mandir}/man1/mysql_client_test_embedded.1* +%{_mandir}/man1/mysqltest_embedded.1* +%endif + +%if %{with bench} +%files bench +%{_datadir}/sql-bench +%endif + +%if %{with test} +%files test +%{_bindir}/mysql_client_test +%{_bindir}/my_safe_process +%attr(-,mysql,mysql) %{_datadir}/mysql-test +%{_mandir}/man1/mysql_client_test.1* +%endif + +%changelog +* Thu May 07 2015 Honza Horak - 5.6.24-3 +- Fix using FIFO file as a general_log file + Resolves: #1219496 + +* Thu Apr 23 2015 Honza Horak - 5.6.24-2 +- Define context for pid file dir explicitely + Resolves: #1207113 +- Fix mysqladmin crash if run with -u root -p + Resolves: #1207514 + +* Thu Apr 23 2015 Matej Muzila - 5.6.24-1 +- Update to MySQL 5.6.24 containing various fixes described at: + https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-24.html +- Resolves: #1214590 +- Also fixes: CVE-2015-0501 CVE-2015-2568 CVE-2015-0499 CVE-2015-2571 + CVE-2015-0433 CVE-2015-0441 CVE-2015-0505 CVE-2015-2573 + +* Fri Mar 20 2015 Honza Horak - 5.6.23-9 +- Add dependency for semanage +- Define SELinux context for files under /etc/my.cnf.d + Related: #1203991 + +* Tue Mar 17 2015 Honza Horak - 5.6.23-8 +- Use correct comment in the init script + Related: #1184604 + +* Sat Mar 14 2015 Honza Horak - 5.6.23-7 +- Do not use system libedit + Related: #1202016 +- Daemon wrapper to run process with proper SELinux context + Resolves: #1202016 + +* Mon Mar 09 2015 Honza Horak - 5.6.23-6 +- Rebuild due to 'scls' removal + Resolves: #1200052 + +* Mon Mar 09 2015 Honza Horak - 5.6.23-5 +- Release bump + +* Tue Mar 03 2015 Honza Horak - 5.6.23-4 +- Do not use scl prefix more than once in paths + Based on https://www.redhat.com/archives/sclorg/2015-February/msg00038.html +- Check permissions when starting service on RHEL-6 + Resolves: #1194699 +- Add SELinux rules for pid file + +* Mon Feb 23 2015 Honza Horak - 5.6.23-3 +- Expand paths in perl scripts in mysql-test +- Use correct path in install_db script warning +- Use --no-defaults when checking server status before starting + +* Wed Feb 18 2015 Honza Horak - 5.6.23-2 +- Wait for daemon ends + Related: #1072958 + +* Wed Feb 18 2015 Bjorn Munch - 5.6.23-1 +- Update to MySQL 5.6.23, for various fixes described at + https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-23.html +- Expired certs patch now obsolete +- Fixed changelog +- Refreshed file contents patch +- Fix typo in server.cnf.in + +* Wed Feb 18 2015 Honza Horak - 5.6.22-16 +- Remove NFS register feature for questionable usage for DBs + +* Wed Feb 18 2015 Honza Horak - 5.6.22-15 +- Create directory for socket in build for SCL + +* Wed Feb 18 2015 Honza Horak - 5.6.22-14 +- Require scl_source if building for scl + +* Tue Jan 27 2015 Honza Horak - 5.6.22-13 +- Do not require -libs in -devel if -libs not built + +* Tue Jan 27 2015 Honza Horak - 5.6.22-12 +- Do not define selinux specifically for /var/run and config, it is done + generally for all /etc and /var + +* Mon Jan 26 2015 Honza Horak - 5.6.22-11 +- Do not set selinux context scl root during scl register + +* Mon Jan 26 2015 Honza Horak - 5.6.22-10 +- Restorecon on sclroot in post script and move selinux actions before working + with the service + +* Sun Jan 25 2015 Honza Horak - 5.6.22-9 +- Filter provides from daemon binary + +* Sun Jan 25 2015 Honza Horak - 5.6.22-8 +- Use scl call in the logrotate script + +* Sun Jan 25 2015 Honza Horak - 5.6.22-7 +- Do not create log file in post script + +* Sun Jan 25 2015 Honza Horak - 5.6.22-6 +- Use pkg_name for files in share + +* Sat Jan 24 2015 Honza Horak - 5.6.22-5 +- Fix path for sysconfig file + Filter provides in el6 properly + Fix initscript file location + +* Sat Jan 17 2015 Honza Horak - 5.6.22-3 +- Move service-environment into mariadb package +- Implement scl register functionality + +* Mon Jan 12 2015 Honza Horak - 5.6.22-2 +- Add configuration file for server + +* Wed Dec 3 2014 Jakub Dorňák - 5.6.22-1 +- Update to MySQL 5.6.22 + +* Wed Oct 08 2014 Bjorn Munch - 5.6.21-5 +- Fix rhbz #1149986 + +* Wed Oct 01 2014 Honza Horak - 5.6.21-4 +- Add bcond_without mysql_names + +* Mon Sep 29 2014 Honza Horak - 5.6.21-3 +- Check upgrade script added to warn about need for mysql_upgrade +- Move mysql_plugin into base and errmsg-utf8.txt into -errmsg to correspond + with MariaDB upstream packages +- Add with_debug option + +* Thu Sep 25 2014 Bjorn Munch - 5.6.21-2 +- Using %%cmake macro break some tests, reverted +- Unwanted dtrace dep fixed upstream + +* Wed Sep 24 2014 Honza Horak - 5.6.20-1 +- Update to MySQL 5.6.21, for various fixes described at + http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-21.html + +* Thu Sep 04 2014 Honza Horak - 5.6.20-5 +- Fix paths in mysql_install_db script + Related: #1134328 +- Use %%cmake macro +- Install systemd service file on RHEL-7+ + Server requires any mysql package, so it should be fine with older client + +* Sat Aug 16 2014 Fedora Release Engineering - 5.6.20-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Aug 12 2014 Honza Horak - 5.6.20-3 +- Introduce -config subpackage and ship base config files here + +* Tue Aug 05 2014 Honza Horak - 5.6.20-2 +- Adopt changes from mariadb to sync spec files + +* Thu Jul 31 2014 Bjorn Munch - 5.6.20-1 +- Update to MySQL 5.6.20, for various fixes described at + https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-20.html +- Rebase install and pluginerrmsg patch +- Drop dos2unix from buildreq, files fixed upstream +- No need to add -O3, it's default +- LDFLAGS is passed by cmake option, not from environment +- Using __requires_exclude in conditional don't seems to work, swap + to dist macros +- Avoid unwanted dtrace dep +- Fix mysql.init and mysql-prepare-db-dir +- Logfile name must match value from /etc/my.cnf (and be known + by SELinux policy) + +* Tue Jul 22 2014 Honza Horak - 5.6.19-5 +- Hardcoded paths removed to work fine in chroot +- Spec rewrite to be more similar to oterh MySQL implementations +- Include SysV init script if built on older system +- Add possibility to not ship some sub-packages +- Port scripts for systemd unit from MariaDB + +* Mon Jul 21 2014 Honza Horak - 5.6.19-4 +- Port some latest changes from MariaDB package to sync those packages +- Error messages now provided by a separate package (thanks Alexander Barkov) + +* Fri Jun 27 2014 Honza Horak - 5.6.19-3 +- Add mysql-compat-server symbol, common symbol for arbitrary MySQL + implementation +- Require /etc/my.cnf instead of shipping it +- Server requires any compatible mysql-compat-client package + +* Thu Jun 12 2014 Bjorn Munch - 5.6.19-2 +- Fix build on aarch64 +- Rebase cipherspec patch + +* Wed Jun 11 2014 Bjorn Munch - 5.6.19-1 +- Update to MySQL 5.6.19, for various fixes described at + https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-19.html +- outfile_loaddata resolved on all archs +- Solaris files not installed, no need to remove +- Simplify multilib install +- Use install's -D option some places +- Add explicit conflict with mariadb-galera-server + +* Sat Jun 07 2014 Fedora Release Engineering - 5.6.17-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri Apr 18 2014 Bjorn Munch 5.6.17-2 +- Fix multiple mtr sessions + +* Fri Apr 04 2014 Bjorn Munch 5.6.17-1 +- Update to MySQL 5.6.17, for various fixes described at + https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-17.html +- libmysqld built as shared lib now supported upstream +- Remove patches now upstream: truncate-file, rhbz1059545, ssltest + and regex-werror +- Use more standard (and tested) build flags, while still respect + optflags and hardened_build +- libmysqlclient_r* symlinks are fixed upstream +- Remove sysv to systemd logic +- Rework skipping of arch specific tests +- Multiple mtr sessions are supported by default + +* Mon Feb 3 2014 Honza Horak 5.6.16-2 +- Rebuild -man-pages.patch to apply smoothly + +* Fri Jan 31 2014 Bjorn Munch 5.6.16-1 +- Update to MySQL 5.6.16, for various fixes described at + https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-16.html +- Patches now upstream: tmpdir, cve-2013-1861, covscan-signexpr, + covscan-stroverflow +- Fixed upstream: innodbwarn +- ldconfig needed in embedded subpackage +- Remove unused generate-tarball.sh from tree +- Rediff mysql-install patch +- Make symvers 18 default, provide symvers 16 for backward compat + (bz #1045013) +- Man page patch disabled due too many conflicts +- Memcached build patched to not remove -Werror= in CFLAGS + +* Thu Jan 30 2014 Honza Horak 5.6.15-4 + Fix for CVE-2014-0001 + Resolves: #1059545 +- Don't test EDH-RSA-DES-CBC-SHA cipher, it seems to be removed from openssl + which now makes mariadb/mysql FTBFS because openssl_1 test fails + Related: #1044565 + +* Fri Jan 24 2014 Honza Horak 5.6.15-3 +- Disable tests for ppc(64) and s390(x): + innodb.innodb_ctype_ldml main.ctype_ldml main.ps_ddl main.ps_ddl1 + Related: #1056972 + +* Mon Dec 16 2013 Honza Horak 5.6.15-2 +- Some spec file clean-up based on Bjorn Munch's suggestions +- Enable InnoDB Memcached plugin + +* Mon Dec 9 2013 Honza Horak 5.6.15-1 +- Update to MySQL 5.6.15, for various fixes described at + https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-15.html + +* Fri Oct 11 2013 Honza Horak 5.6.14-2 +- Fix my.cnf to not conflict with mariadb + Resolves: #1003115 + +* Wed Oct 9 2013 Honza Horak 5.6.14-1 +- Update to MySQL 5.6.14, for various fixes described at + https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-14.html +- Incorporate changes done by Bjorn Munch + +* Mon Sep 2 2013 Honza Horak 5.5.33-2 +- Enhanced my.cnf to be the same as in mariadb + Resolves: #1003115 + +* Tue Aug 20 2013 Honza Horak 5.5.33-1 +- Update to MySQL 5.5.33, for various fixes described at + http://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-33.html + +* Tue Aug 20 2013 Honza Horak 5.5.32-12 +- Fix multilib header location for arm + +* Sat Aug 03 2013 Petr Pisar - 5.5.32-11 +- Perl 5.18 rebuild + +* Fri Jul 26 2013 Honza Horak 5.5.32-10 +- Copy some generated files in order find-debuginfo.sh finds them + Related: #729040 +- Fix systemd and perl requirements + +* Wed Jul 17 2013 Petr Pisar - 5.5.32-9 +- Perl 5.18 rebuild + +* Mon Jul 15 2013 Honza Horak 5.5.32-8 +- Revert path change to ldconfig, UsrMove is not complete yet + +* Wed Jul 10 2013 Honza Horak 5.5.32-7 +- Arm support for multilib hacks + +* Tue Jul 9 2013 Honza Horak 5.5.32-6 +- Use proper path to ldconfig +- Use xz instead of gzip + Resolves: #982387 + +* Mon Jul 1 2013 Honza Horak 5.5.32-5 +- Fix misleading error message when uninstalling built-in plugins + Related: #966645 + +* Thu Jun 27 2013 Honza Horak 5.5.32-4 +- Remove external man pages, upstream fixed man pages license +- Apply fixes found by Coverity static analysis tool + +* Fri Jun 14 2013 Honza Horak 5.5.32-3 +- Use man pages from 5.5.30, because their license do not + allow us to ship them since 5.5.31 + +* Fri Jun 7 2013 Honza Horak 5.5.32-1 +- Update to MySQL 5.5.32, for various fixes described at + http://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-32.html + +* Mon Jun 3 2013 Honza Horak 5.5.31-7 +- Use /var/tmp as default tmpdir to prevent potential issues + Resolves: #905635 +- Fix test suite requirements +- Fix for CVE-2013-1861 backported from MariaDB + Resolves: #921836 + +* Wed May 29 2013 Jan Stanek 5.5.31-6 +- Added missing command-line options to man-pages (#948930) + +* Tue Apr 30 2013 Honza Horak 5.5.31-5 +- Remove mysql provides from devel sub-packages to not build against + community-mysql if mysql-devel is specified + +* Fri Apr 26 2013 Honza Horak 5.5.31-4 +- Fix building with relro and PIE + +* Thu Apr 25 2013 Honza Horak 5.5.31-3 +- Fix paths in -plugin-test patch + +* Mon Apr 22 2013 Honza Horak 5.5.31-2 +- Build with _hardened_build +- Fix some paths and require perl(Env), which is needed by tests + +* Fri Apr 19 2013 Honza Horak 5.5.31-1 +- Update to MySQL 5.5.31, for various fixes described at + http://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-31.html + +* Wed Mar 20 2013 Honza Horak 5.5.30-5 +- Renaming package MySQL to community-mysql to handle issues + introduced by case-insensitive operations of yum and for proper + prioritizing mariadb over community-mysql + +* Tue Mar 12 2013 Honza Horak 5.5.30-4 +- Allow server to be installed without client side +- Separate -lib and -common sub-packages +- Fix some path issues in tests + +* Mon Mar 11 2013 Honza Horak 5.5.30-3 +- Adjusting major soname number of libmysqlclient to avoid + library name conflicts with mariadb + +* Tue Feb 12 2013 Honza Horak 5.5.30-1 +- Update to MySQL 5.5.30, for various fixes described at + http://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-30.html + +* Tue Feb 12 2013 Honza Horak 5.5.29-3 +- Use real- prefix for cross-package requirements + +* Mon Feb 11 2013 Honza Horak 5.5.29-2 +- Provide own symbols with real- prefix to distinguish packages from other + MySQL implementations unambiguously + +* Wed Jan 2 2013 Tom Lane 5.5.29-1 +- Update to MySQL 5.5.29, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-29.html +- Fix inaccurate default for socket location in mysqld-wait-ready +Resolves: #890535 + +* Thu Dec 6 2012 Honza Horak 5.5.28-3 +- Rebase patches to not leave backup files when not applied smoothly +- Use --no-backup-if-mismatch to prevent including backup files + +* Wed Dec 5 2012 Tom Lane 5.5.28-2 +- Add patch for CVE-2012-5611 +Resolves: #883642 +- Widen DH key length from 512 to 1024 bits to meet minimum requirements + of FIPS 140-2 +Related: #877124 + +* Sat Sep 29 2012 Tom Lane 5.5.28-1 +- Update to MySQL 5.5.28, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-28.html +- Clean up partially-created database files when mysql_install_db fails +Related: #835131 +- Honor user and group settings from service file in mysqld-prepare-db-dir +Resolves: #840431 +- Export THR_KEY_mysys as a workaround for inadequate threading support +Resolves: #846602 +- Adopt new systemd macros for server package install/uninstall triggers +Resolves: #850222 +- Use --no-defaults when invoking mysqladmin to wait for the server to start +Related: #855704 + +* Sun Aug 5 2012 Tom Lane 5.5.27-1 +- Update to MySQL 5.5.27, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-27.html + +* Fri Jul 20 2012 Fedora Release Engineering - 5.5.25a-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jul 6 2012 Tom Lane 5.5.25a-1 +- Update to MySQL 5.5.25a, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-25a.html + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-25.html +- Don't use systemd's Restart feature; rely on mysqld_safe instead +Resolves: #832029 + +* Mon Jun 11 2012 Tom Lane 5.5.24-1 +- Update to MySQL 5.5.24, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-24.html + including the fix for CVE-2012-2122 +Resolves: #830680 +- Tweak logrotate script to put the right permissions on mysqld.log +- Minor specfile fixes for recent packaging guidelines changes + +* Sat Apr 28 2012 Tom Lane 5.5.23-1 +- Update to MySQL 5.5.23, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-23.html + +* Sat Mar 24 2012 Tom Lane 5.5.22-1 +- Update to MySQL 5.5.22, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-22.html +- Turn on PrivateTmp in service file +Resolves: #782513 +- Comment out the contents of /etc/logrotate.d/mysqld, so that manual + action is needed to enable log rotation. Given the multiple ways in + which the rotation script can fail, it seems imprudent to try to make + it run by default. +Resolves: #799735 + +* Tue Mar 20 2012 Honza Horak 5.5.21-3 +- Revise mysql_plugin test patch so it moves plugin files to + a temporary directory (better solution to #789530) + +* Tue Mar 13 2012 Honza Horak 5.5.21-2 +- Fix ssl-related tests to specify expected cipher explicitly +Related: #789600 +- Fix several strcpy calls to check destination size + +* Mon Feb 27 2012 Tom Lane 5.5.21-1 +- Update to MySQL 5.5.21, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-21.html +- Hack openssl regression test to still work with rawhide's openssl +- Fix assorted failures in post-install regression tests (mysql-test RPM) +Resolves: #789530 + +* Fri Feb 10 2012 Tom Lane 5.5.20-2 +- Revise our test-disabling method to make it possible to disable tests on a + platform-specific basis, and also to get rid of mysql-disable-test.patch, + which broke in just about every upstream update (Honza Horak) +- Disable cycle-counter-dependent regression tests on ARM, since there is + not currently any support for that in Fedora ARM kernels +Resolves: #773116 +- Add some comments to mysqld.service documenting how to customize it +Resolves: #785243 + +* Fri Jan 27 2012 Tom Lane 5.5.20-1 +- Update to MySQL 5.5.20, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-20.html + as well as security fixes described at + http://www.oracle.com/technetwork/topics/security/cpujan2012-366304.html +Resolves: #783828 +- Re-include the mysqld logrotate script, now that it's not so bogus +Resolves: #547007 + +* Wed Jan 4 2012 Tom Lane 5.5.19-1 +- Update to MySQL 5.5.19, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-19.html + +* Sun Nov 20 2011 Tom Lane 5.5.18-1 +- Update to MySQL 5.5.18, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-18.html + +* Sat Nov 12 2011 Tom Lane 5.5.17-1 +- Update to MySQL 5.5.17, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-17.html +- Get rid of version-number assumption in sysv-to-systemd conversion trigger + +* Wed Nov 02 2011 Honza Horak 5.5.16-4 +- Don't assume all ethernet devices are named ethX +Resolves: #682365 +- Exclude user definition from my.cnf, user is defined in mysqld.service now +Resolves: #661265 + +* Sun Oct 16 2011 Tom Lane 5.5.16-3 +- Fix unportable usage associated with va_list arguments +Resolves: #744707 + +* Sun Oct 16 2011 Tom Lane 5.5.16-2 +- Update to MySQL 5.5.16, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-16.html + +* Fri Jul 29 2011 Tom Lane 5.5.15-2 +- Update to MySQL 5.5.15, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-15.html + +* Wed Jul 27 2011 Tom Lane 5.5.14-3 +- Convert to systemd startup support (no socket activation, for now anyway) +Related: #714426 + +* Tue Jul 12 2011 Tom Lane 5.5.14-2 +- Remove make_scrambled_password and make_scrambled_password_323 from mysql.h, + since we're not allowing clients to call those functions anyway +Related: #690346 + +* Mon Jul 11 2011 Tom Lane 5.5.14-1 +- Update to MySQL 5.5.14, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-14.html + +* Wed Jul 6 2011 Tom Lane 5.5.13-2 +- Remove erroneously-included Default-Start line from LSB init block +Resolves: #717024 + +* Thu Jun 2 2011 Tom Lane 5.5.13-1 +- Update to MySQL 5.5.13, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-13.html + +* Tue May 10 2011 Tom Lane 5.5.12-1 +- Update to MySQL 5.5.12, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-12.html + +* Tue May 10 2011 Tom Lane 5.5.10-3 +- Add LSB init block to initscript, to ensure sane ordering at system boot +Resolves: #703214 +- Improve initscript start action to notice when mysqladmin is failing + because of configuration problems +Related: #703476 +- Remove exclusion of "gis" regression test, since upstream bug 59908 + is fixed (for some value of "fixed") as of 5.5.10. + +* Wed Mar 23 2011 Tom Lane 5.5.10-2 +- Add my_make_scrambled_password to the list of symbols exported by + libmysqlclient.so. Needed at least by pure-ftpd. + +* Mon Mar 21 2011 Tom Lane 5.5.10-1 +- Update to MySQL 5.5.10, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-10.html + Note that this includes a rather belated soname version bump for + libmysqlclient.so, from .16 to .18 +- Add tmpfiles.d config file so that /var/run/mysqld is recreated at boot + (only needed in Fedora 15 and later) +Resolves: #658938 + +* Wed Feb 16 2011 Tom Lane 5.5.9-2 +- Disable a regression test that is now showing platform-dependent results +Resolves: #674253 + +* Sat Feb 12 2011 Tom Lane 5.5.9-1 +- Update to MySQL 5.5.9, for various fixes described at + http://dev.mysql.com/doc/refman/5.5/en/news-5-5-9.html +- Add %%{?_isa} to cross-subpackage Requires, per latest packaging guidelines + +* Tue Feb 08 2011 Fedora Release Engineering - 5.5.8-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Feb 4 2011 Tom Lane 5.5.8-9 +- Support s390/s390x in performance schema's cycle-counting functions + (needed to make regression tests pass on these platforms) + +* Thu Feb 3 2011 Tom Lane 5.5.8-8 +- PPC64 floating-point differences are not masked by -ffloat-store after all, + so let's just disable gis regression test till upstream makes it less picky +Resolves: #674253 +- Add __perllib_requires setting to make rpm 4.9 do what we need + +* Wed Feb 2 2011 Tom Lane 5.5.8-7 +- Work around some portability issues on PPC64 +Resolves: #674253 + +* Thu Jan 20 2011 Tom Lane 5.5.8-6 +- Remove no-longer-needed special switches in CXXFLAGS, per yesterday's + discussion in fedora-devel about -fexceptions. +- Rebuild needed anyway to check compatibility with latest systemtap. + +* Thu Jan 13 2011 Tom Lane 5.5.8-5 +- Fix failure to honor MYSQL_HOME environment variable +Resolves: #669364 + +* Thu Jan 13 2011 Tom Lane 5.5.8-4 +- Fix crash during startup of embedded mysqld library +Resolves: #667365 + +* Mon Jan 3 2011 Tom Lane 5.5.8-3 +- my_print_help, load_defaults, free_defaults, and handle_options all turn + out to be documented/recommended in Paul DuBois' MySQL book, so we'd better + consider them part of the de-facto API. +Resolves: #666728 + +* Mon Dec 27 2010 Tom Lane 5.5.8-2 +- Add mysql_client_errors[] to the set of exported libmysqlclient symbols; + needed by PHP. + +* Thu Dec 23 2010 Tom Lane 5.5.8-1 +- Update to MySQL 5.5.8 (major version bump). Note this includes removal + of libmysqlclient_r.so. +- Add a linker version script to hide libmysqlclient functions that aren't + part of the documented API. + +* Mon Nov 1 2010 Tom Lane 5.1.52-1 +- Update to MySQL 5.1.52, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-52.html +Resolves: #646569 + +* Thu Oct 7 2010 Tom Lane 5.1.51-2 +- Re-disable the outfile_loaddata test, per report from Dan Horak. + +* Wed Oct 6 2010 Tom Lane 5.1.51-1 +- Update to MySQL 5.1.51, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-51.html + +* Sat Aug 28 2010 Tom Lane 5.1.50-2 +- Include my_compiler.h in distribution, per upstream bug #55846. + Otherwise PHP, for example, won't build. + +* Sat Aug 28 2010 Tom Lane 5.1.50-1 +- Update to MySQL 5.1.50, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-50.html + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-49.html + +* Wed Jul 14 2010 Tom Lane 5.1.48-3 +- Fix FTBFS with gcc 4.5. +Related: #614293 + +* Tue Jul 13 2010 Tom Lane 5.1.48-2 +- Duplicate COPYING and EXCEPTIONS-CLIENT in -libs and -embedded subpackages, + to ensure they are available when any subset of mysql RPMs are installed, + per revised packaging guidelines +- Allow init script's STARTTIMEOUT/STOPTIMEOUT to be overridden from sysconfig +Related: #609734 + +* Mon Jun 21 2010 Tom Lane 5.1.48-1 +- Update to MySQL 5.1.48, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-48.html + including a fix for CVE-2010-2008 +Related: #614214 + +* Fri Jun 4 2010 Tom Lane 5.1.47-2 +- Add back "partition" storage engine +Resolves: #597390 +- Fix broken "federated" storage engine plugin +Related: #587170 +- Read all certificates in SSL certificate files, to support chained certs +Related: #598656 + +* Mon May 24 2010 Tom Lane 5.1.47-1 +- Update to MySQL 5.1.47, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-47.html + including fixes for CVE-2010-1848, CVE-2010-1849, CVE-2010-1850 +Resolves: #592862 +Resolves: #583717 +- Create mysql group explicitly in pre-server script, to ensure correct GID +Related: #594155 + +* Sat Apr 24 2010 Tom Lane 5.1.46-1 +- Update to MySQL 5.1.46, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-46.html + +* Thu Mar 25 2010 Tom Lane 5.1.45-2 +- Fix multiple problems described in upstream bug 52019, because regression + tests fail on PPC if we don't. + +* Wed Mar 24 2010 Tom Lane 5.1.45-1 +- Update to MySQL 5.1.45, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-45.html + +* Sun Feb 21 2010 Tom Lane 5.1.44-2 +- Add "Obsoletes: mysql-cluster" to fix upgrade-in-place from F-12 +- Bring init script into some modicum of compliance with Fedora/LSB standards +Related: #557711 +Related: #562749 + +* Sat Feb 20 2010 Tom Lane 5.1.44-1 +- Update to MySQL 5.1.44, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-44.html +- Remove mysql.info, which is not freely redistributable +Resolves: #560181 +- Revert broken upstream fix for their bug 45058 +Resolves: #566547 + +* Sat Feb 13 2010 Tom Lane 5.1.43-2 +- Remove mysql-cluster, which is no longer supported by upstream in this + source distribution. If we want it we'll need a separate SRPM for it. + +* Fri Feb 12 2010 Tom Lane 5.1.43-1 +- Update to MySQL 5.1.43, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-43.html + +* Fri Jan 29 2010 Tom Lane 5.1.42-7 +- Add backported patch for CVE-2008-7247 (upstream bug 39277) +Related: #543619 +- Use non-expired certificates for SSL testing (upstream bug 50702) + +* Tue Jan 26 2010 Tom Lane 5.1.42-6 +- Emit explicit error message if user tries to build RPM as root +Related: #558915 + +* Wed Jan 20 2010 Tom Lane 5.1.42-5 +- Correct Source0: tag and comment to reflect how to get the tarball + +* Fri Jan 8 2010 Tom Lane 5.1.42-4 +- Disable symbolic links by default in /etc/my.cnf +Resolves: #553652 + +* Tue Jan 5 2010 Tom Lane 5.1.42-3 +- Remove static libraries (.a files) from package, per packaging guidelines +- Change %%define to %%global, per packaging guidelines + +* Sat Jan 2 2010 Tom Lane 5.1.42-2 +- Disable building the innodb plugin; it tickles assorted gcc bugs and + doesn't seem entirely ready for prime time anyway. + +* Fri Jan 1 2010 Tom Lane 5.1.42-1 +- Update to MySQL 5.1.42, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-42.html +- Start mysqld_safe with --basedir=/usr, to avoid unwanted SELinux messages +Resolves: #547485 + +* Thu Dec 17 2009 Tom Lane 5.1.41-2 +- Stop waiting during "service mysqld start" if mysqld_safe exits +Resolves: #544095 + +* Mon Nov 23 2009 Tom Lane 5.1.41-1 +- Update to MySQL 5.1.41, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-41.html + including fixes for CVE-2009-4019 +Related: #540906 +- Don't set old_passwords=1; we aren't being bug-compatible with 3.23 anymore +Resolves: #540735 + +* Tue Nov 10 2009 Tom Lane 5.1.40-1 +- Update to MySQL 5.1.40, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-40.html +- Do not force the --log-error setting in mysqld init script +Resolves: #533736 + +* Sat Oct 17 2009 Tom Lane 5.1.39-4 +- Replace kluge fix for ndbd sparc crash with a real fix (mysql bug 48132) + +* Thu Oct 15 2009 Tom Lane 5.1.39-3 +- Work around two different compiler bugs on sparc, one by backing off + optimization from -O2 to -O1, and the other with a klugy patch +Related: #529298, #529299 +- Clean up bogosity in multilib stub header support: ia64 should not be + listed (it's not multilib), sparc and sparc64 should be + +* Wed Sep 23 2009 Tom Lane 5.1.39-2 +- Work around upstream bug 46895 by disabling outfile_loaddata test + +* Tue Sep 22 2009 Tom Lane 5.1.39-1 +- Update to MySQL 5.1.39, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-39.html + +* Mon Aug 31 2009 Tom Lane 5.1.37-5 +- Work around unportable assumptions about stpcpy(); re-enable main.mysql test +- Clean up some obsolete parameters to the configure script + +* Sat Aug 29 2009 Tom Lane 5.1.37-4 +- Remove one misguided patch; turns out I was chasing a glibc bug +- Temporarily disable "main.mysql" test; there's something broken there too, + but we need to get mysql built in rawhide for dependency reasons + +* Fri Aug 21 2009 Tomas Mraz - 5.1.37-3 +- rebuilt with new openssl + +* Fri Aug 14 2009 Tom Lane 5.1.37-2 +- Add a couple of patches to improve the probability of the regression tests + completing in koji builds + +* Sun Aug 2 2009 Tom Lane 5.1.37-1 +- Update to MySQL 5.1.37, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-37.html + +* Sat Jul 25 2009 Fedora Release Engineering - 5.1.36-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Jul 10 2009 Tom Lane 5.1.36-1 +- Update to MySQL 5.1.36, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-36.html + +* Sat Jun 6 2009 Tom Lane 5.1.35-1 +- Update to MySQL 5.1.35, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-35.html +- Ensure that /var/lib/mysql is created with the right SELinux context +Resolves: #502966 + +* Fri May 15 2009 Tom Lane 5.1.34-1 +- Update to MySQL 5.1.34, for various fixes described at + http://dev.mysql.com/doc/refman/5.1/en/news-5-1-34.html +- Increase startup timeout per bug #472222 + +* Wed Apr 15 2009 Tom Lane 5.1.33-2 +- Increase stack size of ndbd threads for safety's sake. +Related: #494631 + +* Tue Apr 7 2009 Tom Lane 5.1.33-1 +- Update to MySQL 5.1.33. +- Disable use of pthread_setschedparam; doesn't work the way code expects. +Related: #477624 + +* Wed Mar 4 2009 Tom Lane 5.1.32-1 +- Update to MySQL 5.1.32. + +* Wed Feb 25 2009 Fedora Release Engineering - 5.1.31-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Feb 13 2009 Tom Lane 5.1.31-1 +- Update to MySQL 5.1.31. + +* Thu Jan 22 2009 Tom Lane 5.1.30-2 +- hm, apparently --with-innodb and --with-ndbcluster are still needed + even though no longer documented ... + +* Thu Jan 22 2009 Tom Lane 5.1.30-1 +- Update to MySQL 5.1.30. Note that this includes an ABI break for + libmysqlclient (it's now got .so major version 16). +- This also updates mysql for new openssl build + +* Wed Oct 1 2008 Tom Lane 5.0.67-2 +- Build the "embedded server" library, and package it in a new sub-RPM + mysql-embedded, along with mysql-embedded-devel for devel support files. +Resolves: #149829 + +* Sat Aug 23 2008 Tom Lane 5.0.67-1 +- Update to mysql version 5.0.67 +- Move mysql_config's man page to base package, again (apparently I synced + that change the wrong way while importing specfile changes for ndbcluster) + +* Sun Jul 27 2008 Tom Lane 5.0.51a-2 +- Enable ndbcluster support +Resolves: #163758 +- Suppress odd crash messages during package build, caused by trying to + build dbug manual (which we don't install anyway) with dbug disabled +Resolves: #437053 +- Improve mysql.init to pass configured datadir to mysql_install_db, + and to force user=mysql for both mysql_install_db and mysqld_safe. +Related: #450178 + +* Mon Mar 3 2008 Tom Lane 5.0.51a-1 +- Update to mysql version 5.0.51a + +* Mon Mar 3 2008 Tom Lane 5.0.45-11 +- Fix mysql-stack-guard patch to work correctly on IA64 +- Fix mysql.init to wait correctly when socket is not in default place +Related: #435494 + +* Mon Mar 03 2008 Dennis Gilmore 5.0.45-10 +- add sparc64 to 64 bit arches for test suite checking +- add sparc, sparcv9 and sparc64 to multilib handling + +* Thu Feb 28 2008 Tom Lane 5.0.45-9 +- Fix the stack overflow problem encountered in January. It seems the real +issue is that the buildfarm machines were moved to RHEL5, which uses 64K not +4K pages on PPC, and because RHEL5 takes the guard area out of the requested +thread stack size we no longer had enough headroom. +Related: #435337 + +* Tue Feb 19 2008 Fedora Release Engineering - 5.0.45-8 +- Autorebuild for GCC 4.3 + +* Tue Jan 8 2008 Tom Lane 5.0.45-7 +- Unbelievable ... upstream still thinks that it's a good idea to have a + regression test that is guaranteed to begin failing come January 1. +- ... and it seems we need to raise STACK_MIN_SIZE again too. + +* Thu Dec 13 2007 Tom Lane 5.0.45-6 +- Back-port upstream fixes for CVE-2007-5925, CVE-2007-5969, CVE-2007-6303. +Related: #422211 + +* Wed Dec 5 2007 Tom Lane 5.0.45-5 +- Rebuild for new openssl + +* Sat Aug 25 2007 Tom Lane 5.0.45-4 +- Seems we need explicit BuildRequires on gawk and procps now +- Rebuild to fix Fedora toolchain issues + +* Sun Aug 12 2007 Tom Lane 5.0.45-3 +- Recent perl changes in rawhide mean we need a more specific BuildRequires + +* Thu Aug 2 2007 Tom Lane 5.0.45-2 +- Update License tag to match code. +- Work around recent Fedora change that makes "open" a macro name. + +* Sun Jul 22 2007 Tom Lane 5.0.45-1 +- Update to MySQL 5.0.45 +Resolves: #246535 +- Move mysql_config's man page to base package +Resolves: #245770 +- move my_print_defaults to base RPM, for consistency with Stacks packaging +- mysql user is no longer deleted at RPM uninstall +Resolves: #241912 + +* Thu Mar 29 2007 Tom Lane 5.0.37-2 +- Use a less hacky method of getting default values in initscript +Related: #233771, #194596 +- Improve packaging of mysql-libs per suggestions from Remi Collet +Resolves: #233731 +- Update default /etc/my.cnf ([mysql.server] has been bogus for a long time) + +* Mon Mar 12 2007 Tom Lane 5.0.37-1 +- Update to MySQL 5.0.37 +Resolves: #231838 +- Put client library into a separate mysql-libs RPM to reduce dependencies +Resolves: #205630 + +* Fri Feb 9 2007 Tom Lane 5.0.33-1 +- Update to MySQL 5.0.33 +- Install band-aid fix for "view" regression test designed to fail after 2006 +- Don't chmod -R the entire database directory tree on every startup +Related: #221085 +- Fix unsafe use of install-info +Resolves: #223713 +- Cope with new automake in F7 +Resolves: #224171 + +* Thu Nov 9 2006 Tom Lane 5.0.27-1 +- Update to MySQL 5.0.27 (see CVE-2006-4031, CVE-2006-4226, CVE-2006-4227) +Resolves: #202247, #202675, #203427, #203428, #203432, #203434, #208641 +- Fix init script to return status 1 on server start timeout +Resolves: #203910 +- Move mysqldumpslow from base package to mysql-server +Resolves: #193559 +- Adjust link options for BDB module +Resolves: #199368 + +* Wed Jul 12 2006 Jesse Keating - 5.0.22-2.1 +- rebuild + +* Sat Jun 10 2006 Tom Lane 5.0.22-2 +- Work around brew's tendency not to clean up failed builds completely, + by adding code in mysql-testing.patch to kill leftover mysql daemons. + +* Thu Jun 8 2006 Tom Lane 5.0.22-1 +- Update to MySQL 5.0.22 (fixes CVE-2006-2753) +- Install temporary workaround for gcc bug on s390x (bz #193912) + +* Tue May 2 2006 Tom Lane 5.0.21-2 +- Fix bogus perl Requires for mysql-test + +* Mon May 1 2006 Tom Lane 5.0.21-1 +- Update to MySQL 5.0.21 + +* Mon Mar 27 2006 Tom Lane 5.0.18-4 +- Modify multilib header hack to not break non-RH arches, per bug #181335 +- Remove logrotate script, per bug #180639. +- Add a new mysql-test RPM to carry the regression test files; + hack up test scripts as needed to make them run in /usr/share/mysql-test. + +* Fri Feb 10 2006 Jesse Keating - 5.0.18-2.1 +- bump again for double-long bug on ppc(64) + +* Thu Feb 9 2006 Tom Lane 5.0.18-2 +- err-log option has been renamed to log-error, fix my.cnf and initscript + +* Tue Feb 07 2006 Jesse Keating - 5.0.18-1.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Thu Jan 5 2006 Tom Lane 5.0.18-1 +- Update to MySQL 5.0.18 + +* Thu Dec 15 2005 Tom Lane 5.0.16-4 +- fix my_config.h for ppc platforms + +* Thu Dec 15 2005 Tom Lane 5.0.16-3 +- my_config.h needs to guard against 64-bit platforms that also define the + 32-bit symbol + +* Wed Dec 14 2005 Tom Lane 5.0.16-2 +- oops, looks like we want uname -i not uname -m + +* Mon Dec 12 2005 Tom Lane 5.0.16-1 +- Update to MySQL 5.0.16 +- Add EXCEPTIONS-CLIENT license info to the shipped documentation +- Make my_config.h architecture-independent for multilib installs; + put the original my_config.h into my_config_$ARCH.h +- Add -fwrapv to CFLAGS so that gcc 4.1 doesn't break it + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Nov 14 2005 Tom Lane 5.0.15-3 +- Make stop script wait for daemon process to disappear (bz#172426) + +* Wed Nov 9 2005 Tom Lane 5.0.15-2 +- Rebuild due to openssl library update. + +* Thu Nov 3 2005 Tom Lane 5.0.15-1 +- Update to MySQL 5.0.15 (scratch build for now) + +* Wed Oct 5 2005 Tom Lane 4.1.14-1 +- Update to MySQL 4.1.14 + +* Tue Aug 23 2005 Tom Lane 4.1.12-3 +- Use politically correct patch name. + +* Tue Jul 12 2005 Tom Lane 4.1.12-2 +- Fix buffer overflow newly exposed in isam code; it's the same issue + previously found in myisam, and not very exciting, but I'm tired of + seeing build warnings. + +* Mon Jul 11 2005 Tom Lane 4.1.12-1 +- Update to MySQL 4.1.12 (includes a fix for bz#158688, bz#158689) +- Extend mysql-test-ssl.patch to solve rpl_openssl test failure (bz#155850) +- Update mysql-lock-ssl.patch to match the upstream committed version +- Add --with-isam to re-enable the old ISAM table type, per bz#159262 +- Add dependency on openssl-devel per bz#159569 +- Remove manual.txt, as upstream decided not to ship it anymore; + it was redundant with the mysql.info file anyway. + +* Mon May 9 2005 Tom Lane 4.1.11-4 +- Include proper locking for OpenSSL in the server, per bz#155850 + +* Mon Apr 25 2005 Tom Lane 4.1.11-3 +- Enable openssl tests during build, per bz#155850 +- Might as well turn on --disable-dependency-tracking + +* Fri Apr 8 2005 Tom Lane 4.1.11-2 +- Avoid dependency on , cause it won't build anymore on ia64. + This is probably a cleaner solution for bz#143537, too. + +* Thu Apr 7 2005 Tom Lane 4.1.11-1 +- Update to MySQL 4.1.11 to fix bz#152911 as well as other issues +- Move perl-DBI, perl-DBD-MySQL dependencies to server package (bz#154123) +- Override configure thread library test to suppress HAVE_LINUXTHREADS check +- Fix BDB failure on s390x (bz#143537) +- At last we can enable "make test" on all arches + +* Fri Mar 11 2005 Tom Lane 4.1.10a-1 +- Update to MySQL 4.1.10a to fix security vulnerabilities (bz#150868, + for CAN-2005-0711, and bz#150871 for CAN-2005-0709, CAN-2005-0710). + +* Sun Mar 6 2005 Tom Lane 4.1.10-3 +- Fix package Requires: interdependencies. + +* Sat Mar 5 2005 Tom Lane 4.1.10-2 +- Need -fno-strict-aliasing in at least one place, probably more. +- Work around some C spec violations in mysql. + +* Fri Feb 18 2005 Tom Lane 4.1.10-1 +- Update to MySQL 4.1.10. + +* Sat Jan 15 2005 Tom Lane 4.1.9-1 +- Update to MySQL 4.1.9. + +* Wed Jan 12 2005 Tom Lane 4.1.7-10 +- Don't assume /etc/my.cnf will specify pid-file (bz#143724) + +* Wed Jan 12 2005 Tim Waugh 4.1.7-9 +- Rebuilt for new readline. + +* Tue Dec 21 2004 Tom Lane 4.1.7-8 +- Run make test on all archs except s390x (which seems to have a bdb issue) + +* Mon Dec 13 2004 Tom Lane 4.1.7-7 +- Suppress someone's silly idea that libtool overhead can be skipped + +* Sun Dec 12 2004 Tom Lane 4.1.7-6 +- Fix init script to not need a valid username for startup check (bz#142328) +- Fix init script to honor settings appearing in /etc/my.cnf (bz#76051) +- Enable SSL (bz#142032) + +* Thu Dec 2 2004 Tom Lane 4.1.7-5 +- Add a restorecon to keep the mysql.log file in the right context (bz#143887) + +* Tue Nov 23 2004 Tom Lane 4.1.7-4 +- Turn off old_passwords in default /etc/my.cnf file, for better compatibility + with mysql 3.x clients (per suggestion from Joe Orton). + +* Fri Oct 29 2004 Tom Lane 4.1.7-3 +- Handle ldconfig more cleanly (put a file in /etc/ld.so.conf.d/). + +* Thu Oct 28 2004 Tom Lane 4.1.7-2 +- rebuild in devel branch + +* Wed Oct 27 2004 Tom Lane 4.1.7-1 +- Update to MySQL 4.1.x. + +* Tue Oct 12 2004 Tom Lane 3.23.58-13 +- fix security issues CAN-2004-0835, CAN-2004-0836, CAN-2004-0837 + (bugs #135372, 135375, 135387) +- fix privilege escalation on GRANT ALL ON `Foo\_Bar` (CAN-2004-0957) + +* Wed Oct 06 2004 Tom Lane 3.23.58-12 +- fix multilib problem with mysqlbug and mysql_config +- adjust chkconfig priority per bug #128852 +- remove bogus quoting per bug #129409 (MySQL 4.0 has done likewise) +- add sleep to mysql.init restart(); may or may not fix bug #133993 + +* Tue Oct 05 2004 Tom Lane 3.23.58-11 +- fix low-priority security issues CAN-2004-0388, CAN-2004-0381, CAN-2004-0457 + (bugs #119442, 125991, 130347, 130348) +- fix bug with dropping databases under recent kernels (bug #124352) + +* Tue Jun 15 2004 Elliot Lee 3.23.58-10 +- rebuilt + +* Sat Apr 17 2004 Warren Togami 3.23.58-9 +- remove redundant INSTALL-SOURCE, manual.* +- compress manual.txt.bz2 +- BR time + +* Tue Mar 16 2004 Tom Lane 3.23.58-8 +- repair logfile attributes in %%files, per bug #102190 +- repair quoting problem in mysqlhotcopy, per bug #112693 +- repair missing flush in mysql_setpermission, per bug #113960 +- repair broken error message printf, per bug #115165 +- delete mysql user during uninstall, per bug #117017 +- rebuilt + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Tue Feb 24 2004 Tom Lane +- fix chown syntax in mysql.init +- rebuild + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Tue Nov 18 2003 Kim Ho 3.23.58-5 +- update mysql.init to use anonymous user (UNKNOWN_MYSQL_USER) for + pinging mysql server (#108779) + +* Mon Oct 27 2003 Kim Ho 3.23.58-4 +- update mysql.init to wait (max 10 seconds) for mysql server to + start (#58732) + +* Mon Oct 27 2003 Patrick Macdonald 3.23.58-3 +- re-enable Berkeley DB support (#106832) +- re-enable ia64 testing + +* Fri Sep 19 2003 Patrick Macdonald 3.23.58-2 +- rebuilt + +* Mon Sep 15 2003 Patrick Macdonald 3.23.58-1 +- upgrade to 3.23.58 for security fix + +* Tue Aug 26 2003 Patrick Macdonald 3.23.57-2 +- rebuilt + +* Wed Jul 02 2003 Patrick Macdonald 3.23.57-1 +- revert to prior version of MySQL due to license incompatibilities + with packages that link against the client. The MySQL folks are + looking into the issue. + +* Wed Jun 18 2003 Patrick Macdonald 4.0.13-4 +- restrict test on ia64 (temporary) + +* Wed Jun 04 2003 Elliot Lee 4.0.13-3 +- rebuilt + +* Thu May 29 2003 Patrick Macdonald 4.0.13-2 +- fix filter-requires-mysql.sh with less restrictive for mysql-bench + +* Wed May 28 2003 Patrick Macdonald 4.0.13-1 +- update for MySQL 4.0 +- back-level shared libraries available in mysqlclient10 package + +* Fri May 09 2003 Patrick Macdonald 3.23.56-2 +- add sql-bench package (#90110) + +* Wed Mar 19 2003 Patrick Macdonald 3.23.56-1 +- upgrade to 3.23.56 for security fixes +- remove patch for double-free (included in 3.23.56) + +* Tue Feb 18 2003 Patrick Macdonald 3.23.54a-11 +- enable thread safe client +- add patch for double free fix + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Mon Jan 13 2003 Karsten Hopp 3.23.54a-9 +- disable checks on s390x + +* Sat Jan 4 2003 Jeff Johnson 3.23.54a-8 +- use internal dep generator. + +* Wed Jan 1 2003 Bill Nottingham 3.23.54a-7 +- fix mysql_config on hammer + +* Sun Dec 22 2002 Tim Powers 3.23.54a-6 +- don't use rpms internal dep generator + +* Tue Dec 17 2002 Elliot Lee 3.23.54a-5 +- Push it into the build system + +* Mon Dec 16 2002 Joe Orton 3.23.54a-4 +- upgrade to 3.23.54a for safe_mysqld fix + +* Thu Dec 12 2002 Joe Orton 3.23.54-3 +- upgrade to 3.23.54 for latest security fixes + +* Tue Nov 19 2002 Jakub Jelinek 3.23.52-5 +- Always include for errno +- Remove unpackaged files + +* Tue Nov 12 2002 Florian La Roche +- do not prereq userdel, not used at all + +* Mon Sep 9 2002 Trond Eivind Glomsrd 3.23.52-4 +- Use %%{_libdir} +- Add patch for x86-64 + +* Wed Sep 4 2002 Jakub Jelinek 3.23.52-3 +- rebuilt with gcc-3.2-7 + +* Thu Aug 29 2002 Trond Eivind Glomsrd 3.23.52-2 +- Add --enable-local-infile to configure - a new option + which doesn't default to the old behaviour (#72885) + +* Fri Aug 23 2002 Trond Eivind Glomsrd 3.23.52-1 +- 3.23.52. Fixes a minor security problem, various bugfixes. + +* Sat Aug 10 2002 Elliot Lee 3.23.51-5 +- rebuilt with gcc-3.2 (we hope) + +* Mon Jul 22 2002 Trond Eivind Glomsrd 3.23.51-4 +- rebuild + +* Thu Jul 18 2002 Trond Eivind Glomsrd 3.23.51-3 +- Fix #63543 and #63542 + +* Thu Jul 11 2002 Trond Eivind Glomsrd 3.23.51-2 +- Turn off bdb on PPC(#68591) +- Turn off the assembly optimizations, for safety. + +* Wed Jun 26 2002 Trond Eivind Glomsrd 3.23.51-1 +- Work around annoying auto* thinking this is a crosscompile +- 3.23.51 + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Mon Jun 10 2002 Trond Eivind Glomsrd 3.23.50-2 +- Add dependency on perl-DBI and perl-DBD-MySQL (#66349) + +* Thu May 30 2002 Trond Eivind Glomsrd 3.23.50-1 +- 3.23.50 + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Mon May 13 2002 Trond Eivind Glomsrd 3.23.49-4 +- Rebuild +- Don't set CXX to gcc, it doesn't work anymore +- Exclude Alpha + +* Mon Apr 8 2002 Trond Eivind Glomsrd 3.23.49-3 +- Add the various .cnf examples as doc files to mysql-server (#60349) +- Don't include manual.ps, it's just 200 bytes with a URL inside (#60349) +- Don't include random files in /usr/share/mysql (#60349) +- langify (#60349) + +* Thu Feb 21 2002 Trond Eivind Glomsrd 3.23.49-2 +- Rebuild + +* Sun Feb 17 2002 Trond Eivind Glomsrd 3.23.49-1 +- 3.23.49 + +* Thu Feb 14 2002 Trond Eivind Glomsrd 3.23.48-2 +- work around perl dependency bug. + +* Mon Feb 11 2002 Trond Eivind Glomsrd 3.23.48-1 +- 3.23.48 + +* Thu Jan 17 2002 Trond Eivind Glomsrd 3.23.47-4 +- Use kill, not mysqladmin, to flush logs and shut down. Thus, + an admin password can be set with no problems. +- Remove reload from init script + +* Wed Jan 16 2002 Trond Eivind Glomsrd 3.23.47-3 +- remove db3-devel from buildrequires, + MySQL has had its own bundled copy since the mid thirties + +* Sun Jan 6 2002 Trond Eivind Glomsrd 3.23.47-1 +- 3.23.47 +- Don't build for alpha, toolchain immature. + +* Mon Dec 3 2001 Trond Eivind Glomsrd 3.23.46-1 +- 3.23.46 +- use -fno-rtti and -fno-exceptions, and set CXX to increase stability. + Recommended by mysql developers. + +* Sun Nov 25 2001 Trond Eivind Glomsrd 3.23.45-1 +- 3.23.45 + +* Wed Nov 14 2001 Trond Eivind Glomsrd 3.23.44-2 +- centralize definition of datadir in the initscript (#55873) + +* Fri Nov 2 2001 Trond Eivind Glomsrd 3.23.44-1 +- 3.23.44 + +* Thu Oct 4 2001 Trond Eivind Glomsrd 3.23.43-1 +- 3.23.43 + +* Mon Sep 10 2001 Trond Eivind Glomsrd 3.23.42-1 +- 3.23.42 +- reenable innodb + +* Tue Aug 14 2001 Trond Eivind Glomsrd 3.23.41-1 +- 3.23.41 bugfix release +- disable innodb, to avoid the broken updates +- Use "mysqladmin flush_logs" instead of kill -HUP in logrotate + script (#51711) + +* Sat Jul 21 2001 Trond Eivind Glomsrd +- 3.23.40, bugfix release +- Add zlib-devel to buildrequires: + +* Fri Jul 20 2001 Trond Eivind Glomsrd +- BuildRequires-tweaking + +* Thu Jun 28 2001 Trond Eivind Glomsrd +- Reenable test, but don't run them for s390, s390x or ia64 +- Make /etc/my.cnf config(noplace). Same for /etc/logrotate.d/mysqld + +* Thu Jun 14 2001 Trond Eivind Glomsrd +- 3.23.29 +- enable innodb +- enable assembly again +- disable tests for now... + +* Tue May 15 2001 Trond Eivind Glomsrd +- 3.23.38 +- Don't use BDB on Alpha - no fast mutexes + +* Tue Apr 24 2001 Trond Eivind Glomsrd +- 3.23.37 +- Add _GNU_SOURCE to the compile flags + +* Wed Mar 28 2001 Trond Eivind Glomsrd +- Make it obsolete our 6.2 PowerTools packages +- 3.23.36 bugfix release - fixes some security issues + which didn't apply to our standard configuration +- Make "make test" part of the build process, except on IA64 + (it fails there) + +* Tue Mar 20 2001 Trond Eivind Glomsrd +- 3.23.35 bugfix release +- Don't delete the mysql user on uninstall + +* Tue Mar 13 2001 Trond Eivind Glomsrd +- 3.23.34a bugfix release + +* Wed Feb 7 2001 Trond Eivind Glomsrd +- added readline-devel to BuildRequires: + +* Tue Feb 6 2001 Trond Eivind Glomsrd +- small i18n-fixes to initscript (action needs $) + +* Tue Jan 30 2001 Trond Eivind Glomsrd +- make it shut down and rotate logs without using mysqladmin + (from #24909) + +* Mon Jan 29 2001 Trond Eivind Glomsrd +- conflict with "MySQL" + +* Tue Jan 23 2001 Trond Eivind Glomsrd +- improve gettextizing + +* Mon Jan 22 2001 Trond Eivind Glomsrd +- 3.23.32 +- fix logrotate script (#24589) + +* Wed Jan 17 2001 Trond Eivind Glomsrd +- gettextize +- move the items in Requires(post): to Requires: in preparation + for an errata for 7.0 when 3.23.31 is released +- 3.23.31 + +* Tue Jan 16 2001 Trond Eivind Glomsrd +- add the log file to the rpm database, and make it 0640 + (#24116) +- as above in logrotate script +- changes to the init sequence - put most of the data + in /etc/my.cnf instead of hardcoding in the init script +- use /var/run/mysqld/mysqld.pid instead of + /var/run/mysqld/pid +- use standard safe_mysqld +- shut down cleaner + +* Mon Jan 08 2001 Trond Eivind Glomsrd +- 3.23.30 +- do an explicit chmod on /var/lib/mysql in post, to avoid + any problems with broken permissons. There is a report + of rm not changing this on its own (#22989) + +* Mon Jan 01 2001 Trond Eivind Glomsrd +- bzipped source +- changed from 85 to 78 in startup, so it starts before + apache (which can use modules requiring mysql) + +* Wed Dec 27 2000 Trond Eivind Glomsrd +- 3.23.29a + +* Tue Dec 19 2000 Trond Eivind Glomsrd +- add requirement for new libstdc++, build for errata + +* Mon Dec 18 2000 Trond Eivind Glomsrd +- 3.23.29 + +* Mon Nov 27 2000 Trond Eivind Glomsrd +- 3.23.28 (gamma) +- remove old patches, as they are now upstreamed + +* Tue Nov 14 2000 Trond Eivind Glomsrd +- Add a requirement for a new glibc (#20735) +- build on IA64 + +* Wed Nov 1 2000 Trond Eivind Glomsrd +- disable more assembly + +* Wed Nov 1 2000 Jakub Jelinek +- fix mysql on SPARC (#20124) + +* Tue Oct 31 2000 Trond Eivind Glomsrd +- 3.23.27 + +* Wed Oct 25 2000 Trond Eivind Glomsrd +- add patch for fixing bogus aliasing in mysql from Jakub, + which should fix #18905 and #18620 + +* Mon Oct 23 2000 Trond Eivind Glomsrd +- check for negative niceness values, and negate it + if present (#17899) +- redefine optflags on IA32 FTTB + +* Wed Oct 18 2000 Trond Eivind Glomsrd +- 3.23.26, which among other fixes now uses mkstemp() + instead of tempnam(). +- revert changes made yesterday, the problem is now + isolated + +* Tue Oct 17 2000 Trond Eivind Glomsrd +- use the compat C++ compiler FTTB. Argh. +- add requirement of ncurses4 (see above) + +* Sun Oct 01 2000 Trond Eivind Glomsrd +- 3.23.25 +- fix shutdown problem (#17956) + +* Tue Sep 26 2000 Trond Eivind Glomsrd +- Don't try to include no-longer-existing PUBLIC file + as doc (#17532) + +* Tue Sep 12 2000 Trond Eivind Glomsrd +- rename config file to /etc/my.cnf, which is what + mysqld wants... doh. (#17432) +- include a changed safe_mysqld, so the pid file option + works. +- make mysql dir world readable to they can access the + mysql socket. (#17432) +- 3.23.24 + +* Wed Sep 06 2000 Trond Eivind Glomsrd +- 3.23.23 + +* Sun Aug 27 2000 Trond Eivind Glomsrd +- Add "|| :" to condrestart to avoid non-zero exit code + +* Thu Aug 24 2000 Trond Eivind Glomsrd +- it's mysql.com, not mysql.org and use correct path to + source (#16830) + +* Wed Aug 16 2000 Trond Eivind Glomsrd +- source file from /etc/rc.d, not /etc/rd.d. Doh. + +* Sun Aug 13 2000 Trond Eivind Glomsrd +- don't run ldconfig -n, it doesn't update ld.so.cache + (#16034) +- include some missing binaries +- use safe_mysqld to start the server (request from + mysql developers) + +* Sat Aug 05 2000 Bill Nottingham +- condrestart fixes + +* Tue Aug 01 2000 Trond Eivind Glomsrd +- 3.23.22. Disable the old patches, they're now in. + +* Thu Jul 27 2000 Trond Eivind Glomsrd +- bugfixes in the initscript +- move the .so link to the devel package + +* Wed Jul 19 2000 Trond Eivind Glomsrd +- rebuild due to glibc changes + +* Tue Jul 18 2000 Trond Eivind Glomsrd +- disable compiler patch +- don't include info directory file + +* Mon Jul 17 2000 Trond Eivind Glomsrd +- move back to /etc/rc.d/init.d + +* Fri Jul 14 2000 Trond Eivind Glomsrd +- more cleanups in initscript + +* Thu Jul 13 2000 Trond Eivind Glomsrd +- add a patch to work around compiler bug + (from monty@mysql.com) + +* Wed Jul 12 2000 Trond Eivind Glomsrd +- don't build the SQL daemon statically (glibc problems) +- fix the logrotate script - only flush log if mysql + is running +- change the reloading procedure +- remove icon - glint is obsolete a long time ago + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Mon Jul 10 2000 Trond Eivind Glomsrd +- try the new compiler again +- build the SQL daemon statically +- add compile time support for complex charsets +- enable assembler +- more cleanups in initscript + +* Sun Jul 09 2000 Trond Eivind Glomsrd +- use old C++ compiler +- Exclusivearch x86 + +* Sat Jul 08 2000 Trond Eivind Glomsrd +- move .so files to devel package +- more cleanups +- exclude sparc for now + +* Wed Jul 05 2000 Trond Eivind Glomsrd +- 3.23.21 +- remove file from /etc/sysconfig +- Fix initscript a bit - initialization of databases doesn't + work yet +- specify the correct licenses +- include a /etc/my.conf (empty, FTTB) +- add conditional restart to spec file + +* Sun Jul 2 2000 Jakub Jelinek +- Rebuild with new C++ + +* Fri Jun 30 2000 Trond Eivind Glomsrd +- update to 3.23.20 +- use %%configure, %%makeinstall, %%{_tmppath}, %%{_mandir}, + %%{_infodir}, /etc/init.d +- remove the bench package +- change some of the descriptions a little bit +- fix the init script +- some compile fixes +- specify mysql user +- use mysql uid 27 (postgresql is 26) +- don't build on ia64 + +* Sat Feb 26 2000 Jos Vos +- Version 3.22.32 release XOS.1 for LinuX/OS 1.8.0 +- Upgrade from version 3.22.27 to 3.22.32. +- Do "make install" instead of "make install-strip", because "install -s" + now appears to fail on various scripts. Afterwards, strip manually. +- Reorganize subpackages, according to common Red Hat packages: the client + program and shared library become the base package and the server and + some accompanying files are now in a separate server package. The + server package implicitly requires the base package (shared library), + but we have added a manual require tag anyway (because of the shared + config file, and more). +- Rename the mysql-benchmark subpackage to mysql-bench. + +* Mon Jan 31 2000 Jos Vos +- Version 3.22.27 release XOS.2 for LinuX/OS 1.7.1 +- Add post(un)install scripts for updating ld.so.conf (client subpackage). + +* Sun Nov 21 1999 Jos Vos +- Version 3.22.27 release XOS.1 for LinuX/OS 1.7.0 +- Initial version. +- Some ideas borrowed from Red Hat Powertools 6.1, although this spec + file is a full rewrite from scratch.