From 42f6b501f74be018842a560a4a1daad888a4d12f Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 7 Feb 2011 19:35:09 +0100 Subject: mysql 5.5.8, sync with rawhide (latest patches) --- mysql-5.5-disable-test.patch | 9 ++++++-- mysql-dev.spec | 52 ++++++++++++++++++++++++++++++++++++++------ mysql-embedded-crash.patch | 19 ++++++++++++++++ mysql-home.patch | 16 ++++++++++++++ mysql-plugin-bool.patch | 42 +++++++++++++++++++++++++++++++++++ mysql-s390-tsc.patch | 41 ++++++++++++++++++++++++++++++++++ 6 files changed, 170 insertions(+), 9 deletions(-) create mode 100644 mysql-embedded-crash.patch create mode 100644 mysql-home.patch create mode 100644 mysql-plugin-bool.patch create mode 100644 mysql-s390-tsc.patch diff --git a/mysql-5.5-disable-test.patch b/mysql-5.5-disable-test.patch index 03ee4f0..2719353 100644 --- a/mysql-5.5-disable-test.patch +++ b/mysql-5.5-disable-test.patch @@ -12,11 +12,15 @@ Also disable perfschema.binlog_mix and perfschema.binlog_row, which have expected output that doesn't match when openssl is in use. Upstream at http://bugs.mysql.com/bug.php?id=59091 +Also disable gis, which expects the results of floating-point calculations +to match to seventeen digits precision everywhere. Of course they won't. +Upstream at http://bugs.mysql.com/bug.php?id=59908 + diff -Naur mysql-5.5.8.orig/mysql-test/t/disabled.def mysql-5.5.8/mysql-test/t/disabled.def --- mysql-5.5.8.orig/mysql-test/t/disabled.def 2010-12-03 12:58:24.000000000 -0500 -+++ mysql-5.5.8/mysql-test/t/disabled.def 2010-12-21 11:03:07.288224692 -0500 -@@ -19,3 +19,8 @@ ++++ mysql-5.5.8/mysql-test/t/disabled.def 2011-02-03 11:10:31.325627589 -0500 +@@ -19,3 +19,9 @@ sum_distinct-big : Bug#56927 2010-11-15 mattiasj was not tested alter_table-big : Bug#37248 2010-11-15 mattiasj was not tested create-big : Bug#37248 2010-11-15 mattiasj was not tested @@ -25,3 +29,4 @@ diff -Naur mysql-5.5.8.orig/mysql-test/t/disabled.def mysql-5.5.8/mysql-test/t/d +sys_vars.plugin_dir_basic : bug#52223 fails for lib64 library directory +perfschema.binlog_mix : bug#59091 fails with openssl +perfschema.binlog_row : bug#59091 fails with openssl ++gis : bug#59908 has platform-dependent results diff --git a/mysql-dev.spec b/mysql-dev.spec index 238d509..3f82588 100644 --- a/mysql-dev.spec +++ b/mysql-dev.spec @@ -1,6 +1,6 @@ Name: mysql Version: 5.5.8 -Release: 3%{?dist} +Release: 9%{?dist} Summary: MySQL client programs and shared libraries Group: Applications/Databases URL: http://www.mysql.com @@ -40,6 +40,10 @@ Patch6: mysql-chain-certs.patch Patch7: mysql-versioning.patch Patch8: mysql-dubious-exports.patch Patch9: mysql-5.5-disable-test.patch +Patch10: mysql-embedded-crash.patch +Patch11: mysql-home.patch +Patch12: mysql-plugin-bool.patch +Patch13: mysql-s390-tsc.patch # RC patch for backports Patch21: mysql-5.5-readline.patch @@ -52,10 +56,10 @@ BuildRequires: systemtap-sdt-devel >= 1.3 %endif # make test requires time and ps BuildRequires: time procps -# Socket is needed to run regression tests -BuildRequires: perl(Socket) +# Socket and Time::HiRes are needed to run regression tests +BuildRequires: perl(Socket), perl(Time::HiRes) # This is required old EL4 -BuildRequires: perl(Time::HiRes), bison +BuildRequires: bison Requires: grep, fileutils Requires: %{name}-libs = %{version}-%{release} @@ -66,8 +70,9 @@ Conflicts: MySQL # mysql-cluster used to be built from this SRPM, but no more Obsoletes: mysql-cluster < 5.1.44 -# Working around perl dependency checking bug in rpm FTTB. Remove later. +# When rpm 4.9 is universal, this could be cleaned up: %global __perl_requires %{SOURCE999} +%global __perllib_requires %{SOURCE999} %description MySQL is a multi-user, multi-threaded SQL database server. MySQL is a @@ -193,6 +198,10 @@ sed -i -e '/SHARED_LIB_MAJOR_VERSION/s/16/161/' cmake/mysql_version.cmake %patch7 -p1 %patch8 -p1 %patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 # Backports specific patches %patch21 -p1 -b .readline @@ -225,8 +234,7 @@ CFLAGS="$CFLAGS -fPIC" %ifarch sparc sparcv9 sparc64 CFLAGS=`echo $CFLAGS| sed -e "s|-O2|-O1|g" ` %endif -# extra C++ flags as per recommendations in mysql's INSTALL-SOURCE doc -CXXFLAGS="$CFLAGS -felide-constructors -fno-rtti -fno-exceptions" +CXXFLAGS="$CFLAGS" export CFLAGS CXXFLAGS # The INSTALL_xxx macros have to be specified relative to CMAKE_INSTALL_PREFIX @@ -647,6 +655,36 @@ fi %{_mandir}/man1/mysql_client_test.1* %changelog +* Mon Feb 07 2011 Remi Collet - 5.5.8-9 +- sync with rawhide + +* Fri Feb 4 2011 Tom Lane 5.5.8-9 +- Support s390/s390x in performance schema's cycle-counting functions + (needed to make regression tests pass on these platforms) + +* Thu Feb 3 2011 Tom Lane 5.5.8-8 +- PPC64 floating-point differences are not masked by -ffloat-store after all, + so let's just disable gis regression test till upstream makes it less picky +Resolves: #674253 +- Add __perllib_requires setting to make rpm 4.9 do what we need + +* Wed Feb 2 2011 Tom Lane 5.5.8-7 +- Work around some portability issues on PPC64 +Resolves: #674253 + +* Thu Jan 20 2011 Tom Lane 5.5.8-6 +- Remove no-longer-needed special switches in CXXFLAGS, per yesterday's + discussion in fedora-devel about -fexceptions. +- Rebuild needed anyway to check compatibility with latest systemtap. + +* Thu Jan 13 2011 Tom Lane 5.5.8-5 +- Fix failure to honor MYSQL_HOME environment variable +Resolves: #669364 + +* Thu Jan 13 2011 Tom Lane 5.5.8-4 +- Fix crash during startup of embedded mysqld library +Resolves: #667365 + * Sat Jan 08 2011 Remi Collet - 5.5.8-3 - sync with rawhide diff --git a/mysql-embedded-crash.patch b/mysql-embedded-crash.patch new file mode 100644 index 0000000..b445fce --- /dev/null +++ b/mysql-embedded-crash.patch @@ -0,0 +1,19 @@ +Fix crash in embedded mysql library when mysql_library_init() is invoked +with argc = 0, as is supposed to be a supported thing to do. +Patch from upstream bug #57931. + + +diff -Naur mysql-5.5.8.orig/libmysqld/lib_sql.cc mysql-5.5.8/libmysqld/lib_sql.cc +--- mysql-5.5.8.orig/libmysqld/lib_sql.cc 2010-12-03 12:58:26.000000000 -0500 ++++ mysql-5.5.8/libmysqld/lib_sql.cc 2011-01-12 23:10:55.837471629 -0500 +@@ -510,8 +510,8 @@ + return 1; + defaults_argc= *argcp; + defaults_argv= *argvp; +- remaining_argc= argc; +- remaining_argv= argv; ++ remaining_argc= *argcp; ++ remaining_argv= *argvp; + + /* Must be initialized early for comparison of options name */ + system_charset_info= &my_charset_utf8_general_ci; diff --git a/mysql-home.patch b/mysql-home.patch new file mode 100644 index 0000000..054d389 --- /dev/null +++ b/mysql-home.patch @@ -0,0 +1,16 @@ +mysql 5.5's new cmake-based build scripts forgot about defining +DEFAULT_HOME_ENV. Upstream at http://bugs.mysql.com/bug.php?id=59280 + + +diff -Naur mysql-5.5.8.orig/mysys/CMakeLists.txt mysql-5.5.8/mysys/CMakeLists.txt +--- mysql-5.5.8.orig/mysys/CMakeLists.txt 2010-12-03 12:58:26.000000000 -0500 ++++ mysql-5.5.8/mysys/CMakeLists.txt 2011-01-13 11:58:42.583471734 -0500 +@@ -69,6 +69,8 @@ + SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_port.c) + ENDIF() + ++ADD_DEFINITIONS( -DDEFAULT_HOME_ENV=MYSQL_HOME) ++ + ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES}) + TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY} + ${LIBNSL} ${LIBM} ${LIBRT}) diff --git a/mysql-plugin-bool.patch b/mysql-plugin-bool.patch new file mode 100644 index 0000000..a8458f4 --- /dev/null +++ b/mysql-plugin-bool.patch @@ -0,0 +1,42 @@ +Fix plugin boolean variables to receive the value "1", not "-1", when they +are set to 1. Aside from being bizarre, the existing behavior is unportable: +machines where char is unsigned print "255" instead. Filed upstream at +http://bugs.mysql.com/bug.php?id=59905 + + +diff -Naur mysql-5.5.8.orig/sql/sql_plugin.cc mysql-5.5.8/sql/sql_plugin.cc +--- mysql-5.5.8.orig/sql/sql_plugin.cc 2010-12-03 12:58:26.000000000 -0500 ++++ mysql-5.5.8/sql/sql_plugin.cc 2011-02-01 20:34:10.218305349 -0500 +@@ -2024,7 +2024,7 @@ + goto err; + result= (int) tmp; + } +- *(my_bool *) save= -result; ++ *(my_bool *) save= result ? true : false; + return 0; + err: + return 1; +diff -Naur mysql-5.5.8.orig/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result mysql-5.5.8/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result +--- mysql-5.5.8.orig/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result 2010-12-03 12:58:25.000000000 -0500 ++++ mysql-5.5.8/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result 2011-02-01 21:53:20.006302245 -0500 +@@ -45,7 +45,7 @@ + ERROR HY000: Variable 'rpl_semi_sync_master_enabled' is a GLOBAL variable and should be set with SET GLOBAL + select @@global.rpl_semi_sync_master_enabled; + @@global.rpl_semi_sync_master_enabled +--1 ++1 + select @@session.rpl_semi_sync_master_enabled; + ERROR HY000: Variable 'rpl_semi_sync_master_enabled' is a GLOBAL variable + show global variables like 'rpl_semi_sync_master_enabled'; +diff -Naur mysql-5.5.8.orig/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result mysql-5.5.8/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result +--- mysql-5.5.8.orig/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result 2010-12-03 12:58:26.000000000 -0500 ++++ mysql-5.5.8/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result 2011-02-01 21:53:59.689249491 -0500 +@@ -45,7 +45,7 @@ + ERROR HY000: Variable 'rpl_semi_sync_slave_enabled' is a GLOBAL variable and should be set with SET GLOBAL + select @@global.rpl_semi_sync_slave_enabled; + @@global.rpl_semi_sync_slave_enabled +--1 ++1 + select @@session.rpl_semi_sync_slave_enabled; + ERROR HY000: Variable 'rpl_semi_sync_slave_enabled' is a GLOBAL variable + show global variables like 'rpl_semi_sync_slave_enabled'; diff --git a/mysql-s390-tsc.patch b/mysql-s390-tsc.patch new file mode 100644 index 0000000..00811a4 --- /dev/null +++ b/mysql-s390-tsc.patch @@ -0,0 +1,41 @@ +Support s390/s390x in performance schema's cycle-counting functions. +Filed upstream at http://bugs.mysql.com/bug.php?id=59953 + + +diff -Naur mysql-5.5.8.orig/include/my_rdtsc.h mysql-5.5.8/include/my_rdtsc.h +--- mysql-5.5.8.orig/include/my_rdtsc.h 2010-12-03 12:58:24.000000000 -0500 ++++ mysql-5.5.8/include/my_rdtsc.h 2011-02-04 11:16:45.431459913 -0500 +@@ -124,6 +124,7 @@ + #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 -Naur mysql-5.5.8.orig/mysys/my_rdtsc.c mysql-5.5.8/mysys/my_rdtsc.c +--- mysql-5.5.8.orig/mysys/my_rdtsc.c 2010-12-03 12:58:26.000000000 -0500 ++++ mysql-5.5.8/mysys/my_rdtsc.c 2011-02-04 11:16:45.432465577 -0500 +@@ -224,6 +224,13 @@ + 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 @@ + 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 -- cgit