diff --git a/.gitignore b/.gitignore index fff2a11..006d3b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/mysql-boost-8.0.41.tar.gz +SOURCES/mysql-8.4.4.tar.gz diff --git a/.mysql.metadata b/.mysql.metadata index 466e5ea..6fab05e 100644 --- a/.mysql.metadata +++ b/.mysql.metadata @@ -1 +1 @@ -7950b1494deb5fbabed8bf0ff09b2d38cac77066 SOURCES/mysql-boost-8.0.41.tar.gz +f14768688a25888455b75334f370c0a94ff66aa8 SOURCES/mysql-8.4.4.tar.gz diff --git a/SOURCES/boost-1.57.0-mpl-print.patch b/SOURCES/boost-1.57.0-mpl-print.patch index 561cef1..0e70d4b 100644 --- a/SOURCES/boost-1.57.0-mpl-print.patch +++ b/SOURCES/boost-1.57.0-mpl-print.patch @@ -1,7 +1,6 @@ -diff -up boost_1_57_0/boost/mpl/print.hpp\~ boost_1_57_0/boost/mpl/print.hpp ---- boost_1_57_0/boost/mpl/print.hpp~ 2014-07-09 23:12:31.000000000 +0200 -+++ boost_1_57_0/boost/mpl/print.hpp 2015-01-20 12:44:59.621400948 +0100 -@@ -52,16 +52,15 @@ struct print +--- mysql-8.4.0/extra/boost/boost_1_84_0/boost/mpl/print.hpp 2024-04-10 08:26:28.000000000 +0200 ++++ mysql-8.4.0/extra/boost/boost_1_84_0/boost/mpl/print.hpp_patched 2024-05-28 15:35:45.071390863 +0200 +@@ -55,16 +55,15 @@ struct print enum { n = sizeof(T) + -1 }; #elif defined(__MWERKS__) void f(int); @@ -27,5 +26,3 @@ diff -up boost_1_57_0/boost/mpl/print.hpp\~ boost_1_57_0/boost/mpl/print.hpp }; #if defined(BOOST_MSVC) - -Diff finished. Tue Jan 20 12:45:03 2015 diff --git a/SOURCES/boost-1.58.0-pool.patch b/SOURCES/boost-1.58.0-pool.patch deleted file mode 100644 index 21be0cc..0000000 --- a/SOURCES/boost-1.58.0-pool.patch +++ /dev/null @@ -1,120 +0,0 @@ -Index: boost/pool/pool.hpp -=================================================================== ---- a/boost/pool/pool.hpp (revision 78317) -+++ b/boost/pool/pool.hpp (revision 78326) -@@ -27,4 +27,6 @@ - #include - -+// std::numeric_limits -+#include - // boost::integer::static_lcm - #include -@@ -358,4 +360,11 @@ - } - -+ size_type max_chunks() const -+ { //! Calculated maximum number of memory chunks that can be allocated in a single call by this Pool. -+ size_type partition_size = alloc_size(); -+ size_type POD_size = integer::static_lcm::value + sizeof(size_type); -+ return (std::numeric_limits::max() - POD_size) / alloc_size(); -+ } -+ - static void * & nextof(void * const ptr) - { //! \returns Pointer dereferenced. -@@ -377,5 +388,7 @@ - //! the first time that object needs to allocate system memory. - //! The default is 32. This parameter may not be 0. -- //! \param nmax_size is the maximum number of chunks to allocate in one block. -+ //! \param nmax_size is the maximum number of chunks to allocate in one block. -+ set_next_size(nnext_size); -+ set_max_size(nmax_size); - } - -@@ -400,7 +413,7 @@ - } - void set_next_size(const size_type nnext_size) -- { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0. -- //! \returns nnext_size. -- next_size = start_size = nnext_size; -+ { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0. -+ BOOST_USING_STD_MIN(); -+ next_size = start_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nnext_size, max_chunks()); - } - size_type get_max_size() const -@@ -410,5 +423,6 @@ - void set_max_size(const size_type nmax_size) - { //! Set max_size. -- max_size = nmax_size; -+ BOOST_USING_STD_MIN(); -+ max_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nmax_size, max_chunks()); - } - size_type get_requested_size() const -@@ -713,7 +727,7 @@ - BOOST_USING_STD_MIN(); - if(!max_size) -- next_size <<= 1; -+ set_next_size(next_size << 1); - else if( next_size*partition_size/requested_size < max_size) -- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); -+ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); - - // initialize it, -@@ -753,7 +767,7 @@ - BOOST_USING_STD_MIN(); - if(!max_size) -- next_size <<= 1; -+ set_next_size(next_size << 1); - else if( next_size*partition_size/requested_size < max_size) -- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); -+ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); - - // initialize it, -@@ -797,4 +811,6 @@ - //! \returns Address of chunk n if allocated ok. - //! \returns 0 if not enough memory for n chunks. -+ if (n > max_chunks()) -+ return 0; - - const size_type partition_size = alloc_size(); -@@ -845,7 +861,7 @@ - BOOST_USING_STD_MIN(); - if(!max_size) -- next_size <<= 1; -+ set_next_size(next_size << 1); - else if( next_size*partition_size/requested_size < max_size) -- next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size); -+ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size)); - - // insert it into the list, -Index: libs/pool/test/test_bug_6701.cpp -=================================================================== ---- a/libs/pool/test/test_bug_6701.cpp (revision 78326) -+++ b/libs/pool/test/test_bug_6701.cpp (revision 78326) -@@ -0,0 +1,27 @@ -+/* Copyright (C) 2012 Étienne Dupuis -+* -+* Use, modification and distribution is subject to the -+* Boost Software License, Version 1.0. (See accompanying -+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) -+*/ -+ -+// Test of bug #6701 (https://svn.boost.org/trac/boost/ticket/6701) -+ -+#include -+#include -+ -+int main() -+{ -+ boost::pool<> p(1024, std::numeric_limits::max() / 768); -+ -+ void *x = p.malloc(); -+ BOOST_ASSERT(!x); -+ -+ BOOST_ASSERT(std::numeric_limits::max() / 1024 >= p.get_next_size()); -+ BOOST_ASSERT(std::numeric_limits::max() / 1024 >= p.get_max_size()); -+ -+ void *y = p.ordered_malloc(std::numeric_limits::max() / 768); -+ BOOST_ASSERT(!y); -+ -+ return 0; -+} diff --git a/SOURCES/boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch b/SOURCES/boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch deleted file mode 100644 index 71552bf..0000000 --- a/SOURCES/boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d1343f28dcbe25b100b082b34775bd92ead4602c Mon Sep 17 00:00:00 2001 -From: jzmaddock -Date: Tue, 25 Jan 2022 09:27:40 +0000 -Subject: [PATCH] Update gcc Intel intrinsic usage config. Fixes - https://github.com/boostorg/multiprecision/issues/419. - ---- - include/boost/multiprecision/cpp_int/intel_intrinsics.hpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/include/boost/multiprecision/cpp_int/intel_intrinsics.hpp b/include/boost/multiprecision/cpp_int/intel_intrinsics.hpp -index eb4624bb4..37717cd51 100644 ---- a/boost/multiprecision/cpp_int/intel_intrinsics.hpp -+++ b/boost/multiprecision/cpp_int/intel_intrinsics.hpp -@@ -19,7 +19,11 @@ - // If this is GCC/clang, then check that the actual intrinsic exists: - // - #if defined(__has_builtin) && defined(__GNUC__) --#if !__has_builtin(__builtin_ia32_addcarryx_u64) && defined(BOOST_MP_HAS_IMMINTRIN_H) && !(defined(BOOST_GCC) && (__GNUC__ >= 9)) -+#if !__has_builtin(__builtin_ia32_addcarryx_u64) && defined(BOOST_MP_HAS_IMMINTRIN_H) \ -+ && !(defined(BOOST_GCC) && (__GNUC__ >= 9) \ -+ && (defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64)\ -+ || defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_AMD64) \ -+ || defined(_M_X64) || defined(__amd64__) || defined(_M_X64))) - #undef BOOST_MP_HAS_IMMINTRIN_H - #endif - #elif defined(BOOST_MP_HAS_IMMINTRIN_H) && defined(__GNUC__) && !(defined(BOOST_GCC) && (__GNUC__ >= 9)) diff --git a/SOURCES/daemon-scl-helper.sh b/SOURCES/daemon-scl-helper.sh deleted file mode 100644 index 7f0ec05..0000000 --- a/SOURCES/daemon-scl-helper.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -# This helper script is necessary for having proper SELinux context of daemon -# process run in SCL environment via systemd unit file. -# Without this script the process looses SELinux type because /usr/bin/scl -# has context bin_t and unit_t -> bin_t results in unconfined process running. -# If this helper script has the same SELinux context as the original binary, -# the process will have proper SELinux context. -# -# This script was designed to be usable the same as the scl command is used, -# including the collections given as more arguments, separated from binary -# itself by -- separator. -# So it is possible to use the list of collections to be enabled via -# environment file. -# Thus, instead of: -# /usr/bin/scl enable scl1 scl2 -- /path/to/bin arg1 arg2 -# you can use: -# /usr/bin/this-script enable scl1 scl2 -- /path/to/bin arg1 arg2 -# -# Notice: do not forget to set proper SELinux context for this file. -# The context should be the same as the binary running has. -# -# More information at http://bugzilla.redhat.com/show_bug.cgi?id=1172683 - -action="$1" -shift - -while [ -n "$1" ] && [ "$1" != "--" ] ; do - source scl_source "$action" "$1" - shift -done - -if [ $# -le 2 ] ; then - echo "Usage `basename $0` enable sclname [sclname ...] -- /path/to/bin [arg ...]" >&2 - exit 1 -fi - -shift - -exec "$@" - - - diff --git a/SOURCES/default-authentication-plugin.cnf b/SOURCES/default-authentication-plugin.cnf deleted file mode 100644 index aed7c00..0000000 --- a/SOURCES/default-authentication-plugin.cnf +++ /dev/null @@ -1,12 +0,0 @@ -# -# MySQL 8.0.4 introduced 'caching_sha2_password' as its default authentication plugin. -# It is faster and provides better security then the previous default authentication plugin. -# -# Until now (09/2018), it does not work with some other software (eg. MariaDB client, MariaDB connectors, ...) -# -# This configuration file changes MySQL default server configuration, so it behaves the same way as in MySQL 5.7. -# -# To change the behaviour back to the upstream default, comment out the following lines: - -[mysqld] -default_authentication_plugin=mysql_native_password diff --git a/SOURCES/mysql-5.6.10-rpmlintrc b/SOURCES/mysql-5.6.10-rpmlintrc deleted file mode 100644 index dfcdf39..0000000 --- a/SOURCES/mysql-5.6.10-rpmlintrc +++ /dev/null @@ -1,48 +0,0 @@ -# Filtered out until upstream fixes them -# Upstream bug: http://bugs.mysql.com/68518 -addFilter("incorrect-fsf-address") - -# Done to avoid _prefix/lib64/tmpfiles.d -addFilter("E: hardcoded-library-path in %\{_prefix\}/lib/tmpfiles.d") - -# Keeping the old summary for now -addFilter("W: name-repeated-in-summary C MySQL") - -# Spellchecked -addFilter("W: spelling-error %description -l en_US multi -> mulch, mufti") -addFilter("W: spelling-error %description -l en_US benchmarking -> bench marking, bench-marking, benchmark") -addFilter("W: spelling-error Summary(en_US) embeddable -> embedded") -addFilter("W: spelling-error.*embeddable -> embedded") - -# As long as the manual is part of the original tarball, we have do to -# this -addFilter("mysql.src: W: invalid-url Source0: mysql-5.6.[0-9]+-nodocs.tar.gz") - -# Leave the logfile where it is for now -addFilter("E: non-root-user-log-file /var/log/mysqld.log mysql") -addFilter("E: non-root-group-log-file /var/log/mysqld.log mysql") -addFilter("E: non-ghost-file /var/log/mysqld.log") -addFilter("E: zero-length /var/log/mysqld.log") - -addFilter("E: incoherent-logrotate-file /etc/logrotate.d/mysqld") - -# Hidden files and zero lenght files is normal for some tests -addFilter("W: hidden-file-or-dir /usr/share/mysql-test/std_data/.mylogin.cnf") -addFilter("E: zero-length /usr/share/mysql-test/suite/parts/t/disabled.def") -addFilter("E: zero-length /usr/share/mysql-test/std_data/bug37631.MYD") -addFilter("E: zero-length /usr/share/mysql-test/std_data/cluster_7022_table.MYD") -addFilter("E: zero-length /usr/share/mysql-test/collections/disabled-weekly.list") -addFilter("E: zero-length /usr/share/mysql-test/collections/disabled-daily.list") - -# debuginfo bug? -addFilter("E: non-standard-dir-perm /usr/src/debug/tmp 01777") - -# mysql-config *script* in lib -addFilter("W: only-non-binary-in-usr-lib") - -# missing -addFilter("W: no-manual-page-for-binary my_safe_process") - -# cluster is gone -addFilter("W: obsolete-not-provided mysql-cluster") - diff --git a/SOURCES/mysql-arm32-timer.patch b/SOURCES/mysql-arm32-timer.patch deleted file mode 100644 index bafa0bb..0000000 --- a/SOURCES/mysql-arm32-timer.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/mysql-test/include/mtr_warnings.sql b/mysql-test/include/mtr_warnings.sql -index 78b09285..b7153445 100644 ---- a/mysql-test/include/mtr_warnings.sql -+++ b/mysql-test/include/mtr_warnings.sql -@@ -376,6 +376,11 @@ INSERT INTO global_suppressions VALUES - - ("'mysql_native_password' is deprecated and will be removed in a future release."), - -+ /* -+ ARM32 don't support timers and get this warning in every test. -+ */ -+ ("The CYCLE timer is not available. WAIT events in the performance_schema will not be timed."), -+ - ("THE_LAST_SUPPRESSION"); - - diff --git a/SOURCES/mysql-c99.patch b/SOURCES/mysql-c99.patch deleted file mode 100644 index 935e64f..0000000 --- a/SOURCES/mysql-c99.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur mysql-8.0.35.orig/plugin/innodb_memcached/daemon_memcached/daemon/memcached.c mysql-8.0.35/plugin/innodb_memcached/daemon_memcached/daemon/memcached.c ---- mysql-8.0.35.orig/plugin/innodb_memcached/daemon_memcached/daemon/memcached.c 2023-10-12 13:45:01.000000000 +0200 -+++ mysql-8.0.35/plugin/innodb_memcached/daemon_memcached/daemon/memcached.c 2023-12-19 10:48:46.718006624 +0100 -@@ -4070,7 +4070,7 @@ - do { - while(key_token->length != 0) { - /* whether there are more keys to fetch */ -- bool next_get = (key_token + 1)->value; -+ bool next_get = (key_token + 1)->value != NULL; - - key = key_token->value; - nkey = key_token->length; diff --git a/SOURCES/mysql-check-upgrade.sh b/SOURCES/mysql-check-upgrade.sh deleted file mode 100644 index cf41d84..0000000 --- a/SOURCES/mysql-check-upgrade.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common" - -upgrade_info_file="$datadir/mysql_upgrade_info" -version=0 -# get version as integer from mysql_upgrade_info file -if [ -f "$upgrade_info_file" ] && [ -r "$upgrade_info_file" ] ; then - version_major=$(cat "$upgrade_info_file" | head -n 1 | sed -e 's/\([0-9]*\)\.\([0-9]*\)\..*$/\1/') - version_minor=$(cat "$upgrade_info_file" | head -n 1 | sed -e 's/\([0-9]*\)\.\([0-9]*\)\..*$/\2/') - if [[ $version_major =~ ^[0-9]+$ ]] && [[ $version_minor =~ ^[0-9]+$ ]] ; then - version=$((version_major*100+version_minor)) - fi -fi - -# compute current version as integer -thisversion=$((@MAJOR_VERSION@*100+@MINOR_VERSION@)) - -# provide warning in cases we should run mysql_upgrade -if [ $version -ne $thisversion ] ; then - - # give extra warning if some version seems to be skipped - if [ $version -gt 0 ] && [ $version -lt 505 ] ; then - echo "The datadir located at $datadir seems to be older than of a version 5.5. Please, mind that as a general rule, to upgrade from one release series to another, go to the next series rather than skipping a series." >&2 - fi - - cat <&2 -The datadir located at $datadir needs to be upgraded using 'mysql_upgrade' tool. This can be done using the following steps: - - 1. Back-up your data before with 'mysql_upgrade' - 2. Start the database daemon using 'service @DAEMON_NAME@ start' - 3. Run 'mysql_upgrade' with a database user that has sufficient privileges - -Read more about 'mysql_upgrade' usage at: -http://dev.mysql.com/doc/refman/5.6/en/mysql-upgrade.html -EOF -fi - -exit 0 diff --git a/SOURCES/mysql-flush-logrotate.patch b/SOURCES/mysql-flush-logrotate.patch new file mode 100644 index 0000000..1e30f6a --- /dev/null +++ b/SOURCES/mysql-flush-logrotate.patch @@ -0,0 +1,17 @@ +diff -up mysql-8.0.35/support-files/mysql-log-rotate.in.origf mysql-8.0.35/support-files/mysql-log-rotate.in +--- mysql-8.0.35/support-files/mysql-log-rotate.in.origf 2024-01-29 23:00:32.043257515 +0100 ++++ mysql-8.0.35/support-files/mysql-log-rotate.in 2024-01-29 23:02:26.520440388 +0100 +@@ -49,11 +49,7 @@ + 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 ++ # SIGUSR1 makes the daemon to flush the logs, no need to connect ++ @bindir@/kill -USR1 $(systemctl show --property MainPID --value mysqld) + endscript + } diff --git a/SOURCES/mysql-logrotate-log-path.patch b/SOURCES/mysql-logrotate-log-path.patch deleted file mode 100644 index 0f2c13e..0000000 --- a/SOURCES/mysql-logrotate-log-path.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- mysql-8.0.11/support-files/mysql-log-rotate.in.old 2018-09-13 18:43:03.595891364 +0200 -+++ mysql-8.0.11/support-files/mysql-log-rotate.in 2018-09-13 18:43:36.774236649 +0200 -@@ -41,7 +41,7 @@ - # ATTENTION: The /root/.my.cnf file should be readable - # _ONLY_ by root ! - --@localstatedir@/mysqld.log { -+@LOG_LOCATION@ { - # create 600 mysql mysql - notifempty - daily diff --git a/SOURCES/mysql-mtr.patch b/SOURCES/mysql-mtr.patch deleted file mode 100644 index cb847bd..0000000 --- a/SOURCES/mysql-mtr.patch +++ /dev/null @@ -1,104 +0,0 @@ -Avoid errors like: - -| Path length (109) is longer than maximum supported length (108) and will be truncated at /usr/lib64/perl5/vendor_perl/Socket.pm line 880, line 1. -| worker[2] mysql-test-run: *** ERROR: Socket path '/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.s390x/usr/share/mysql-test/var/tmp/2' too long, -| it would be truncated and thus not possible to use for connection to MySQL Server. Set a shorter with --tmpdir= option - -=== - -On Fedora 32: - -| $ grep -e "PATH" /usr/include/linux/limits.h -| #define PATH_MAX 4096 /* # chars in a path name including nul */ - -=== - -Thus setting the maximum path length on Fedora to 108 characters is just too short. - -BTW on the modern filesystems you can easily create path longer than PATH_MAX. -The PATH_MAX constant is unsafe. -Interesting article: https://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html - -=== - -The question is why haven't I encountered this issue until recently ? - -After the recent tweaks to the testsuite (between 8.0.24 and 8.0.25 release), the generated --tmpdir path changed from -| --tmpdir=/builddir/build/BUILD/mysql-8.0.24/x86_64-redhat-linux-gnu/mysql-test/var/tmp/ -to -| --tmpdir=/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var/tmp/ - -=== - -The whole setup changed as follows: -BEFORE: - -| Installing system database -| ### safe_path: /builddir/build/BUILD/mysql-8.0.24/x86_64-redhat-linux-gnu/runtime_output_directory///mysqltest_safe_process --verbose -- /builddir/build/BUILD/mysql-8.0.24/x86_64-redhat-linux-gnu/runtime_output_directory/mysqld --no-defaults --initialize-insecure --loose-skip-ndbcluster --tmpdir=/builddir/build/BUILD/mysql-8.0.24/x86_64-redhat-linux-gnu/mysql-test/var/tmp/ --core-file --datadir=/builddir/build/BUILD/mysql-8.0.24/x86_64-redhat-linux-gnu/mysql-test/var/data/ --secure-file-priv=/builddir/build/BUILD/mysql-8.0.24/x86_64-redhat-linux-gnu/mysql-test/var --innodb_buffer_pool_size=24M --innodb-log-file-size=5M --innodb_autoextend_increment=8 --character-sets-dir=/builddir/build/BUILD/mysql-8.0.24/share/charsets --loose-auto_generate_certs=OFF --loose-sha256_password_auto_generate_rsa_keys=OFF --loose-caching_sha2_password_auto_generate_rsa_keys=OFF --init-file=/builddir/build/BUILD/mysql-8.0.24/x86_64-redhat-linux-gnu/mysql-test/var/tmp/bootstrap.sql - -AFTER: - -| Installing system database -| ### safe_path: /builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/bin//mysqltest_safe_process --verbose -- /builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/libexec/mysqld --no-defaults --initialize-insecure --loose-skip-ndbcluster --tmpdir=/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var/tmp/ --core-file --datadir=/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var/data/ --secure-file-priv=/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var --innodb_buffer_pool_size=24M --innodb-log-file-size=5M --innodb_autoextend_increment=8 --character-sets-dir=/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql/charsets --loose-auto_generate_certs=OFF --loose-sha256_password_auto_generate_rsa_keys=OFF --loose-caching_sha2_password_auto_generate_rsa_keys=OFF --init-file=/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var/tmp/bootstrap.sql - -=== - -The likely cause is the added - -| cd %{buildroot}%{_datadir}/mysql-test - -which was not originally present in the SPECfile. - -However the MariaDB implementation does not have this issue, even though it has the same SPECfile %check phase code. - - -=== - -In the extended log, you can see '/tmp/XfTFAis2Jl' being created and deleted short after. -Even though the script warns about the path length, tries to workaround it; it destroyes that workaround short after and use the too-long path instead. - -I'm not sure whether the output is synchronous, but even if it wasn'tit still looks weird. - -| + cd /builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test -| Logging: ./mysql-test-run.pl --verbose --parallel=auto --force --retry=2 --suite-timeout=900 --testcase-timeout=30 --mysqld=--binlog-format=mixed --max-test-fail=5 --report-unstable-tests --clean-vardir --suite=main --mem --skip-test-list=platform-specific-tests.list -| Path length (109) is longer than maximum supported length (108) and will be truncated at /usr/lib64/perl5/vendor_perl/Socket.pm line 880. -| Too long tmpdir path '/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var/tmp' creating a shorter one -| - Using tmpdir: '/tmp/XfTFAis2Jl' -| > Collecting: main -| > testdir: /builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/t -| > resdir: /builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/r -| > Collecting: i_main -| Removing old var directory -| > opt_vardir: /builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var -| > Removing /builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var/ -| > Removing /dev/shm/var_933_jfTb -| > Removing /tmp/XfTFAis2Jl/ -| Creating var directory '/builddir/build/BUILDROOT/mysql-8.0.24-1.fc35.x86_64/usr/share/mysql-test/var' -| > Creating /dev/shm/var_933_jfTb -| - symlinking 'var' to '/dev/shm/var_933_jfTb' - - - - -diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl -index 26e6c92c..9d85c6d6 100755 ---- mysql-8.0.39/mysql-test/mysql-test-run.pl 2024-08-11 01:20:12.207260860 +0200 -+++ mysql-8.0.39/mysql-test/mysql-test-run.pl_patched 2024-08-11 20:44:42.230145160 +0200 -@@ -3560,17 +3560,6 @@ sub setup_vardir() { - mkpath("$opt_vardir/tmp"); - mkpath($opt_tmpdir) if ($opt_tmpdir ne "$opt_vardir/tmp"); - -- # On some operating systems, there is a limit to the length of a -- # UNIX domain socket's path far below PATH_MAX. Don't allow that -- # to happen. -- my $res = -- check_socket_path_length("$opt_tmpdir/mysqld.NN.sock", $opt_parallel, $tmpdir_path_updated); -- if ($res) { -- mtr_error("Socket path '$opt_tmpdir' too long, it would be ", -- "truncated and thus not possible to use for connection to ", -- "MySQL Server. Set a shorter with --tmpdir= option"); -- } -- - # Copy all files from std_data into var/std_data - # and make them world readable - copytree("$glob_mysql_test_dir/std_data", "$opt_vardir/std_data", "0022") diff --git a/SOURCES/mysql-openssl-engine.patch b/SOURCES/mysql-openssl-engine.patch new file mode 100644 index 0000000..28ced66 --- /dev/null +++ b/SOURCES/mysql-openssl-engine.patch @@ -0,0 +1,15 @@ +https://fedoraproject.org/wiki/Changes/OpensslDeprecateEngine +https://fedoraproject.org/wiki/Changes/OpensslNoEngine + +--- mysql-8.4.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/network/xcom_network_provider_ssl_native_lib.cc 2024-04-10 08:26:28.000000000 +0200 ++++ mysql-8.4.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/network/xcom_network_provider_ssl_native_lib.cc_patched 2024-07-18 18:33:26.237771364 +0200 +@@ -50,7 +50,9 @@ + #include "my_compiler.h" + #endif + ++#if !defined(OPENSSL_NO_ENGINE) + #include "openssl/engine.h" ++#endif + + #include "xcom/retry.h" + #include "xcom/task_debug.h" diff --git a/SOURCES/mysql-scl-env-check.patch b/SOURCES/mysql-scl-env-check.patch deleted file mode 100644 index b8e4f7e..0000000 --- a/SOURCES/mysql-scl-env-check.patch +++ /dev/null @@ -1,144 +0,0 @@ -diff -up mysql-8.0.11/scripts/mysqld_safe.sh.p90 mysql-8.0.11/scripts/mysqld_safe.sh ---- mysql-8.0.11/scripts/mysqld_safe.sh.p90 2018-04-08 08:44:49.000000000 +0200 -+++ mysql-8.0.11/scripts/mysqld_safe.sh 2018-06-23 21:28:20.533825845 +0200 -@@ -11,6 +11,12 @@ - # mysql.server works by first doing a cd to the base directory and from there - # executing mysqld_safe - -+# we want start daemon only inside "scl enable" invocation -+if ! scl_enabled @SCL_NAME@ ; then -+ echo "Use \"scl enable @SCL_NAME@ 'service ...'\" invocation" -+ exit 1 -+fi -+ - # Initialize script globals - KILL_MYSQLD=1; - MYSQLD= -diff -up mysql-8.0.11/scripts/mysql.init.in.p90 mysql-8.0.11/scripts/mysql.init.in ---- mysql-8.0.11/scripts/mysql.init.in.p90 2018-06-23 21:28:20.531825833 +0200 -+++ mysql-8.0.11/scripts/mysql.init.in 2018-06-23 21:28:20.533825845 +0200 -@@ -71,8 +71,8 @@ start(){ - action $"Starting $prog: " /bin/true - ret=0 - else -- @libexecdir@/mysql-check-socket || return 1 -- su - $MYUSER -s /bin/bash -c "@libexecdir@/mysql-prepare-db-dir $MYUSER $MYGROUP" || return 4 -+ scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-socket || return 1 -+ su - $MYUSER -s /bin/bash -c "scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-prepare-db-dir $MYUSER $MYGROUP" || return 4 - - # Pass all the options determined above, to ensure consistent behavior. - # In many cases mysqld_safe would arrive at the same conclusions anyway -@@ -81,13 +81,13 @@ start(){ - # and some users might prefer to configure logging to syslog.) - # Note: set --basedir to prevent probes that might trigger SELinux - # alarms, per bug #547485 -- su - $MYUSER -s /bin/bash -c "$exec --datadir='$datadir' --socket='$socketfile' \ -+ su - $MYUSER -s /bin/bash -c "scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- $exec --datadir='$datadir' --socket='$socketfile' \ - --pid-file='$pidfile' \ - --basedir=@prefix@ --user=$MYUSER" >/dev/null 2>&1 & - safe_pid=$! - - # Wait until the daemon is up -- su - $MYUSER -s /bin/bash -c "@libexecdir@/mysql-wait-ready '$safe_pid'" -+ su - $MYUSER -s /bin/bash -c "scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-wait-ready '$safe_pid'" - ret=$? - - if [ $ret -eq 0 ]; then -@@ -154,6 +154,18 @@ condrestart(){ - [ -e $lockfile ] && restart || : - } - -+# We have to re-enable SCL environment, because /sbin/service -+# clears almost all environment variables. -+# Since X_SCLS is cleared as well, we lose information about other -+# collections enabled. -+source @SCL_SCRIPTS@/service-environment -+source scl_source enable $@SCL_NAME_UPPER@_SCLS_ENABLED -+ -+# we want start daemon only inside "scl enable" invocation -+if ! scl_enabled @SCL_NAME@ ; then -+ echo "Collection @SCL_NAME@ has to be listed in @SCL_SCRIPTS@/service-environment" -+ exit 1 -+fi - - # See how we were called. - case "$1" in -diff -up mysql-8.0.11/scripts/mysql.service.in.p90 mysql-8.0.11/scripts/mysql.service.in ---- mysql-8.0.11/scripts/mysql.service.in.p90 2018-06-23 21:28:20.531825833 +0200 -+++ mysql-8.0.11/scripts/mysql.service.in 2018-06-23 21:34:19.940881913 +0200 -@@ -32,16 +32,23 @@ After=network.target - - [Service] - Type=notify -+NotifyAccess=all - User=mysql - Group=mysql - --ExecStartPre=@libexecdir@/mysql-check-socket --ExecStartPre=@libexecdir@/mysql-prepare-db-dir %n -+# Load collections set to enabled for this service -+EnvironmentFile=@SCL_SCRIPTS@/service-environment -+ -+# We want to start server only inside "scl enable" invocation -+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- /usr/bin/scl_enabled @SCL_NAME@ -+ -+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-socket -+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-prepare-db-dir %n - # Note: we set --basedir to prevent probes that might trigger SELinux alarms, - # per bug #547485 --ExecStart=@libexecdir@/mysqld --basedir=@prefix@ --ExecStartPost=@libexecdir@/mysql-check-upgrade --ExecStopPost=@libexecdir@/mysql-wait-stop -+ExecStart=@libexecdir@/mysqld-scl-helper enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysqld --basedir=@prefix@ -+ExecStartPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-upgrade -+ExecStopPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-wait-stop - - # Give a reasonable amount of time for the server to start up/shut down - TimeoutSec=300 -diff -up mysql-8.0.11/scripts/mysql@.service.in.p90 mysql-8.0.11/scripts/mysql@.service.in ---- mysql-8.0.11/scripts/mysql@.service.in.p90 2018-06-23 21:28:20.531825833 +0200 -+++ mysql-8.0.11/scripts/mysql@.service.in 2018-06-23 21:34:30.583942800 +0200 -@@ -32,16 +32,23 @@ After=network.target - - [Service] - Type=notify -+NotifyAccess=all - User=mysql - Group=mysql - --ExecStartPre=@libexecdir@/mysql-check-socket --defaults-group-suffix=.%I --ExecStartPre=@libexecdir@/mysql-prepare-db-dir --defaults-group-suffix=.%I %n -+# Load collections set to enabled for this service -+EnvironmentFile=@SCL_SCRIPTS@/service-environment -+ -+# We want to start server only inside "scl enable" invocation -+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- /usr/bin/scl_enabled @SCL_NAME@ -+ -+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-socket --defaults-group-suffix=.%I -+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-prepare-db-dir --defaults-group-suffix=.%I %n - # Note: we set --basedir to prevent probes that might trigger SELinux alarms, - # per bug #547485 --ExecStart=@libexecdir@/mysqld --defaults-group-suffix=.%I --basedir=@prefix@ --ExecStartPost=@libexecdir@/mysql-check-upgrade --defaults-group-suffix=.%I --ExecStopPost=@libexecdir@/mysql-wait-stop --defaults-group-suffix=.%I -+ExecStart=@libexecdir@/mysqld-scl-helper enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysqld --defaults-group-suffix=.%I --basedir=@prefix@ -+ExecStartPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-upgrade --defaults-group-suffix=.%I -+ExecStopPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-wait-stop --defaults-group-suffix=.%I - - # Give a reasonable amount of time for the server to start up/shut down - TimeoutSec=300 -diff -up mysql-8.0.11/support-files/mysql-log-rotate.sh.p90 mysql-8.0.11/support-files/mysql-log-rotate.sh ---- mysql-8.0.11/support-files/mysql-log-rotate.sh.p90 2018-04-08 08:44:49.000000000 +0200 -+++ mysql-8.0.11/support-files/mysql-log-rotate.sh 2018-06-23 21:28:20.533825845 +0200 -@@ -51,9 +51,9 @@ - postrotate - # just if mysqld is really running - if test -x @bindir@/mysqladmin && \ -- @bindir@/mysqladmin ping &>/dev/null -+ /usr/bin/scl enable @SCL_NAME@ -- @bindir@/mysqladmin ping &>/dev/null - then -- @bindir@/mysqladmin flush-logs -+ /usr/bin/scl enable @SCL_NAME@ -- @bindir@/mysqladmin flush-logs - fi - endscript - } diff --git a/SOURCES/mysql-scripts.patch b/SOURCES/mysql-scripts.patch index 06dfa43..322577b 100644 --- a/SOURCES/mysql-scripts.patch +++ b/SOURCES/mysql-scripts.patch @@ -1,6 +1,6 @@ ---- mysql-8.0.22/scripts/CMakeLists.txt.old 2020-10-26 10:23:30.666696561 +0100 -+++ mysql-8.0.22/scripts/CMakeLists.txt 2020-10-26 10:25:14.447914251 +0100 -@@ -507,4 +507,33 @@ +--- mysql-8.0.22/scripts/CMakeLists.txt.old 2020-10-21 11:08:50.654252563 +0200 ++++ mysql-8.0.22/scripts/CMakeLists.txt 2020-10-21 11:11:33.635935366 +0200 +@@ -507,4 +507,30 @@ ) ENDIF() ENDIF() @@ -11,13 +11,10 @@ + mysql.service + mysql@.service + mysql-prepare-db-dir -+ mysql-wait-ready + mysql-wait-stop + mysql-check-socket -+ mysql-check-upgrade + mysql-scripts-common + mysql_config_multilib -+ mysql.init + my.cnf + server.cnf + ) diff --git a/SOURCES/mysql-sysnice.te b/SOURCES/mysql-sysnice.te deleted file mode 100644 index de62431..0000000 --- a/SOURCES/mysql-sysnice.te +++ /dev/null @@ -1,10 +0,0 @@ - -module mysql-sysnice 1.0; - -require { - type mysqld_t; - class capability sys_nice; -} - -#============= mysqld_t ============== -allow mysqld_t self:capability sys_nice; diff --git a/SOURCES/mysql-wait-ready.sh b/SOURCES/mysql-wait-ready.sh deleted file mode 100644 index 2ed5fe1..0000000 --- a/SOURCES/mysql-wait-ready.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common" - -# This script waits for mysqld to be ready to accept connections -# (which can be many seconds or even minutes after launch, if there's -# a lot of crash-recovery work to do). -# Running this as ExecStartPost is useful so that services declared as -# "After mysqld" won't be started until the database is really ready. - -if [ $# -ne 1 ] ; then - echo "You need to pass daemon pid as an argument for this script." - exit 20 -fi - -# Service file passes us the daemon's PID (actually, mysqld_safe's PID) -daemon_pid="$1" - -# Wait for the server to come up or for the mysqld process to disappear -ret=0 -while /bin/true; do - # Check process still exists - if ! [ -d "/proc/${daemon_pid}" ] ; then - ret=1 - break - fi - RESPONSE=`@bindir@/mysqladmin --no-defaults --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1` - mret=$? - if [ $mret -eq 0 ] ; then - break - fi - # exit codes 1, 11 (EXIT_CANNOT_CONNECT_TO_SERVICE) are expected, - # anything else suggests a configuration error - if [ $mret -ne 1 -a $mret -ne 11 ]; then - echo "Cannot check for @NICE_PROJECT_NAME@ Daemon startup because of mysqladmin failure." >&2 - ret=$mret - break - fi - # "Access denied" also means the server is alive - echo "$RESPONSE" | grep -q "Access denied for user" && break - - sleep 1 -done - -exit $ret diff --git a/SOURCES/mysql.init.in b/SOURCES/mysql.init.in deleted file mode 100644 index 6ae046c..0000000 --- a/SOURCES/mysql.init.in +++ /dev/null @@ -1,186 +0,0 @@ -#!/bin/sh -# -# @DAEMON_NAME@ This shell script takes care of starting and stopping -# the MySQL subsystem (mysqld). -# -# chkconfig: - 64 36 -# description: MySQL database server. -# processname: mysqld -# config: @sysconfdir@/my.cnf -# pidfile: /var/run/@DAEMON_NAME@/@DAEMON_NO_PREFIX@.pid -### BEGIN INIT INFO -# Provides: mysqld -# Required-Start: $local_fs $remote_fs $network $named $syslog $time -# Required-Stop: $local_fs $remote_fs $network $named $syslog $time -# Short-Description: start and stop MySQL server -# Description: MySQL database server -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -# Source networking configuration. -. /etc/sysconfig/network - - -exec="@bindir@/mysqld_safe" -prog="@DAEMON_NAME@" - -# Set timeouts here so they can be overridden from @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@ -STARTTIMEOUT=300 -STOPTIMEOUT=60 - -# User and group the daemon will run under -MYUSER=mysql -MYGROUP=mysql - -# Edit the following file in order to re-write some of the environment -# variables defined above, like $STARTTIMEOUT, $STOPTIMEOUT, $exec -[ -e @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@ ] && . @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@ - -lockfile=/var/lock/subsys/$prog - -# get options from my.cnf -source "@libexecdir@/mysql-scripts-common" - -start(){ - [ -x $exec ] || exit 5 - - # check permissions - if ! touch $(dirname $socketfile) &>/dev/null ; then - action $"Starting $prog: " /bin/false - return 4 - fi - - # check to see if it's already running - MYSQLDRUNNING=0 - if [ -f "$pidfile" ]; then - MYSQLPID=`cat "$pidfile" 2>/dev/null` - if [ -n "$MYSQLPID" ] && [ -d "/proc/$MYSQLPID" ] ; then - MYSQLDRUNNING=1 - fi - fi - RESPONSE=`@bindir@/mysqladmin --no-defaults --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1` - if [ $MYSQLDRUNNING = 1 ] && [ $? = 0 ]; then - # already running, do nothing - action $"Starting $prog: " /bin/true - ret=0 - elif [ $MYSQLDRUNNING = 1 ] && echo "$RESPONSE" | grep -q "Access denied for user" - then - # already running, do nothing - action $"Starting $prog: " /bin/true - ret=0 - else - @libexecdir@/mysql-check-socket || return 1 - su - $MYUSER -s /bin/bash -c "@libexecdir@/mysql-prepare-db-dir $MYUSER $MYGROUP" || return 4 - - # Pass all the options determined above, to ensure consistent behavior. - # In many cases mysqld_safe would arrive at the same conclusions anyway - # but we need to be sure. (An exception is that we don't force the - # log-error setting, since this script doesn't really depend on that, - # and some users might prefer to configure logging to syslog.) - # Note: set --basedir to prevent probes that might trigger SELinux - # alarms, per bug #547485 - su - $MYUSER -s /bin/bash -c "$exec --datadir='$datadir' --socket='$socketfile' \ - --pid-file='$pidfile' \ - --basedir=@prefix@ --user=$MYUSER" >/dev/null 2>&1 & - safe_pid=$! - - # Wait until the daemon is up - su - $MYUSER -s /bin/bash -c "@libexecdir@/mysql-wait-ready '$safe_pid'" - ret=$? - - if [ $ret -eq 0 ]; then - action $"Starting $prog: " /bin/true - chmod o+r $pidfile >/dev/null 2>&1 - touch $lockfile - else - action $"Starting $prog: " /bin/false - fi - fi - return $ret -} - -stop(){ - if [ ! -f "$pidfile" ]; then - # not running; per LSB standards this is "ok" - action $"Stopping $prog: " /bin/true - return 0 - fi - MYSQLPID=`cat "$pidfile" 2>/dev/null` - if [ -n "$MYSQLPID" ]; then - if ! [ -d "/proc/$MYSQLPID" ] ; then - # process doesn't run anymore - action $"Stopping $prog: " /bin/true - return 0 - fi - /bin/kill "$MYSQLPID" >/dev/null 2>&1 - ret=$? - if [ $ret -eq 0 ]; then - TIMEOUT="$STOPTIMEOUT" - while [ $TIMEOUT -gt 0 ]; do - /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break - sleep 1 - let TIMEOUT=${TIMEOUT}-1 - done - if [ $TIMEOUT -eq 0 ]; then - echo "Timeout error occurred trying to stop MySQL Daemon." - ret=1 - action $"Stopping $prog: " /bin/false - else - rm -f $lockfile - rm -f "$socketfile" - action $"Stopping $prog: " /bin/true - fi - else - # kill command failed, probably insufficient permissions - action $"Stopping $prog: " /bin/false - ret=4 - fi - else - # failed to read pidfile, probably insufficient permissions - action $"Stopping $prog: " /bin/false - ret=4 - fi - return $ret -} - -restart(){ - stop - start -} - -condrestart(){ - [ -e $lockfile ] && restart || : -} - - -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status -p "$pidfile" $prog - ;; - restart) - restart - ;; - condrestart|try-restart) - condrestart - ;; - reload) - exit 3 - ;; - force-reload) - restart - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" - exit 2 -esac - -exit $? diff --git a/SOURCES/mysql.rpmlintrc b/SOURCES/mysql.rpmlintrc new file mode 100644 index 0000000..605529e --- /dev/null +++ b/SOURCES/mysql.rpmlintrc @@ -0,0 +1,37 @@ +# THIS FILE SERVES FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON +# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors + +# (same file in python3 package served as a great example) + + + +# Spelling errors +addFilter(r'spelling-error .* en_US (cnf|mysqld|subpackage) ') + +# Debug symlinks +addFilter(r'dangling-relative-symlink /usr/lib/.build-id') + +# Testsuite +# Some expected tests results are zero-length files +addFilter(r'(zero-length|pem-certificate|hidden-file-or-dir) /usr/share/mysql-test/*') + +# Chroot function +# False positive; checked by upstream +addFilter(r'missing-call-to-chdir-with-chroot') + +# Missing documentation +# I don't think that's on the upstream priority list +addFilter(r'no-documentation') +addFilter(r'no-manual-page-for-binary') + +# Cluster is gone +addFilter("W: obsolete-not-provided mysql-cluster") +addFilter("W: obsolete-not-provided mysql-bench") +addFilter("W: obsolete-not-provided community-mysql-bench") + +# Config file without noreplace flag +# Don't replace logs that may contain old entries +addFilter(r'conffile-without-noreplace-flag /var/log/mariadb/mariadb.log') + +# Seems pretty standard to me ... +addFilter(r'non-standard-dir-perm /var/log/mysql 750') diff --git a/SOURCES/mysql.service.in b/SOURCES/mysql.service.in index 4a7c295..0e96374 100644 --- a/SOURCES/mysql.service.in +++ b/SOURCES/mysql.service.in @@ -40,7 +40,6 @@ ExecStartPre=@libexecdir@/mysql-prepare-db-dir %n # Note: we set --basedir to prevent probes that might trigger SELinux alarms, # per bug #547485 ExecStart=@libexecdir@/mysqld --basedir=@prefix@ -ExecStartPost=@libexecdir@/mysql-check-upgrade ExecStopPost=@libexecdir@/mysql-wait-stop # Give a reasonable amount of time for the server to start up/shut down diff --git a/SOURCES/mysql@.service.in b/SOURCES/mysql@.service.in index 554f0ba..b7b2d48 100644 --- a/SOURCES/mysql@.service.in +++ b/SOURCES/mysql@.service.in @@ -40,7 +40,6 @@ ExecStartPre=@libexecdir@/mysql-prepare-db-dir --defaults-group-suffix=.%I %n # Note: we set --basedir to prevent probes that might trigger SELinux alarms, # per bug #547485 ExecStart=@libexecdir@/mysqld --defaults-group-suffix=.%I --basedir=@prefix@ -ExecStartPost=@libexecdir@/mysql-check-upgrade --defaults-group-suffix=.%I ExecStopPost=@libexecdir@/mysql-wait-stop --defaults-group-suffix=.%I # Give a reasonable amount of time for the server to start up/shut down diff --git a/SOURCES/rh-skipped-tests-list-arm.list b/SOURCES/rh-skipped-tests-list-arm.list index 4a423e7..e69de29 100644 --- a/SOURCES/rh-skipped-tests-list-arm.list +++ b/SOURCES/rh-skipped-tests-list-arm.list @@ -1,9 +0,0 @@ -# Failing on C9S & RHEL 9 for MySQL release 8.0.27 -sys_vars.innodb_buffer_pool_size_basic : BUG#0 - -# Unstable on aarch64 since MySQL 8.0.28 -innodb_undo.undo_settings : BUG#0 - -# Unstable on aarch64 since MySQL 8.0.36 -sys_vars.myisam_data_pointer_size_func : BUG#0 -rpl.rpl_eventlog_psi_memory : BUG#0 diff --git a/SOURCES/rh-skipped-tests-list-base.list b/SOURCES/rh-skipped-tests-list-base.list index 65e5064..a291898 100644 --- a/SOURCES/rh-skipped-tests-list-base.list +++ b/SOURCES/rh-skipped-tests-list-base.list @@ -1,46 +1,46 @@ -auth_sec.tls12_tls1 : BUG#0 -auth_sec.tls13_tls1 : BUG#0 -x.connection_tls_version : BUG#0 +innodb.alter_kill : BUG#0 failing on F34+ -# x86_64 -auth_sec.keyring_file_data_qa : BUG#0 -main.mysql_load_data_local_dir : BUG#0 -# i686 -main.ctype_unicode900_as_cs : BUG#0 -collations.chinese : BUG#0 -main.mysql_load_data_local_dir : BUG#0 +# Expected to fail in Fedora 33+ +# TLS 1.1 and older has been disabled by system-wide crypto-policies setting +# https://fedoraproject.org/wiki/Changes/StrongCryptoSettings2 +# Tests pass when using legacy crypto-policies seetings +x.connection_tls_version : BUG#0 Expected to fail on F33+ -# x86_64, s390x -main.mysqld--defaults-file : BUG#0 -main.mysqltest_json : BUG#0 -main.mtr_unit_tests : BUG#0 -main.mysqld--help-notwin : BUG#0 +# We intentionaly compile in a different default value than the upstream +# Thus the commands expected by upstream to fail succeeds in our builds +# and thus the test fails +# Cmake option: -DENABLED_LOCAL_INFILE=ON +main.mysql_load_data_local_dir : BUG#0 Intentional divergence from the upstream compiled-in default -# Unstable since 8.0.27 -innodb.innodb_read_only-2 : BUG#0 +# Failing since 8.0.37 +main.archive : BUG#0 -# Failing on 32-bit arches: armv7hl i686 s390x; since MySQL 8.0.25 -x.connection_unixsocket : BUG#0 -x.connection_unixsocket_invalid : BUG#0 -x.connection_unixsocket_lock : BUG#0 -innodb.innodb_bug-13628249 : BUG#0 +clone.local_dml_auto_tune : BUG#0 +clone.remote_dml_auto_tune : BUG#0 -# Failing since MySQL 8.0.29 -main.mysqlpump_bugs : BUG#0 +innodb.check_ibd_filesize_16k : BUG#0 -# Failing since MySQL 8.0.30 -auth_sec.fips : BUG#0 -rpl.rpl_fips : BUG#0 - -# Failing since MySQL 8.0.35 -binlog.binlog_mysqlbinlog_linux : BUG#0 -perfschema.idx_session_connect_attrs : BUG#0 rpl_gtid.mysqldump_bug33630199 : BUG#0 +rpl.rpl_eventlog_psi_memory : BUG#0 +rpl.rpl_tlsv13 : BUG#0 -# Failing since MySQL 8.0.36 +# Failing on 8.4.0 +main.subquery_sj_all_bka_nobnl : BUG#0 +main.subquery_sj_mat_bka_nobnl : BUG#0 + +# Failing on 8.4.3 on x86_64 +gis.spatial_analysis_functions_centroid : BUG#0 +perfschema.transaction_nested_events : BUG#0 +rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts : BUG#0 + +# Fails since 2025 +main.time_zone : BUG#0 + +# Fails exclusively when built as a module main.generated_invisible_primary_key : BUG#0 -main.slow_log : BUG#0 -main.archive_plugin : BUG#0 -main.blackhole_plugin : BUG#0 -main.events_read_only : BUG#0 -main.log_backtrace : BUG#0 +main.mtr_unit_tests : BUG#0 +main.mysqld--defaults-file : BUG#0 +main.mysqld--help-notwin : BUG#0 +main.mysqldump_event_terminology : BUG#0 +main.mysqldump_replica_terminology : BUG#0 +main.mysqltest_json : BUG#0 diff --git a/SOURCES/rh-skipped-tests-list-ppc.list b/SOURCES/rh-skipped-tests-list-ppc.list index 5976753..5f595f1 100644 --- a/SOURCES/rh-skipped-tests-list-ppc.list +++ b/SOURCES/rh-skipped-tests-list-ppc.list @@ -1,8 +1,35 @@ -# ppc64le -sys_vars.innodb_buffer_pool_size_basic : BUG#0 fails only on ppc64le on f32+ +# Fails since 8.0.30 +federated.federated_server : BUG#0 +rpl.rpl_innodb_bug28430 : BUG#0 -# Unstable on 8.0.35 -rpl.rpl_replica_terminology : BUG#0 +# Fails since 8.0.34 +rpl_gtid.rpl_gtid_row_event_max_size : BUG#0 +rpl.rpl_channel_creation_under_replica_load : BUG#0 + +# Fails since 8.0.37 +clone.local_dml : BUG#0 +clone.remote_dml_no_binlog : BUG#0 +clone.remote_dml_replace : BUG#0 + +innodb.create_index_with_disable_sort_file_cache : BUG#0 +innodb_fts.bug_34846823 : BUG#0 +innodb_gis.rtree_search : BUG#0 +innodb.innodb_autoextend_import_export : BUG#0 +innodb.instant_ddl_upgrade_rollback : BUG#0 +innodb.lob_recovery : BUG#0 +innodb.multi_value_basic : BUG#0 +innodb_undo.undo_settings : BUG#0 + +parts.partition_reverse_scan_icp : BUG#0 + +rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts : BUG#0 +rpl_nogtid.rpl_loaddatalocal : BUG#0 +rpl_nogtid.rpl_row_event_max_size : BUG#0 +rpl_nogtid.rpl_typeconv : BUG#0 +rpl.rpl_mysql_upgrade : BUG#0 +rpl.rpl_parallel : BUG#0 +rpl.rpl_priv_checks_user_start_info : BUG#0 + +sys_vars.myisam_data_pointer_size_func : BUG#0 +x.upgrade : BUG#0 -# Unstable on 8.0.36 -main.bind_address_3 : BUG#0 diff --git a/SOURCES/rh-skipped-tests-list-s390.list b/SOURCES/rh-skipped-tests-list-s390.list index 064d587..18fc03a 100644 --- a/SOURCES/rh-skipped-tests-list-s390.list +++ b/SOURCES/rh-skipped-tests-list-s390.list @@ -1,9 +1,10 @@ -# Fails since 8.0.22 -main.subquery_bugs : BUG#0 +# Fails since 8.0.34 +rpl.rpl_channel_creation_under_replica_load : BUG#0 +rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts : BUG#0 -# Failing on C9S & RHEL 9 for MySQL release 8.0.33 -main.subquery_sj_all_bka_nobnl : BUG#0 +# Fails since 8.0.37 +innodb.lob_recovery : BUG#0 +sys_vars.myisam_data_pointer_size_func : BUG#0 -# Fails since 8.0.41 -main.archive : BUG#0 -main.func_compress : BUG#0 +# Fails since 8.4.3 +test_services.test_event_tracking_consumer : BUG#0 diff --git a/SOURCES/server.cnf.in b/SOURCES/server.cnf.in index ba3d479..727ca52 100644 --- a/SOURCES/server.cnf.in +++ b/SOURCES/server.cnf.in @@ -13,6 +13,6 @@ [mysqld] datadir=@MYSQL_DATADIR@ socket=@MYSQL_UNIX_ADDR@ -log-error=@LOG_LOCATION@ +log-error=@LOGFILE_RPM@ pid-file=@PID_FILE_DIR@/@DAEMON_NO_PREFIX@.pid diff --git a/SPECS/mysql.spec b/SPECS/mysql.spec index 993fc98..c424c8c 100644 --- a/SPECS/mysql.spec +++ b/SPECS/mysql.spec @@ -1,162 +1,122 @@ -# SCL stuff -%{?scl:%scl_package mysql} -%{!?scl:%global pkg_name %{name}} - -# To both save infrastrucutre resources and workaround testsuite clashes ExcludeArch: %{ix86} # Name of the package without any prefixes +%global majorname mysql +%global package_version 8.4.4 +%define majorversion %(echo %{package_version} | cut -d'.' -f1-2 ) %global pkgnamepatch mysql + +# Set if this package will be the default one in distribution +%{!?mysql_default:%global mysql_default 1} + # Regression tests may take a long time (many cores recommended), skip them by # passing --nocheck to rpmbuild or by setting runselftest to 0 if defining # --nocheck is not possible (e.g. in koji build) %{!?runselftest:%global runselftest 1} # Set this to 1 to see which tests fail, but 0 on production ready build -%{!?check_testsuite:%global ignore_testsuite_result 0} +%global ignore_testsuite_result 0 # The last version on which the full testsuite has been run # In case of further rebuilds of that version, don't require full testsuite to be run # run only "main" suite -%global last_tested_version 8.0.41 +%global last_tested_version 8.4.4 # Set to 1 to force run the testsuite even if it was already tested in current version %global force_run_testsuite 0 -# In f20+ use unversioned docdirs, otherwise the old versioned one -%global _pkgdocdirname %{pkg_name}%{!?_pkgdocdir:-%{version}} -%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{pkg_name}-%{version}} - -# Use Full RELRO for all binaries (RHBZ#1092548) -%global _hardened_build 1 - -# By default, patch(1) creates backup files when chunks apply with offsets. -# Turn that off to ensure such files don't get included in RPMs (cf bz#884755). -%global _default_patch_flags --no-backup-if-mismatch +# Filtering: https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering +%global __requires_exclude ^perl\\((hostnames|lib::mtr|lib::v1|mtr_|My::) +%global __provides_exclude_from ^(%{_datadir}/(mysql|mysql-test)/.*|%{_libdir}/mysql/plugin/.*\\.so)$ %global skiplist platform-specific-tests.list +%global boost_bundled_version 1.84.0 + +# MySQL 8.4.3 on RHEL 9.6: +# ZLIB version must be at least 1.2.13, found 1.2.11. +%global zlib_bundled_version 1.3.1 + + # For some use cases we do not need some parts of the package -%if 0%{?scl:1} -%bcond_with clibrary -%else -%bcond_without clibrary -%endif -%bcond_without devel -%bcond_without client -%bcond_without common -%bcond_without errmsg -%bcond_without test +%bcond clibrary 1 +%bcond devel 1 +%bcond client 1 +%bcond common 1 +%bcond errmsg 1 +%bcond test 1 # When there is already another package that ships /etc/my.cnf, # rather include it than ship the file again, since conflicts between # those files may create issues -%if 0%{?scl:1} -%bcond_without config +%bcond config 0 + +# Various plugins +# TO-DO: +# Need to check and fix the ON/OFF matrix of those plugins. +# It seems the current implementation is buggy, e.g.: +# - ldap needs krb5-devel too +# - when kr5-devel is part of the buildroot, kerberos plugin is compiled no matter the WITH_AUTHENTICATION_KERBEROS value +# - when fido is disabled but ldap enabled, authentication_oci_client.so is still built +# To avoid issues, leave either all ON or all OFF. +%if 0%{?fedora} +%bcond fido 1 +%bcond kerberos 1 +%bcond ldap 1 %else -%bcond_with config +%bcond fido 0 +%bcond kerberos 0 +%bcond ldap 0 %endif # For deep debugging we need to build binaries with extra debug info -%bcond_with debug +%bcond debug 0 -%global boost_bundled_version 1.77.0 +# Aditional SELinux rules from a standalone package 'mysql-selinux' (that holds rules shared between MariaDB and MySQL) +%bcond require_mysql_selinux 1 -%if 0%{?fedora} >= 26 || 0%{?rhel} > 7 -%bcond_with bundled_protobuf -%else -%bcond_without bundled_protobuf -%endif -%global protobuf_bundled_version 24.4 -# Mysql 8.0.21 needs libevent version >2.1 and rhel-7 provides 2.0 -# Also since Mysql 8.0.18, libzstd is required, but it's not in rhel until version 8 -# thus we need to use bundled libraries -%if 0%{?scl:1} || 0%{?rhel} <= 7 -%bcond_without bundled_libevent -%else -%bcond_with bundled_libevent -%endif -# zstd is missing on rhel-8.0.0 -# libfido2 is missing on <= rhel-8 as well -%if 0%{?scl:1} || 0%{?rhel} <= 8 -%bcond_without bundled_zstd -%bcond_without bundled_fido2 -%else -%bcond_with bundled_zstd -%bcond_with bundled_fido2 -%endif -%global zstd_bundled_version 1.5.5 -%global libevent_bundled_version 2.1.11 -%global fido2_bundled_version 1.15.0 - -# Include files for SysV init or systemd -%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7 -%bcond_without init_systemd -%bcond_with init_sysv -%global daemondir %{_unitdir} -%else -%bcond_with init_systemd -%bcond_without init_sysv -%global daemondir %{_sysconfdir}/rc.d/init.d -%endif -%global daemon_name %{?scl_prefix}mysqld -%global daemon_no_prefix mysqld - -%{?scl:%global se_daemon_source %{_unitdir}/mysqld} - -# Directory for storing pid file -%if 0%{?rhel} == 6 -%global pidfiledir %{_localstatedir}/run/%{daemon_name} -%else -%global pidfiledir %{_rundir}/%{daemon_name} -%endif +# Include files for systemd +%global daemon_name mysqld +%global daemon_no_prefix mysqld # We define some system's well known locations here so we can use them easily # later when building to another location (like SCL) -%if 0%{?scl:1} -%global logrotateddir %{_root_sysconfdir}/logrotate.d -%global selinux_packages_dir %{_root_datadir}/selinux/packages -%else -%global logrotateddir %{_sysconfdir}/logrotate.d -%global selinux_packages_dir %{_datadir}/selinux/packages -%endif -%global logfiledir %{_localstatedir}/log/mysql -%global logfile %{logfiledir}/%{daemon_no_prefix}.log - +%global logrotateddir %{_sysconfdir}/logrotate.d +%global logfiledir %{_localstatedir}/log/mysql +%global logfile %{logfiledir}/%{daemon_no_prefix}.log +# Directory for storing pid file +%global pidfiledir %{_rundir}/%{daemon_name} # Defining where database data live -%global dbdatadir %{_localstatedir}/lib/mysql +%global dbdatadir %{_localstatedir}/lib/mysql -# Home directory of mysql user should be same for all packages that create it -%global mysqluserhome /var/lib/mysql -# Provide mysql names for compatibility -%if 0%{?scl:1} -%bcond_with mysql_names -%bcond_with conflicts -%else -%bcond_without mysql_names -%bcond_without conflicts -%endif +# Set explicit conflicts with 'mariadb' packages +%bcond conflicts_mariadb 1 +# Provide explicitly the 'community-mysql' names +# 'community-mysql' names are deprecated and to be removed in future Fedora +# but we're leaving them here for compatibility reasons +%bcond provides_community_mysql 0 +# Obsolete the package 'community-mysql' and all its sub-packages +%bcond obsoletes_community_mysql 0 +# This is the last version of the 'community-mysql' package production release +%global obsolete_community_mysql_version 8.0.35-10 +%global community_mysql_version 8.0.36-1 # Make long macros shorter %global sameevr %{?epoch:%{epoch}:}%{version}-%{release} -%if 0%{?scl:1} -%global scl_upper %{lua:print(string.upper(string.gsub(rpm.expand("%{scl}"), "-", "_")))} -%endif - -Name: %{?scl_prefix}mysql -Version: 8.0.41 +Name: %{majorname} +Version: %{package_version} Release: 1%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com # Exceptions allow client libraries to be linked with most open source SW, # not only GPL code. See README.mysql-license -License: GPLv2 with exceptions and LGPLv2 and BSD +License: GPL-2.0-or-later AND LGPL-2.1-only AND BSL-1.0 AND BSD-2-Clause -Source0: https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-boost-%{version}.tar.gz +Source0: https://cdn.mysql.com/Downloads/MySQL-8.4/mysql-%{version}.tar.gz Source2: mysql_config_multilib.sh Source3: my.cnf.in Source6: README.mysql-docs @@ -164,27 +124,20 @@ Source7: README.mysql-license Source10: mysql.tmpfiles.d.in Source11: mysql.service.in Source12: mysql-prepare-db-dir.sh -Source13: mysql-wait-ready.sh Source14: mysql-check-socket.sh Source15: mysql-scripts-common.sh -Source16: mysql-check-upgrade.sh Source17: mysql-wait-stop.sh Source18: mysql@.service.in -Source19: mysql.init.in # To track rpmlint warnings -Source30: mysql-5.6.10-rpmlintrc +Source30: %{name}.rpmlintrc # Configuration for server Source31: server.cnf.in -Source32: default-authentication-plugin.cnf -Source40: daemon-scl-helper.sh -Source41: mysql-sysnice.te # Skipped tests lists Source50: rh-skipped-tests-list-base.list Source51: rh-skipped-tests-list-arm.list Source52: rh-skipped-tests-list-s390.list Source53: rh-skipped-tests-list-ppc.list - # Comments for these patches are in the patch files # Patches common for more mysql-like packages Patch1: %{pkgnamepatch}-install-test.patch @@ -194,22 +147,19 @@ Patch5: %{pkgnamepatch}-paths.patch # Patches specific for this mysql package Patch51: %{pkgnamepatch}-sharedir.patch -Patch53: %{pkgnamepatch}-mtr.patch -Patch54: %{pkgnamepatch}-arm32-timer.patch -Patch55: %{pkgnamepatch}-c99.patch - -# Patches specific for scl -Patch90: %{pkgnamepatch}-scl-env-check.patch -Patch91: %{pkgnamepatch}-rpath.patch +Patch52: %{pkgnamepatch}-rpath.patch +Patch56: %{pkgnamepatch}-flush-logrotate.patch +Patch57: %{pkgnamepatch}-openssl-engine.patch # Patches taken from boost 1.59 -Patch111: boost-1.58.0-pool.patch Patch112: boost-1.57.0-mpl-print.patch -# Patches taken from boost 1.76 -Patch113: boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch -# Use same logfile path in logrotate and mysql configs -Patch126: mysql-logrotate-log-path.patch +# This macro is used for package/sub-package names in the entire specfile +%if %?mysql_default +%global pkgname %{majorname} +%else +%global pkgname %{name} +%endif BuildRequires: cmake BuildRequires: gcc-c++ @@ -217,29 +167,27 @@ BuildRequires: libaio-devel BuildRequires: libedit-devel BuildRequires: libevent-devel BuildRequires: libicu-devel -BuildRequires: %{?scl_prefix}lz4 -BuildRequires: %{?scl_prefix}lz4-devel -BuildRequires: %{?scl_prefix}mecab-devel -BuildRequires: %{?scl_prefix}bison -BuildRequires: %{?scl_prefix}libcurl-devel -%ifnarch aarch64 %{arm} s390 s390x +BuildRequires: lz4-devel +BuildRequires: mecab-devel +BuildRequires: bison +BuildRequires: libzstd-devel +BuildRequires: libcurl-devel +%ifnarch aarch64 s390x BuildRequires: numactl-devel +BuildRequires: libquadmath-devel %endif +BuildRequires: openssl BuildRequires: openssl-devel -%if 0%{?fedora} > 24 || 0%{?rhel} > 7 +%if 0%{?fedora} >= 41 +# Complement of mysql-openssl-engine.patch +BuildRequires: openssl-devel-engine +%endif + BuildRequires: perl-interpreter BuildRequires: perl-generators -%endif -%if 0%{?fedora} > 27 || 0%{?rhel} > 7 BuildRequires: rpcgen BuildRequires: libtirpc-devel -%endif -%if %{without bundled_protobuf} BuildRequires: protobuf-lite-devel -%endif -BuildRequires: rapidjson-devel -BuildRequires: zlib -BuildRequires: zlib-devel BuildRequires: multilib-rpm-config # Tests requires time and ps and some perl modules BuildRequires: procps @@ -255,6 +203,7 @@ BuildRequires: perl(Errno) BuildRequires: perl(Exporter) BuildRequires: perl(Fcntl) BuildRequires: perl(File::Basename) +BuildRequires: perl(File::Compare) BuildRequires: perl(File::Copy) BuildRequires: perl(File::Find) BuildRequires: perl(File::Spec) @@ -282,77 +231,98 @@ BuildRequires: perl(Test::More) BuildRequires: perl(Time::HiRes) BuildRequires: perl(Time::localtime) BuildRequires: perl(warnings) -BuildRequires: make -%{?with_init_systemd:BuildRequires: systemd} -# libzstd -%{!?with_bundled_zstd:BuildRequires: libzstd-devel} -# libfido2 -%{!?with_bundled_fido2:BuildRequires: libfido2-devel} -# libevent -%{?with_bundled_libevent:Provides: bundled(libevent) = %{libevent_bundled_version}} -%{!?with_bundled_libevent:BuildRequires: libevent-devel} +BuildRequires: systemd + +# Since MySQL 8.0.28 +%{?with_fido:BuildRequires: libfido2-devel} + +%{?with_kerberos:BuildRequires: krb5-devel} +%{?with_ldap:BuildRequires: openldap-devel cyrus-sasl-devel cyrus-sasl-scram} -# aarch64 requires newer gcc -%if 0%{?rhel} == 7 && 0%{?scl:1} -%global dts devtoolset-7 -BuildRequires: %{dts}-gcc-c++ -%endif -BuildRequires: selinux-policy-devel Requires: bash coreutils grep -Requires: %{name}-common%{?_isa} = %{sameevr} -%{?scl:Requires:%scl_runtime} +Requires: %{pkgname}-common = %{sameevr} +# 'boost' header files must be bundled +# See https://bugzilla.redhat.com/show_bug.cgi?id=2260138#c7 for details Provides: bundled(boost) = %{boost_bundled_version} -%if %{with bundled_protobuf} -Provides: bundled(protobuf) = %{protobuf_bundled_version} -%endif -%if %{with bundled_zstd} -Provides: bundled(zstd) = %{zstd_bundled_version} -%endif -%if %{with bundled_fido2} -Provides: bundled(fido2) = %{fido2_bundled_version} -%endif -%if %{with mysql_names} -Provides: mysql = %{sameevr} -Provides: mysql%{?_isa} = %{sameevr} -Provides: mysql-compat-client = %{sameevr} -Provides: mysql-compat-client%{?_isa} = %{sameevr} -%endif +# ZLIB version in RHEL 9 is too low +Provides: bundled(zlib) = %{zlib_bundled_version} -%{?with_conflicts:Conflicts: mariadb} -# mysql-cluster used to be built from this SRPM, but no more -Obsoletes: mysql-cluster < 5.1.44 +# 'rapidjson' library must be bundled +# The rapidjson upstream made the last release in 2016, even though it has an active development till today (2024, ~750 commits since) +# The MySQL upstream forked the project from a specific commit and added custom patches. See "extra/RAPIDJSON-README" for details. +# In the MySQL 8.0.34, the MySQL upsstream made the 'rapidjson' library to be bundled by default. +Provides: bundled(rapidjson) -# Filtering: https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering -%if 0%{?fedora} > 14 || 0%{?rhel} > 6 -%global __requires_exclude ^perl\\((hostnames|lib::mtr|lib::v1|mtr_|My::) -%global __provides_exclude_from ^(%{_datadir}/(mysql|mysql-test)/.*|%{_libdir}/mysql/plugin/.*\\.so)$ +# Not available in Fedora +# https://github.com/martinus/unordered_dense +Provides: bundled(unordered_dense) + +%{?with_conflicts_mariadb:Conflicts: mariadb} +# Explicitly disallow installation of mysql + mariadb-server +%{?with_conflicts_mariadb:Conflicts: mariadb-server} +%{?with_provides_community_mysql:Provides: community-mysql = %community_mysql_version} +%{?with_provides_community_mysql:Provides: community-mysql%{?_isa} = %community_mysql_version} +%{?with_obsoletes_community_mysql:Obsoletes: community-mysql <= %obsolete_community_mysql_version} + +%if 0%{?rhel} >= 10 + +%define conflict_with_other_streams() %{expand:\ +Provides: %{majorname}%{?1:-%{1}}-any\ +Conflicts: %{majorname}%{?1:-%{1}}-any\ +} + +# Provide also mysqlX.X if default +%if %?mysql_default +%define mysqlX_if_default() %{expand:\ +Provides: mysql%{majorversion}%{?1:-%{1}} = %{sameevr}\ +Provides: mysql%{majorversion}%{?1:-%{1}}%{?_isa} = %{sameevr}\ +} %else -%filter_from_requires /perl(\(hostnames\|lib::mtr\|lib::v1\|mtr_\|My::\)/d -%filter_provides_in -P (%{_datadir}/(mysql|mysql-test)/.*|%{_libdir}/mysql/plugin/.*\.so) -%filter_setup +%define mysqlX_if_default() %{nil} %endif +%define add_metadata() %{expand:\ +%conflict_with_other_streams %{**}\ +%mysqlX_if_default %{**}\ +} + %description MySQL is a multi-user, multi-threaded SQL database server. MySQL is a client/server implementation consisting of a server daemon (mysqld) and many different client programs and libraries. The base package contains the standard MySQL client programs and generic MySQL files. +%else + +%define conflict_with_other_streams() { %{nil} } +%define add_metadata() { %{nil} } -%if %{with clibrary} -%package libs -Summary: The shared libraries required for MySQL clients -Requires: %{name}-common%{?_isa} = %{sameevr} -%{?scl:Requires:%scl_runtime} -%if %{with mysql_names} -Provides: mysql-libs = %{sameevr} -Provides: mysql-libs%{?_isa} = %{sameevr} %endif -%description libs +%add_metadata + +%if %?mysql_default +%description -n %{pkgname} +MySQL is a multi-user, multi-threaded SQL database server. MySQL is a +client/server implementation consisting of a server daemon (mysqld) +and many different client programs and libraries. The base package +contains the standard MySQL client programs and generic MySQL files. +%endif + +%if %{with clibrary} +%package -n %{pkgname}-libs +Summary: The shared libraries required for MySQL clients +Requires: %{pkgname}-common = %{sameevr} +%{?with_provides_community_mysql:Provides: community-mysql-libs = %community_mysql_version} +%{?with_provides_community_mysql:Provides: community-mysql-libs%{?_isa}= %community_mysql_version} +%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-libs <= %obsolete_community_mysql_version} + +%add_metadata libs + +%description -n %{pkgname}-libs The mysql-libs package provides the essential shared libraries for any MySQL client program or interface. You will need to install this package to use any other MySQL package or any clients that need to connect to a @@ -361,11 +331,15 @@ MySQL server. %if %{with config} -%package config +%package -n %{pkgname}-config Summary: The config files required by server and client -%{?scl:Requires:%scl_runtime} +%{?with_provides_community_mysql:Provides: community-mysql-config = %community_mysql_version} +%{?with_provides_community_mysql:Provides: community-mysql-config%{?_isa} = %community_mysql_version} +%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-config <= %obsolete_community_mysql_version} -%description config +%add_metadata config + +%description -n %{pkgname}-config The package provides the config file my.cnf and my.cnf.d directory used by any MariaDB or MySQL program. You will need to install this package to use any other MariaDB or MySQL package if the config files are not provided in the @@ -374,12 +348,21 @@ package itself. %if %{with common} -%package common +%package -n %{pkgname}-common Summary: The shared files required for MySQL server and client +BuildArch: noarch +%if 0%{?flatpak} +Requires: mariadb-connector-c-config +%else Requires: %{_sysconfdir}/my.cnf -%{?scl:Requires:%scl_runtime} +%endif +%{?with_provides_community_mysql:Provides: community-mysql-common = %community_mysql_version} +%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-common <= %obsolete_community_mysql_version} -%description common +# As this package is noarch, it can't use the %%{?_isa} RPM macro +%conflict_with_other_streams common + +%description -n %{pkgname}-common The mysql-common package provides the essential shared files for any MySQL program. You will need to install this package to use any other MySQL package. @@ -387,61 +370,66 @@ MySQL package. %if %{with errmsg} -%package errmsg +%package -n %{pkgname}-errmsg Summary: The error messages files required by MySQL server -Group: Applications/Databases -Requires: %{name}-common%{?_isa} = %{sameevr} -%{?scl:Requires:%scl_runtime} +BuildArch: noarch +Requires: %{pkgname}-common = %{sameevr} +%{?with_provides_community_mysql:Provides: community-mysql-errmsg = %community_mysql_version} +%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-errmsg <= %obsolete_community_mysql_version} -%description errmsg +# As this package is noarch, it can't use the %%{?_isa} RPM macro +%conflict_with_other_streams errmsg + +%description -n %{pkgname}-errmsg The package provides error messages files for the MySQL daemon %endif -%package server +%package -n %{pkgname}-server Summary: The MySQL server and related files -# Require any mysql client, but prefer mysql client for mysql server -%if 0%{?fedora} || 0%{?rhel} > 7 -Suggests: %{name}%{?_isa} = %{sameevr} -%endif -Requires: %{?scl_prefix}mysql%{?_isa} +Requires: %{pkgname}%{?_isa} = %{sameevr} -Requires: %{name}-common%{?_isa} = %{sameevr} +Requires: %{pkgname}-common = %{sameevr} +%if 0%{?flatpak} +Requires: mariadb-connector-c-config +%else Requires: %{_sysconfdir}/my.cnf Requires: %{_sysconfdir}/my.cnf.d -Requires: %{name}-errmsg%{?_isa} = %{sameevr} -%{?mecab:Requires: %{?scl_prefix}mecab-ipadic} +%endif +Requires: %{pkgname}-errmsg = %{sameevr} +%{?mecab:Requires: mecab-ipadic} Requires: coreutils Requires(pre): /usr/sbin/useradd -%if %{with init_systemd} # We require this to be present for %%{_tmpfilesdir} Requires: systemd # Make sure it's there when scriptlets run, too %{?systemd_requires: %systemd_requires} +# SYS_NICE capabilities; #1540946 +Recommends: libcap # semanage -%if 0%{?fedora} >= 26 || 0%{?rhel} > 7 Requires(post): policycoreutils-python-utils -%else -Requires(post): policycoreutils-python -%endif -%{?scl:Requires:%scl_runtime} -%{?scl:BuildRequires: scl-utils-build-helpers} -%endif -%if %{with mysql_names} -Provides: mysql-server = %{sameevr} -Provides: mysql-server%{?_isa} = %{sameevr} -Provides: mysql-compat-server = %{sameevr} -Provides: mysql-compat-server%{?_isa} = %{sameevr} -Obsoletes: mysql-bench < 5.7.8 -%endif -Obsoletes: mysql-bench < 5.7.8 -%{?with_conflicts:Conflicts: mariadb-server} -%{?with_conflicts:Conflicts: mariadb-galera-server} -# A dependency mistake was made, to fix it, old version of the utils must be Obsoleted. Affected versions: F24, F25, F26 until their EOL. -Obsoletes: mariadb-server-utils < 3:10.1.21-3 -%description server +# Aditional SELinux rules (common for MariaDB & MySQL) shipped in a separate package +# For cases, where we want to fix a SELinux issues in MySQL sooner than patched selinux-policy-targeted package is released +%if %{with require_mysql_selinux} +Requires: (mysql-selinux if selinux-policy-targeted) +%endif + +Suggests: logrotate + +%{?with_conflicts_mariadb:Conflicts: mariadb-server} +%{?with_conflicts_mariadb:Conflicts: mariadb-server-utils} +%{?with_conflicts_mariadb:Conflicts: mariadb-server-galera} +# Explicitly disallow installation of mysql + mariadb-server +%{?with_conflicts_mariadb:Conflicts: mariadb} +%{?with_provides_community_mysql:Provides: community-mysql-server = %community_mysql_version} +%{?with_provides_community_mysql:Provides: community-mysql-server%{?_isa} = %community_mysql_version} +%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-server <= %obsolete_community_mysql_version} + +%add_metadata server + +%description -n %{pkgname}-server MySQL is a multi-user, multi-threaded SQL database server. MySQL is a client/server implementation consisting of a server daemon (mysqld) and many different client programs and libraries. This package contains @@ -449,30 +437,35 @@ the MySQL server and some accompanying files and directories. %if %{with devel} -%package devel +%package -n %{pkgname}-devel Summary: Files for development of MySQL applications -%{?with_clibrary:Requires: %{name}-libs%{?_isa} = %{sameevr}} +%{?with_clibrary:Requires: %{pkgname}-libs%{?_isa} = %{sameevr}} Requires: openssl-devel -Requires: zlib-devel -%{!?with_bundled_zstd:Requires: libzstd} +Requires: libzstd-devel +%{?with_conflicts_mariadb:Conflicts: mariadb-devel} +%{?with_conflicts_mariadb:Conflicts: mariadb-connector-c-devel} +%{?with_provides_community_mysql:Provides: community-mysql-devel = %community_mysql_version} +%{?with_provides_community_mysql:Provides: community-mysql-devel%{?_isa} = %community_mysql_version} +%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-devel <= %obsolete_community_mysql_version} -%{?with_conflicts:Conflicts: mariadb-devel} -%{?scl:Requires:%scl_runtime} +%add_metadata devel -%description devel +%description -n %{pkgname}-devel MySQL is a multi-user, multi-threaded SQL database server. This package contains the libraries and header files that are needed for developing MySQL client applications. %endif %if %{with test} -%package test +%package -n %{pkgname}-test Summary: The test suite distributed with MySQL -Requires: %{name}%{?_isa} = %{sameevr} -Requires: %{name}-common%{?_isa} = %{sameevr} -Requires: %{name}-server%{?_isa} = %{sameevr} +Requires: %{pkgname}-test-data = %{sameevr} +Requires: %{pkgname}%{?_isa} = %{sameevr} +Requires: %{pkgname}-common = %{sameevr} +Requires: %{pkgname}-server%{?_isa} = %{sameevr} Requires: gzip -Requires: %{?scl_prefix}lz4 +Requires: lz4 +Requires: openssl Requires: perl(Digest::file) Requires: perl(Digest::MD5) Requires: perl(Env) @@ -490,83 +483,90 @@ Requires: perl(Socket) Requires: perl(Sys::Hostname) Requires: perl(Test::More) Requires: perl(Time::HiRes) -%{?with_conflicts:Conflicts: mariadb-test} -%{?scl:Requires:%scl_runtime} -%if %{with mysql_names} -Provides: mysql-test = %{sameevr} -Provides: mysql-test%{?_isa} = %{sameevr} -%endif +Requires: perl(File::Compare) -%description test +%{?with_conflicts_mariadb:Conflicts: mariadb-test} +%{?with_provides_community_mysql:Provides: community-mysql-test = %community_mysql_version} +%{?with_provides_community_mysql:Provides: community-mysql-test%{?_isa} = %community_mysql_version} +%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-test <= %obsolete_community_mysql_version} + +%add_metadata test + +%description -n %{pkgname}-test MySQL is a multi-user, multi-threaded SQL database server. This -package contains the regression test suite distributed with -the MySQL sources. -%endif +package contains the architecture specific files for the +regression test suite distributed with the MySQL sources. -%if 0%{?scl:1} -%scl_syspaths_package -d -%scl_syspaths_package config -d -%scl_syspaths_package server -d +%package -n %{pkgname}-test-data +Summary: The test suite distributed with MySQL +BuildArch: noarch +Requires: %{pkgname}-test = %{sameevr} + +# As this package is noarch, it can't use the %%{?_isa} RPM macro +%conflict_with_other_streams test-data + +%description -n %{pkgname}-test-data +MySQL is a multi-user, multi-threaded SQL database server. This +package contains the architecture independent data for the +regression test suite distributed with the MySQL sources. %endif %prep %setup -q -n mysql-%{version} -%patch1 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch51 -p1 -%patch53 -p1 -%patch54 -p1 -%patch55 -p1 -%patch126 -p1 +%patch -P1 -p1 +%patch -P3 -p1 +%patch -P4 -p1 +%patch -P5 -p1 +%patch -P51 -p1 +%patch -P52 -p1 +%patch -P56 -p1 +%patch -P57 -p1 # Patch Boost -pushd boost/boost_$(echo %{boost_bundled_version}| tr . _) -%patch111 -p1 -%patch112 -p1 -%patch113 -p1 +pushd extra/boost/boost_$(echo %{boost_bundled_version}| tr . _) +%patch -P112 -p4 popd -# check that we have correct versions in bundled(*) Provides above (boost checked with pushd above) -# Let's check the version in Provides even if we build without bundled, to keep SPEC valid generally -test "$(grep -e '^#define ZSTD_VERSION_\(MAJOR\|MINOR\|RELEASE\)' extra/zstd/zstd-$(echo %{zstd_bundled_version})/lib/zstd.h | awk '{print $3}' | xargs | sed -e 's/ /./g')" == "%{zstd_bundled_version}" -test "$(grep -e 'The current release of \*libfido2\* is' extra/libfido2/libfido2-*/README.adoc | awk '{print $7}' | sed 's/.$//')" == "%{fido2_bundled_version}" -test -f extra/protobuf/protobuf-%{protobuf_bundled_version}/src/google/protobuf/port_def.inc -test -f extra/libevent/libevent-%{libevent_bundled_version}-stable/CMakeLists.txt +# Remove bundled code that is unused (all cases in which we use the system version of the library instead) +# as required by https://docs.fedoraproject.org/en-US/packaging-guidelines/#bundling +rm -r extra/curl +rm -r extra/icu +rm -r extra/libcbor +rm -r extra/libedit +rm -r extra/libfido2 +rm -r extra/protobuf +rm -r extra/tirpc +rm -r extra/zstd +# Three files from the lz4 bundle tree are still needed. +# They are the 'xxhash' library with custom extension to it. +find extra/lz4 -type f ! \( -name 'xxhash.c' -o -name 'xxhash.h' -o -name 'my_xxhash.h' \) -delete +# Needed for unit tests (different from MTR tests), which we doesn't run, as they doesn't work on some architectures: #1989847 +rm -r extra/googletest +rm -r extra/abseil # generate a list of tests that fail, but are not disabled by upstream cat %{SOURCE50} | tee -a mysql-test/%{skiplist} # disable some tests failing on different architectures -%ifarch %{arm} aarch64 +%ifarch aarch64 cat %{SOURCE51} | tee -a mysql-test/%{skiplist} %endif -%ifarch s390 s390x +%ifarch s390x cat %{SOURCE52} | tee -a mysql-test/%{skiplist} %endif -%ifarch ppc ppc64 ppc64p7 ppc64le +%ifarch ppc64le cat %{SOURCE53} | tee -a mysql-test/%{skiplist} %endif -cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} \ - %{SOURCE14} %{SOURCE15} %{SOURCE16} %{SOURCE17} %{SOURCE18} %{SOURCE19} %{SOURCE31} scripts -%if 0%{?scl:1} -%patch90 -p1 -%patch91 -p1 -%endif - -cp %{SOURCE41} mysql-sysnice.te +cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} \ + %{SOURCE14} %{SOURCE15} %{SOURCE17} %{SOURCE18} %{SOURCE31} scripts %build -%{set_build_flags} - -make -f /usr/share/selinux/devel/Makefile mysql-sysnice.te mysql-sysnice.pp # fail quickly and obviously if user tries to build as root %if %runselftest if [ x"$(id -u)" = "x0" ]; then @@ -577,187 +577,127 @@ make -f /usr/share/selinux/devel/Makefile mysql-sysnice.te mysql-sysnice.pp fi %endif -%{?scl:scl enable %{scl} %{?dts} - << \EOF} -set -ex - -# build out of source -mkdir -p build && pushd build - # The INSTALL_xxx macros have to be specified relative to CMAKE_INSTALL_PREFIX # so we can't use %%{_datadir} and so forth here. -cmake .. \ +%cmake \ -DBUILD_CONFIG=mysql_release \ - -DFEATURE_SET="community" \ -DINSTALL_LAYOUT=RPM \ -DDAEMON_NAME="%{daemon_name}" \ -DDAEMON_NO_PREFIX="%{daemon_no_prefix}" \ -%if 0%{?scl:1} - -DSCL_NAME="%{?scl}" \ - -DSCL_NAME_UPPER="%{?scl_upper}" \ - -DSCL_SCRIPTS="%{?_scl_scripts}" \ -%endif - -DLOG_LOCATION="%{logfile}" \ + -DLOGFILE_RPM="%{logfile}" \ -DPID_FILE_DIR="%{pidfiledir}" \ -DNICE_PROJECT_NAME="MySQL" \ -DCMAKE_INSTALL_PREFIX="%{_prefix}" \ -DSYSCONFDIR="%{_sysconfdir}" \ -DSYSCONF2DIR="%{_sysconfdir}/my.cnf.d" \ - -DINSTALL_DOCDIR="share/doc/%{_pkgdocdirname}" \ - -DINSTALL_DOCREADMEDIR="share/doc/%{_pkgdocdirname}" \ + -DINSTALL_DOCDIR="share/doc/%{majorname}" \ + -DINSTALL_DOCREADMEDIR="share/doc/%{majorname}" \ -DINSTALL_INCLUDEDIR=include/mysql \ -DINSTALL_INFODIR=share/info \ -DINSTALL_LIBEXECDIR=libexec \ -DINSTALL_LIBDIR="%{_lib}/mysql" \ -DRPATH_LIBDIR="%{_libdir}" \ -DINSTALL_MANDIR=share/man \ - -DINSTALL_MYSQLSHAREDIR=share/%{pkg_name} \ + -DINSTALL_MYSQLSHAREDIR=share/%{majorname} \ -DINSTALL_MYSQLTESTDIR=share/mysql-test \ -DINSTALL_PLUGINDIR="%{_lib}/mysql/plugin" \ -DINSTALL_SBINDIR=bin \ - -DINSTALL_SECURE_FILE_PRIVDIR="%{_localstatedir}/lib/mysql-files" \ - -DINSTALL_SUPPORTFILESDIR=share/%{pkg_name} \ + -DINSTALL_SUPPORTFILESDIR=share/%{majorname} \ -DMYSQL_DATADIR="%{dbdatadir}" \ - -DMYSQL_KEYRINGDIR="%{_localstatedir}/lib/mysql-keyring" \ -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock" \ -DENABLED_LOCAL_INFILE=ON \ -%if %{with init_systemd} -DWITH_SYSTEMD=1 \ -DSYSTEMD_SERVICE_NAME="%{daemon_name}" \ -DSYSTEMD_PID_DIR="%{pidfiledir}" \ -%endif -DWITH_INNODB_MEMCACHED=ON \ -%ifnarch aarch64 %{arm} s390 s390x +%ifnarch aarch64 s390x -DWITH_NUMA=ON \ %endif -%ifarch s390 s390x armv7hl +%ifarch s390x -DUSE_LD_GOLD=OFF \ %endif -DWITH_ROUTER=OFF \ -DWITH_SYSTEM_LIBS=ON \ - -DWITH_ICU=system \ -%if %{with bundled_protobuf} - -DWITH_PROTOBUF=bundled \ -%endif + -DWITH_ZLIB=bundled \ + -DWITH_RAPIDJSON=bundled \ -DWITH_MECAB=system \ - -DWITH_BOOST=../boost \ -%if %{with bundled_fido2} - -DWITH_FIDO="bundled" \ -%endif -%if %{with bundled_zstd} - -DWITH_ZSTD="bundled" \ -%endif -%if %{with bundled_libevent} - -DWITH_LIBEVENT="bundled" \ -%endif + -DWITH_FIDO=%{?with_fido:system}%{!?with_fido:none} \ + -DWITH_AUTHENTICATION_FIDO=%{?with_fido:ON}%{!?with_fido:OFF} \ + -DWITH_AUTHENTICATION_KERBEROS=%{?with_kerberos:ON}%{!?with_kerberos:OFF} \ + -DWITH_AUTHENTICATION_LDAP=%{?with_ldap:ON}%{!?with_ldap:OFF} \ + -DWITH_BOOST=boost \ -DREPRODUCIBLE_BUILD=OFF \ - -DCMAKE_C_FLAGS="%{optflags} -pie %{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ - -DCMAKE_CXX_FLAGS="%{optflags} -pie %{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ + -DCMAKE_C_FLAGS="%{optflags}%{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ + -DCMAKE_CXX_FLAGS="%{optflags}%{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ -DCMAKE_EXE_LINKER_FLAGS="-pie %{build_ldflags}" \ -%{?with_debug: -DWITH_DEBUG=1}\ -%{?with_debug: -DMYSQL_MAINTAINER_MODE=0}\ + -DWITH_LTO=ON \ +%{?with_debug: -DWITH_DEBUG=1} \ +%{?with_debug: -DMYSQL_MAINTAINER_MODE=0} \ -DTMPDIR=/var/tmp \ - -DWITH_MYSQLD_LDFLAGS="%{build_ldflags}" \ -DCMAKE_C_LINK_FLAGS="%{build_ldflags}" \ -DCMAKE_CXX_LINK_FLAGS="%{build_ldflags}" \ - -DCMAKE_C_COMPILER="%{_bindir}/gcc" \ - -DCMAKE_CXX_COMPILER="%{_bindir}/g++" \ + -DCMAKE_SKIP_INSTALL_RPATH=YES \ -DWITH_UNIT_TESTS=0 -# Note: linking with GOLD disabled on Armv7hl because of https://bugs.mysql.com/bug.php?id=96698 # Note: disabling building of unittests to workaround #1989847 -cmake .. -LAH +# Print all Cmake options values; "-LAH" means "List Advanced Help" +cmake -B %{_vpath_builddir} -LAH -# to safe disk space, do not use ccache -export CCACHE_DISABLE=1 -# do not use %%{?_smp_mflags} to safe memory and avoid build failure due to not enough resources -make -j2 VERBOSE=1 - -popd - -%{?scl:EOF} +%cmake_build %install -install -p -m 644 -D mysql-sysnice.pp %{buildroot}%{selinux_packages_dir}/%{name}/%{pkg_name}-sysnice.pp -%{?scl:scl enable %{scl} %{?dts} - << \EOF} -set -ex - -pushd build -make DESTDIR=%{buildroot} install +%cmake_install # multilib support for shell scripts # we only apply this to known Red Hat multilib arches, per bug #181335 if %multilib_capable; then mv %{buildroot}%{_bindir}/mysql_config %{buildroot}%{_bindir}/mysql_config-%{__isa_bits} -install -p -m 0755 scripts/mysql_config_multilib %{buildroot}%{_bindir}/mysql_config +install -p -m 0755 %{_vpath_builddir}/scripts/mysql_config_multilib %{buildroot}%{_bindir}/mysql_config fi # install INFO_SRC, INFO_BIN into libdir (upstream thinks these are doc files, # but that's pretty wacko --- see also %%{name}-file-contents.patch) -install -p -m 0644 Docs/INFO_SRC %{buildroot}%{_libdir}/mysql/ -install -p -m 0644 Docs/INFO_BIN %{buildroot}%{_libdir}/mysql/ +install -p -m 0644 %{_vpath_builddir}/Docs/INFO_SRC %{buildroot}%{_libdir}/mysql/ +install -p -m 0644 %{_vpath_builddir}/Docs/INFO_BIN %{buildroot}%{_libdir}/mysql/ mkdir -p %{buildroot}%{logfiledir} -mkdir -p %{buildroot}%{_libexecdir} mkdir -p %{buildroot}%{pidfiledir} install -p -m 0755 -d %{buildroot}%{dbdatadir} install -p -m 0750 -d %{buildroot}%{_localstatedir}/lib/mysql-files install -p -m 0700 -d %{buildroot}%{_localstatedir}/lib/mysql-keyring -# create directory for socket -%{?scl:install -p -m 0755 -d %{buildroot}/var/lib/mysql} - %if %{with config} -install -D -p -m 0644 scripts/my.cnf %{buildroot}%{_sysconfdir}/my.cnf -%endif - -# daemon helper for fixing SELinux in systemd -%if %{with init_systemd} && 0%{?scl:1} -install -p -m 755 %{SOURCE40} %{buildroot}%{_libexecdir}/mysqld-scl-helper +install -D -p -m 0644 %{_vpath_builddir}/scripts/my.cnf %{buildroot}%{_sysconfdir}/my.cnf %endif # install systemd unit files and scripts for handling server startup -%if %{with init_systemd} -install -D -p -m 644 scripts/mysql.service %{buildroot}%{_unitdir}/%{daemon_name}.service -install -D -p -m 644 scripts/mysql@.service %{buildroot}%{_unitdir}/%{daemon_name}@.service -install -D -p -m 0644 scripts/mysql.tmpfiles.d %{buildroot}%{_tmpfilesdir}/%{daemon_name}.conf +install -D -p -m 644 %{_vpath_builddir}/scripts/mysql.service %{buildroot}%{_unitdir}/%{daemon_name}.service +install -D -p -m 644 %{_vpath_builddir}/scripts/mysql@.service %{buildroot}%{_unitdir}/%{daemon_name}@.service +install -D -p -m 0644 %{_vpath_builddir}/scripts/mysql.tmpfiles.d %{buildroot}%{_tmpfilesdir}/%{daemon_name}.conf rm -r %{buildroot}%{_tmpfilesdir}/mysql.conf -%endif - -# install SysV init script -%if %{with init_sysv} -install -D -p -m 755 scripts/mysql.init %{buildroot}%{daemondir}/%{daemon_name} -install -p -m 755 scripts/mysql-wait-ready %{buildroot}%{_libexecdir}/mysql-wait-ready -%endif # helper scripts for service starting -install -D -p -m 755 scripts/mysql-prepare-db-dir %{buildroot}%{_libexecdir}/mysql-prepare-db-dir -install -p -m 755 scripts/mysql-wait-stop %{buildroot}%{_libexecdir}/mysql-wait-stop -install -p -m 755 scripts/mysql-check-socket %{buildroot}%{_libexecdir}/mysql-check-socket -install -p -m 755 scripts/mysql-check-upgrade %{buildroot}%{_libexecdir}/mysql-check-upgrade -install -p -m 644 scripts/mysql-scripts-common %{buildroot}%{_libexecdir}/mysql-scripts-common -install -D -p -m 0644 scripts/server.cnf %{buildroot}%{_sysconfdir}/my.cnf.d/%{pkg_name}-server.cnf -install -D -p -m 0644 %{SOURCE32} %{buildroot}%{_sysconfdir}/my.cnf.d/%{pkg_name}-default-authentication-plugin.cnf +install -D -p -m 755 %{_vpath_builddir}/scripts/mysql-prepare-db-dir %{buildroot}%{_libexecdir}/mysql-prepare-db-dir +install -p -m 755 %{_vpath_builddir}/scripts/mysql-wait-stop %{buildroot}%{_libexecdir}/mysql-wait-stop +install -p -m 755 %{_vpath_builddir}/scripts/mysql-check-socket %{buildroot}%{_libexecdir}/mysql-check-socket +install -p -m 644 %{_vpath_builddir}/scripts/mysql-scripts-common %{buildroot}%{_libexecdir}/mysql-scripts-common +install -D -p -m 0644 %{_vpath_builddir}/scripts/server.cnf %{buildroot}%{_sysconfdir}/my.cnf.d/%{majorname}-server.cnf rm %{buildroot}%{_libdir}/mysql/*.a rm %{buildroot}%{_mandir}/man1/comp_err.1* -# put logrotate script where it needs to be +# Put logrotate script where it needs to be mkdir -p %{buildroot}%{logrotateddir} -mv %{buildroot}%{_datadir}/%{pkg_name}/mysql-log-rotate %{buildroot}%{logrotateddir}/%{daemon_name} -chmod 644 %{buildroot}%{logrotateddir}/%{daemon_name} +# Remove the wrong file +rm %{buildroot}%{_datadir}/%{majorname}/mysql-log-rotate +# Install the correct one (meant for FSH layout in RPM packages) +install -D -m 0644 %{_vpath_builddir}/packaging/rpm-common/mysql.logrotate %{buildroot}%{logrotateddir}/%{daemon_name} -# Add collection prefix to the packageconfig provides -%if 0%{?scl:1} -mv %{buildroot}%{_libdir}/pkgconfig/mysqlclient.pc %{buildroot}%{_libdir}/pkgconfig/%{?scl_prefix}mysqlclient.pc -%endif - -%if %{with clibrary} && 0%{!?scl:1} mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d echo "%{_libdir}/mysql" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf -%endif # for back-ward compatibility and SELinux, let's keep the mysqld in libexec # and just create a symlink in /usr/sbin @@ -769,142 +709,87 @@ ln -s ../libexec/mysqld %{buildroot}%{_sbindir}/mysqld mv %{buildroot}%{_bindir}/mysqld-debug %{buildroot}%{_libexecdir}/mysqld %endif -# Back to src dir -popd - # copy additional docs into build tree so %%doc will find them -install -p -m 0644 %{SOURCE6} %{basename:%{SOURCE6}} -install -p -m 0644 %{SOURCE7} %{basename:%{SOURCE7}} +install -p -m 0644 %{SOURCE6} %{_vpath_srcdir}/%{basename:%{SOURCE6}} +install -p -m 0644 %{SOURCE7} %{_vpath_srcdir}/%{basename:%{SOURCE7}} # Install the list of skipped tests to be available for user runs -install -p -m 0644 mysql-test/%{skiplist} %{buildroot}%{_datadir}/mysql-test +install -p -m 0644 %{_vpath_srcdir}/mysql-test/%{skiplist} %{buildroot}%{_datadir}/mysql-test -%if %{without clibrary} +%if ! %{with clibrary} unlink %{buildroot}%{_libdir}/mysql/libmysqlclient.so rm -r %{buildroot}%{_libdir}/mysql/libmysqlclient*.so.* -%if 0%{!?scl:1} rm -r %{buildroot}%{_sysconfdir}/ld.so.conf.d %endif -%endif -%if %{without devel} +%if ! %{with devel} rm %{buildroot}%{_bindir}/mysql_config* rm -r %{buildroot}%{_includedir}/mysql rm %{buildroot}%{_datadir}/aclocal/mysql.m4 -rm %{buildroot}%{_libdir}/pkgconfig/%{?scl_prefix}mysqlclient.pc +rm %{buildroot}%{_libdir}/pkgconfig/mysqlclient.pc rm %{buildroot}%{_libdir}/mysql/libmysqlclient*.so rm %{buildroot}%{_mandir}/man1/mysql_config.1* %endif -%if %{without client} +%if ! %{with client} rm %{buildroot}%{_bindir}/{mysql,mysql_config_editor,\ mysql_plugin,mysqladmin,mysqlbinlog,\ -mysqlcheck,mysqldump,mysqlpump,mysqlimport,mysqlshow,mysqlslap,my_print_defaults} +mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,my_print_defaults} rm %{buildroot}%{_mandir}/man1/{mysql,mysql_config_editor,\ mysql_plugin,mysqladmin,mysqlbinlog,\ -mysqlcheck,mysqldump,mysqlpump,mysqlimport,mysqlshow,mysqlslap,my_print_defaults}.1* +mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,my_print_defaults}.1* %endif %if %{with config} mkdir -p %{buildroot}%{_sysconfdir}/my.cnf.d %else -#rm %{buildroot}%{_sysconfdir}/my.cnf +#rm %%{buildroot}%%{_sysconfdir}/my.cnf %endif -%if %{without common} -rm -r %{buildroot}%{_datadir}/%{pkg_name}/charsets +%if ! %{with common} +rm -r %{buildroot}%{_datadir}/%{majorname}/charsets %endif -%if %{without errmsg} -rm %{buildroot}%{_datadir}/%{pkg_name}/{messages_to_error_log.txt,messages_to_clients.txt} -rm -r %{buildroot}%{_datadir}/%{pkg_name}/{english,bulgarian,czech,danish,dutch,estonian,\ +%if ! %{with errmsg} +rm %{buildroot}%{_datadir}/%{majorname}/{messages_to_error_log.txt,messages_to_clients.txt} +rm -r %{buildroot}%{_datadir}/%{majorname}/{english,bulgarian,czech,danish,dutch,estonian,\ french,german,greek,hungarian,italian,japanese,korean,norwegian,norwegian-ny,\ polish,portuguese,romanian,russian,serbian,slovak,spanish,swedish,ukrainian} %endif -%if %{without test} -rm %{buildroot}%{_bindir}/{mysql_client_test,mysqlxtest,mysqltest_safe_process,zlib_decompress,mysql_keyring_encryption_test} +%if ! %{with test} +rm %{buildroot}%{_bindir}/{mysql_client_test,mysqlxtest,mysqltest_safe_process} rm -r %{buildroot}%{_datadir}/mysql-test %endif -%{?scl:EOF} -%if 0%{?scl:1} -# generate a configuration file for daemon -cat << EOF | tee -a %{buildroot}%{?_scl_scripts}/service-environment -# Services are started in a fresh environment without any influence of user's -# environment (like environment variable values). As a consequence, -# information of all enabled collections will be lost during service start up. -# If user needs to run a service under any software collection enabled, this -# collection has to be written into %{scl_upper}_SCLS_ENABLED variable -# in %{?_scl_scripts}/service-environment. -%{scl_upper}_SCLS_ENABLED="%{scl}" -EOF - -# Creating syspath without prefix for mysql-config package -%scl_syspaths_install_wrapper -n mysql-config -m link %{_sysconfdir}/my.cnf %{_root_sysconfdir}/%{scl_prefix}my.cnf -%scl_syspaths_install_wrapper -n mysql-config -m link %{_sysconfdir}/my.cnf.d %{_root_sysconfdir}/%{scl_prefix}my.cnf.d - -# Creating syspath without prefix for mysql package -mysql_binaries='mysql mysql_config_editor mysqladmin mysqlbinlog mysqlcheck mysqldump -mysqlimport mysqlpump mysqlshow mysqlslap' - -%scl_syspaths_install_wrappers -n mysql -m script -p bin $mysql_binaries - -mans= ; for bin in $mysql_binaries; do mans+=" man1/$bin.1.gz" ; done -%scl_syspaths_install_wrappers -n mysql -m link -p man $mans - -# Creating syspath without prefix for mysql-server package -mysql_server_binaries='ibd2sdi innochecksum my_print_defaults myisam_ftdump -myisamchk myisamlog myisampack mysql_secure_installation mysql_ssl_rsa_setup -mysql_tzinfo_to_sql mysql_upgrade mysqldumpslow perror' - -%scl_syspaths_install_wrappers -n mysql-server -m script -p bin $mysql_server_binaries - -mans= ; for bin in $mysql_server_binaries; do mans+=" man1/$bin.1.gz" ; done -%scl_syspaths_install_wrappers -n mysql-server -m link -p man $mans - -%scl_syspaths_install_wrapper -n mysql-server -m link %{logfiledir} %{_root_localstatedir}/log/%{scl_prefix}mysql -%scl_syspaths_install_wrapper -n mysql-server -m link %{dbdatadir} %{_root_localstatedir}/lib/%{scl_prefix}mysql - -%if %{with init_systemd} -%scl_syspaths_install_wrapper -n mysql-server -m link %{_unitdir}/%{daemon_name}.service %{_unitdir}/%{daemon_no_prefix}.service -%scl_syspaths_install_wrapper -n mysql-server -m link %{_unitdir}/%{daemon_name}@.service %{_unitdir}/%{daemon_no_prefix}@.service -%endif - -%if %{with init_sysv} -%scl_syspaths_install_wrapper -n mysql-server -m link %{daemondir}/%{daemon_name} %{daemondir}/%{daemon_no_prefix} -%endif -%endif #scl %check -%{?scl:scl enable %{scl} %{?dts} - << \EOF} -set -ex - %if %{with test} %if %runselftest -pushd build +pushd %_vpath_builddir # Note: disabling building of unittests to workaround #1989847 #make test VERBOSE=1 pushd mysql-test cp ../../mysql-test/%{skiplist} . -# Builds might happen at the same host, avoid collision -# The port used is calculated as 10 * MTR_BUILD_THREAD + 10000 -# The resulting port must be between 5000 and 32767 -export MTR_BUILD_THREAD=$(( $(date +%s) % 2200 )) - ( set -ex cd %{buildroot}%{_datadir}/mysql-test - export common_testsuite_arguments=" %{?with_debug:--debug-server} --parallel=auto --force --retry=2 --suite-timeout=900 --testcase-timeout=30 --skip-combinations --max-test-fail=5 --report-unstable-tests --clean-vardir --mysqld=--skip-innodb-use-native-aio " + export MTR_MAX_PARALLEL=16 + + export common_testsuite_arguments=" %{?with_debug:--debug-server} \ + --force --skip-combinations --report-unstable-tests --clean-vardir --nocheck-testcases \ + --suite-timeout=900 --testcase-timeout=30 --port-base=$(( $(date +%s) % 20000 + 10000 )) \ + --parallel=auto --retry=3 --max-test-fail=30 \ + --mysqld=--skip-innodb-use-native-aio " # If full testsuite has already been run on this version and we don't explicitly want the full testsuite to be run if [[ "%{last_tested_version}" == "%{version}" ]] && [[ %{force_run_testsuite} -eq 0 ]] then # in further rebuilds only run the basic "main" suite (~800 tests) echo "running only base testsuite" - perl ./mysql-test-run.pl $common_testsuite_arguments --suite=main --mem --skip-test-list=%{skiplist} + perl ./mysql-test-run.pl $common_testsuite_arguments --suite=main --skip-test-list=%{skiplist} fi # If either this version wasn't marked as tested yet or I explicitly want to run the testsuite, run everything we have (~4000 test) @@ -929,118 +814,59 @@ popd %endif %endif -%{?scl:EOF} -%pre server + +%pre -n %{pkgname}-server /usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 || : -/usr/sbin/useradd -M -N -g mysql -o -r -d %{mysqluserhome} -s /sbin/nologin \ +/usr/sbin/useradd -M -N -g mysql -o -r -d %{dbdatadir} -s /sbin/nologin \ -c "MySQL Server" -u 27 mysql >/dev/null 2>&1 || : -%if %{with clibrary} -# Can be dropped on F27 EOL -%ldconfig_post libs -%endif - -%post server -semodule -i %{selinux_packages_dir}/%{name}/%{pkg_name}-sysnice.pp >/dev/null 2>&1 || : -%if 0%{?scl:1} -# since there was a typo before (bz#1452707), we need to clean previously -# set rule, otherwise semange will not work -semanage fcontext -d "%{daemondir}/%{daemon_name}%{?with_init_systemd:.service}" >/dev/null 2>&1 || : -semanage fcontext -a -e "%{se_daemon_source}" "%{daemondir}/%{daemon_name}%{?with_init_systemd:.service}" >/dev/null 2>&1 || : -semanage fcontext -a -t mysqld_var_run_t "%{pidfiledir}" >/dev/null 2>&1 || : -# work-around for rhbz#1203991 -semanage fcontext -a -t mysqld_etc_t '/etc/my\.cnf\.d/.*' >/dev/null 2>&1 || : -%if %{with init_systemd} -# work-around for rhbz#1172683, but intentionally using mysqld_exec_t context -# and mysqld-scl-helper file, otherwise we hit bz#1464145 on RHEL-7 -semanage fcontext -a -t mysqld_exec_t %{_root_libexecdir}/mysqld-scl-helper >/dev/null 2>&1 || : -%endif -selinuxenabled && load_policy || : -restorecon -R "%{?_scl_root}/" >/dev/null 2>&1 || : -restorecon -R "%{_sysconfdir}" >/dev/null 2>&1 || : -restorecon -R "%{_localstatedir}" >/dev/null 2>&1 || : -restorecon -R "%{daemondir}/%{daemon_name}%{?with_init_systemd:.service}" >/dev/null 2>&1 || : -restorecon -R "%{pidfiledir}" >/dev/null 2>&1 || : -%endif -%if %{with init_systemd} +%post -n %{pkgname}-server %systemd_post %{daemon_name}.service -%endif -%if %{with init_sysv} -if [ $1 = 1 ]; then - /sbin/chkconfig --add %{daemon_name} -fi -%endif if [ ! -e "%{logfile}" -a ! -h "%{logfile}" ] ; then install /dev/null -m0640 -omysql -gmysql "%{logfile}" fi -# TODO: remove after selinux-policy is fixed (BZ#1602153) -semanage fcontext -a -t mysqld_log_t '/var/log/mysql(/.*)?' -restorecon -r %{logfiledir} - -%preun server -%if %{with init_systemd} +%preun -n %{pkgname}-server %systemd_preun %{daemon_name}.service -%endif -%if %{with init_sysv} -if [ $1 = 0 ]; then - /sbin/service %{daemon_name} stop >/dev/null 2>&1 - /sbin/chkconfig --del %{daemon_name} -fi -%endif -%if %{with clibrary} -# Can be dropped on F27 EOL -%ldconfig_postun libs -%endif - -%postun server -%if %{with init_systemd} +%postun -n %{pkgname}-server %systemd_postun_with_restart %{daemon_name}.service -%endif -%if %{with init_sysv} -if [ $1 -ge 1 ]; then - /sbin/service %{daemon_name} condrestart >/dev/null 2>&1 || : -fi -%endif -if [ $1 -eq 0 ]; then - semodule -r %{pkg_name}-sysnice.pp >/dev/null 2>&1 || : -fi + + %if %{with client} -%files +%files -n %{pkgname} %{_bindir}/mysql -%{_bindir}/mysql_config_editor %{_bindir}/mysqladmin %{_bindir}/mysqlbinlog %{_bindir}/mysqlcheck +%{_bindir}/mysql_config_editor %{_bindir}/mysqldump %{_bindir}/mysqlimport -%{_bindir}/mysqlpump %{_bindir}/mysqlshow %{_bindir}/mysqlslap %{_mandir}/man1/mysql.1* -%{_mandir}/man1/mysql_config_editor.1* %{_mandir}/man1/mysqladmin.1* %{_mandir}/man1/mysqlbinlog.1* %{_mandir}/man1/mysqlcheck.1* +%{_mandir}/man1/mysql_config_editor.1* %{_mandir}/man1/mysqldump.1* %{_mandir}/man1/mysqlimport.1* -%{_mandir}/man1/mysqlpump.1* %{_mandir}/man1/mysqlshow.1* %{_mandir}/man1/mysqlslap.1* %endif %if %{with clibrary} -%files libs +%files -n %{pkgname}-libs +%dir %{_libdir}/mysql %{_libdir}/mysql/libmysqlclient*.so.* -%{!?scl:%config(noreplace) %{_sysconfdir}/ld.so.conf.d/*} +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/* %endif %if %{with config} -%files config +%files -n %{pkgname}-config # although the default my.cnf contains only server settings, we put it in the # common package because it can be used for client settings too. %dir %{_sysconfdir}/my.cnf.d @@ -1048,123 +874,134 @@ fi %endif %if %{with common} -%files common -%license LICENSE +%files -n %{pkgname}-common +%license LICENSE storage/innobase/COPYING.Percona storage/innobase/COPYING.Google %doc README README.mysql-license README.mysql-docs -%doc storage/innobase/COPYING.Percona storage/innobase/COPYING.Google -%dir %{_libdir}/mysql -%dir %{_datadir}/%{pkg_name} -%{_datadir}/%{pkg_name}/charsets +%dir %{_datadir}/%{majorname} +%{_datadir}/%{majorname}/charsets %endif %if %{with errmsg} -%files errmsg -%{_datadir}/%{pkg_name}/messages_to_error_log.txt -%{_datadir}/%{pkg_name}/messages_to_clients.txt -%{_datadir}/%{pkg_name}/english -%lang(bg) %{_datadir}/%{pkg_name}/bulgarian -%lang(cs) %{_datadir}/%{pkg_name}/czech -%lang(da) %{_datadir}/%{pkg_name}/danish -%lang(nl) %{_datadir}/%{pkg_name}/dutch -%lang(et) %{_datadir}/%{pkg_name}/estonian -%lang(fr) %{_datadir}/%{pkg_name}/french -%lang(de) %{_datadir}/%{pkg_name}/german -%lang(el) %{_datadir}/%{pkg_name}/greek -%lang(hu) %{_datadir}/%{pkg_name}/hungarian -%lang(it) %{_datadir}/%{pkg_name}/italian -%lang(ja) %{_datadir}/%{pkg_name}/japanese -%lang(ko) %{_datadir}/%{pkg_name}/korean -%lang(no) %{_datadir}/%{pkg_name}/norwegian -%lang(no) %{_datadir}/%{pkg_name}/norwegian-ny -%lang(pl) %{_datadir}/%{pkg_name}/polish -%lang(pt) %{_datadir}/%{pkg_name}/portuguese -%lang(ro) %{_datadir}/%{pkg_name}/romanian -%lang(ru) %{_datadir}/%{pkg_name}/russian -%lang(sr) %{_datadir}/%{pkg_name}/serbian -%lang(sk) %{_datadir}/%{pkg_name}/slovak -%lang(es) %{_datadir}/%{pkg_name}/spanish -%lang(sv) %{_datadir}/%{pkg_name}/swedish -%lang(uk) %{_datadir}/%{pkg_name}/ukrainian +%files -n %{pkgname}-errmsg +%{_datadir}/%{majorname}/messages_to_error_log.txt +%{_datadir}/%{majorname}/messages_to_clients.txt +%{_datadir}/%{majorname}/english +%lang(bg) %{_datadir}/%{majorname}/bulgarian +%lang(cs) %{_datadir}/%{majorname}/czech +%lang(da) %{_datadir}/%{majorname}/danish +%lang(nl) %{_datadir}/%{majorname}/dutch +%lang(et) %{_datadir}/%{majorname}/estonian +%lang(fr) %{_datadir}/%{majorname}/french +%lang(de) %{_datadir}/%{majorname}/german +%lang(el) %{_datadir}/%{majorname}/greek +%lang(hu) %{_datadir}/%{majorname}/hungarian +%lang(it) %{_datadir}/%{majorname}/italian +%lang(ja) %{_datadir}/%{majorname}/japanese +%lang(ko) %{_datadir}/%{majorname}/korean +%lang(no) %{_datadir}/%{majorname}/norwegian +%lang(no) %{_datadir}/%{majorname}/norwegian-ny +%lang(pl) %{_datadir}/%{majorname}/polish +%lang(pt) %{_datadir}/%{majorname}/portuguese +%lang(ro) %{_datadir}/%{majorname}/romanian +%lang(ru) %{_datadir}/%{majorname}/russian +%lang(sr) %{_datadir}/%{majorname}/serbian +%lang(sk) %{_datadir}/%{majorname}/slovak +%lang(es) %{_datadir}/%{majorname}/spanish +%lang(sv) %{_datadir}/%{majorname}/swedish +%lang(uk) %{_datadir}/%{majorname}/ukrainian %endif -%files server +%files -n %{pkgname}-server %{_bindir}/ibd2sdi +%{_bindir}/innochecksum %{_bindir}/myisamchk %{_bindir}/myisam_ftdump %{_bindir}/myisamlog %{_bindir}/myisampack %{_bindir}/my_print_defaults +%{_bindir}/mysqld_pre_systemd +%{_bindir}/mysqldumpslow %{_bindir}/mysql_migrate_keyring %{_bindir}/mysql_secure_installation -%{_bindir}/mysql_ssl_rsa_setup %{_bindir}/mysql_tzinfo_to_sql -%{_bindir}/mysql_upgrade +%{_bindir}/perror + +%config(noreplace) %{_sysconfdir}/my.cnf.d/%{majorname}-server.cnf + %{_sbindir}/mysqld # sys_nice capability required for rhbz#1628814 %caps(cap_sys_nice=ep) %{_libexecdir}/mysqld -%if %{with init_systemd} -%{_bindir}/mysqld_pre_systemd -%else -%{_bindir}/mysqld_multi -%{_bindir}/mysqld_safe -%endif -%{_bindir}/mysqldumpslow -%{_bindir}/innochecksum -%{_bindir}/perror - -%config(noreplace) %{_sysconfdir}/my.cnf.d/%{pkg_name}-server.cnf -%config(noreplace) %{_sysconfdir}/my.cnf.d/%{pkg_name}-default-authentication-plugin.cnf - -%if %{with init_systemd} && 0%{?scl:1} -%{_libexecdir}/mysqld-scl-helper -%endif %{_libdir}/mysql/INFO_SRC %{_libdir}/mysql/INFO_BIN -%if %{without common} -%dir %{_datadir}/%{pkg_name} +%if ! %{with common} +%dir %{_datadir}/%{majorname} %endif -%{_libdir}/mysql/plugin +%dir %{_libdir}/mysql +%dir %{_libdir}/mysql/plugin +%{_libdir}/mysql/plugin/adt_null.so +%{_libdir}/mysql/plugin/auth_socket.so +%{_libdir}/mysql/plugin/component_audit_api_message_emit.so +%{_libdir}/mysql/plugin/component_keyring_file.so +%{_libdir}/mysql/plugin/component_log_filter_dragnet.so +%{_libdir}/mysql/plugin/component_log_sink_json.so +%{_libdir}/mysql/plugin/component_log_sink_syseventlog.so +%{_libdir}/mysql/plugin/component_mysqlbackup.so +%{_libdir}/mysql/plugin/component_query_attributes.so +%{_libdir}/mysql/plugin/component_reference_cache.so +%{_libdir}/mysql/plugin/component_validate_password.so +%{_libdir}/mysql/plugin/conflicting_variables.so +%{_libdir}/mysql/plugin/connection_control.so +%{_libdir}/mysql/plugin/daemon_example.ini +%{_libdir}/mysql/plugin/ddl_rewriter.so +%{_libdir}/mysql/plugin/group_replication.so +%{_libdir}/mysql/plugin/ha_example.so +%{_libdir}/mysql/plugin/ha_mock.so +%{_libdir}/mysql/plugin/keyring_udf.so +%{_libdir}/mysql/plugin/libpluginmecab.so +%{_libdir}/mysql/plugin/locking_service.so +%{_libdir}/mysql/plugin/mypluglib.so +%{_libdir}/mysql/plugin/mysql_clone.so +%{_libdir}/mysql/plugin/mysql_no_login.so +%{_libdir}/mysql/plugin/rewrite_example.so +%{_libdir}/mysql/plugin/rewriter.so +%{_libdir}/mysql/plugin/semisync_master.so +%{_libdir}/mysql/plugin/semisync_replica.so +%{_libdir}/mysql/plugin/semisync_slave.so +%{_libdir}/mysql/plugin/semisync_source.so +%{_libdir}/mysql/plugin/validate_password.so +%{_libdir}/mysql/plugin/version_token.so +%{?with_fido:%{_libdir}/mysql/plugin/authentication_webauthn_client.so} +%{?with_fido:%{_libdir}/mysql/plugin/authentication_oci_client.so} +%{?with_kerberos:%{_libdir}/mysql/plugin/authentication_kerberos_client.so} +%{?with_ldap:%{_libdir}/mysql/plugin/authentication_ldap_sasl_client.so} %{_mandir}/man1/ibd2sdi.1* +%{_mandir}/man1/innochecksum.1* %{_mandir}/man1/myisamchk.1* +%{_mandir}/man1/myisam_ftdump.1* %{_mandir}/man1/myisamlog.1* %{_mandir}/man1/myisampack.1* -%{_mandir}/man1/myisam_ftdump.1* %{_mandir}/man1/my_print_defaults.1* -%{_mandir}/man1/mysql_secure_installation.1* -%{_mandir}/man1/mysql_ssl_rsa_setup.1* -%{_mandir}/man1/mysql_tzinfo_to_sql.1* -%{_mandir}/man1/mysql_upgrade.1* %{_mandir}/man1/mysqldumpslow.1* -%if %{with init_systemd} -%else -%{_mandir}/man1/mysqld_multi.1* -%{_mandir}/man1/mysqld_safe.1* -%endif %{_mandir}/man1/mysqlman.1* -%{_mandir}/man1/innochecksum.1* +%{_mandir}/man1/mysql_secure_installation.1* +%{_mandir}/man1/mysql_tzinfo_to_sql.1* %{_mandir}/man1/perror.1* -%{_mandir}/man1/lz4_decompress.1* %{_mandir}/man8/mysqld.8* -%{_datadir}/%{pkg_name}/dictionary.txt -%{_datadir}/%{pkg_name}/*.sql +%{_datadir}/%{majorname}/dictionary.txt +%{_datadir}/%{majorname}/*.sql -%{daemondir}/%{daemon_name}* +%{_unitdir}/%{daemon_name}* %{_libexecdir}/mysql-prepare-db-dir -%if %{with init_sysv} -%{_libexecdir}/mysql-wait-ready -%endif %{_libexecdir}/mysql-wait-stop %{_libexecdir}/mysql-check-socket -%{_libexecdir}/mysql-check-upgrade %{_libexecdir}/mysql-scripts-common -%{?with_init_systemd:%{_tmpfilesdir}/%{daemon_name}.conf} +%{_tmpfilesdir}/%{daemon_name}.conf %attr(0755,mysql,mysql) %dir %{dbdatadir} -%{?scl:%attr(0755,mysql,mysql) %dir /var/lib/mysql} %attr(0750,mysql,mysql) %dir %{_localstatedir}/lib/mysql-files %attr(0700,mysql,mysql) %dir %{_localstatedir}/lib/mysql-keyring %attr(0755,mysql,mysql) %dir %{pidfiledir} @@ -1172,49 +1009,205 @@ fi %attr(0640,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{logfile} %config(noreplace) %{logrotateddir}/%{daemon_name} -%{?scl:%config(noreplace) %{?_scl_scripts}/service-environment} - -%{selinux_packages_dir}/%{name}/%{pkg_name}-sysnice.pp - %if %{with devel} -%files devel +%files -n %{pkgname}-devel %{_bindir}/mysql_config* %exclude %{_bindir}/mysql_config_editor %{_includedir}/mysql %{_datadir}/aclocal/mysql.m4 +%dir %{_libdir}/mysql %if %{with clibrary} %{_libdir}/mysql/libmysqlclient.so %endif -%{_libdir}/pkgconfig/%{?scl_prefix}mysqlclient.pc +%{_libdir}/pkgconfig/mysqlclient.pc %{_mandir}/man1/mysql_config.1* %endif %if %{with test} -%files test +%files -n %{pkgname}-test +%{_bindir}/comp_err %{_bindir}/mysql_client_test +%{_bindir}/mysqld_safe %{_bindir}/mysql_keyring_encryption_test %{_bindir}/mysqltest -%{_bindir}/mysqlxtest +%{_bindir}/mysql_test_event_tracking %{_bindir}/mysqltest_safe_process -%{_bindir}/mysqld_safe -%{_bindir}/comp_err -%{_bindir}/zlib_decompress -%attr(-,mysql,mysql) %{_datadir}/mysql-test -%{_mandir}/man1/zlib_decompress.1* -%endif +%{_bindir}/mysqlxtest + +%dir %attr(-,mysql,mysql) %{_datadir}/mysql-test +%attr(-,mysql,mysql) %{_datadir}/mysql-test/%{skiplist} + +%dir %{_libdir}/mysql +%dir %{_libdir}/mysql/plugin +%{_libdir}/mysql/plugin/auth.so +%{_libdir}/mysql/plugin/auth_test_plugin.so +%{_libdir}/mysql/plugin/component_example_component1.so +%{_libdir}/mysql/plugin/component_example_component2.so +%{_libdir}/mysql/plugin/component_example_component3.so +%{_libdir}/mysql/plugin/component_log_sink_test.so +%{_libdir}/mysql/plugin/component_mysqlx_global_reset.so +%{_libdir}/mysql/plugin/component_pfs_example_component_population.so +%{_libdir}/mysql/plugin/component_pfs_example.so +%{_libdir}/mysql/plugin/component_test_audit_api_message.so +%{_libdir}/mysql/plugin/component_test_backup_lock_service.so +%{_libdir}/mysql/plugin/component_test_component_deinit.so +%{_libdir}/mysql/plugin/component_test_event_tracking_consumer_a.so +%{_libdir}/mysql/plugin/component_test_event_tracking_consumer_b.so +%{_libdir}/mysql/plugin/component_test_event_tracking_consumer_c.so +%{_libdir}/mysql/plugin/component_test_event_tracking_consumer.so +%{_libdir}/mysql/plugin/component_test_event_tracking_producer_a.so +%{_libdir}/mysql/plugin/component_test_event_tracking_producer_b.so +%{_libdir}/mysql/plugin/component_test_execute_prepared_statement.so +%{_libdir}/mysql/plugin/component_test_execute_regular_statement.so +%{_libdir}/mysql/plugin/component_test_host_application_signal.so +%{_libdir}/mysql/plugin/component_test_mysql_command_services.so +%{_libdir}/mysql/plugin/component_test_mysql_current_thread_reader.so +%{_libdir}/mysql/plugin/component_test_mysql_runtime_error.so +%{_libdir}/mysql/plugin/component_test_mysql_signal_handler.so +%{_libdir}/mysql/plugin/component_test_mysql_system_variable_set.so +%{_libdir}/mysql/plugin/component_test_mysql_thd_store_service.so +%{_libdir}/mysql/plugin/component_test_pfs_notification.so +%{_libdir}/mysql/plugin/component_test_pfs_resource_group.so +%{_libdir}/mysql/plugin/component_test_sensitive_system_variables.so +%{_libdir}/mysql/plugin/component_test_server_telemetry_metrics.so +%{_libdir}/mysql/plugin/component_test_server_telemetry_traces.so +%{_libdir}/mysql/plugin/component_test_status_var_reader.so +%{_libdir}/mysql/plugin/component_test_status_var_service_int.so +%{_libdir}/mysql/plugin/component_test_status_var_service_reg_only.so +%{_libdir}/mysql/plugin/component_test_status_var_service.so +%{_libdir}/mysql/plugin/component_test_status_var_service_str.so +%{_libdir}/mysql/plugin/component_test_status_var_service_unreg_only.so +%{_libdir}/mysql/plugin/component_test_string_service_charset.so +%{_libdir}/mysql/plugin/component_test_string_service_long.so +%{_libdir}/mysql/plugin/component_test_string_service.so +%{_libdir}/mysql/plugin/component_test_system_variable_source.so +%{_libdir}/mysql/plugin/component_test_sys_var_service_int.so +%{_libdir}/mysql/plugin/component_test_sys_var_service_same.so +%{_libdir}/mysql/plugin/component_test_sys_var_service.so +%{_libdir}/mysql/plugin/component_test_sys_var_service_str.so +%{_libdir}/mysql/plugin/component_test_table_access.so +%{_libdir}/mysql/plugin/component_test_udf_registration.so +%{_libdir}/mysql/plugin/component_test_udf_services.so +%{_libdir}/mysql/plugin/component_udf_reg_3_func.so +%{_libdir}/mysql/plugin/component_udf_reg_avg_func.so +%{_libdir}/mysql/plugin/component_udf_reg_int_func.so +%{_libdir}/mysql/plugin/component_udf_reg_int_same_func.so +%{_libdir}/mysql/plugin/component_udf_reg_only_3_func.so +%{_libdir}/mysql/plugin/component_udf_reg_real_func.so +%{_libdir}/mysql/plugin/component_udf_unreg_3_func.so +%{_libdir}/mysql/plugin/component_udf_unreg_int_func.so +%{_libdir}/mysql/plugin/component_udf_unreg_real_func.so +%{_libdir}/mysql/plugin/libdaemon_example.so +%{_libdir}/mysql/plugin/libtest_framework.so +%{_libdir}/mysql/plugin/libtest_services.so +%{_libdir}/mysql/plugin/libtest_services_threaded.so +%{_libdir}/mysql/plugin/libtest_session_attach.so +%{_libdir}/mysql/plugin/libtest_session_detach.so +%{_libdir}/mysql/plugin/libtest_session_info.so +%{_libdir}/mysql/plugin/libtest_session_in_thd.so +%{_libdir}/mysql/plugin/libtest_sql_2_sessions.so +%{_libdir}/mysql/plugin/libtest_sql_all_col_types.so +%{_libdir}/mysql/plugin/libtest_sql_cmds_1.so +%{_libdir}/mysql/plugin/libtest_sql_commit.so +%{_libdir}/mysql/plugin/libtest_sql_complex.so +%{_libdir}/mysql/plugin/libtest_sql_errors.so +%{_libdir}/mysql/plugin/libtest_sql_lock.so +%{_libdir}/mysql/plugin/libtest_sql_processlist.so +%{_libdir}/mysql/plugin/libtest_sql_replication.so +%{_libdir}/mysql/plugin/libtest_sql_reset_connection.so +%{_libdir}/mysql/plugin/libtest_sql_shutdown.so +%{_libdir}/mysql/plugin/libtest_sql_sleep_is_connected.so +%{_libdir}/mysql/plugin/libtest_sql_sqlmode.so +%{_libdir}/mysql/plugin/libtest_sql_stmt.so +%{_libdir}/mysql/plugin/libtest_sql_stored_procedures_functions.so +%{_libdir}/mysql/plugin/libtest_sql_views_triggers.so +%{_libdir}/mysql/plugin/libtest_x_sessions_deinit.so +%{_libdir}/mysql/plugin/libtest_x_sessions_init.so +%{_libdir}/mysql/plugin/pfs_example_plugin_employee.so +%{_libdir}/mysql/plugin/qa_auth_client.so +%{_libdir}/mysql/plugin/qa_auth_interface.so +%{_libdir}/mysql/plugin/qa_auth_server.so +%{_libdir}/mysql/plugin/replication_observers_example_plugin.so +%{_libdir}/mysql/plugin/test_security_context.so +%{_libdir}/mysql/plugin/test_services_command_services.so +%{_libdir}/mysql/plugin/test_services_host_application_signal.so +%{_libdir}/mysql/plugin/test_services_plugin_registry.so +%{_libdir}/mysql/plugin/test_udf_services.so +%{_libdir}/mysql/plugin/udf_example.so + +%files -n %{pkgname}-test-data +%attr(-,mysql,mysql) %{_datadir}/mysql-test +%exclude %{_datadir}/mysql-test/%{skiplist} -%if 0%{?scl:1} -%scl_syspaths_files -n mysql -%scl_syspaths_files -n mysql-config -%scl_syspaths_files -n mysql-server %endif %changelog -* Fri Feb 07 2025 Lukas Javorsky - 8.0.41-1 -- Update to MySQL 8.0.41 +* Thu Jan 23 2025 Michal Schorm - 8.4.4-1 +- Rebase to 8.4.4 -* Wed Jan 03 2024 Lars Tangvald - 8.0.36-1 -- Update to MySQL 8.0.36 +* Thu Jan 09 2025 Michal Schorm - 8.4.3-1 +- Rebase to 8.4.3 + +* Tue Oct 29 2024 Troy Dawson - 8.4.2-5 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 + +* Fri Aug 16 2024 Michal Schorm - 8.4.2-4 +- Bump release for a rebuild + +* Thu Aug 15 2024 Michal Schorm - 8.4.2-3 +- Bump release for a rebuild + +* Thu Aug 15 2024 Michal Schorm - 8.4.2-2 +- Bump release for a rebuild + +* Wed Aug 07 2024 Michal Schorm - 8.4.2-1 +- Rebase to 8.4.2 + +* Wed Jul 24 2024 Michal Schorm - 8.4.0-2 +- Bump version for a rebuild + +* Fri Jun 14 2024 Michal Schorm - 8.4.0-1 +- Rebase to 8.4.0 + +* Wed Jun 12 2024 Michal Schorm - 8.0.37-3 +- Bump release for package rebuild + +* Sun Jun 09 2024 Michal Schorm - 8.0.37-2 +- Bump release for package rebuild + +* Thu Apr 18 2024 Lars Tangvald - 8.0.37-1 +- Update to MySQL 8.0.37 +- Remove some legacy cmake options + +* Tue Apr 16 2024 Michal Schorm - 8.0.36-5 +- Fix my.cnf dependency for Flatpak builds + +* Mon Feb 19 2024 Honza Horak - 8.0.36-4 +- Do not provide community-mysql* symbols if alternative + +* Mon Feb 05 2024 Lukas Javorsky - 8.0.36-3 +- Apply demodularization +- the default stream builds mysql.rpm +- the non-default stream builds mysqlX.XX.rpm + +* Wed Jan 31 2024 Honza Horak - 8.0.36-2 +- Use signal to flush logs when rotating + +* Wed Jan 31 2024 Lukas Javorsky - 8.0.36-1 +- Rebase to version 8.0.36 + +* Wed Jan 31 2024 Lukas Javorsky - 8.0.35-100 +- Renaming 'community-mysql' to 'mysql8.0' + +* Wed Jan 31 2024 Pete Walter - 8.0.35-5 +- Rebuild for ICU 74 + +* Wed Jan 24 2024 Fedora Release Engineering - 8.0.35-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 8.0.35-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Tue Dec 19 2023 Florian Weimer - 8.0.35-2 - Fix int-conversion type error in memcached @@ -1223,6 +1216,9 @@ fi - Update to MySQL 8.0.35 - Remove patches now upstream +* Tue Aug 22 2023 Lukas Javorsky - 8.0.34-2 +- Migrate license to SPDX + * Wed Aug 09 2023 Lars Tangvald - 8.0.34-1 - Update to MySQL 8.0.34 - Add patch from upstream bug#110569 @@ -1230,20 +1226,44 @@ fi - Use --skip-combinations over --binlog-format=mixed - Add alignment patch upstream bug#110752 +* Wed Jul 19 2023 Fedora Release Engineering - 8.0.33-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 11 2023 František Zatloukal - 8.0.33-3 +- Rebuilt for ICU 73.2 + * Wed Apr 12 2023 Lars Tangvald - 8.0.33-1 - Update to MySQL 8.0.33 -* Thu Jan 05 2023 Lars Tangvald - 8.0.32-1 +* Thu Jan 26 2023 Lars Tangvald - 8.0.32-1 - Update to MySQL 8.0.32 +* Thu Jan 19 2023 Fedora Release Engineering - 8.0.31-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Dec 31 2022 Pete Walter - 8.0.31-2 +- Rebuild for ICU 72 + * Fri Sep 30 2022 Lars Tangvald - 8.0.31-1 - Update to MySQL 8.0.31 -* Wed Jul 06 2022 Lars Tangvald - 8.0.30-1 +* Mon Sep 12 2022 Michal Schorm - 8.0.30-3 +- Release bump for rebuild + +* Thu Aug 11 2022 Michal Schorm - 8.0.30-2 +- Release bump for rebuild + +* Mon Aug 01 2022 Lars Tangvald - 8.0.30-1 - Update to MySQL 8.0.30 - Remove patches now upstream: - chain certs, s390 and robin hood -- Add a new plugin 'conflicting_variables.so' + chain certs, OpenSSL 3, s390 and robin hood +- Add a new plugin + +* Mon Aug 01 2022 Frantisek Zatloukal - 8.0.29-3 +- Rebuilt for ICU 71.1 + +* Wed Jul 20 2022 Fedora Release Engineering - 8.0.29-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Wed Apr 20 2022 Lars Tangvald - 8.0.29-1 - Update to MySQL 8.0.29 @@ -1251,76 +1271,214 @@ fi * Wed Jan 19 2022 Lars Tangvald - 8.0.28-1 - Update to MySQL 8.0.28 +* Wed Jan 19 2022 Fedora Release Engineering - 8.0.27-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sun Nov 07 2021 Mamoru TASAKA - 8.0.27-2 +- rebuild for new protobuf + * Sun Oct 31 2021 Lars Tangvald - 8.0.27-1 - Update to MySQL 8.0.27 +* Sat Oct 30 2021 Honza Horak - 8.0.26-4 +- Make MySQL compile with openssl 3.x without FIPS properly implemented + +* Mon Oct 25 2021 Adrian Reber - 8.0.26-3 +- Rebuilt for protobuf 3.18.1 + +* Tue Sep 14 2021 Sahana Prasad - 8.0.26-2 +- Rebuilt with OpenSSL 3.0.0 + * Wed Jul 21 2021 Lars Tangvald - 8.0.26-1 - Update to MySQL 8.0.26 +* Wed Jul 21 2021 Fedora Release Engineering - 8.0.25-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Tue Jun 01 2021 Michal Schorm - 8.0.25-1 - Update to MySQL 8.0.25 +* Wed May 19 2021 Pete Walter - 8.0.24-3 +- Rebuild for ICU 69 + +* Wed May 19 2021 Pete Walter - 8.0.24-2 +- Rebuild for ICU 69 + * Sun Apr 18 2021 Lars Tangvald - 8.0.24-1 - Update to MySQL 8.0.24 -- Upstreamed patch: mysql-main-cast.patch + +* Wed Mar 31 2021 Jonathan Wakely - 8.0.23-3 +- Rebuilt for removed libstdc++ symbols (#1937698) + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 8.0.23-2 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. * Thu Feb 04 2021 Lars Tangvald - 8.0.23-1 - Update to MySQL 8.0.23 -- Created mysql-fix-includes-robin-hood.patch -- Created mysql-main-cast.patch +- Created community-mysql-fix-includes-robin-hood.patch -* Mon Oct 26 2020 Lukas Javorsky - 8.0.22-1 +* Tue Jan 26 2021 Fedora Release Engineering - 8.0.22-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jan 12 14:21:47 CET 2021 Adrian Reber - 8.0.22-2 +- Rebuilt for protobuf 3.14 + +* Wed Oct 21 2020 Lukas Javorsky - 8.0.22-1 - Update to MySQL 8.0.22 -- mysql-certs-expired.patch patched by upstream -- New zlib_decompress binary file in test package +- community-mysql-certs-expired.patch patched by upstream +- community-mysql-lto.patch patched by upstream -* Wed Jul 22 2020 Lukas Javorsky - 8.0.21-1 -- Rebase to 8.0.21 -- Use bundled libzstd and libevent for RHSCL and RHEL-8.0.0 +* Tue Oct 20 2020 Jeff Law - 8.0.21-16 +- Fix another missing #include for gcc-11 + +* Tue Oct 06 2020 Jeff Law - 8.0.21-15 +- Add missing #include for gcc-11 + +* Thu Oct 01 13:33:42 CEST 2020 Zbigniew Jędrzejewski-Szmek - 8.0.21-14 +- Rebuilt for libevent 2.1.12 (again) + +* Wed Sep 23 2020 Adrian Reber - 8.0.21-13 +- Rebuilt for protobuf 3.13 + +* Tue Sep 15 2020 Michal Schorm - 8.0.21-12 +- Rebuild due to libevent soname change + +* Tue Aug 25 2020 Michal Schorm - 8.0.21-11 +- Start building the MeCab plugin + +* Mon Aug 24 2020 Michal Schorm - 8.0.21-10 +- Fix the filelist. A number of shared libraries in the plugindir + are part of the testsuite and thus should reside in *-test subpackage + It will be best to keep the file list explicit to avoid this in the future + +* Tue Aug 18 2020 Michal Schorm - 8.0.21-9 +- I encounter the ARM memory exaustion in the end + Looks like it is only issue on some machines + +* Tue Aug 18 2020 Michal Schorm - 8.0.21-8 +- I haven't encounter the ARM memory exaustion on Fedora build infrastructure + Let's enable it and see how it will work + +* Mon Aug 17 2020 Lars Tangvald - 8.0.21-7 +- Use upstream patch to enable LTO +- Skip LTO on ARM due to out of memory issue + +* Thu Aug 13 2020 Michal Schorm - 8.0.21-6 +- Do a proper out-of-source CMake builds +- Force the CMake change regarding the in-source builds also to F31 and F32 +- Use CMake macros instead of cmake & make direct commands +- %%cmake macro covers the %%{set_build_flags}, so they are not needed +- Remove ancient obsoletes + +* Wed Aug 12 2020 Honza Horak - 8.0.21-5 - Check that we have correct versions in bundled(*) Provides -- Remove re2 bundled dependency +- Remove re2 dependency that is not needed any more -* Wed Jul 22 2020 Lukas Javorsky - 8.0.20-1 -- Rebase to 8.0.20 +* Thu Aug 06 2020 Jeff Law - 8.0.21-4 +- Disable LTO -* Wed Jul 22 2020 Lukas Javorsky - 8.0.19-2 +* Sat Aug 01 2020 Fedora Release Engineering - 8.0.21-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 8.0.21-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jul 17 2020 Lars Tangvald - 8.0.21-1 +- Update to MySQL 8.0.21 + +* Sun Jun 14 2020 Adrian Reber - 8.0.20-3 +- Rebuilt for protobuf 3.12 + +* Fri May 15 2020 Pete Walter - 8.0.20-2 +- Rebuild for ICU 67 + +* Sun Apr 26 2020 Lars Tangvald - 8.0.20-1 +- Update to MySQL 8.0.20 + +* Wed Apr 01 2020 Jitka Plesnikova - 8.0.19-3 - Specify all perl dependencies -* Tue Jul 21 2020 Lukas Javorsky - 8.0.19-1 -- Rebase to 8.0.19 +* Tue Jan 28 2020 Fedora Release Engineering - 8.0.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild -* Tue Jul 21 2020 Lukas Javorsky - 8.0.18-1 -- Rebase to 8.0.18 -- Add libzstd-devel dependencies +* Thu Jan 02 2020 Lars Tangvald - 8.0.19-1 +- Update to MySQL 8.0.19 + +* Thu Dec 19 2019 Adrian Reber - 8.0.18-6 - Include patch to build against protobuf 3.11 -* Fri Aug 02 2019 Matej Mužila - 8.0.17-3 +* Thu Dec 19 2019 Orion Poplawski - 8.0.18-5 +- Rebuild for protobuf 3.11 + +* Fri Nov 15 2019 Michal Schorm - 8.0.18-4 +- Typo fixup + +* Mon Nov 11 2019 Michal Schorm - 8.0.18-3 +- Let the devel package require the libzstd-devel + +* Fri Nov 01 2019 Pete Walter - 8.0.18-2 +- Rebuild for ICU 65 + +* Mon Oct 14 2019 Lars Tangvald - 8.0.18-1 +- Update to MySQL 8.0.18 + +* Mon Aug 19 2019 Michal Schorm - 8.0.17-2 - Use RELRO hardening on all binaries -- Resolves: #1734420 -* Tue Jul 30 2019 Matej Mužila - 8.0.17-2 -- Use RELRO hardening on all binaries -- Resolves: #1734420 +* Wed Jul 31 2019 Lars Tangvald - 8.0.17-1 +- Update to MySQL 8.0.17 -* Thu Jul 25 2019 Matej Mužila - 8.0.17-1 -- Rebase to 8.0.17 -- Resolves: #1732043 -- CVEs fixed: - CVE-2019-2737 CVE-2019-2738 CVE-2019-2739 CVE-2019-2740 CVE-2019-2741 - CVE-2019-2743 CVE-2019-2746 CVE-2019-2747 CVE-2019-2752 CVE-2019-2755 - CVE-2019-2757 CVE-2019-2758 CVE-2019-2774 CVE-2019-2778 CVE-2019-2780 - CVE-2019-2784 CVE-2019-2785 CVE-2019-2789 CVE-2019-2791 CVE-2019-2795 - CVE-2019-2796 CVE-2019-2797 CVE-2019-2798 CVE-2019-2800 CVE-2019-2801 - CVE-2019-2802 CVE-2019-2803 CVE-2019-2805 CVE-2019-2808 CVE-2019-2810 - CVE-2019-2811 CVE-2019-2812 CVE-2019-2814 CVE-2019-2815 CVE-2019-2819 - CVE-2019-2822 CVE-2019-2826 CVE-2019-2830 CVE-2019-2834 CVE-2019-2879 +* Wed Jul 24 2019 Fedora Release Engineering - 8.0.16-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild -* Wed Dec 12 2018 Michal Schorm - 8.0.13-1 +* Wed May 01 2019 Michal Schorm - 8.0.16-2 +- Remove SysVInit stuff, no longer needed +- Clean up the SPECfile + +* Fri Apr 26 2019 Lars Tangvald - 8.0.16-1 +- Update to MySQL 8.0.16 +- Rediff sharedir patch +- Refresh skip list and use new, required format +- Remove GCC9 patch now upstream +- Upstream: my_safe_process renamed and moved into proper location +- Use upstream option to skip router build +- OpenSSL 1.1.1 and TLSv1.3 is now supported, enable tests +- Update version of bundled Boost +- Start requiring mysql-selinux package + +* Mon Feb 11 2019 Michal Schorm - 8.0.15-1 +- Update to MySQL 8.0.15 + +* Thu Jan 31 2019 Fedora Release Engineering - 8.0.14-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sun Jan 27 2019 Honza Horak - 8.0.14-2 +- Use RPATH for mysqld, so we can later set capabilities +- Set capabilities for mysqld the correct way + +* Mon Jan 21 2019 Lars Tangvald - 8.0.14-1 +- Update to MySQL 8.0.14 +- Remove fedora version condition that are no longer relevant +- Update skipped tests list +- CVEs fixed: #1666778 + CVE-2019-2420 CVE-2019-2434 CVE-2019-2436 CVE-2019-2455 CVE-2019-2481 + CVE-2019-2482 CVE-2019-2486 CVE-2019-2494 CVE-2019-2495 CVE-2019-2502 + CVE-2019-2503 CVE-2019-2507 CVE-2019-2510 CVE-2019-2528 CVE-2019-2529 + CVE-2019-2530 CVE-2019-2531 CVE-2019-2532 CVE-2019-2533 CVE-2019-2534 + CVE-2019-2535 CVE-2019-2536 CVE-2019-2537 CVE-2019-2539 + +* Wed Jan 16 2019 Michal Schorm - 8.0.13-3 +- Tweak handling of the mysql-selinux requirement + +* Mon Jan 14 2019 Björn Esser - 8.0.13-2 +- Rebuilt for libcrypt.so.2 (#1666033) + +* Tue Oct 23 2018 Michal Schorm - 8.0.13-1 - Rebase to 8.0.13 - ICU patch removed; upstreamed - Patch for MySQL Router introduced. Do not build it. -- Fixes for annocheck hardening - Resolves: #1624148 - CVEs fixed: CVE-2018-3276 CVE-2018-3200 CVE-2018-3137 CVE-2018-3284 CVE-2018-3195 CVE-2018-3173 CVE-2018-3212 CVE-2018-3279 CVE-2018-3162 CVE-2018-3247 @@ -1330,47 +1488,13 @@ fi CVE-2018-3283 CVE-2018-3171 CVE-2018-3251 CVE-2018-3286 CVE-2018-3185 CVE-2018-3280 CVE-2018-3203 CVE-2018-3155 - -* Wed Sep 26 2018 Michal Schorm - 8.0.12-6 -- Fix the default configuration of the server, so it uses same authentication - method as MySQL 5.7 - Resolves: #1631400 - -* Fri Sep 14 2018 Honza Horak - 8.0.12-5 -- Remove module on uninstall of the server and enable capability setting - -* Fri Sep 14 2018 Jakub Janco - 8.0.12-4 -- Allow sys_nice in selinux - -* Fri Sep 14 2018 Michal Schorm - 8.0.12-3 -- Add bundled ICU version -- Add a patch for the 'mysql_com.h' header file -- Use system mecab tool -- Use RPATH for mysqld, so we can later set capabilities - -* Thu Sep 13 2018 Honza Horak - 8.0.12-2 -- Disable capabilities for mysqld because of SELinux issues - -* Thu Sep 13 2018 Michal Schorm - 8.0.12-1 -- Rebase to MySQL 8.0.12 +* Thu Sep 06 2018 Michal Schorm - 8.0.12-2 - Fix the SYS_NICE capabilities + Related: #1540946 - Add requires for the semanage binary -- CVEs fixed: CVE-2018-3054 CVE-2018-3056 CVE-2018-3060 CVE-2018-3062 - CVE-2018-3064 CVE-2018-3065 CVE-2018-3077 CVE-2018-3081 CVE-2018-3067 - CVE-2018-3073 CVE-2018-3074 CVE-2018-3075 CVE-2018-3078 CVE-2018-3079 - CVE-2018-3080 CVE-2018-3082 CVE-2018-3084 -* Thu Sep 13 2018 Jakub Janco - 8.0.11-9 -- Use same logfile path in logrotate and mysql configs - -* Thu Sep 13 2018 Jakub Janco - 8.0.11-8 -- Prefix logrotate configuration in SCL - -* Wed Sep 12 2018 Honza Horak - 8.0.11-7 -- Add syspath subpackages - -* Wed Jul 18 2018 Honza Horak - 8.0.11-6 -- Use prefixes for dependencies +* Wed Aug 01 2018 Norvald H. Ryeng - 8.0.12-1 +- Update to MySQL 8.0.12 * Tue Jul 17 2018 Honza Horak - 8.0.11-5 - Move log file to a directory owned by mysql user @@ -1380,8 +1504,8 @@ fi * Thu Jul 12 2018 Honza Horak - 8.0.11-4 - Move mysqld back to /usr/libexec, and create a symlink in /usr/sbin -* Fri Jun 22 2018 Honza Horak - 8.0.11-3 -- SCLizing the spec file +* Thu Jul 12 2018 Fedora Release Engineering - 8.0.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Mon May 14 2018 Norvald H. Ryeng - 8.0.11-2 - MySQL 8.0 has notify support