[mariadb-galera/f20] Initial commit (#1083234)

rohara rohara at fedoraproject.org
Tue Apr 29 00:48:05 UTC 2014


commit 05669a1f586f6f7d5c9baa0e135958cb4308cdb7
Author: Ryan O'Hara <rohara at redhat.com>
Date:   Mon Apr 28 19:47:47 2014 -0500

    Initial commit (#1083234)

 .gitignore                        |    1 +
 LICENSE.clustercheck              |   27 +
 README.mysql-docs                 |    4 +
 README.mysql-license              |    6 +
 clustercheck                      |   89 +++
 filter-requires-mysql.sh          |    5 +
 libmysql.version                  |  243 ++++++++
 mariadb-basedir.patch             |   15 +
 mariadb-cipherspec.patch          |  115 ++++
 mariadb-config.patch              |   20 +
 mariadb-covscan-signexpr.patch    |   16 +
 mariadb-covscan-stroverflow.patch |   73 +++
 mariadb-dh1024.patch              |   63 ++
 mariadb-dubious-exports.patch     |  169 ++++++
 mariadb-errno.patch               |   20 +
 mariadb-file-contents.patch       |   27 +
 mariadb-galera.spec               | 1171 +++++++++++++++++++++++++++++++++++++
 mariadb-install-test.patch        |   56 ++
 mariadb-logrotate.patch           |   71 +++
 mariadb-prepare-db-dir            |   94 +++
 mariadb-s390-tsc.patch            |   41 ++
 mariadb-sharedir.patch            |   49 ++
 mariadb-ssltest.patch             |   30 +
 mariadb-string-overflow.patch     |   43 ++
 mariadb-strmov.patch              |   30 +
 mariadb-versioning.patch          |  231 ++++++++
 mariadb-wait-ready                |   60 ++
 mariadb.service                   |   48 ++
 mariadb.tmpfiles.d                |    2 +
 my.cnf                            |   29 +
 my_config.h                       |   33 +
 mysql-embedded-check.c            |   26 +
 rh-skipped-tests-arm.list         |    8 +
 rh-skipped-tests-base.list        |    9 +
 sources                           |    1 +
 35 files changed, 2925 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..737bdb3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/mariadb-galera-5.5.36.tar.gz
diff --git a/LICENSE.clustercheck b/LICENSE.clustercheck
new file mode 100644
index 0000000..609015d
--- /dev/null
+++ b/LICENSE.clustercheck
@@ -0,0 +1,27 @@
+Copyright (c) 2012-2014, Olaf van Zandwijk
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors
+   may be used to endorse or promote products derived from this software without
+   specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.mysql-docs b/README.mysql-docs
new file mode 100644
index 0000000..dd894a7
--- /dev/null
+++ b/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/README.mysql-license b/README.mysql-license
new file mode 100644
index 0000000..1282653
--- /dev/null
+++ b/README.mysql-license
@@ -0,0 +1,6 @@
+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/
diff --git a/clustercheck b/clustercheck
new file mode 100644
index 0000000..3b405dc
--- /dev/null
+++ b/clustercheck
@@ -0,0 +1,89 @@
+#!/bin/bash
+#
+# Script to make a proxy (ie HAProxy) capable of monitoring Galera cluster nodes properly
+#
+# Author: Olaf van Zandwijk <olaf.vanzandwijk at nedap.com>
+# Author: Raghavendra Prabhu <raghavendra.prabhu at percona.com>
+# Author: Ryan O'Hara <rohara at redhat.com>
+#
+# Documentation and download: https://github.com/olafz/percona-clustercheck
+#
+# Based on the original script from Unai Rodriguez
+#
+
+if [ -f /etc/sysconfig/clustercheck ]; then
+    . /etc/sysconfig/clustercheck
+fi
+
+MYSQL_USERNAME="${MYSQL_USERNAME-clustercheckuser}"
+MYSQL_PASSWORD="${MYSQL_PASSWORD-clustercheckpassword!}"
+MYSQL_HOST="${MYSQL_HOST:-127.0.0.1}"
+MYSQL_PORT="${MYSQL_PORT:-3306}"
+ERR_FILE="${ERR_FILE:-/dev/null}"
+AVAILABLE_WHEN_DONOR=${AVAILABLE_WHEN_DONOR:-0}
+AVAILABLE_WHEN_READONLY=${AVAILABLE_WHEN_READONLY:-1}
+DEFAULTS_EXTRA_FILE=${DEFAULTS_EXTRA_FILE:-/etc/my.cnf}
+
+#Timeout exists for instances where mysqld may be hung
+TIMEOUT=10
+
+if [[ -r $DEFAULTS_EXTRA_FILE ]];then
+    MYSQL_CMDLINE="mysql --defaults-extra-file=$DEFAULTS_EXTRA_FILE -nNE \
+                    --connect-timeout=$TIMEOUT \
+                    --user=${MYSQL_USERNAME} --password=${MYSQL_PASSWORD} \
+                    --host=${MYSQL_HOST} --port=${MYSQL_PORT}"
+else
+    MYSQL_CMDLINE="mysql -nNE --connect-timeout=$TIMEOUT \
+                    --user=${MYSQL_USERNAME} --password=${MYSQL_PASSWORD} \
+                    --host=${MYSQL_HOST} --port=${MYSQL_PORT}"
+fi
+#
+# Perform the query to check the wsrep_local_state
+#
+WSREP_STATUS=$($MYSQL_CMDLINE -e "SHOW STATUS LIKE 'wsrep_local_state';" \
+    2>${ERR_FILE} | tail -1 2>>${ERR_FILE})
+
+if [[ "${WSREP_STATUS}" == "4" ]] || [[ "${WSREP_STATUS}" == "2" && ${AVAILABLE_WHEN_DONOR} == 1 ]]
+then
+    # Check only when set to 0 to avoid latency in response.
+    if [[ $AVAILABLE_WHEN_READONLY -eq 0 ]];then
+        READ_ONLY=$($MYSQL_CMDLINE -e "SHOW GLOBAL VARIABLES LIKE 'read_only';" \
+                    2>${ERR_FILE} | tail -1 2>>${ERR_FILE})
+
+        if [[ "${READ_ONLY}" == "ON" ]];then
+            # Galera cluster node local state is 'Synced', but it is in
+            # read-only mode. The variable AVAILABLE_WHEN_READONLY is set to 0.
+            # => return HTTP 503
+            # Shell return-code is 1
+            echo -en "HTTP/1.1 503 Service Unavailable\r\n"
+            echo -en "Content-Type: text/plain\r\n"
+            echo -en "Connection: close\r\n"
+            echo -en "Content-Length: 35\r\n"
+            echo -en "\r\n"
+            echo -en "Galera cluster node is read-only.\r\n"
+            sleep 0.1
+            exit 1
+        fi
+    fi
+    # Galera cluster node local state is 'Synced' => return HTTP 200
+    # Shell return-code is 0
+    echo -en "HTTP/1.1 200 OK\r\n"
+    echo -en "Content-Type: text/plain\r\n"
+    echo -en "Connection: close\r\n"
+    echo -en "Content-Length: 32\r\n"
+    echo -en "\r\n"
+    echo -en "Galera cluster node is synced.\r\n"
+    sleep 0.1
+    exit 0
+else
+    # Galera cluster node local state is not 'Synced' => return HTTP 503
+    # Shell return-code is 1
+    echo -en "HTTP/1.1 503 Service Unavailable\r\n"
+    echo -en "Content-Type: text/plain\r\n"
+    echo -en "Connection: close\r\n"
+    echo -en "Content-Length: 36\r\n"
+    echo -en "\r\n"
+    echo -en "Galera cluster node is not synced.\r\n"
+    sleep 0.1
+    exit 1
+fi
diff --git a/filter-requires-mysql.sh b/filter-requires-mysql.sh
new file mode 100755
index 0000000..bce04c6
--- /dev/null
+++ b/filter-requires-mysql.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+/usr/lib/rpm/perl.req $* | \
+    grep -v -e "perl(th" \
+    -e "perl(lib::mtr" -e "perl(lib::v1/mtr" -e "perl(mtr"
diff --git a/libmysql.version b/libmysql.version
new file mode 100644
index 0000000..d0e329c
--- /dev/null
+++ b/libmysql.version
@@ -0,0 +1,243 @@
+# symbols exported from mysql 5.1
+libmysqlclient_16 {
+  global:
+	_fini;
+	_init;
+	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;
+# These are documented in Paul DuBois' MySQL book, so we treat them as part
+# of the de-facto API.
+	free_defaults;
+	handle_options;
+	load_defaults;
+	my_print_help;
+# This isn't really documented anywhere, but it seems to be part of the
+# de-facto API as well.  We're not going to export the deprecated version
+# make_scrambled_password, however.
+	my_make_scrambled_password;
+# This really shouldn't be exported, but some applications use it as a
+# workaround for inadequate threading support; see bug #846602
+	THR_KEY_mysys;
+  local:
+	*;
+};
+# symbols added in mysql 5.5
+libmysqlclient_18 {
+  global:
+	mysql_client_find_plugin;
+	mysql_client_register_plugin;
+	mysql_load_plugin;
+	mysql_load_plugin_v;
+	mysql_plugin_options;
+	mysql_stmt_next_result;
+#
+# Ideally the following symbols wouldn't be exported, but various applications
+# require them.  We limit the namespace damage by prefixing mysql_
+# (see mysql-dubious-exports.patch), which means the symbols are not present
+# in libmysqlclient_16.
+#
+# mysql-connector-odbc requires these
+	mysql_default_charset_info;
+	mysql_get_charset;
+	mysql_get_charset_by_csname;
+	mysql_net_realloc;
+# PHP's mysqli.so requires this (via the ER() macro)
+	mysql_client_errors;
+};
+
+# symbols specific for mariadb
+libmysqlclient_18_mariadb {
+  global:
+    # symbols related to non-blocking operations
+    # documented here: https://kb.askmonty.org/en/non-blocking-api-reference/
+	mysql_get_socket;
+	mysql_get_timeout_value;
+	mysql_get_timeout_value_ms;
+	mysql_real_connect_start;
+	mysql_real_connect_cont;
+	mysql_real_query_start;
+	mysql_real_query_cont;
+	mysql_fetch_row_start;
+	mysql_fetch_row_cont;
+	mysql_set_character_set_start;
+	mysql_set_character_set_cont;
+	mysql_select_db_start;
+	mysql_select_db_cont;
+	mysql_send_query_start;
+	mysql_send_query_cont;
+	mysql_store_result_start;
+	mysql_store_result_cont;
+	mysql_free_result_start;
+	mysql_free_result_cont;
+	mysql_close_start;
+	mysql_close_cont;
+	mysql_change_user_start;
+	mysql_change_user_cont;
+	mysql_query_start;
+	mysql_query_cont;
+	mysql_shutdown_start;
+	mysql_shutdown_cont;
+	mysql_dump_debug_info_start;
+	mysql_dump_debug_info_cont;
+	mysql_refresh_start;
+	mysql_refresh_cont;
+	mysql_kill_start;
+	mysql_kill_cont;
+	mysql_set_server_option_start;
+	mysql_set_server_option_cont;
+	mysql_ping_start;
+	mysql_ping_cont;
+	mysql_stat_start;
+	mysql_stat_cont;
+	mysql_list_dbs_start;
+	mysql_list_dbs_cont;
+	mysql_list_tables_start;
+	mysql_list_tables_cont;
+	mysql_list_processes_start;
+	mysql_list_processes_cont;
+	mysql_list_fields_start;
+	mysql_list_fields_cont;
+	mysql_read_query_result_start;
+	mysql_read_query_result_cont;
+	mysql_stmt_prepare_start;
+	mysql_stmt_prepare_cont;
+	mysql_stmt_execute_start;
+	mysql_stmt_execute_cont;
+	mysql_stmt_fetch_start;
+	mysql_stmt_fetch_cont;
+	mysql_stmt_store_result_start;
+	mysql_stmt_store_result_cont;
+	mysql_stmt_close_start;
+	mysql_stmt_close_cont;
+	mysql_stmt_reset_start;
+	mysql_stmt_reset_cont;
+	mysql_stmt_free_result_start;
+	mysql_stmt_free_result_cont;
+	mysql_stmt_send_long_data_start;
+	mysql_stmt_send_long_data_cont;
+	mysql_commit_start;
+	mysql_commit_cont;
+	mysql_rollback_start;
+	mysql_rollback_cont;
+	mysql_autocommit_start;
+	mysql_autocommit_cont;
+	mysql_next_result_start;
+	mysql_next_result_cont;
+	mysql_stmt_next_result_start;
+	mysql_stmt_next_result_cont;
+    # dynamic columns API
+    # documented here: https://kb.askmonty.org/en/dynamic-columns-api/
+    # currently only documentation for mariadb-10.0.x available, but
+    # upstream promissed adding 5.5.x version as well
+	dynamic_column_create;
+	dynamic_column_create_many;
+	dynamic_column_update;
+	dynamic_column_update_many;
+	dynamic_column_delete;
+	dynamic_column_exists;
+	dynamic_column_list;
+	dynamic_column_get;
+	dynamic_column_prepare_decimal;
+};
diff --git a/mariadb-basedir.patch b/mariadb-basedir.patch
new file mode 100644
index 0000000..f5a5ebf
--- /dev/null
+++ b/mariadb-basedir.patch
@@ -0,0 +1,15 @@
+Don't guess basedir in mysql_config; we place it under _libdir because
+of multilib conflicts, so use rather configured @prefix@ path directly.
+
+diff -up mariadb-5.5.29/scripts/mysql_config.sh.basedir mariadb-5.5.29/scripts/mysql_config.sh
+--- mariadb-5.5.29/scripts/mysql_config.sh.basedir	2013-02-28 09:39:26.628440114 +0100
++++ mariadb-5.5.29/scripts/mysql_config.sh	2013-02-28 09:39:40.613439729 +0100
+@@ -76,7 +76,7 @@ get_full_path ()
+ 
+ me=`get_full_path $0`
+ 
+-basedir=`echo $me | sed -e 's;/bin/mysql_config;;'`
++basedir='@prefix@'
+ 
+ ldata='@localstatedir@'
+ execdir='@libexecdir@'
diff --git a/mariadb-cipherspec.patch b/mariadb-cipherspec.patch
new file mode 100644
index 0000000..57e2c2b
--- /dev/null
+++ b/mariadb-cipherspec.patch
@@ -0,0 +1,115 @@
+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 -up mariadb-5.5.28a/client/mysqltest.cc.p18 mariadb-5.5.28a/client/mysqltest.cc
+--- mariadb-5.5.28a/client/mysqltest.cc.p18	2012-11-28 16:49:36.000000000 +0100
++++ mariadb-5.5.28a/client/mysqltest.cc	2012-12-17 17:40:01.685079912 +0100
+@@ -5808,6 +5808,7 @@ void do_connect(struct st_command *comma
+   my_bool con_pipe= 0;
+   my_bool con_shm __attribute__ ((unused))= 0;
+   struct st_connection* con_slot;
++  char *con_cipher=NULL;
+ 
+   static DYNAMIC_STRING ds_connection_name;
+   static DYNAMIC_STRING ds_host;
+@@ -5898,6 +5899,8 @@ void do_connect(struct st_command *comma
+       con_pipe= 1;
+     else if (length == 3 && !strncmp(con_options, "SHM", 3))
+       con_shm= 1;
++    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);
+@@ -5945,8 +5948,11 @@ void do_connect(struct st_command *comma
+   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);
+ #if MYSQL_VERSION_ID >= 50000
+     /* Turn on ssl_verify_server_cert only if host is "localhost" */
+     opt_ssl_verify_server_cert= !strcmp(ds_host.str, "localhost");
+diff -up mariadb-5.5.28a/mysql-test/t/openssl_1.test.p18 mariadb-5.5.28a/mysql-test/t/openssl_1.test
+--- mariadb-5.5.28a/mysql-test/t/openssl_1.test.p18	2012-11-28 16:49:36.000000000 +0100
++++ mariadb-5.5.28a/mysql-test/t/openssl_1.test	2012-12-17 17:27:31.884891180 +0100
+@@ -20,13 +20,13 @@ grant select on test.* to ssl_user4 at loca
+ grant select on test.* to ssl_user5 at 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
+@@ -129,7 +129,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
+ 
+ #
+@@ -254,7 +254,7 @@ select 'is still running; no cipher requ
+ 
+ GRANT SELECT ON test.* TO bug42158 at 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 -up mariadb-5.5.28a/mysql-test/t/ssl_8k_key.test.p18 mariadb-5.5.28a/mysql-test/t/ssl_8k_key.test
+--- mariadb-5.5.28a/mysql-test/t/ssl_8k_key.test.p18	2012-11-28 16:49:46.000000000 +0100
++++ mariadb-5.5.28a/mysql-test/t/ssl_8k_key.test	2012-12-17 17:27:31.885891180 +0100
+@@ -2,7 +2,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 -up mariadb-5.5.28a/mysql-test/t/ssl_compress.test.p18 mariadb-5.5.28a/mysql-test/t/ssl_compress.test
+--- mariadb-5.5.28a/mysql-test/t/ssl_compress.test.p18	2012-11-28 16:49:46.000000000 +0100
++++ mariadb-5.5.28a/mysql-test/t/ssl_compress.test	2012-12-17 17:27:31.885891180 +0100
+@@ -8,7 +8,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 -up mariadb-5.5.28a/mysql-test/t/ssl.test.p18 mariadb-5.5.28a/mysql-test/t/ssl.test
+--- mariadb-5.5.28a/mysql-test/t/ssl.test.p18	2012-11-28 16:49:46.000000000 +0100
++++ mariadb-5.5.28a/mysql-test/t/ssl.test	2012-12-17 17:27:31.885891180 +0100
+@@ -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/mariadb-config.patch b/mariadb-config.patch
new file mode 100644
index 0000000..5034890
--- /dev/null
+++ b/mariadb-config.patch
@@ -0,0 +1,20 @@
+Settings specific for MariaDB specific are defined in appropriate section in
+/etc/my.cnf.d/server.cnf (part of mariadb-server).
+It doesn't matter that we set these settings only for [mysqld] here,
+because they will be read and used in mysqld_safe as well.
+Settings in my.cnf are generic for all MySQL implementations because of
+conflict issues.
+RHBZ#1003115
+
+diff -up mariadb-5.5.32/support-files/rpm/server.cnf.mariaconf mariadb-5.5.32/support-files/rpm/server.cnf
+--- mariadb-5.5.32/support-files/rpm/server.cnf.mariaconf	2013-09-02 14:17:37.277833263 +0200
++++ mariadb-5.5.32/support-files/rpm/server.cnf	2013-09-02 14:18:00.638810223 +0200
+@@ -23,6 +23,8 @@
+ # If you use the same .cnf file for MySQL and MariaDB,
+ # you can put MariaDB-only options here
+ [mariadb]
++log-error=/var/log/mariadb/mariadb.log
++pid-file=/var/run/mariadb/mariadb.pid
+ 
+ [mariadb-5.5]
+ 
diff --git a/mariadb-covscan-signexpr.patch b/mariadb-covscan-signexpr.patch
new file mode 100644
index 0000000..1bbb3db
--- /dev/null
+++ b/mariadb-covscan-signexpr.patch
@@ -0,0 +1,16 @@
+This issue has been found by Coverity - static analysis tool.
+
+mysql-5.5.31/strings/ctype-ucs2.c:1707:sign_extension – Suspicious implicit sign extension: "s[0]" with type "unsigned char" (8 bits, unsigned) is promoted in "(s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]" to type "int" (32 bits, signed), then sign-extended to type "unsigned long" (64 bits, unsigned). If "(s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]" is greater than 0x7FFFFFFF, the upper bits of the result will all be 1.
+
+diff -up mysql-5.5.31/strings/ctype-ucs2.c.covscan1 mysql-5.5.31/strings/ctype-ucs2.c
+--- mysql-5.5.31/strings/ctype-ucs2.c.covscan1	2013-06-14 12:12:29.663300314 +0200
++++ mysql-5.5.31/strings/ctype-ucs2.c	2013-06-14 12:13:07.809299646 +0200
+@@ -1704,7 +1704,7 @@ my_utf32_uni(CHARSET_INFO *cs __attribut
+ {
+   if (s + 4 > e)
+     return MY_CS_TOOSMALL4;
+-  *pwc= (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + (s[3]);
++  *pwc= (((my_wc_t)s[0]) << 24) + (s[1] << 16) + (s[2] << 8) + (s[3]);
+   return 4;
+ }
+ 
diff --git a/mariadb-covscan-stroverflow.patch b/mariadb-covscan-stroverflow.patch
new file mode 100644
index 0000000..d671b45
--- /dev/null
+++ b/mariadb-covscan-stroverflow.patch
@@ -0,0 +1,73 @@
+The following problems have been found by Coverity - static analysis tool.
+
+mysql-5.5.31/plugin/semisync/semisync_master.cc:672:parameter_as_source – Note: This defect has an elevated risk because the source argument is a parameter of the current function. 
+
+mysql-5.5.31/plugin/semisync/semisync_master.cc:661:parameter_as_source – Note: This defect has an elevated risk because the source argument is a parameter of the current function. 
+
+mysql-5.5.31/plugin/semisync/semisync_master.cc:555:parameter_as_source – Note: This defect has an elevated risk because the source argument is a parameter of the current function.
+
+diff -up mysql-5.5.31/plugin/semisync/semisync_master.cc.covscan-stroverflow mysql-5.5.31/plugin/semisync/semisync_master.cc
+--- mysql-5.5.31/plugin/semisync/semisync_master.cc.covscan-stroverflow	2013-06-17 09:04:47.214621154 +0200
++++ mysql-5.5.31/plugin/semisync/semisync_master.cc	2013-06-17 09:08:32.189617218 +0200
+@@ -552,7 +552,8 @@ int ReplSemiSyncMaster::reportReplyBinlo
+ 
+   if (need_copy_send_pos)
+   {
+-    strcpy(reply_file_name_, log_file_name);
++    strncpy(reply_file_name_, log_file_name, sizeof(reply_file_name_)-1);
++    reply_file_name_[sizeof(reply_file_name_)-1] = '\0';
+     reply_file_pos_ = log_file_pos;
+     reply_file_name_inited_ = true;
+ 
+@@ -658,7 +659,8 @@ int ReplSemiSyncMaster::commitTrx(const
+         if (cmp <= 0)
+ 	{
+           /* This thd has a lower position, let's update the minimum info. */
+-          strcpy(wait_file_name_, trx_wait_binlog_name);
++          strncpy(wait_file_name_, trx_wait_binlog_name, sizeof(wait_file_name_)-1);
++          wait_file_name_[sizeof(wait_file_name_)-1] = '\0';
+           wait_file_pos_ = trx_wait_binlog_pos;
+ 
+           rpl_semi_sync_master_wait_pos_backtraverse++;
+@@ -669,7 +671,8 @@ int ReplSemiSyncMaster::commitTrx(const
+       }
+       else
+       {
+-        strcpy(wait_file_name_, trx_wait_binlog_name);
++        strncpy(wait_file_name_, trx_wait_binlog_name, sizeof(wait_file_name_)-1);
++        wait_file_name_[sizeof(wait_file_name_)-1] = '\0';
+         wait_file_pos_ = trx_wait_binlog_pos;
+         wait_file_name_inited_ = true;
+ 
+
+mysql-5.5.31/sql/rpl_handler.cc:306:fixed_size_dest – You might overrun the 512 byte fixed-size string "log_info->log_file" by copying "log_file + dirname_length(log_file)" without checking the length. diff -up mysql-5.5.31/sql/rpl_handler.cc.covscan-stroverflow mysql-5.5.31/sql/rpl_handler.cc
+
+--- mysql-5.5.31/sql/rpl_handler.cc.covscan-stroverflow	2013-06-17 10:51:04.940509594 +0200
++++ mysql-5.5.31/sql/rpl_handler.cc	2013-06-17 10:51:08.959509523 +0200
+@@ -303,7 +303,8 @@ int Binlog_storage_delegate::after_flush
+     my_pthread_setspecific_ptr(RPL_TRANS_BINLOG_INFO, log_info);
+   }
+     
+-  strcpy(log_info->log_file, log_file+dirname_length(log_file));
++  strncpy(log_info->log_file, log_file+dirname_length(log_file), sizeof(log_info->log_file)-1);
++  log_info->log_file[sizeof(log_info->log_file)-1] = '\0';
+   log_info->log_pos = log_pos;
+   
+   int ret= 0;
+
+
+mysql-5.5.31/sql/sp_rcontext.h:87:buffer_size_warning – Calling strncpy with a maximum size argument of 512 bytes on destination array "this->m_message" of size 512 bytes might leave the destination string unterminated. 
+
+diff -up mysql-5.5.31/sql/sp_rcontext.h.covscan-stroverflow mysql-5.5.31/sql/sp_rcontext.h
+--- mysql-5.5.31/sql/sp_rcontext.h.covscan-stroverflow	2013-06-17 13:28:32.540344334 +0200
++++ mysql-5.5.31/sql/sp_rcontext.h	2013-06-17 13:29:23.673343443 +0200
+@@ -84,7 +84,8 @@ public:
+     memcpy(m_sql_state, sqlstate, SQLSTATE_LENGTH);
+     m_sql_state[SQLSTATE_LENGTH]= '\0';
+ 
+-    strncpy(m_message, msg, MYSQL_ERRMSG_SIZE);
++    strncpy(m_message, msg, sizeof(m_message)-1);
++    m_message[sizeof(m_message)-1] = '\0';
+   }
+ 
+   void clear()
diff --git a/mariadb-dh1024.patch b/mariadb-dh1024.patch
new file mode 100644
index 0000000..620ee0b
--- /dev/null
+++ b/mariadb-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/mariadb-dubious-exports.patch b/mariadb-dubious-exports.patch
new file mode 100644
index 0000000..afefb7b
--- /dev/null
+++ b/mariadb-dubious-exports.patch
@@ -0,0 +1,169 @@
+Prefix mysql_ to the real names of several symbols that have to be exported
+from libmysqlclient because mysql-connector-odbc and/or PHP depend on them.
+This limits the intrusion on application namespace.
+
+Also, remove all traces of make_scrambled_password and
+make_scrambled_password_323, so that references to these functions draw
+compile-time warnings, per a suggestion from Paul Howarth in bug #690346.
+It doesn't seem worth trying to get rid of all the internal symbols exposed
+by mysql.h, but these two are relatively easy to get rid of.
+
+
+diff -up mariadb-5.5.28a/client/mysqladmin.cc.p6 mariadb-5.5.28a/client/mysqladmin.cc
+--- mariadb-5.5.28a/client/mysqladmin.cc.p6	2012-11-28 16:49:36.000000000 +0100
++++ mariadb-5.5.28a/client/mysqladmin.cc	2013-01-30 16:30:55.047537674 +0100
+@@ -22,6 +22,7 @@
+ #include <my_pthread.h>				/* because of signal()	*/
+ #include <sys/stat.h>
+ #include <mysql.h>
++#include <password.h>       /* my_make_scrambled_password_323, my_make_scrambled_password */
+ #include <sql_common.h>
+ #include <welcome_copyright_notice.h>           /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
+ 
+@@ -1065,9 +1066,9 @@ static int execute_commands(MYSQL *mysql
+           }
+         }
+         if (old)
+-          make_scrambled_password_323(crypted_pw, typed_password);
++          my_make_scrambled_password_323(crypted_pw, typed_password, strlen(typed_password));
+         else
+-          make_scrambled_password(crypted_pw, typed_password);
++          my_make_scrambled_password(crypted_pw, typed_password, strlen(typed_password));
+       }
+       else
+ 	crypted_pw[0]=0;			/* No password */
+diff -up mariadb-5.5.28a/include/errmsg.h.p6 mariadb-5.5.28a/include/errmsg.h
+--- mariadb-5.5.28a/include/errmsg.h.p6	2012-11-28 16:49:43.000000000 +0100
++++ mariadb-5.5.28a/include/errmsg.h	2013-01-30 16:30:55.047537674 +0100
+@@ -24,6 +24,7 @@ extern "C" {
+ #endif
+ void	init_client_errs(void);
+ void	finish_client_errs(void);
++#define client_errors mysql_client_errors		/* namespace sanity */
+ extern const char *client_errors[];	/* Error messages */
+ #ifdef	__cplusplus
+ }
+diff -up mariadb-5.5.28a/include/mysql_com.h.p6 mariadb-5.5.28a/include/mysql_com.h
+--- mariadb-5.5.28a/include/mysql_com.h.p6	2012-11-28 16:49:38.000000000 +0100
++++ mariadb-5.5.28a/include/mysql_com.h	2013-01-30 16:30:55.047537674 +0100
+@@ -467,6 +467,7 @@ my_bool	my_net_init(NET *net, Vio* vio);
+ void	my_net_local_init(NET *net);
+ void	net_end(NET *net);
+   void	net_clear(NET *net, my_bool clear_buffer);
++#define net_realloc mysql_net_realloc		/* namespace sanity */
+ my_bool net_realloc(NET *net, size_t length);
+ my_bool	net_flush(NET *net);
+ my_bool	my_net_write(NET *net,const unsigned char *packet, size_t len);
+@@ -545,14 +546,12 @@ void create_random_string(char *to, unsi
+                           struct my_rnd_struct *rand_st);
+ 
+ void hash_password(unsigned long *to, const char *password, unsigned int password_len);
+-void make_scrambled_password_323(char *to, const char *password);
+ void scramble_323(char *to, const char *message, const char *password);
+ my_bool check_scramble_323(const unsigned char *reply, const char *message,
+                            unsigned long *salt);
+ void get_salt_from_password_323(unsigned long *res, const char *password);
+ void make_password_from_salt_323(char *to, const unsigned long *salt);
+ 
+-void make_scrambled_password(char *to, const char *password);
+ void scramble(char *to, const char *message, const char *password);
+ my_bool check_scramble(const unsigned char *reply, const char *message,
+                        const unsigned char *hash_stage2);
+diff -up mariadb-5.5.28a/include/mysql.h.pp.p6 mariadb-5.5.28a/include/mysql.h.pp
+--- mariadb-5.5.28a/include/mysql.h.pp.p6	2012-11-28 16:49:47.000000000 +0100
++++ mariadb-5.5.28a/include/mysql.h.pp	2013-01-30 16:30:55.048537674 +0100
+@@ -84,7 +84,7 @@ my_bool my_net_init(NET *net, Vio* vio);
+ void my_net_local_init(NET *net);
+ void net_end(NET *net);
+   void net_clear(NET *net, my_bool clear_buffer);
+-my_bool net_realloc(NET *net, size_t length);
++my_bool mysql_net_realloc(NET *net, size_t length);
+ my_bool net_flush(NET *net);
+ my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);
+ my_bool net_write_command(NET *net,unsigned char command,
+@@ -124,13 +124,11 @@ typedef struct st_udf_init
+ void create_random_string(char *to, unsigned int length,
+                           struct my_rnd_struct *rand_st);
+ void hash_password(unsigned long *to, const char *password, unsigned int password_len);
+-void make_scrambled_password_323(char *to, const char *password);
+ void scramble_323(char *to, const char *message, const char *password);
+ my_bool check_scramble_323(const unsigned char *reply, const char *message,
+                            unsigned long *salt);
+ void get_salt_from_password_323(unsigned long *res, const char *password);
+ void make_password_from_salt_323(char *to, const unsigned long *salt);
+-void make_scrambled_password(char *to, const char *password);
+ void scramble(char *to, const char *message, const char *password);
+ my_bool check_scramble(const unsigned char *reply, const char *message,
+                        const unsigned char *hash_stage2);
+diff -up mariadb-5.5.28a/include/my_sys.h.p6 mariadb-5.5.28a/include/my_sys.h
+--- mariadb-5.5.28a/include/my_sys.h.p6	2013-01-30 16:30:54.980537678 +0100
++++ mariadb-5.5.28a/include/my_sys.h	2013-01-30 16:31:38.510534702 +0100
+@@ -211,6 +211,7 @@ extern uint    my_large_page_size;
+ 
+ /* charsets */
+ #define MY_ALL_CHARSETS_SIZE 2048
++#define default_charset_info mysql_default_charset_info        /* namespace sanity */
+ extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *default_charset_info;
+ extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *all_charsets[MY_ALL_CHARSETS_SIZE];
+ extern struct charset_info_st compiled_charsets[];
+@@ -943,6 +944,9 @@ extern uint get_charset_number(const cha
+ extern uint get_collation_number(const char *name);
+ extern const char *get_charset_name(uint cs_number);
+ 
++#define get_charset mysql_get_charset		/* namespace sanity */
++#define get_charset_by_csname mysql_get_charset_by_csname
++
+ extern CHARSET_INFO *get_charset(uint cs_number, myf flags);
+ extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
+ extern CHARSET_INFO *get_charset_by_csname(const char *cs_name,
+diff -up mariadb-5.5.28a/sql/password.c.p6 mariadb-5.5.28a/sql/password.c
+--- mariadb-5.5.28a/sql/password.c.p6	2012-11-28 16:49:48.000000000 +0100
++++ mariadb-5.5.28a/sql/password.c	2013-01-30 16:30:55.048537674 +0100
+@@ -127,23 +127,6 @@ void my_make_scrambled_password_323(char
+ 
+ 
+ /*
+-  Wrapper around my_make_scrambled_password_323() to maintain client lib ABI
+-  compatibility.
+-  In server code usage of my_make_scrambled_password_323() is preferred to
+-  avoid strlen().
+-  SYNOPSIS
+-    make_scrambled_password_323()
+-    to        OUT store scrambled password here
+-    password  IN  NULL-terminated string with user-supplied password
+-*/
+-
+-void make_scrambled_password_323(char *to, const char *password)
+-{
+-  my_make_scrambled_password_323(to, password, strlen(password));
+-}
+-
+-
+-/*
+     Scramble string with password.
+     Used in pre 4.1 authentication phase.
+   SYNOPSIS
+@@ -407,23 +390,6 @@ void my_make_scrambled_password(char *to
+   
+ 
+ /*
+-  Wrapper around my_make_scrambled_password() to maintain client lib ABI
+-  compatibility.
+-  In server code usage of my_make_scrambled_password() is preferred to
+-  avoid strlen().
+-  SYNOPSIS
+-    make_scrambled_password()
+-    buf       OUT buffer of size 2*SHA1_HASH_SIZE + 2 to store hex string
+-    password  IN  NULL-terminated password string
+-*/
+-
+-void make_scrambled_password(char *to, const char *password)
+-{
+-  my_make_scrambled_password(to, password, strlen(password));
+-}
+-
+-
+-/*
+     Produce an obscure octet sequence from password and random
+     string, recieved from the server. This sequence corresponds to the
+     password, but password can not be easily restored from it. The sequence
diff --git a/mariadb-errno.patch b/mariadb-errno.patch
new file mode 100644
index 0000000..8c1c10c
--- /dev/null
+++ b/mariadb-errno.patch
@@ -0,0 +1,20 @@
+"extern int errno" is just a really bad idea.
+
+diff -up mariadb-5.5.33a/include/my_sys.h.p1 mariadb-5.5.33a/include/my_sys.h
+--- mariadb-5.5.33a/include/my_sys.h.p1	2013-10-10 13:37:11.391507810 +0200
++++ mariadb-5.5.33a/include/my_sys.h	2013-10-10 13:37:57.395519715 +0200
+@@ -190,13 +190,7 @@ extern void my_large_free(uchar *ptr);
+ #define my_safe_alloca(size, min_length) ((size <= min_length) ? my_alloca(size) : my_malloc(size,MYF(MY_FAE)))
+ #define my_safe_afree(ptr, size, min_length) ((size <= min_length) ? my_afree(ptr) : my_free(ptr))
+ 
+-#ifndef errno				/* did we already get it? */
+-#ifdef HAVE_ERRNO_AS_DEFINE
+-#include <errno.h>			/* errno is a define */
+-#else
+-extern int errno;			/* declare errno */
+-#endif
+-#endif					/* #ifndef errno */
++#include <errno.h>                     /* errno is a define */
+ extern char *home_dir;			/* Home directory for user */
+ extern MYSQL_PLUGIN_IMPORT char  *mysql_data_home;
+ extern const char *my_progname;		/* program-name (printed in errors) */
diff --git a/mariadb-file-contents.patch b/mariadb-file-contents.patch
new file mode 100644
index 0000000..8ad8c73
--- /dev/null
+++ b/mariadb-file-contents.patch
@@ -0,0 +1,27 @@
+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 mariadb-5.5.34/mysql-test/t/file_contents.test.p10 mariadb-5.5.34/mysql-test/t/file_contents.test
+--- mariadb-5.5.34/mysql-test/t/file_contents.test.p10	2013-11-20 13:28:56.000000000 +0100
++++ mariadb-5.5.34/mysql-test/t/file_contents.test	2013-11-22 08:50:30.244702013 +0100
+@@ -32,6 +32,15 @@ if ($dir_bin eq '/usr/') {
+     # RedHat/Debian: version number in directory name
+     $dir_docs = glob "$dir_docs/mariadb-server-*";
+     $dir_docs = glob "$dir_docs/MySQL-server*" unless -d $dir_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 "/usr/lib64/mysql") {
++       $dir_docs = "/usr/lib64/mysql";
++    } else {
++       $dir_docs = "/usr/lib/mysql";
++    }
+   }
+   # Slackware
+   $dir_docs = glob "$dir_bin/doc/mariadb-[0-9]*" unless -d $dir_docs;
diff --git a/mariadb-galera.spec b/mariadb-galera.spec
new file mode 100644
index 0000000..220c883
--- /dev/null
+++ b/mariadb-galera.spec
@@ -0,0 +1,1171 @@
+# In f20+ use unversioned docdirs, otherwise the old versioned one
+%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
+
+# TokuDB engine is now part of MariaDB, but it is available only for x86_64;
+# variable tokudb allows to build with TokuDB storage engine
+%bcond_with tokudb
+
+Name: mariadb-galera
+Version: 5.5.36
+Release: 9%{?dist}
+Epoch: 1
+
+Summary: A community developed branch of MySQL
+Group: Applications/Databases
+URL: http://mariadb.org
+# Exceptions allow client libraries to be linked with most open source SW,
+# not only GPL code.  See README.mysql-license
+# Some innobase code from Percona and Google is under BSD license
+# Some code related to test-suite is under LGPLv2
+License: GPLv2 with exceptions and LGPLv2 and BSD
+
+# The evr of mysql we want to obsolete
+%global obsoleted_mysql_evr 5.6-0
+%global obsoleted_mysql_case_evr 5.5.30-5
+
+# Regression tests take a long time, you can skip 'em with this
+%{!?runselftest:%global runselftest 1}
+
+# When replacing mysql by mariadb these packages are not upated, but rather
+# installed and uninstalled. Thus we loose information about mysqld service
+# enablement. To address this we use a file to store that information within
+# the transaction. Basically the file is created when mysqld is enabled in
+# the beginning of the transaction and mysqld is enabled again in the end
+# of the transaction in case this flag file exists.
+%global mysqld_enabled_flag_file %{_localstatedir}/lib/rpm-state/mysqld_enabled
+%global mysqld_running_flag_file %{_localstatedir}/lib/rpm-state/mysqld_running
+
+Source0: http://ftp.osuosl.org/pub/mariadb/%{name}-%{version}/src/%{name}-%{version}.tar.gz
+Source3: my.cnf
+Source5: my_config.h
+Source6: README.mysql-docs
+Source7: README.mysql-license
+Source8: libmysql.version
+Source9: mysql-embedded-check.c
+Source10: mariadb.tmpfiles.d
+Source11: mariadb.service
+Source12: mariadb-prepare-db-dir
+Source13: mariadb-wait-ready
+Source14: rh-skipped-tests-base.list
+Source15: rh-skipped-tests-arm.list
+Source16: clustercheck
+Source17: LICENSE.clustercheck
+# Working around perl dependency checking bug in rpm FTTB. Remove later.
+Source999: filter-requires-mysql.sh
+
+# Comments for these patches are in the patch files.
+Patch1: mariadb-errno.patch
+Patch2: mariadb-strmov.patch
+Patch3: mariadb-install-test.patch
+Patch5: mariadb-versioning.patch
+Patch6: mariadb-dubious-exports.patch
+Patch7: mariadb-s390-tsc.patch
+Patch8: mariadb-logrotate.patch
+Patch9: mariadb-cipherspec.patch
+Patch10: mariadb-file-contents.patch
+Patch11: mariadb-string-overflow.patch
+Patch12: mariadb-dh1024.patch
+Patch14: mariadb-basedir.patch
+Patch17: mariadb-covscan-signexpr.patch
+Patch18: mariadb-covscan-stroverflow.patch
+Patch19: mariadb-config.patch
+Patch20: mariadb-ssltest.patch
+Patch21: mariadb-sharedir.patch
+
+BuildRequires: perl, readline-devel, openssl-devel
+BuildRequires: cmake, ncurses-devel, zlib-devel, libaio-devel
+BuildRequires: systemd, systemtap-sdt-devel
+# make test requires time and ps
+BuildRequires: time procps
+# auth_pam.so plugin will be build if pam-devel is installed
+BuildRequires: pam-devel
+# perl modules needed to run regression tests
+BuildRequires: perl(Socket), perl(Time::HiRes)
+BuildRequires: perl(Data::Dumper), perl(Test::More), perl(Env)
+
+Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: grep, fileutils, bash
+Requires(post): %{_sbindir}/update-alternatives
+Requires(postun): %{_sbindir}/update-alternatives
+
+%{?systemd_requires: %systemd_requires}
+
+# MySQL (with caps) is upstream's spelling of their own RPMs for mysql
+Obsoletes: MySQL < %{obsoleted_mysql_case_evr}
+Conflicts: community-mysql
+Conflicts: mariadb
+# MariaDB replaces mysql packages
+Provides: mysql = %{epoch}:%{version}-%{release}
+Provides: mysql%{?_isa} = %{epoch}:%{version}-%{release}
+Obsoletes: mysql < %{obsoleted_mysql_evr}
+# mysql-cluster used to be built from this SRPM, but no more
+Obsoletes: mysql-cluster < 5.1.44
+ 
+# When rpm 4.9 is universal, this could be cleaned up:
+%global __perl_requires %{SOURCE999}
+%global __perllib_requires %{SOURCE999}
+
+# 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
+
+%description
+MariaDB is a community developed branch of MySQL.
+MariaDB is a multi-user, multi-threaded SQL database server.
+It is a client/server implementation consisting of a server daemon (mysqld)
+and many different client programs and libraries. The base package
+contains the standard MariaDB/MySQL client programs and generic MySQL files.
+
+%package libs
+
+Summary: The shared libraries required for MariaDB/MySQL clients
+Group: Applications/Databases
+Requires: /sbin/ldconfig
+Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release}
+# Provides: mysql-libs = %{epoch}:%{version}-%{release}
+# Provides: mysql-libs%{?_isa} = %{epoch}:%{version}-%{release}
+Obsoletes: MySQL-libs < %{obsoleted_mysql_case_evr}
+Obsoletes: mysql-libs < %{obsoleted_mysql_evr}
+
+%description libs
+The mariadb-libs package provides the essential shared libraries for any 
+MariaDB/MySQL client program or interface. You will need to install this
+package to use any other MariaDB package or any clients that need to connect
+to a MariaDB/MySQL server. MariaDB is a community developed branch of MySQL.
+
+%package common
+Summary: The shared files required for MariaDB server and client
+Group: Applications/Databases
+
+%description common
+This package provides the essential shared files for other MariaDB packages.
+
+%package server
+
+Summary: The MariaDB server and related files
+Group: Applications/Databases
+# Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: mysql%{?_isa}
+Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: sh-utils, net-tools
+Requires: galera >= 25.3.3
+Requires(pre): /usr/sbin/useradd
+# We require this to be present for %%{_tmpfilesdir}
+Requires: systemd
+# Make sure it's there when scriptlets run, too
+Requires(pre): systemd
+Requires(post): systemd %{_sbindir}/update-alternatives
+Requires(preun): systemd
+Requires(postun): systemd %{_sbindir}/update-alternatives
+Requires(posttrans): systemd
+# mysqlhotcopy needs DBI/DBD support
+Requires: perl-DBI, perl-DBD-MySQL
+Provides: mysql-server = %{epoch}:%{version}-%{release}
+Provides: mysql-server%{?_isa} = %{epoch}:%{version}-%{release}
+Provides: mysql-compat-server = %{epoch}:%{version}-%{release}
+Provides: mysql-compat-server%{?_isa} = %{epoch}:%{version}-%{release}
+Conflicts: community-mysql-server
+Conflicts: mariadb-server
+Obsoletes: MySQL-server < %{obsoleted_mysql_case_evr}
+Obsoletes: mysql-server < %{obsoleted_mysql_evr}
+
+%description server
+MariaDB is a multi-user, multi-threaded SQL database server. It is a
+client/server implementation consisting of a server daemon (mysqld)
+and many different client programs and libraries. This package contains
+the MariaDB server and some accompanying files and directories.
+MariaDB is a community developed branch of MySQL.
+
+%package devel
+
+Summary: Files for development of MariaDB/MySQL applications
+Group: Applications/Databases
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openssl-devel%{?_isa}
+# Provides: mysql-devel = %{epoch}:%{version}-%{release}
+# Provides: mysql-devel%{?_isa} = %{epoch}:%{version}-%{release}
+Conflicts: community-mysql-devel
+Conflicts: mariadb-devel
+Obsoletes: MySQL-devel < %{obsoleted_mysql_case_evr}
+Obsoletes: mysql-devel < %{obsoleted_mysql_evr}
+
+%description devel
+MariaDB is a multi-user, multi-threaded SQL database server. This
+package contains the libraries and header files that are needed for
+developing MariaDB/MySQL client applications.
+MariaDB is a community developed branch of MySQL.
+
+%package embedded
+
+Summary: MariaDB as an embeddable library
+Group: Applications/Databases
+Requires: /sbin/ldconfig
+# Provides: mysql-embedded = %{epoch}:%{version}-%{release}
+# Provides: mysql-embedded%{?_isa} = %{epoch}:%{version}-%{release}
+Obsoletes: MySQL-embedded < %{obsoleted_mysql_case_evr}
+Obsoletes: mysql-embedded < %{obsoleted_mysql_evr}
+
+%description embedded
+MariaDB is a multi-user, multi-threaded SQL database server. This
+package contains a version of the MariaDB server that can be embedded
+into a client application instead of running as a separate process.
+MariaDB is a community developed branch of MySQL.
+
+%package embedded-devel
+
+Summary: Development files for MariaDB as an embeddable library
+Group: Applications/Databases
+Requires: %{name}-embedded%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
+# Provides: mysql-embedded-devel = %{epoch}:%{version}-%{release}
+# Provides: mysql-embedded-devel%{?_isa} = %{epoch}:%{version}-%{release}
+Conflicts: community-mysql-embedded-devel
+Conflicts: mariadb-embedded-devel
+Obsoletes: MySQL-embedded-devel < %{obsoleted_mysql_case_evr}
+Obsoletes: mysql-embedded-devel < %{obsoleted_mysql_evr}
+
+%description embedded-devel
+MariaDB is a multi-user, multi-threaded SQL database server. This
+package contains files needed for developing and testing with
+the embedded version of the MariaDB server.
+MariaDB is a community developed branch of MySQL.
+
+%package bench
+
+Summary: MariaDB benchmark scripts and data
+Group: Applications/Databases
+# Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: mysql%{?_isa}
+# Provides: mysql-bench = %{epoch}:%{version}-%{release}
+# Provides: mysql-bench%{?_isa} = %{epoch}:%{version}-%{release}
+Conflicts: community-mysql-bench
+Conflicts: mariadb-bench
+Obsoletes: MySQL-bench < %{obsoleted_mysql_case_evr}
+Obsoletes: mysql-bench < %{obsoleted_mysql_evr}
+
+%description bench
+MariaDB is a multi-user, multi-threaded SQL database server. This
+package contains benchmark scripts and data for use when benchmarking
+MariaDB.
+MariaDB is a community developed branch of MySQL.
+
+%package test
+
+Summary: The test suite distributed with MariaD
+Group: Applications/Databases
+Requires: perl(Socket), perl(Time::HiRes)
+Requires: perl(Data::Dumper), perl(Test::More), perl(Env)
+# Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: mysql%{?_isa}
+Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-server%{?_isa} = %{epoch}:%{version}-%{release}
+# Provides: mysql-test = %{epoch}:%{version}-%{release}
+# Provides: mysql-test%{?_isa} = %{epoch}:%{version}-%{release}
+Conflicts: community-mysql-test
+Conflicts: mariadb-test
+Obsoletes: MySQL-test < %{obsoleted_mysql_case_evr}
+Obsoletes: mysql-test < %{obsoleted_mysql_evr}
+
+%description test
+MariaDB is a multi-user, multi-threaded SQL database server. This
+package contains the regression test suite distributed with
+the MariaDB sources.
+MariaDB is a community developed branch of MySQL.
+
+%prep
+%setup -q -n mariadb-%{version}
+
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch14 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+
+# workaround for upstream bug #56342
+rm -f mysql-test/t/ssl_8k_key-master.opt
+
+# upstream has fallen down badly on symbol versioning, do it ourselves
+cp -p %{SOURCE8} libmysql/libmysql.version
+
+# generate a list of tests that fail, but are not disabled by upstream
+cat %{SOURCE14} > mysql-test/rh-skipped-tests.list
+# disable some tests failing on ARM architectures
+%ifarch %{arm}
+cat %{SOURCE15} >> mysql-test/rh-skipped-tests.list
+%endif
+# disable some tests failing on ppc and s390
+%ifarch ppc ppc64 ppc64p7 s390 s390x
+echo "main.gis-precise : rhbz#906367" >> mysql-test/rh-skipped-tests.list
+%endif
+
+%build
+
+# fail quickly and obviously if user tries to build as root
+%if %runselftest
+        if [ x"`id -u`" = x0 ]; then
+                echo "mariadb's regression tests fail if run as root."
+                echo "If you really need to build the RPM as root, use"
+                echo "--define='runselftest 0' to skip the regression tests."
+                exit 1
+        fi
+%endif
+
+CFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
+# force PIC mode so that we can build libmysqld.so
+CFLAGS="$CFLAGS -fPIC"
+# gcc seems to have some bugs on sparc as of 4.4.1, back off optimization
+# submitted as bz #529298
+%ifarch sparc sparcv9 sparc64
+CFLAGS=`echo $CFLAGS| sed -e "s|-O2|-O1|g" `
+%endif
+CXXFLAGS="$CFLAGS"
+export CFLAGS CXXFLAGS
+# building with PIE
+LDFLAGS="$LDFLAGS -pie"
+export LDFLAGS
+
+# 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" \
+        -DINSTALL_LAYOUT=RPM \
+        -DCMAKE_INSTALL_PREFIX="%{_prefix}" \
+%if 0%{?fedora} >= 20
+        -DINSTALL_DOCDIR=share/doc/%{name} \
+        -DINSTALL_DOCREADMEDIR=share/doc/%{name} \
+%else
+        -DINSTALL_DOCDIR=share/doc/%{name}-%{version} \
+        -DINSTALL_DOCREADMEDIR=share/doc/%{name}-%{version} \
+%endif
+        -DINSTALL_INCLUDEDIR=include/mysql \
+        -DINSTALL_INFODIR=share/info \
+        -DINSTALL_LIBDIR="%{_lib}/mysql" \
+        -DINSTALL_MANDIR=share/man \
+        -DINSTALL_MYSQLSHAREDIR=share/%{name} \
+        -DINSTALL_MYSQLTESTDIR=share/mysql-test \
+        -DINSTALL_PLUGINDIR="%{_lib}/mysql/plugin" \
+        -DINSTALL_SBINDIR=libexec \
+        -DINSTALL_SCRIPTDIR=bin \
+        -DINSTALL_SQLBENCHDIR=share \
+        -DINSTALL_SUPPORTFILESDIR=share/%{name} \
+        -DMYSQL_DATADIR="%{_localstatedir}/lib/mysql" \
+        -DMYSQL_UNIX_ADDR="%{_localstatedir}/lib/mysql/mysql.sock" \
+        -DENABLED_LOCAL_INFILE=ON \
+        -DENABLE_DTRACE=ON \
+        -DWITH_EMBEDDED_SERVER=OFF \
+        -DWITH_READLINE=ON \
+        -DWITH_WSREP=ON \
+        -DWITH_SSL=system \
+        -DWITH_ZLIB=system \
+        -DWITH_JEMALLOC=no \
+%{!?with_tokudb:        -DWITHOUT_TOKUDB=ON}\
+        -DTMPDIR=%{_localstatedir}/tmp \
+        -DWITH_MYSQLD_LDFLAGS="-Wl,-z,relro,-z,now"
+
+make %{?_smp_mflags} VERBOSE=1
+
+# debuginfo extraction scripts fail to find source files in their real
+# location -- satisfy them by copying these files into location, which
+# is expected by scripts
+for e in innobase xtradb ; do
+  for f in pars0grm.c pars0grm.y pars0lex.l lexyy.c ; do
+    cp -p "storage/$e/pars/$f" "storage/$e/$f"
+  done
+done
+
+%check
+%if %runselftest
+  # hack to let 32- and 64-bit tests run concurrently on same build machine
+  case `uname -m` in
+    ppc64 | ppc64p7 | s390x | x86_64 | sparc64 )
+      MTR_BUILD_THREAD=7
+      ;;
+    *)
+      MTR_BUILD_THREAD=11
+      ;;
+  esac
+  export MTR_BUILD_THREAD
+  export MTR_PARALLEL=1
+
+  make test VERBOSE=1
+
+  # The cmake build scripts don't provide any simple way to control the
+  # options for mysql-test-run, so ignore the make target and just call it
+  # manually.  Nonstandard options chosen are:
+  # --force to continue tests after a failure
+  # no retries please
+  # test SSL with --ssl
+  # skip tests that are listed in rh-skipped-tests.list
+  # avoid redundant test runs with --binlog-format=mixed
+  # increase timeouts to prevent unwanted failures during mass rebuilds
+  (
+    cd mysql-test
+    perl ./mysql-test-run.pl --force --retry=0 --ssl \
+        --skip-test-list=rh-skipped-tests.list \
+        --suite-timeout=720 --testcase-timeout=30 \
+        --mysqld=--binlog-format=mixed --force-restart \
+        --shutdown-timeout=60 
+    # cmake build scripts will install the var cruft if left alone :-(
+    rm -rf var
+  ) 
+%endif
+
+%install
+make DESTDIR=$RPM_BUILD_ROOT install
+
+# List the installed tree for RPM package maintenance purposes.
+find $RPM_BUILD_ROOT -print | sed "s|^$RPM_BUILD_ROOT||" | sort > ROOTFILES
+
+# multilib header hacks
+# we only apply this to known Red Hat multilib arches, per bug #181335
+case `uname -i` in
+  i386 | x86_64 | ppc | ppc64 | ppc64p7 | s390 | s390x | sparc | sparc64 | aarch64 )
+    mv $RPM_BUILD_ROOT%{_includedir}/mysql/my_config.h $RPM_BUILD_ROOT%{_includedir}/mysql/my_config_`uname -i`.h
+    mv $RPM_BUILD_ROOT%{_includedir}/mysql/private/config.h $RPM_BUILD_ROOT%{_includedir}/mysql/private/my_config_`uname -i`.h
+    install -p -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_includedir}/mysql/
+    install -p -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_includedir}/mysql/private/config.h
+    ;;
+  arm* )
+    mv $RPM_BUILD_ROOT%{_includedir}/mysql/my_config.h $RPM_BUILD_ROOT%{_includedir}/mysql/my_config_arm.h
+    mv $RPM_BUILD_ROOT%{_includedir}/mysql/private/config.h $RPM_BUILD_ROOT%{_includedir}/mysql/private/my_config_arm.h
+    install -p -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_includedir}/mysql/
+    install -p -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_includedir}/mysql/private/config.h
+    ;;
+  *)
+    ;;
+esac
+
+# cmake generates some completely wacko references to -lprobes_mysql when
+# building with dtrace support.  Haven't found where to shut that off,
+# so resort to this blunt instrument.  While at it, let's not reference
+# libmysqlclient_r anymore either.
+sed -e 's/-lprobes_mysql//' -e 's/-lmysqlclient_r/-lmysqlclient/' \
+        ${RPM_BUILD_ROOT}%{_bindir}/mysql_config >mysql_config.tmp
+cp -p -f mysql_config.tmp ${RPM_BUILD_ROOT}%{_bindir}/mysql_config
+chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/mysql_config
+
+# install INFO_SRC, INFO_BIN into libdir (upstream thinks these are doc files,
+# but that's pretty wacko --- see also mariadb-file-contents.patch)
+mv ${RPM_BUILD_ROOT}%{_pkgdocdir}/INFO_SRC ${RPM_BUILD_ROOT}%{_libdir}/mysql/
+mv ${RPM_BUILD_ROOT}%{_pkgdocdir}/INFO_BIN ${RPM_BUILD_ROOT}%{_libdir}/mysql/
+
+mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/mariadb
+chmod 0750 $RPM_BUILD_ROOT%{_localstatedir}/log/mariadb
+touch $RPM_BUILD_ROOT%{_localstatedir}/log/mariadb/mariadb.log
+ln -s %{_localstatedir}/log/mariadb/mariadb.log $RPM_BUILD_ROOT%{_localstatedir}/log/mysqld.log
+
+# current setting in my.cnf is to use /var/run/mariadb for creating pid file,
+# however since my.cnf is not updated by RPM if changed, we need to create mysqld
+# as well because users can have odd settings in their /etc/my.cnf
+mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/mysqld
+mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/mariadb
+install -m 0755 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/mysql
+
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}
+install -p -m 0644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/my.cnf
+
+# install systemd unit files and scripts for handling server startup
+mkdir -p ${RPM_BUILD_ROOT}%{_unitdir}
+install -p -m 644 %{SOURCE11} ${RPM_BUILD_ROOT}%{_unitdir}/
+ln -s mariadb.service ${RPM_BUILD_ROOT}%{_unitdir}/mysqld.service
+install -p -m 755 %{SOURCE12} ${RPM_BUILD_ROOT}%{_libexecdir}/
+install -p -m 755 %{SOURCE13} ${RPM_BUILD_ROOT}%{_libexecdir}/
+
+mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir}
+install -p -m 0644 %{SOURCE10} $RPM_BUILD_ROOT%{_tmpfilesdir}/%{name}.conf
+
+# Fix funny permissions that cmake build scripts apply to config files
+chmod 644 ${RPM_BUILD_ROOT}%{_datadir}/%{name}/config.*.ini
+
+# Fix scripts for multilib safety
+mv ${RPM_BUILD_ROOT}%{_bindir}/mysql_config ${RPM_BUILD_ROOT}%{_libdir}/mysql/mysql_config
+touch ${RPM_BUILD_ROOT}%{_bindir}/mysql_config
+
+mv ${RPM_BUILD_ROOT}%{_bindir}/mysqlbug ${RPM_BUILD_ROOT}%{_libdir}/mysql/mysqlbug
+touch ${RPM_BUILD_ROOT}%{_bindir}/mysqlbug
+
+# Remove libmysqld.a
+rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqld.a
+
+# libmysqlclient_r is no more.  Upstream tries to replace it with symlinks
+# but that really doesn't work (wrong soname in particular).  We'll keep
+# just the devel libmysqlclient_r.so link, so that rebuilding without any
+# source change is enough to get rid of dependency on libmysqlclient_r.
+rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqlclient_r.so*
+ln -s libmysqlclient.so ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqlclient_r.so
+ 
+# mysql-test includes one executable that doesn't belong under /usr/share,
+# so move it and provide a symlink
+mv ${RPM_BUILD_ROOT}%{_datadir}/mysql-test/lib/My/SafeProcess/my_safe_process ${RPM_BUILD_ROOT}%{_bindir}
+ln -s ../../../../../bin/my_safe_process ${RPM_BUILD_ROOT}%{_datadir}/mysql-test/lib/My/SafeProcess/my_safe_process
+
+# should move this to /etc/ ?
+rm -f ${RPM_BUILD_ROOT}%{_bindir}/mysql_embedded
+rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/*.a
+rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}/binary-configure
+rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}/magic
+rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}/ndb-config-2-node.ini
+rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}/mysql.server
+rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}/mysqld_multi.server
+rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql-stress-test.pl.1*
+rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql-test-run.pl.1*
+rm -f ${RPM_BUILD_ROOT}%{_bindir}/mytop
+
+# put logrotate script where it needs to be
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
+mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}/mysql-log-rotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/mariadb
+chmod 644 $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/mariadb
+
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d
+echo "%{_libdir}/mysql" > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
+
+# copy additional docs into build tree so %%doc will find them
+cp -p %{SOURCE6} README.mysql-docs
+cp -p %{SOURCE7} README.mysql-license
+
+# install the list of skipped tests to be available for user runs
+install -p -m 0644 mysql-test/rh-skipped-tests.list ${RPM_BUILD_ROOT}%{_datadir}/mysql-test
+
+# remove unneeded RHEL-4 SELinux stuff
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/SELinux/
+
+# remove SysV init script
+rm -f ${RPM_BUILD_ROOT}%{_sysconfdir}/init.d/mysql
+
+# remove duplicate logrotate script
+rm -f ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/mysql
+
+# remove solaris files
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/solaris/
+
+# copy wsrep README into build tree so %%doc will find it
+cp -p ${RPM_BUILD_ROOT}%{_pkgdocdir}/README-wsrep README.wsrep
+
+# install galera config file
+install -p -m 0644 support-files/wsrep.cnf ${RPM_BUILD_ROOT}%{_sysconfdir}/my.cnf.d/galera.cnf
+
+# install the clustercheck script and license
+mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
+touch ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/clustercheck
+install -p -m 0755 %{SOURCE16} ${RPM_BUILD_ROOT}%{_bindir}/clustercheck
+cp -p %{SOURCE17} LICENSE.clustercheck
+
+# delete unpackaged files for client subpackage
+rm -rf ${RPM_BUILD_ROOT}%{_bindir}/msql2mysql \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysql \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysql_config \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysql_find_rows \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysql_waitpid \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqlaccess \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqladmin \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqlbinlog \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqlcheck \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqldump \
+       ${RPM_BUILD_ROOT}%{_bindir}/tokuftdump \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqlimport \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqlshow \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqlslap \
+       ${RPM_BUILD_ROOT}%{_bindir}/my_print_defaults \
+       ${RPM_BUILD_ROOT}%{_bindir}/aria_chk \
+       ${RPM_BUILD_ROOT}%{_bindir}/aria_dump_log \
+       ${RPM_BUILD_ROOT}%{_bindir}/aria_ftdump \
+       ${RPM_BUILD_ROOT}%{_bindir}/aria_pack \
+       ${RPM_BUILD_ROOT}%{_bindir}/aria_read_log \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql_config.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql_find_rows.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql_waitpid.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysqlaccess.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysqladmin.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysqldump.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysqlshow.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysqlslap.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/my_print_defaults.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql_fix_privilege_tables.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man8/mysqlmanager.8* \
+       ${RPM_BUILD_ROOT}%{_libdir}/mysql/mysql_config \
+       ${RPM_BUILD_ROOT}%{_sysconfdir}/my.cnf.d/client.cnf
+
+# delete unpkackaged files in pkgdocdir
+rm -rf ${RPM_BUILD_ROOT}%{_pkgdocdir}/*
+
+# delete unpackaged files for libs subpackage
+rm -rf ${RPM_BUILD_ROOT}%{_sysconfdir}/my.cnf \
+       ${RPM_BUILD_ROOT}%{_sysconfdir}/my.cnf.d/mysql-clients.cnf \
+       ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqlclient.so.* \
+       ${RPM_BUILD_ROOT}%{_sysconfdir}/ld.so.conf.d/*
+
+# delete unpackaged files for test subpackage
+rm -rf ${RPM_BUILD_ROOT}%{_bindir}/mysql_client_test \
+       ${RPM_BUILD_ROOT}%{_bindir}/my_safe_process \
+       ${RPM_BUILD_ROOT}%{_datadir}/mysql-test \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql_client_test.1*
+
+# delete unpackaged files for bench subpackage
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/sql-bench
+
+# delete unpackaged files for devel subpackage
+rm -rf ${RPM_BUILD_ROOT}%{_includedir}/mysql \
+       ${RPM_BUILD_ROOT}%{_datadir}/aclocal/mysql.m4 \
+       ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqlclient.so \
+       ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqlclient_r.so
+
+# delete unpackaged files for embedded subpackage
+rm -rf ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqld.so.*
+
+# delete unpackaged files for embedded-devel subpackage
+rm -rf ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqld.so \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysql_client_test_embedded \
+       ${RPM_BUILD_ROOT}%{_bindir}/mysqltest_embedded \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql_client_test_embedded.1* \
+       ${RPM_BUILD_ROOT}%{_mandir}/man1/mysqltest_embedded.1*
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+# %post
+# %{_sbindir}/update-alternatives --install %{_bindir}/mysql_config \
+#       mysql_config %{_libdir}/mysql/mysql_config %{__isa_bits}
+
+%pre server
+/usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 || :
+/usr/sbin/useradd -M -N -g mysql -o -r -d %{_localstatedir}/lib/mysql -s /sbin/nologin \
+        -c "MariaDB Server" -u 27 mysql >/dev/null 2>&1 || :
+
+# Explicitly enable mysqld if it was enabled in the beggining
+# of the transaction. Otherwise mysqld is disabled always when
+# replacing mysql with mariadb, because it is not recognized
+# as updating, but rather as removal and install.
+if /bin/systemctl is-enabled mysqld.service >/dev/null 2>&1 ; then
+    touch %mysqld_enabled_flag_file >/dev/null 2>&1 || :
+fi
+
+# Since mysqld.service became a symlink to mariadb.service, turning off
+# the running mysqld service doesn't work fine (BZ#1002996). As a work-around
+# we explicitly stop mysqld before upgrade and start after it again.
+if [ ! -L %{_unitdir}/mysqld.service ] && /bin/systemctl is-active mysqld.service &>/dev/null ; then
+    touch %mysqld_running_flag_file >/dev/null 2>&1 || :
+    /bin/systemctl stop mysqld.service >/dev/null 2>&1 || :
+fi
+
+%posttrans server
+if [ -f %mysqld_enabled_flag_file ] ; then
+    /bin/systemctl enable mariadb.service >/dev/null 2>&1 || :
+    rm -f %mysqld_enabled_flag_file >/dev/null 2>&1 || :
+fi
+if [ -f %mysqld_running_flag_file ] ; then
+    /bin/systemctl start mariadb.service >/dev/null 2>&1 || :
+    rm -f %mysqld_running_flag_file >/dev/null 2>&1 || :
+fi
+
+# %post libs -p /sbin/ldconfig
+
+%post server
+%systemd_post mariadb.service
+/bin/chmod 0755 %{_localstatedir}/lib/mysql
+
+%{_sbindir}/update-alternatives --install %{_bindir}/mysqlbug \
+        mysqlbug %{_libdir}/mysql/mysqlbug %{__isa_bits}
+
+# %post embedded -p /sbin/ldconfig
+
+# %postun
+# if [ $1 -eq 0 ] ; then
+#     %{_sbindir}/update-alternatives --remove mysql_config %{_libdir}/mysql/mysql_config
+# fi
+
+%preun server
+%systemd_preun mariadb.service
+
+# %postun libs -p /sbin/ldconfig
+
+%postun server
+%systemd_postun_with_restart mariadb.service
+if [ $1 -eq 0 ] ; then
+    %{_sbindir}/update-alternatives --remove mysqlbug %{_libdir}/mysql/mysqlbug
+fi
+
+# %postun embedded -p /sbin/ldconfig
+
+# %files
+# %defattr(-,root,root,-)
+# %doc README COPYING COPYING.LESSER README.mysql-license
+# %doc storage/innobase/COPYING.Percona storage/innobase/COPYING.Google
+# %doc README.mysql-docs
+
+# %{_bindir}/msql2mysql
+# %{_bindir}/mysql
+# %ghost %{_bindir}/mysql_config
+# %{_bindir}/mysql_find_rows
+# %{_bindir}/mysql_waitpid
+# %{_bindir}/mysqlaccess
+# %{_bindir}/mysqladmin
+# %{_bindir}/mysqlbinlog
+# %{_bindir}/mysqlcheck
+# %{_bindir}/mysqldump
+# %{?with_tokudb:%{_bindir}/tokuftdump}
+# %{_bindir}/mysqlimport
+# %{_bindir}/mysqlshow
+# %{_bindir}/mysqlslap
+# %{_bindir}/my_print_defaults
+# %{_bindir}/aria_chk
+# %{_bindir}/aria_dump_log
+# %{_bindir}/aria_ftdump
+# %{_bindir}/aria_pack
+# %{_bindir}/aria_read_log
+
+# %{_mandir}/man1/mysql.1*
+# %{_mandir}/man1/mysql_config.1*
+# %{_mandir}/man1/mysql_find_rows.1*
+# %{_mandir}/man1/mysql_waitpid.1*
+# %{_mandir}/man1/mysqlaccess.1*
+# %{_mandir}/man1/mysqladmin.1*
+# %{_mandir}/man1/mysqldump.1*
+# %{_mandir}/man1/mysqlshow.1*
+# %{_mandir}/man1/mysqlslap.1*
+# %{_mandir}/man1/my_print_defaults.1*
+# %{_mandir}/man1/mysql_fix_privilege_tables.1*
+# %{_mandir}/man8/mysqlmanager.8*
+
+# %{_libdir}/mysql/mysql_config
+# %config(noreplace) %{_sysconfdir}/my.cnf.d/client.cnf
+
+# %files libs
+# %defattr(-,root,root,-)
+# %doc README COPYING COPYING.LESSER README.mysql-license
+# %doc storage/innobase/COPYING.Percona storage/innobase/COPYING.Google
+# # although the default my.cnf contains only server settings, we put it in the
+# # libs package because it can be used for client settings too.
+# %config(noreplace) %{_sysconfdir}/my.cnf
+# %config(noreplace) %{_sysconfdir}/my.cnf.d/mysql-clients.cnf
+# %dir %{_libdir}/mysql
+# %{_libdir}/mysql/libmysqlclient.so.*
+# %{_sysconfdir}/ld.so.conf.d/*
+
+%files common
+%defattr(-,root,root,-)
+%doc README COPYING COPYING.LESSER README.mysql-license
+%doc storage/innobase/COPYING.Percona storage/innobase/COPYING.Google
+%doc README.wsrep LICENSE.clustercheck
+%dir %{_sysconfdir}/my.cnf.d
+%dir %{_datadir}/%{name}
+%{_datadir}/%{name}/english
+%lang(cs) %{_datadir}/%{name}/czech
+%lang(da) %{_datadir}/%{name}/danish
+%lang(nl) %{_datadir}/%{name}/dutch
+%lang(et) %{_datadir}/%{name}/estonian
+%lang(fr) %{_datadir}/%{name}/french
+%lang(de) %{_datadir}/%{name}/german
+%lang(el) %{_datadir}/%{name}/greek
+%lang(hu) %{_datadir}/%{name}/hungarian
+%lang(it) %{_datadir}/%{name}/italian
+%lang(ja) %{_datadir}/%{name}/japanese
+%lang(ko) %{_datadir}/%{name}/korean
+%lang(no) %{_datadir}/%{name}/norwegian
+%lang(no) %{_datadir}/%{name}/norwegian-ny
+%lang(pl) %{_datadir}/%{name}/polish
+%lang(pt) %{_datadir}/%{name}/portuguese
+%lang(ro) %{_datadir}/%{name}/romanian
+%lang(ru) %{_datadir}/%{name}/russian
+%lang(sr) %{_datadir}/%{name}/serbian
+%lang(sk) %{_datadir}/%{name}/slovak
+%lang(es) %{_datadir}/%{name}/spanish
+%lang(sv) %{_datadir}/%{name}/swedish
+%lang(uk) %{_datadir}/%{name}/ukrainian
+%{_datadir}/%{name}/charsets
+
+%files server
+%defattr(-,root,root,-)
+%doc support-files/*.cnf
+
+%{_bindir}/myisamchk
+%{_bindir}/myisam_ftdump
+%{_bindir}/myisamlog
+%{_bindir}/myisampack
+%{_bindir}/mysql_convert_table_format
+%{_bindir}/mysql_fix_extensions
+%{_bindir}/mysql_install_db
+%{_bindir}/mysql_plugin
+%{_bindir}/mysql_secure_installation
+%{_bindir}/mysql_setpermission
+%{_bindir}/mysql_tzinfo_to_sql
+%{_bindir}/mysql_upgrade
+%{_bindir}/mysql_zap
+%ghost %{_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
+%{_bindir}/clustercheck
+%{_bindir}/wsrep_sst_common
+%{_bindir}/wsrep_sst_mysqldump
+%{_bindir}/wsrep_sst_rsync
+%{_bindir}/wsrep_sst_xtrabackup
+
+%config(noreplace) %{_sysconfdir}/my.cnf.d/server.cnf
+%config(noreplace) %{_sysconfdir}/my.cnf.d/galera.cnf
+%{?with_tokudb:%config(noreplace) %{_sysconfdir}/my.cnf.d/tokudb.cnf}
+%attr(0640,root,root) %ghost %config(noreplace) %{_sysconfdir}/sysconfig/clustercheck
+
+%{_libexecdir}/mysqld
+
+%{_libdir}/mysql/INFO_SRC
+%{_libdir}/mysql/INFO_BIN
+
+%{_libdir}/mysql/mysqlbug
+%{_libdir}/mysql/plugin
+
+%{_mandir}/man1/msql2mysql.1*
+%{_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_plugin.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/mysqlbinlog.1*
+%{_mandir}/man1/mysqlcheck.1*
+%{_mandir}/man1/mysqld_multi.1*
+%{_mandir}/man1/mysqld_safe.1*
+%{_mandir}/man1/mysqlhotcopy.1*
+%{_mandir}/man1/mysqlimport.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}/%{name}/errmsg-utf8.txt
+%{_datadir}/%{name}/fill_help_tables.sql
+%{_datadir}/%{name}/mysql_system_tables.sql
+%{_datadir}/%{name}/mysql_system_tables_data.sql
+%{_datadir}/%{name}/mysql_test_data_timezone.sql
+%{_datadir}/%{name}/mysql_performance_tables.sql
+%{_datadir}/%{name}/my-*.cnf
+%{_datadir}/%{name}/config.*.ini
+%{_datadir}/%{name}/wsrep.cnf
+%{_datadir}/%{name}/wsrep_notify
+
+%{_unitdir}/mysqld.service
+%{_unitdir}/mariadb.service
+%{_libexecdir}/mariadb-prepare-db-dir
+%{_libexecdir}/mariadb-wait-ready
+
+%{_tmpfilesdir}/%{name}.conf
+%attr(0755,mysql,mysql) %dir %{_localstatedir}/run/mysqld
+%attr(0755,mysql,mysql) %dir %{_localstatedir}/run/mariadb
+%attr(0755,mysql,mysql) %dir %{_localstatedir}/lib/mysql
+%attr(0750,mysql,mysql) %dir %{_localstatedir}/log/mariadb
+%attr(0640,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{_localstatedir}/log/mariadb/mariadb.log
+%attr(0640,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{_localstatedir}/log/mysqld.log
+%config(noreplace) %{_sysconfdir}/logrotate.d/mariadb
+
+# %files devel
+# %defattr(-,root,root,-)
+# %{_includedir}/mysql
+# %{_datadir}/aclocal/mysql.m4
+# %{_libdir}/mysql/libmysqlclient.so
+# %{_libdir}/mysql/libmysqlclient_r.so
+
+# %files embedded
+# %defattr(-,root,root,-)
+# %doc README COPYING COPYING.LESSER README.mysql-license
+# %doc storage/innobase/COPYING.Percona storage/innobase/COPYING.Google
+# %{_libdir}/mysql/libmysqld.so.*
+
+# %files embedded-devel
+# %defattr(-,root,root,-)
+# %{_libdir}/mysql/libmysqld.so
+# %{_bindir}/mysql_client_test_embedded
+# %{_bindir}/mysqltest_embedded
+# %{_mandir}/man1/mysql_client_test_embedded.1*
+# %{_mandir}/man1/mysqltest_embedded.1*
+
+# %files bench
+# %defattr(-,root,root,-)
+# %{_datadir}/sql-bench
+
+# %files test
+# %defattr(-,root,root,-)
+# %{_bindir}/mysql_client_test
+# %{_bindir}/my_safe_process
+# %attr(-,mysql,mysql) %{_datadir}/mysql-test
+# %{_mandir}/man1/mysql_client_test.1*
+
+%changelog
+* Wed Apr 16 2014 Ryan O'Hara <rohara at redhat.com> - 1:5.5.36-9
+- Update clustercheck script to read /etc/sysconfig/clustercheck
+
+* Fri Apr 11 2014 Ryan O'Hara <rohara at redhat.com> - 1:5.5.36-8
+- Include clustercheck script
+
+* Wed Apr 09 2014 Ryan O'Hara <rohara at redhat.com> - 1:5.5.36-7
+- Only build common and server subpackages
+
+* Tue Apr 01 2014 Ryan O'Hara <rohara at redhat.com> - 1:5.5.36-6
+- Change server subpackage to require any client that provides mysql
+
+* Mon Mar 31 2014 Ryan O'Hara <rohara at redhat.com> - 1:5.5.36-5
+- Fix required galera version
+
+* Wed Mar 26 2014 Ryan O'Hara <rohara at redhat.com> - 1:5.5.36-4
+- Add defattr to all subpackages
+
+* Wed Mar 26 2014 Ryan O'Hara <rohara at redhat.com> - 1:5.5.36-3
+- Fix paths in helper scripts
+- Move language files into mariadb directory
+
+* Tue Mar 18 2014 Ryan O'Hara <rohara at redhat.com> - 1:5.5.36-2
+- Intitial mariadb-galera build
+
+* Thu Mar 06 2014 Honza Horak <hhorak at redhat.com> - 1:5.5.36-1
+- Rebase to 5.5.36
+  https://kb.askmonty.org/en/mariadb-5536-changelog/
+
+* Wed Feb  5 2014 Honza Horak <hhorak at redhat.com> 1:5.5.35-3
+- Do not touch the log file in post script, so it does not get wrong owner
+  Resolves: #1061045
+
+* Thu Jan 30 2014 Honza Horak <hhorak at redhat.com> 1:5.5.35-1
+- Rebase to 5.5.35
+  https://kb.askmonty.org/en/mariadb-5535-changelog/
+  Also fixes: CVE-2014-0001, CVE-2014-0412, CVE-2014-0437, CVE-2013-5908,
+  CVE-2014-0420, CVE-2014-0393, CVE-2013-5891, CVE-2014-0386, CVE-2014-0401,
+  CVE-2014-0402
+  Resolves: #1054043
+  Resolves: #1059546
+
+* Wed Jan  8 2014 Honza Horak <hhorak at redhat.com> 1:5.5.34-4
+- Read socketfile location in mariadb-prepare-db-dir script
+
+* Mon Jan  6 2014 Honza Horak <hhorak at redhat.com> 1:5.5.34-3
+- 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
+- Check if socket file is not being used by another process at a time
+  of starting the service
+  Related: #1045435
+- Use %%ghost directive for the log file
+  Related: 1043501
+
+* Wed Nov 27 2013 Honza Horak <hhorak at redhat.com> 1:5.5.34-2
+- Fix mariadb-wait-ready script
+
+* Fri Nov 22 2013 Honza Horak <hhorak at redhat.com> 1:5.5.34-1
+- Rebase to 5.5.34
+
+* Mon Nov  4 2013 Honza Horak <hhorak at redhat.com> 1:5.5.33a-4
+- Fix spec file to be ready for backport by Oden Eriksson
+  Resolves: #1026404
+
+* Mon Nov  4 2013 Honza Horak <hhorak at redhat.com> 1:5.5.33a-3
+- Add pam-devel to build-requires in order to build
+  Related: #1019945
+- Check if correct process is running in mysql-wait-ready script
+  Related: #1026313
+
+* Mon Oct 14 2013 Honza Horak <hhorak at redhat.com> 1:5.5.33a-2
+- Turn on test suite
+
+* Thu Oct 10 2013 Honza Horak <hhorak at redhat.com> 1:5.5.33a-1
+- Rebase to 5.5.33a
+  https://kb.askmonty.org/en/mariadb-5533-changelog/
+  https://kb.askmonty.org/en/mariadb-5533a-changelog/
+- Enable outfile_loaddata test
+- Disable tokudb_innodb_xa_crash test
+
+* Mon Sep  2 2013 Honza Horak <hhorak at redhat.com> - 1:5.5.32-12
+- Re-organize my.cnf to include only generic settings
+  Resolves: #1003115
+- Move pid file location to /var/run/mariadb
+- Make mysqld a symlink to mariadb unit file rather than the opposite way
+  Related: #999589
+
+* Thu Aug 29 2013 Honza Horak <hhorak at redhat.com> - 1:5.5.32-11
+- Move log file into /var/log/mariadb/mariadb.log
+- Rename logrotate script to mariadb
+- Resolves: #999589
+
+* Wed Aug 14 2013 Rex Dieter <rdieter at fedoraproject.org> 1:5.5.32-10
+- fix alternatives usage
+
+* Tue Aug 13 2013 Honza Horak <hhorak at redhat.com> - 1:5.5.32-9
+- Multilib issues solved by alternatives
+  Resolves: #986959
+
+* Sat Aug 03 2013 Petr Pisar <ppisar at redhat.com> - 1:5.5.32-8
+- Perl 5.18 rebuild
+
+* Wed Jul 31 2013 Honza Horak <hhorak at redhat.com> - 1:5.5.32-7
+- Do not use login shell for mysql user
+
+* Tue Jul 30 2013 Honza Horak <hhorak at redhat.com> - 1:5.5.32-6
+- Remove unneeded systemd-sysv requires
+- Provide mysql-compat-server symbol
+- Create mariadb.service symlink
+- Fix multilib header location for arm
+- Enhance documentation in the unit file
+- Use scriptstub instead of links to avoid multilib conflicts
+- Add condition for doc placement in F20+
+
+* Sun Jul 28 2013 Dennis Gilmore <dennis at ausil.us> - 1:5.5.32-5
+- remove "Requires(pretrans): systemd" since its not possible
+- when installing mariadb and systemd at the same time. as in a new install
+
+* Sat Jul 27 2013 Kevin Fenzi <kevin at scrye.com> 1:5.5.32-4
+- Set rpm doc macro to install docs in unversioned dir
+
+* Fri Jul 26 2013 Dennis Gilmore <dennis at ausil.us> 1:5.5.32-3
+- add Requires(pre) on systemd for the server package
+
+* Tue Jul 23 2013 Dennis Gilmore <dennis at ausil.us> 1:5.5.32-2
+- replace systemd-units requires with systemd
+- remove solaris files
+
+* Fri Jul 19 2013 Honza Horak <hhorak at redhat.com> 1:5.5.32-1
+- Rebase to 5.5.32
+  https://kb.askmonty.org/en/mariadb-5532-changelog/
+- Clean-up un-necessary systemd snippets
+
+* Wed Jul 17 2013 Petr Pisar <ppisar at redhat.com> - 1:5.5.31-7
+- Perl 5.18 rebuild
+
+* Mon Jul  1 2013 Honza Horak <hhorak at redhat.com> 1:5.5.31-6
+- Test suite params enhanced to decrease server condition influence
+- Fix misleading error message when uninstalling built-in plugins
+  Related: #966873
+
+* Thu Jun 27 2013 Honza Horak <hhorak at redhat.com> 1:5.5.31-5
+- Apply fixes found by Coverity static analysis tool
+
+* Wed Jun 19 2013 Honza Horak <hhorak at redhat.com> 1:5.5.31-4
+- Do not use pretrans scriptlet, which doesn't work in anaconda
+  Resolves: #975348
+
+* Fri Jun 14 2013 Honza Horak <hhorak at redhat.com> 1:5.5.31-3
+- Explicitly enable mysqld if it was enabled in the beggining
+  of the transaction.
+
+* Thu Jun 13 2013 Honza Horak <hhorak at redhat.com> 1:5.5.31-2
+- Apply man page fix from Jan Stanek
+
+* Fri May 24 2013 Honza Horak <hhorak at redhat.com> 1:5.5.31-1
+- Rebase to 5.5.31
+  https://kb.askmonty.org/en/mariadb-5531-changelog/
+- Preserve time-stamps in case of installed files
+- Use /var/tmp instead of /tmp, since the later is using tmpfs,
+  which can cause problems
+  Resolves: #962087
+- Fix test suite requirements
+
+* Sun May  5 2013 Honza Horak <hhorak at redhat.com> 1:5.5.30-2
+- Remove mytop utility, which is packaged separately
+- Resolve multilib conflicts in mysql/private/config.h
+
+* Fri Mar 22 2013 Honza Horak <hhorak at redhat.com> 1:5.5.30-1
+- Rebase to 5.5.30
+  https://kb.askmonty.org/en/mariadb-5530-changelog/
+
+* Fri Mar 22 2013 Honza Horak <hhorak at redhat.com> 1:5.5.29-11
+- Obsolete MySQL since it is now renamed to community-mysql
+- Remove real- virtual names
+
+* Thu Mar 21 2013 Honza Horak <hhorak at redhat.com> 1:5.5.29-10
+- Adding epoch to have higher priority than other mysql implementations
+  when comes to provider comparison
+
+* Wed Mar 13 2013 Honza Horak <hhorak at redhat.com> 5.5.29-9
+- Let mariadb-embedded-devel conflict with MySQL-embedded-devel
+- Adjust mariadb-sortbuffer.patch to correspond with upstream patch
+
+* Mon Mar  4 2013 Honza Horak <hhorak at redhat.com> 5.5.29-8
+- Mask expected warnings about setrlimit in test suite
+
+* Thu Feb 28 2013 Honza Horak <hhorak at redhat.com> 5.5.29-7
+- Use configured prefix value instead of guessing basedir
+  in mysql_config
+Resolves: #916189
+- Export dynamic columns and non-blocking API functions documented
+  by upstream
+
+* Wed Feb 27 2013 Honza Horak <hhorak at redhat.com> 5.5.29-6
+- Fix sort_buffer_length option type
+
+* Wed Feb 13 2013 Honza Horak <hhorak at redhat.com> 5.5.29-5
+- Suppress warnings in tests and skip tests also on ppc64p7
+
+* Tue Feb 12 2013 Honza Horak <hhorak at redhat.com> 5.5.29-4
+- Suppress warning in tests on ppc
+- Enable fixed index_merge_myisam test case
+
+* Thu Feb 07 2013 Honza Horak <hhorak at redhat.com> 5.5.29-3
+- Packages need to provide also %%_isa version of mysql package
+- Provide own symbols with real- prefix to distinguish from mysql
+  unambiguously
+- Fix format for buffer size in error messages (MDEV-4156)
+- Disable some tests that fail on ppc and s390
+- Conflict only with real-mysql, otherwise mariadb conflicts with ourself
+
+* Tue Feb 05 2013 Honza Horak <hhorak at redhat.com> 5.5.29-2
+- Let mariadb-libs to own /etc/my.cnf.d
+
+* Thu Jan 31 2013 Honza Horak <hhorak at redhat.com> 5.5.29-1
+- Rebase to 5.5.29
+  https://kb.askmonty.org/en/mariadb-5529-changelog/
+- Fix inaccurate default for socket location in mysqld-wait-ready
+  Resolves: #890535
+
+* Thu Jan 31 2013 Honza Horak <hhorak at redhat.com> 5.5.28a-8
+- Enable obsoleting mysql
+
+* Wed Jan 30 2013 Honza Horak <hhorak at redhat.com> 5.5.28a-7
+- Adding necessary hacks for perl dependency checking, rpm is still
+  not wise enough
+- Namespace sanity re-added for symbol default_charset_info
+
+* Mon Jan 28 2013 Honza Horak <hhorak at redhat.com> 5.5.28a-6
+- Removed %%{_isa} from provides/obsoletes, which doesn't allow
+  proper obsoleting
+- Do not obsolete mysql at the time of testing
+
+* Thu Jan 10 2013 Honza Horak <hhorak at redhat.com> 5.5.28a-5
+- Added licenses LGPLv2 and BSD
+- Removed wrong usage of %%{epoch}
+- Test-suite is run in %%check
+- Removed perl dependency checking adjustment, rpm seems to be smart enough
+- Other minor spec file fixes
+
+* Tue Dec 18 2012 Honza Horak <hhorak at redhat.com> 5.5.28a-4
+- Packaging of MariaDB based on MySQL package
diff --git a/mariadb-install-test.patch b/mariadb-install-test.patch
new file mode 100644
index 0000000..5657b73
--- /dev/null
+++ b/mariadb-install-test.patch
@@ -0,0 +1,56 @@
+Improve the documentation that will be installed in the mysql-test RPM.
+
+diff -up mariadb-5.5.32/mysql-test/README.p3 mariadb-5.5.32/mysql-test/README
+--- mariadb-5.5.32/mysql-test/README.p3	2013-07-17 16:51:29.000000000 +0200
++++ mariadb-5.5.32/mysql-test/README	2013-07-30 23:22:54.959494478 +0200
+@@ -1,15 +1,28 @@
+-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.
+-
+-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. To run the test suite in a source directory, you
+-must do make first.
+-
+-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:
++This directory contains a test suite for the MariaDB daemon. To run
++the currently existing test cases, execute ./mysql-test-run in
++this directory.
++
++For use in Red Hat distributions, you should run the script as user mysql,
++who is created with nologin shell however, so the best bet is something like
++       $ su -
++       # cd /usr/share/mysql-test
++       # su -s /bin/bash mysql -c "./mysql-test-run --skip-test-list=rh-skipped-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=rh-skipped-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
++rh-skipped-tests.list.
++
++To clean up afterwards, remove the created "var" subdirectory, eg
++       # su -s /bin/bash - mysql -c "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://kb.askmonty.org/v/reporting-bugs
+ 
+@@ -26,7 +39,8 @@ other relevant options.
+ 
+ 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
+ file in the t subdirectory using a text editor. The file should have a .test
diff --git a/mariadb-logrotate.patch b/mariadb-logrotate.patch
new file mode 100644
index 0000000..c9f8b50
--- /dev/null
+++ b/mariadb-logrotate.patch
@@ -0,0 +1,71 @@
+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 mariadb-5.5.32/support-files/mysql-log-rotate.sh.errlog mariadb-5.5.32/support-files/mysql-log-rotate.sh
+--- mariadb-5.5.32/support-files/mysql-log-rotate.sh.errlog	2013-08-29 14:35:34.839119044 +0200
++++ mariadb-5.5.32/support-files/mysql-log-rotate.sh	2013-08-29 14:38:54.203996083 +0200
+@@ -1,9 +1,9 @@
+ # This logname can be set in /etc/my.cnf
+-# by setting the variable "err-log"
+-# in the [safe_mysqld] section as follows:
++# by setting the variable "log-error"
++# in the [mysqld_safe] section as follows:
+ #
+-# [safe_mysqld]
+-# err-log=@localstatedir@/mysqld.log
++# [mysqld_safe]
++# log-error=/var/log/mariadb/mariadb.log
+ #
+ # If the root user has a password you have to create a
+ # /root/.my.cnf configuration file with the following
+@@ -18,19 +18,21 @@
+ # ATTENTION: This /root/.my.cnf should be readable ONLY
+ # for root !
+ 
+- at localstatedir@/mysqld.log {
+-        # create 600 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
+-}
++# Then, un-comment the following lines to enable rotation of mysql's log file:
++
++#/var/log/mariadb/mariadb.log {
++#        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/mariadb-prepare-db-dir b/mariadb-prepare-db-dir
new file mode 100644
index 0000000..8a7d3e1
--- /dev/null
+++ b/mariadb-prepare-db-dir
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+# This script creates the mysql data directory during first service start.
+# In subsequent starts, it does nothing much.
+
+# extract value of a MySQL option from config files
+# Usage: get_mysql_option SECTION VARNAME DEFAULT
+# 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(){
+        result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
+        if [ -z "$result" ]; then
+            # not found, use default
+            result="$3"
+        fi
+}
+
+# Defaults here had better match what mysqld_safe will default to
+get_mysql_option mysqld datadir "/var/lib/mysql"
+datadir="$result"
+get_mysql_option mysqld_safe log-error "/var/log/mariadb/mariadb.log"
+errlogfile="$result"
+get_mysql_option mysqld socket "$datadir/mysql.sock"
+socketfile="$result"
+
+# Absorb configuration settings from the specified systemd service file,
+# or the default "mysqld" service if not specified
+SERVICE_NAME="$1"
+if [ x"$SERVICE_NAME" = x ]
+then
+    SERVICE_NAME=mysqld.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
+
+# Set up the errlogfile with appropriate permissions
+touch "$errlogfile"
+chown "$myuser:$mygroup" "$errlogfile"
+chmod 0640 "$errlogfile"
+[ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
+
+# We check if there is already a process using the socket file,
+# since otherwise this systemd service file could report false
+# positive result when starting and mysqld_safe could remove
+# a socket file, which actually uses a different daemon.
+if fuser "$socketfile" &>/dev/null ; then
+    echo "Socket file $socketfile exists." >&2
+    echo "Is another MySQL daemon already running with the same unix socket?" >&2
+    exit 1
+fi
+
+# 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 MySQL database"
+    /usr/bin/mysql_install_db --datadir="$datadir" --user="$myuser"
+    ret=$?
+    if [ $ret -ne 0 ] ; then
+        echo "Initialization of MySQL database failed." >&2
+        echo "Perhaps /etc/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
+    # In case we're running as root, make sure files are owned properly
+    chown -R "$myuser:$mygroup" "$datadir"
+fi
+
+exit 0
diff --git a/mariadb-s390-tsc.patch b/mariadb-s390-tsc.patch
new file mode 100644
index 0000000..f995266
--- /dev/null
+++ b/mariadb-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/mariadb-sharedir.patch b/mariadb-sharedir.patch
new file mode 100644
index 0000000..5bc376f
--- /dev/null
+++ b/mariadb-sharedir.patch
@@ -0,0 +1,49 @@
+diff -up mariadb-5.5.36/mysql-test/lib/My/ConfigFactory.pm.sharedir mariadb-5.5.36/mysql-test/lib/My/ConfigFactory.pm
+--- mariadb-5.5.36/mysql-test/lib/My/ConfigFactory.pm.sharedir	2014-03-25 16:25:41.971707774 +0100
++++ mariadb-5.5.36/mysql-test/lib/My/ConfigFactory.pm	2014-03-25 16:26:46.194773075 +0100
+@@ -46,7 +46,7 @@ my @pre_rules=
+ );
+ 
+ 
+-my @share_locations= ("share/mariadb", "share/mysql", "sql/share", "share");
++my @share_locations= ("share/mariadb-galera", "share/mariadb", "share/mysql", "sql/share", "share");
+ 
+ 
+ sub get_basedir {
+diff -up mariadb-5.5.36/mysql-test/mysql-test-run.pl.sharedir mariadb-5.5.36/mysql-test/mysql-test-run.pl
+--- mariadb-5.5.36/mysql-test/mysql-test-run.pl.sharedir	2014-03-25 16:25:41.974707777 +0100
++++ mariadb-5.5.36/mysql-test/mysql-test-run.pl	2014-03-25 16:29:02.202911454 +0100
+@@ -1322,12 +1322,14 @@ sub command_line_setup {
+   }
+ 
+   # Look for language files and charsetsdir, use same share
+-  $path_language=   mtr_path_exists("$bindir/share/mariadb",
++  $path_language=   mtr_path_exists("$bindir/share/mariadb-galera",
++                                    "$bindir/share/mariadb",
+                                     "$bindir/share/mysql",
+                                     "$bindir/sql/share",
+                                     "$bindir/share");
+   my $path_share= $path_language;
+-  $path_charsetsdir =   mtr_path_exists("$basedir/share/mariadb/charsets",
++  $path_charsetsdir =   mtr_path_exists("$basedir/share/mariadb-galera/charsets",
++                                    "$basedir/share/mariadb/charsets",
+                                     "$basedir/share/mysql/charsets",
+                                     "$basedir/sql/share/charsets",
+                                     "$basedir/share/charsets");
+@@ -2444,6 +2446,7 @@ sub environment_setup {
+   my $file_mysql_fix_privilege_tables=
+     mtr_file_exists("$bindir/scripts/mysql_fix_privilege_tables.sql",
+ 		    "$bindir/share/mysql_fix_privilege_tables.sql",
++		    "$bindir/share/mariadb-galera/mysql_fix_privilege_tables.sql",
+ 		    "$bindir/share/mariadb/mysql_fix_privilege_tables.sql",
+ 		    "$bindir/share/mysql/mysql_fix_privilege_tables.sql");
+   $ENV{'MYSQL_FIX_PRIVILEGE_TABLES'}=  $file_mysql_fix_privilege_tables;
+@@ -3553,7 +3556,7 @@ sub mysql_install_db {
+   }
+ 
+   my $path_sql= my_find_file($install_basedir,
+-			     ["mysql", "sql/share", "share/mariadb",
++			     ["mysql", "sql/share", "share/mariadb-galera", "share/mariadb",
+ 			      "share/mysql", "share", "scripts"],
+ 			     "mysql_system_tables.sql",
+ 			     NOT_REQUIRED);
diff --git a/mariadb-ssltest.patch b/mariadb-ssltest.patch
new file mode 100644
index 0000000..6fdd271
--- /dev/null
+++ b/mariadb-ssltest.patch
@@ -0,0 +1,30 @@
+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
+
+
+diff -up mariadb-5.5.34/mysql-test/r/openssl_1.result.p20 mariadb-5.5.34/mysql-test/r/openssl_1.result
+--- mariadb-5.5.34/mysql-test/r/openssl_1.result.p20	2014-01-06 11:51:18.878640731 +0100
++++ mariadb-5.5.34/mysql-test/r/openssl_1.result	2014-01-06 11:51:45.364678942 +0100
+@@ -196,8 +196,6 @@ Ssl_cipher	DHE-RSA-AES256-SHA
+ Variable_name	Value
+ Ssl_cipher	EDH-RSA-DES-CBC3-SHA
+ Variable_name	Value
+-Ssl_cipher	EDH-RSA-DES-CBC-SHA
+-Variable_name	Value
+ Ssl_cipher	RC4-SHA
+ select 'is still running; no cipher request crashed the server' as result from dual;
+ result
+diff -up mariadb-5.5.34/mysql-test/t/openssl_1.test.p20 mariadb-5.5.34/mysql-test/t/openssl_1.test
+--- mariadb-5.5.34/mysql-test/t/openssl_1.test.p20	2014-01-06 11:51:18.830640662 +0100
++++ mariadb-5.5.34/mysql-test/t/openssl_1.test	2014-01-06 11:51:18.879640733 +0100
+@@ -218,7 +218,7 @@ DROP TABLE t1;
+ # Common ciphers to openssl and yassl
+ --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=EDH-RSA-DES-CBC-SHA
++#--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=EDH-RSA-DES-CBC-SHA
+ --exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=RC4-SHA
+ --disable_query_log
+ --disable_result_log
diff --git a/mariadb-string-overflow.patch b/mariadb-string-overflow.patch
new file mode 100644
index 0000000..5bb46da
--- /dev/null
+++ b/mariadb-string-overflow.patch
@@ -0,0 +1,43 @@
+These issues were found by Coverity static analysis tool, for more info
+see messages by particular fixes (messages belong to 5.1.61).
+
+Filed upstream at http://bugs.mysql.com/bug.php?id=64631
+
+
+Error: BUFFER_SIZE_WARNING:
+/builddir/build/BUILD/mysql-5.1.61/sql/sql_prepare.cc:2749: buffer_size_warning: Calling strncpy with a maximum size argument of 512 bytes on destination array "this->stmt->last_error" of size 512 bytes might leave the destination string unterminated.
+
+
+diff -up mariadb-5.5.28a/sql/sql_prepare.cc.p20 mariadb-5.5.28a/sql/sql_prepare.cc
+--- mariadb-5.5.28a/sql/sql_prepare.cc.p20	2012-11-28 16:49:36.000000000 +0100
++++ mariadb-5.5.28a/sql/sql_prepare.cc	2012-12-17 17:45:24.232151645 +0100
+@@ -2975,7 +2975,7 @@ void mysql_stmt_get_longdata(THD *thd, c
+   {
+     stmt->state= Query_arena::STMT_ERROR;
+     stmt->last_errno= thd->stmt_da->sql_errno();
+-    strncpy(stmt->last_error, thd->stmt_da->message(), MYSQL_ERRMSG_SIZE);
++    strncpy(stmt->last_error, thd->stmt_da->message(), sizeof(stmt->last_error)-1);
+   }
+   thd->stmt_da= save_stmt_da;
+   thd->warning_info= save_warinig_info;
+
+
+
+
+Error: STRING_OVERFLOW:
+/builddir/build/BUILD/mysql-5.1.61/storage/innodb_plugin/handler/ha_innodb.cc:6544: fixed_size_dest: You might overrun the 512 byte fixed-size string "name2" by copying "name" without checking the length.
+/builddir/build/BUILD/mysql-5.1.61/storage/innodb_plugin/handler/ha_innodb.cc:6544: parameter_as_source: Note: This defect has an elevated risk because the source argument is a parameter of the current function.
+
+diff -up mariadb-5.5.28a/sql/sql_trigger.cc.p20 mariadb-5.5.28a/sql/sql_trigger.cc
+diff -up mariadb-5.5.28a/storage/innobase/handler/ha_innodb.cc.p20 mariadb-5.5.28a/storage/innobase/handler/ha_innodb.cc
+--- mariadb-5.5.28a/storage/innobase/handler/ha_innodb.cc.p20	2012-11-28 16:49:36.000000000 +0100
++++ mariadb-5.5.28a/storage/innobase/handler/ha_innodb.cc	2012-12-17 17:45:24.239151651 +0100
+@@ -7094,7 +7094,7 @@ ha_innobase::create(
+ 
+ 	ut_a(strlen(name) < sizeof(name2));
+ 
+-	strcpy(name2, name);
++	strncpy(name2, name, sizeof(name2)-1);
+ 
+ 	normalize_table_name(norm_name, name2);
+ 
diff --git a/mariadb-strmov.patch b/mariadb-strmov.patch
new file mode 100644
index 0000000..03322ff
--- /dev/null
+++ b/mariadb-strmov.patch
@@ -0,0 +1,30 @@
+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 mariadb-5.5.28a/include/m_string.h.p2 mariadb-5.5.28a/include/m_string.h
+--- mariadb-5.5.28a/include/m_string.h.p2	2012-12-17 16:14:19.140536799 +0100
++++ mariadb-5.5.28a/include/m_string.h	2012-12-17 16:15:40.036567242 +0100
+@@ -79,12 +79,6 @@ extern "C" {
+ extern void *(*my_str_malloc)(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))
+-#endif
+-
+ /* Declared in int2str() */
+ extern const char _dig_vec_upper[];
+ extern const char _dig_vec_lower[];
diff --git a/mariadb-versioning.patch b/mariadb-versioning.patch
new file mode 100644
index 0000000..3e6aacb
--- /dev/null
+++ b/mariadb-versioning.patch
@@ -0,0 +1,231 @@
+The symbol versioning solution for libmysqlclient in mysql 5.1 was pretty
+awful (export everything) and as of 5.5.8 the cmake build scripts have
+forgotten the issue entirely.  So we have maintained our own list of exported
+symbols and jam it into the build with this hack.
+
+Since Fedora 21 we'll use new layout comming from Fedora/MariaDB/Oracle
+collaboration and which resulted into exporting all symbols under
+libmysqlclient_18 version, while some of them also have alternative
+name versioned as libmysqlclient_16.
+
+Upstream bug: https://mariadb.atlassian.net/browse/MDEV-5529
+
+However, to stay binary compatible in F20 and lower, we need to use the
+former way.
+
+diff -up mariadb-5.5.36/libmysql/CMakeLists.txt.versioning mariadb-5.5.36/libmysql/CMakeLists.txt
+--- mariadb-5.5.36/libmysql/CMakeLists.txt.versioning	2014-03-06 21:55:33.338842373 +0100
++++ mariadb-5.5.36/libmysql/CMakeLists.txt	2014-03-06 21:55:36.778834151 +0100
+@@ -1,5 +1,4 @@
+-# Copyright (c) 2006, 2013, Oracle and/or its affiliates.
+-# Copyright (c) 2009, 2013, SkySQL Ab.
++# Copyright (c) 2006, 2012, Oracle and/or its affiliates.
+ # 
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -26,6 +25,8 @@ ADD_DEFINITIONS(${SSL_DEFINES})
+ 
+ SET(CLIENT_API_FUNCTIONS_5_1
+ get_tty_password
++handle_options
++load_defaults
+ mysql_thread_end
+ mysql_thread_init
+ myodbc_remove_escape
+@@ -129,12 +130,6 @@ mysql_server_init
+ mysql_server_end
+ mysql_set_character_set
+ mysql_get_character_set_info
+-# These are documented in Paul DuBois' MySQL book,
+-# so we treat them as part of the de-facto API.
+-handle_options
+-load_defaults
+-free_defaults
+-my_print_help
+ )
+ 
+ SET(CLIENT_API_FUNCTIONS_5_5
+@@ -157,8 +152,6 @@ mysql_close_cont
+ mysql_close_start
+ mysql_commit_cont
+ mysql_commit_start
+-mysql_dump_debug_info_cont
+-mysql_dump_debug_info_start
+ mysql_fetch_row_cont
+ mysql_fetch_row_start
+ mysql_free_result_cont
+@@ -245,76 +238,73 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
+   # for compatibility with distribution packages, so client shared library can 
+   # painlessly replace the one supplied by the distribution.
+   
+-  # Also list of exported symbols in distributions may differ from what is
+-  # considered official API. Define CLIENT_API_5_1_EXTRA for the set of
+-  # symbols, that required to be exported on different platforms.
++  # Also list of exported symbols in distributions may differ from what is considered
++  # official API. Define CLIENT_API_EXTRA for the set of symbols, that required to
++  # be exported on different platforms.
+   
+-  # Fedora & Co declared following functions as part of API 
+-  SET(CLIENT_API_5_1_EXTRA
+-    # why does Fedora export these?
+-    _fini
+-    _init
+-    my_init
+-
+-    #  mysql-connector-odbc requires these
+-    mysql_default_charset_info
+-    mysql_get_charset
+-    mysql_get_charset_by_csname
+-    mysql_net_realloc
+-
+-    # PHP's mysqli.so requires this (via the ER() macro)
+-    mysql_client_errors
+-
+-    # Also export the non-renamed variants
+-    # (in case someone wants to rebuild mysqli-php or something similar)
+-    # See MDEV-4127
+-    default_charset_info
+-    get_charset
+-    get_charset_by_csname
+-    net_realloc
+-    client_errors
+-
+-    # pure-ftpd requires this
+-    my_make_scrambled_password
+-
+-    # hydra requires this
+-    scramble
+-
+-    # ODB requires this: https://bugzilla.redhat.com/show_bug.cgi?id=846602
+-    THR_KEY_mysys
+-
+-    # DBD::mysql requires this
+-    is_prefix
+-  )  
+-
+-  # Linker script to version symbols in Fedora- and Debian- compatible way, MDEV-5529
+-  SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql_versions.ld.in)
+-
+-  # Generate version script.  
+-  # Create semicolon separated lists of functions to export from 
+-  # Since RPM packages use separate versioning for 5.1 API
+-  # and 5.5 API (libmysqlclient_16 vs libmysqlclient_18), 
+-  # we need 2 lists.
+-  SET (CLIENT_API_5_1_LIST)
+-  SET (CLIENT_API_5_1_ALIASES)
+-  FOREACH (f ${CLIENT_API_FUNCTIONS_5_1} ${CLIENT_API_5_1_EXTRA})
+-    SET(CLIENT_API_5_1_LIST "${CLIENT_API_5_1_LIST}\t${f};\n")
+-    SET(CLIENT_API_5_1_ALIASES "${CLIENT_API_5_1_ALIASES}\"${f}@libmysqlclient_16\" = ${f};\n")
+-  ENDFOREACH()
+-      
+-  SET (CLIENT_API_5_5_LIST)
+-  FOREACH (f ${CLIENT_API_FUNCTIONS_5_5})
+-    SET(CLIENT_API_5_5_LIST "${CLIENT_API_5_5_LIST}\t${f};\n")
+-  ENDFOREACH()
+-
+-  CONFIGURE_FILE(
+-    ${VERSION_SCRIPT_TEMPLATE}
+-    ${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld
+-    @ONLY@
+-  )
+-  SET(VERSION_SCRIPT_LINK_FLAGS 
+-    "-Wl,${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld")
++  IF(RPM)
++    # Fedora & Co declared following functions as part of API 
++    SET(CLIENT_API_EXTRA
++      mysql_default_charset_info
++      mysql_get_charset
++      mysql_get_charset_by_csname
++      mysql_net_realloc
++      mysql_client_errors
++
++      #  Also export the non-renamed variants
++      # (in case someone wants to rebuild mysqli-php or something similar)
++      # See MDEV-4127
++      default_charset_info
++      get_charset
++      get_charset_by_csname
++      net_realloc
++      client_errors
++      THR_KEY_mysys
++    )  
++  
++    # Add special script to fix symbols renames by Fedora
++    SET(CLIENT_SOURCES_EXTRA rpm_support.cc)
++    SET(VERSION_SCRIPT_TEMPLATE 
++    ${CMAKE_CURRENT_SOURCE_DIR}/libmysql_rpm_version.in)	  
++  ELSEIF(DEB)
++    # libmyodbc on Ubuntu is using functions below
++    # If we don't export them, linker would just remove 
++    # them (they are not used inside libmysqlclient)
++    SET(CLIENT_API_EXTRA
++      strfill
++      init_dynamic_string
++    )
++    # MySQL supplied with Ubuntu does not have versioning, bug Debian does.
++    IF(DEB MATCHES "debian") 
++      SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql.ver.in)
++    ENDIF()
++  ENDIF()
+ 
++  IF(VERSION_SCRIPT_TEMPLATE)
++    # Generate version script.  
++    # Create semicolon separated lists of functions to export from 
++    # Since RPM packages use separate versioning for 5.1 API
++    # and 5.5 API (libmysqlclient_16 vs libmysqlclient_18), 
++    # we need 2 lists.
++    SET (CLIENT_API_5_1_LIST)
++    FOREACH (f ${CLIENT_API_FUNCTIONS_5_1})
++      SET(CLIENT_API_5_1_LIST "${CLIENT_API_5_1_LIST}\n${f};")
++    ENDFOREACH()
++	
++    SET (CLIENT_API_5_5_LIST)
++    FOREACH (f ${CLIENT_API_FUNCTIONS_5_5})
++      SET(CLIENT_API_5_5_LIST "${CLIENT_API_5_5_LIST}\n${f};")
++    ENDFOREACH()
++
++    CONFIGURE_FILE(
++      ${VERSION_SCRIPT_TEMPLATE}
++      ${CMAKE_CURRENT_BINARY_DIR}/libmysql.version
++      @ONLY@
++    )
++    SET(VERSION_SCRIPT_LINK_FLAGS 
++      "-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/libmysql.version")
++  ENDIF()
++  
+ ENDIF()
+ 
+ 
+@@ -342,10 +332,8 @@ SET(LIBS clientlib dbug strings vio mysy
+ MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development)
+ 
+ # Visual Studio users need debug  static library for debug projects
+-INSTALL_DEBUG_SYMBOLS(clientlib)
+ IF(MSVC)
+  INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug)
+- INSTALL_DEBUG_TARGET(clientlib DESTINATION ${INSTALL_LIBDIR}/debug)
+ ENDIF()
+ 
+ IF(UNIX)
+@@ -364,7 +352,7 @@ IF(UNIX)
+ ENDIF()
+ 
+ IF(NOT DISABLE_SHARED)
+-  MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS} ${CLIENT_API_5_1_EXTRA} COMPONENT SharedLibraries)
++  MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS} ${CLIENT_API_EXTRA} COMPONENT SharedLibraries)
+   IF(UNIX)
+     # libtool compatability
+     IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
+@@ -381,8 +369,11 @@ IF(NOT DISABLE_SHARED)
+       SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
+     IF(LINK_FLAG_NO_UNDEFINED OR VERSION_SCRIPT_LINK_FLAGS)
+       GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
++      IF(NOT libmysql_link_flag)
++        SET(libmysql_link_flags)
++      ENDIF()
+       SET_TARGET_PROPERTIES(libmysql PROPERTIES LINK_FLAGS 
+-        "${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED} ${VERSION_SCRIPT_LINK_FLAGS}")
++        "${libmysql_link_flags} -Wl,--version-script=libmysql.version ${LINK_FLAG_NO_UNDEFINED}")
+     ENDIF() 
+     # clean direct output needs to be set several targets have the same name
+     #(mysqlclient in this case)
diff --git a/mariadb-wait-ready b/mariadb-wait-ready
new file mode 100644
index 0000000..63740e3
--- /dev/null
+++ b/mariadb-wait-ready
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+# 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.
+
+# Service file passes us the daemon's PID (actually, mysqld_safe's PID)
+daemon_pid="$1"
+
+# extract value of a MySQL option from config files
+# Usage: get_mysql_option SECTION VARNAME DEFAULT
+# 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(){
+	result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
+	if [ -z "$result" ]; then
+	    # not found, use default
+	    result="$3"
+	fi
+}
+
+# Defaults here had better match what mysqld_safe will default to
+get_mysql_option mysqld datadir "/var/lib/mysql"
+datadir="$result"
+get_mysql_option mysqld socket "/var/lib/mysql/mysql.sock"
+socketfile="$result"
+
+# Wait for the server to come up or for the mysqld process to disappear
+ret=0
+while /bin/true; do
+	MYSQLDRUNNING=0
+	if [ -d "/proc/${daemon_pid}" ] ; then
+	    MYSQLDRUNNING=1
+	fi
+	RESPONSE=`/usr/bin/mysqladmin --no-defaults --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`
+	mret=$?
+	if [ $mret -eq 0 ] && [ $MYSQLDRUNNING -eq 1 ]; 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
+	    ret=1
+	    break
+	fi
+	# "Access denied" also means the server is alive
+	echo "$RESPONSE" | grep -q "Access denied for user" && break
+
+	# Check process still exists
+	if ! /bin/kill -0 $daemon_pid 2>/dev/null; then
+	    ret=1
+	    break
+	fi
+	sleep 1
+done
+
+exit $ret
diff --git a/mariadb.service b/mariadb.service
new file mode 100644
index 0000000..89cbd1a
--- /dev/null
+++ b/mariadb.service
@@ -0,0 +1,48 @@
+# 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/mariadb.service",
+# containing
+#	.include /lib/systemd/system/mariadb.service
+#	...make your changes here...
+# or create a file "/etc/systemd/system/mariadb.service.d/foo.conf",
+# which doesn't need to include ".include" call and which will be parsed
+# after the file mariadb.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/mariadb.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=MariaDB database server
+After=syslog.target
+After=network.target
+
+[Service]
+Type=simple
+User=mysql
+Group=mysql
+
+ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n
+# Note: we set --basedir to prevent probes that might trigger SELinux alarms,
+# per bug #547485
+ExecStart=/usr/bin/mysqld_safe --basedir=/usr
+ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID
+
+# 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/mariadb.tmpfiles.d b/mariadb.tmpfiles.d
new file mode 100644
index 0000000..fbfe4d9
--- /dev/null
+++ b/mariadb.tmpfiles.d
@@ -0,0 +1,2 @@
+d /var/run/mysqld 0755 mysql mysql -
+d /var/run/mariadb 0755 mysql mysql -
diff --git a/my.cnf b/my.cnf
new file mode 100644
index 0000000..ac882ac
--- /dev/null
+++ b/my.cnf
@@ -0,0 +1,29 @@
+[mysqld]
+datadir=/var/lib/mysql
+socket=/var/lib/mysql/mysql.sock
+# Disabling symbolic-links is recommended to prevent assorted security risks
+symbolic-links=0
+# Settings user and group are ignored when systemd is used.
+# If you need to run mysqld under a different user or group,
+# customize your systemd unit file for mysqld/mariadb according to the
+# instructions in http://fedoraproject.org/wiki/Systemd
+
+# Currently, there are mariadb and community-mysql packages in Fedora.
+# This particular config file is included in respective RPMs of both of them,
+# so the following settings are general and will be also used by both of them.
+# Otherwise the RPMs would be in conflict.
+# Settings for particular implementations like MariaDB are then
+# defined in appropriate sections; for MariaDB server in [mariadb] section in
+# /etc/my.cnf.d/server.cnf (part of mariadb-server).
+# It doesn't matter that we set these settings only for [mysqld] here,
+# because they will be read and used in mysqld_safe as well.
+log-error=/var/log/mysqld.log
+pid-file=/var/run/mysqld/mysqld.pid
+
+[mysqld_safe]
+
+#
+# include all files from the config directory
+#
+!includedir /etc/my.cnf.d
+
diff --git a/my_config.h b/my_config.h
new file mode 100644
index 0000000..02baa3d
--- /dev/null
+++ b/my_config.h
@@ -0,0 +1,33 @@
+/*
+ * 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/mysql-embedded-check.c b/mysql-embedded-check.c
new file mode 100644
index 0000000..8bf8ca5
--- /dev/null
+++ b/mysql-embedded-check.c
@@ -0,0 +1,26 @@
+/* simple test program to see if we can link the embedded server library */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "mysql.h"
+
+MYSQL *mysql;
+
+static char *server_options[] = \
+       { "mysql_test", "--defaults-file=my.cnf", NULL };
+int num_elements = (sizeof(server_options) / sizeof(char *)) - 1;
+
+static char *server_groups[] = { "libmysqld_server", 
+                                 "libmysqld_client", NULL };
+
+int main(int argc, char **argv)
+{
+   mysql_library_init(num_elements, server_options, server_groups);
+   mysql = mysql_init(NULL);
+   mysql_close(mysql);
+   mysql_library_end();
+
+   return 0;
+}
diff --git a/rh-skipped-tests-arm.list b/rh-skipped-tests-arm.list
new file mode 100644
index 0000000..a6ae9bf
--- /dev/null
+++ b/rh-skipped-tests-arm.list
@@ -0,0 +1,8 @@
+
+# Disable perfschema.func_file_io and perfschema.func_mutex, which fail
+# because cycle counter returns 0 every time on ARM architectures.
+# This is caused by missing hardware performance counter support on ARM.
+# Discussion about fixing that can be found in RH bug #741325.
+
+perfschema.func_file_io   : rhbz#773116 cycle counter does not work on arm
+perfschema.func_mutex     : rhbz#773116 cycle counter does not work on arm
diff --git a/rh-skipped-tests-base.list b/rh-skipped-tests-base.list
new file mode 100644
index 0000000..44e5155
--- /dev/null
+++ b/rh-skipped-tests-base.list
@@ -0,0 +1,9 @@
+# Disable innodb.innodb, which is showing platform-dependent results
+# as of 5.5.9.  Upstream at http://bugs.mysql.com/bug.php?id=60155
+
+innodb.innodb             : bug#60155 has platform-dependent results
+
+# Disable tokudb_innodb_xa_crash temporarily, until it is fixed:
+#
+
+tokudb_innodb_xa_crash    : https://bugzilla.redhat.com/show_bug.cgi?id=1018192
diff --git a/sources b/sources
index e69de29..46745c1 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+89549f4c12818973e6b11bb5324fa54b  mariadb-galera-5.5.36.tar.gz


More information about the scm-commits mailing list