From de5151e9c56830eb243c0c58a9e6adcd9eaad64d Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Wed, 9 Jul 2025 12:30:28 +0200 Subject: [PATCH 01/24] Revert "Switch from the RPM scriptlet to the sysusers.d configuration for 'mysql' user / group creation" This reverts commit 646e37cc975dea8c38c8b2eddf5478a99b248988. --- mysql8.4.spec | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index 0c6b756..241dac4 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 2%{?with_debug:.debug}%{?dist} +Release: 1%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -393,6 +393,7 @@ Requires: %{_sysconfdir}/my.cnf.d Requires: %{pkgname}-errmsg = %{sameevr} %{?mecab:Requires: mecab-ipadic} Requires: coreutils +Requires(pre): /usr/sbin/useradd # We require this to be present for %%{_tmpfilesdir} Requires: systemd # Make sure it's there when scriptlets run, too @@ -654,13 +655,6 @@ install -D -p -m 644 %{_vpath_builddir}/scripts/mysql@.service %{buildroot}%{_un install -D -p -m 0644 %{_vpath_builddir}/scripts/mysql.tmpfiles.d %{buildroot}%{_tmpfilesdir}/%{daemon_name}.conf rm -r %{buildroot}%{_tmpfilesdir}/mysql.conf -# Create a sysusers.d config file -# We no longer enforce the hardcoded UID/GID 27 -mkdir -p %{buildroot}%{_sysusersdir} -cat > %{buildroot}%{_sysusersdir}/%{name}.conf << EOF -u mysql - 'MariaDB and MySQL Server' %{dbdatadir} - -EOF - # helper scripts for service starting 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 @@ -798,6 +792,11 @@ popd +%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 %{dbdatadir} -s /sbin/nologin \ + -c "MySQL Server" -u 27 mysql >/dev/null 2>&1 || : + %post -n %{pkgname}-server %systemd_post %{daemon_name}.service if [ ! -e "%{logfile}" -a ! -h "%{logfile}" ] ; then @@ -978,7 +977,6 @@ fi %{_libexecdir}/mysql-scripts-common %{_tmpfilesdir}/%{daemon_name}.conf -%{_sysusersdir}/%{name}.conf %attr(0755,mysql,mysql) %dir %{dbdatadir} %attr(0750,mysql,mysql) %dir %{_localstatedir}/lib/mysql-files %attr(0700,mysql,mysql) %dir %{_localstatedir}/lib/mysql-keyring From 21dc1952a16d71bc000d1d4beedfd16309604d40 Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Tue, 15 Jul 2025 12:20:47 +0200 Subject: [PATCH 02/24] [Fedora Change] Switch the distribution default version of MySQL from 8.0 to 8.4 - Disable the 'distribution default' in MySQL 8.0 (package 'mysql8.0') - Enable the 'distribution default' in MySQL 8.4 in this package --- mysql8.4.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index 0c6b756..133e6c0 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -8,7 +8,7 @@ ExcludeArch: %{ix86} # Set if this package will be the default one in distribution -%{!?mysql_default:%global mysql_default 0} +%{!?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 @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 2%{?with_debug:.debug}%{?dist} +Release: 100%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1119,6 +1119,10 @@ fi %endif %changelog +* Tue Jul 15 2025 Michal Schorm - 8.4.5-100 +- Disable the 'distribution default' in MySQL 8.0 (package 'mysql8.0') +- Enable the 'distribution default' in MySQL 8.4 in this package + * Mon Apr 28 2025 Pavol Sloboda - 8.4.5-1 - Rebase to 8.4.5 From 291ad80b1fd487e900e6c8740153c9ec9c53e948 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 24 Jul 2025 22:33:31 +0000 Subject: [PATCH 03/24] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- mysql8.4.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index 133e6c0..ac7ece6 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 100%{?with_debug:.debug}%{?dist} +Release: 101%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1119,6 +1119,9 @@ fi %endif %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 8.4.5-101 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Tue Jul 15 2025 Michal Schorm - 8.4.5-100 - Disable the 'distribution default' in MySQL 8.0 (package 'mysql8.0') - Enable the 'distribution default' in MySQL 8.4 in this package From 6e7c65e57815de94552c22ea5cf9b17f57869539 Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Thu, 24 Jul 2025 13:16:53 +0200 Subject: [PATCH 04/24] Rebase to 8.4.6 Upstream release notes: https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-6.html --- mysql-paths.patch | 49 +++++++++++++++++------------------------------ mysql8.4.spec | 7 +++++-- sources | 2 +- 3 files changed, 24 insertions(+), 34 deletions(-) diff --git a/mysql-paths.patch b/mysql-paths.patch index d5978b6..e68d8bf 100644 --- a/mysql-paths.patch +++ b/mysql-paths.patch @@ -3,32 +3,21 @@ Software Collections. Removing these hard-coded paths should fix it. Upstream report: https://mariadb.atlassian.net/browse/MDEV-6485 -diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake -index 9f7945d8..6734cdfd 100644 ---- a/cmake/install_layout.cmake -+++ b/cmake/install_layout.cmake -@@ -105,7 +105,7 @@ IF(UNIX) - " Choose between ${VALID_INSTALL_LAYOUTS}" ) - ENDIF() - -- SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" -+ SET(SYSCONFDIR "/etc" - CACHE PATH "config directory (for my.cnf)") - MARK_AS_ADVANCED(SYSCONFDIR) +diff -Naur mysql-8.4.6/cmake/install_layout.cmake mysql-8.4.6_patched/cmake/install_layout.cmake +--- mysql-8.4.6/cmake/install_layout.cmake 2025-07-10 16:20:26.000000000 +0200 ++++ mysql-8.4.6_patched/cmake/install_layout.cmake 2025-07-23 09:50:42.278223154 +0200 +@@ -202,6 +202,7 @@ + ELSE() + SET(INSTALL_SBINDIR_RPM "sbin") ENDIF() -@@ -189,6 +189,7 @@ SET(INSTALL_SECURE_FILE_PRIVDIR_TARGZ ${secure_file_priv_path}) - # - SET(INSTALL_BINDIR_RPM "bin") - SET(INSTALL_SBINDIR_RPM "sbin") +SET(INSTALL_SYSCONFDIR_RPM "/etc") # IF(CMAKE_SYSTEM_PROCESSOR IN_LIST KNOWN_64BIT_ARCHITECTURES) SET(INSTALL_LIBDIR_RPM "lib64/mysql") -diff --git a/mysys/my_default.cc b/mysys/my_default.cc -index 290f1666..8403425f 100644 ---- a/mysys/my_default.cc -+++ b/mysys/my_default.cc -@@ -1570,12 +1570,12 @@ static const char **init_default_directories(MEM_ROOT *alloc) { +diff -Naur mysql-8.4.6/mysys/my_default.cc mysql-8.4.6_patched/mysys/my_default.cc +--- mysql-8.4.6/mysys/my_default.cc 2025-07-10 16:20:26.000000000 +0200 ++++ mysql-8.4.6_patched/mysys/my_default.cc 2025-07-23 09:52:21.494414633 +0200 +@@ -1693,12 +1693,12 @@ #else @@ -44,11 +33,10 @@ index 290f1666..8403425f 100644 #endif /* DEFAULT_SYSCONFDIR */ #endif -diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt -index 4149a764..b091d5e2 100644 ---- a/scripts/CMakeLists.txt -+++ b/scripts/CMakeLists.txt -@@ -288,9 +288,9 @@ IF(UNIX) +diff -Naur mysql-8.4.6/scripts/CMakeLists.txt mysql-8.4.6_patched/scripts/CMakeLists.txt +--- mysql-8.4.6/scripts/CMakeLists.txt 2025-07-10 16:20:26.000000000 +0200 ++++ mysql-8.4.6_patched/scripts/CMakeLists.txt 2025-07-23 09:53:30.114124746 +0200 +@@ -331,9 +331,9 @@ ENDIF(UNIX) SET(prefix "${CMAKE_INSTALL_PREFIX}") @@ -60,11 +48,10 @@ index 4149a764..b091d5e2 100644 SET(datadir ${prefix}/${INSTALL_MYSQLSHAREDIR}) SET(libsubdir ${INSTALL_LIBDIR}) SET(pkgincludedir ${prefix}/${INSTALL_INCLUDEDIR}) -diff --git a/scripts/mysqld_multi.pl.in b/scripts/mysqld_multi.pl.in -index 84dd4d7c..50397ddd 100644 ---- a/scripts/mysqld_multi.pl.in -+++ b/scripts/mysqld_multi.pl.in -@@ -586,9 +586,7 @@ sub list_defaults_files +diff -Naur mysql-8.4.6/scripts/mysqld_multi.pl.in mysql-8.4.6_patched/scripts/mysqld_multi.pl.in +--- mysql-8.4.6/scripts/mysqld_multi.pl.in 2025-07-10 16:20:26.000000000 +0200 ++++ mysql-8.4.6_patched/scripts/mysqld_multi.pl.in 2025-07-23 09:54:16.090991270 +0200 +@@ -587,9 +587,7 @@ my %seen; # Don't list the same file more than once return grep { defined $_ and not $seen{$_}++ and -f $_ and -r $_ } diff --git a/mysql8.4.spec b/mysql8.4.spec index ac7ece6..95ba9cc 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -2,7 +2,7 @@ ExcludeArch: %{ix86} # Name of the package without any prefixes %global majorname mysql -%global package_version 8.4.5 +%global package_version 8.4.6 %global majorversion %(echo %{package_version} | cut -d'.' -f1-2 ) %global pkgnamepatch mysql @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 101%{?with_debug:.debug}%{?dist} +Release: 1%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1119,6 +1119,9 @@ fi %endif %changelog +* Thu Jul 24 2025 Pavol Sloboda - 8.4.6-1 +- Rebase to 8.4.6 + * Thu Jul 24 2025 Fedora Release Engineering - 8.4.5-101 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/sources b/sources index 1e98dee..458e60b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (mysql-8.4.5.tar.gz) = d5353bbc618fb6ec3658773d834942f5bfd11f6f5d3fb4778aa684b970a6143d5e96919ba2311bfb00faf3882da307c62b9370aca8f41136ec129d5fa06bcf5c +SHA512 (mysql-8.4.6.tar.gz) = 2d498dc71eeede4368bd70fb1d1c012abd774732e341312f469afa3823c3b37489032b3290fa7531fb78c2b36251dbd1b8e1554c9330e18e56407f96fb8d4a1e From 71fb03bf94afc7384a46ce0b0e277ad6746aca2f Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Thu, 24 Jul 2025 13:23:07 +0200 Subject: [PATCH 05/24] Revert "Disable the testsuite - ppc64le infractructure issues" This reverts commit 3eae07cc8c2316537959c3bc498864b4e7a3584c. as the disabling of the testsuite is no longer needed with mysql 8.4.6 for ppc64le --- mysql8.4.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index 95ba9cc..7a7cbd4 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -13,7 +13,7 @@ ExcludeArch: %{ix86} # 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 0} +%{!?runselftest:%global runselftest 1} # Set this to 1 to see which tests fail, but 0 on production ready build %global ignore_testsuite_result 0 From 6a82ca446e53d1b01e56d71b42c1d1564eafdea1 Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Thu, 24 Jul 2025 14:31:29 +0200 Subject: [PATCH 06/24] Updated the rh-skipped-list-ppc with the latest failing tests all the other architectures passed with only occasional test fails therefore the updates of their rh-skipped-list file are not necessary. Also bumped the last tested version. --- mysql8.4.spec | 2 +- rh-skipped-tests-list-ppc.list | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index 7a7cbd4..d02b31f 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -21,7 +21,7 @@ ExcludeArch: %{ix86} # 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.4.5 +%global last_tested_version 8.4.6 # Set to 1 to force run the testsuite even if it was already tested in current version %global force_run_testsuite 0 diff --git a/rh-skipped-tests-list-ppc.list b/rh-skipped-tests-list-ppc.list index 9bd8439..dde6427 100644 --- a/rh-skipped-tests-list-ppc.list +++ b/rh-skipped-tests-list-ppc.list @@ -3,3 +3,18 @@ main.mysql_client_test : BUG#0 # Unstable in 8.4.4 in Fedora KOJI main.mysqlslap : BUG#0 + +# Fails in 8.4.6 in Fedora KOJI +federated.federated_server : BUG#0 +innodb.lob_recovery : BUG#0 +innodb.multi_value_basic : BUG#0 +innodb_fts.bug_34846823 : BUG#0 +innodb_gis.rtree_search : BUG#0 +main.lock_multi_bug38691 : BUG#0 +perfschema.system_events_component : BUG#0 +perfschema.system_events_plugin : BUG#0 +rpl.rpl_eventlog_psi_memory : BUG#0 +rpl.rpl_parallel_ddl_innodb : BUG#0 +rpl.rpl_parallel_ddl_myisam : BUG#0 +rpl_gtid.mysqldump_bug33630199 : BUG#0 +sys_vars.myisam_data_pointer_size_func : BUG#0 From 106a2a95085100b46edce53fa15907c8e018b6cf Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Tue, 29 Jul 2025 13:08:31 +0200 Subject: [PATCH 07/24] [logrotate] Enhance the logrotate configuration to use `systemctl kill` `systemctl kill` leverages systemd's knowledge of the daemon's main PID, eliminating the need to rely on PID files or external tools like `killall` or `pkill`. This ensures precise signal sending to the intended process, reducing the risk of errors in process identification. Additionally, using `systemctl kill` logs the signal sending in the service's journal, providing a record of actions taken. Requires selinux-policy-41.43 or higher, which is currently available as an update for F41, F42, and Rawhide. Resolves: RHBZ#2372778 Also updated the comment for 'Requires: systemd' to list all of the parts that 'systemd' is required for. This is useful for packaging for systems without systemd, such as containers. --- mysql-flush-logrotate.patch | 7 ++++--- mysql8.4.spec | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mysql-flush-logrotate.patch b/mysql-flush-logrotate.patch index 48eff40..ecffab9 100644 --- a/mysql-flush-logrotate.patch +++ b/mysql-flush-logrotate.patch @@ -1,5 +1,6 @@ ---- mysql-8.0.40/packaging/rpm-common/mysql.logrotate.in 2024-09-18 12:08:24.000000000 +0200 -+++ mysql-8.0.40/packaging/rpm-common/mysql.logrotate.in_patched 2025-02-13 16:00:32.325677977 +0100 +diff -Naur mysql-8.4.6/packaging/rpm-common/mysql.logrotate.in mysql-8.4.6_patched/packaging/rpm-common/mysql.logrotate.in +--- mysql-8.4.6/packaging/rpm-common/mysql.logrotate.in 2025-07-10 16:20:26.000000000 +0200 ++++ mysql-8.4.6_patched/packaging/rpm-common/mysql.logrotate.in 2025-07-29 10:16:39.509884723 +0200 @@ -5,18 +5,6 @@ # [mysqld] # log-error=@LOGFILE_RPM@ @@ -30,6 +31,6 @@ -# @bindir@/mysqladmin flush-logs -# fi +# # SIGUSR1 makes the daemon to flush the logs, no need to connect through mysqladmin -+# @bindir@/kill -USR1 $(systemctl show --property MainPID --value mysqld) ++# @bindir@/systemctl kill --signal=USR1 --kill-whom=main mysqld.service 2>/dev/null || true # endscript #} diff --git a/mysql8.4.spec b/mysql8.4.spec index d02b31f..b6db630 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -394,6 +394,7 @@ Requires: %{pkgname}-errmsg = %{sameevr} %{?mecab:Requires: mecab-ipadic} Requires: coreutils # We require this to be present for %%{_tmpfilesdir} +# `systemd` is also required for logrotate, as it uses `systemctl kill` Requires: systemd # Make sure it's there when scriptlets run, too %{?systemd_requires: %systemd_requires} From 673dfa6693783a1e5d114f1720b8749da67bf9ec Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Fri, 1 Aug 2025 09:35:57 +0200 Subject: [PATCH 08/24] [bugfix] Fix the 'Conflicts:' with MariaDB packages The package conflicts between MariaDB and MySQL packages are only set against the un-versioned names. (the un-versioned names are only provided by the distribution default version) The conflicts has to be extended to cover the '-any' virtually provided names, which are provided by all versions of the versioned packages. --- mysql8.4.spec | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index b6db630..b6777f2 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -250,9 +250,9 @@ Provides: bundled(rapidjson) # https://github.com/martinus/unordered_dense Provides: bundled(unordered_dense) -%{?with_conflicts_mariadb:Conflicts: mariadb} +%{?with_conflicts_mariadb:Conflicts: mariadb-any} # Explicitly disallow installation of mysql + mariadb-server -%{?with_conflicts_mariadb:Conflicts: mariadb-server} +%{?with_conflicts_mariadb:Conflicts: mariadb-server-any} %{?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} @@ -411,11 +411,11 @@ Requires: (mysql-selinux if selinux-policy-targeted) Suggests: logrotate -%{?with_conflicts_mariadb:Conflicts: mariadb-server} -%{?with_conflicts_mariadb:Conflicts: mariadb-server-utils} -%{?with_conflicts_mariadb:Conflicts: mariadb-server-galera} +%{?with_conflicts_mariadb:Conflicts: mariadb-server-any} +%{?with_conflicts_mariadb:Conflicts: mariadb-server-utils-any} +%{?with_conflicts_mariadb:Conflicts: mariadb-server-galera-any} # Explicitly disallow installation of mysql + mariadb-server -%{?with_conflicts_mariadb:Conflicts: mariadb} +%{?with_conflicts_mariadb:Conflicts: mariadb-any} %{?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} @@ -436,7 +436,7 @@ Summary: Files for development of MySQL applications Requires: openssl-devel Requires: zlib-devel Requires: libzstd-devel -%{?with_conflicts_mariadb:Conflicts: mariadb-devel} +%{?with_conflicts_mariadb:Conflicts: mariadb-devel-any} %{?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} @@ -479,7 +479,7 @@ Requires: perl(Test::More) Requires: perl(Time::HiRes) Requires: perl(File::Compare) -%{?with_conflicts_mariadb:Conflicts: mariadb-test} +%{?with_conflicts_mariadb:Conflicts: mariadb-test-any} %{?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} From 5007388587bac6c81f999741c7654624f5778329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= Date: Wed, 6 Aug 2025 09:56:08 +0200 Subject: [PATCH 09/24] Rebuilt for icu 77.1 --- mysql8.4.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index b6777f2..ad98990 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 1%{?with_debug:.debug}%{?dist} +Release: 2%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1120,6 +1120,9 @@ fi %endif %changelog +* Wed Aug 06 2025 František Zatloukal - 8.4.6-2 +- Rebuilt for icu 77.1 + * Thu Jul 24 2025 Pavol Sloboda - 8.4.6-1 - Rebase to 8.4.6 From ede65f208bd91fa803b72b679446bcfb9d78a1ad Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Wed, 6 Aug 2025 10:28:35 +0200 Subject: [PATCH 10/24] [Licenses] Review of the package licenses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The project contains tens of thousands mentions in various formats of various licenses in various formats. I did what I could, but there certainly is a space for improvement. I hope the following description of my steps may serve as a solid justification of my findings. =========== =========== =========== =========== =========== =========== GPL & LGPL There is a difference between "GPL-2.0-only" and "GPL-2.0-or-later" https://spdx.org/licenses/GPL-2.0-only.html https://spdx.org/licenses/GPL-2.0-or-later.html I understood that the license text is identical (I've ran 'diff' on top of them to verify) and the difference is decided by the license header present in the files containing the code itself. This "*-only" and "*-or-later" differenciation simmilar in other versions of GPL and LGLP I like GREP. SO here we go: \# This command is supposed to: \# - find all occurrences of the string "Public License" \# - prefixed by "GNU", "Lesser", "Library", "General", each word is optional (to match both GPL and LGPL and all variants of how people write them) \# - while every word can have any number of any white characters - including newlines - between them (to match text wrapped between lines) \# - all of that followed by string "version" (to only match text mentioning the specific version) \# - with any characters between the first part and the "version" string \# - followed by a digit (to exclude any result not talking about a concrete version specifically, e.g. text around string "from time to time" in the GPL licenses) \# - match 3 more characters (so we catch the whole version number) \# - but the "version" string and number must occur no later than any dot "." or double newline (to only match text inside the license texts or license headers, but not code) \# Once found, \# - and match everything until dot or double newline (for further parsing of the strings "or later" etc) \# - replace any newline with space (" "), so the whole above match (as well s everything else) is put on a single line \# - replace string in the variable DIR_NAME with the same string prepended by newline, so each result is on a separate line ❯ export DIR_NAME="mysql-8.4.6" ❯ export TMPFILE=$(mktemp) ❯ grep -Pzoi '(?s)((GNU\s*)?(Lesser\s*)?(Library\s*)?(General\s*)?Public\s*License)(?:(?!\.\n|\n\n).)*?version\s*\d[\s\S]{0,3}(?:(?!\.\n|\n\n).)*' -r "${DIR_NAME}" | sed ':a;N;$!ba;s/\n/ /g' | sed "s|${DIR_NAME}/|\n${DIR_NAME}/|g" > ${TMPFILE} The resulting file contains 17894 results. =========== =========== =========== ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 3" | tee >(wc -l) retuns 10 results, from which: ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 3" | grep -i --binary-files=text -e " lesser" -e " library" | tee >(wc -l) 0 is LGPL and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 3" | grep -v -i --binary-files=text -e " lesser" -e " library" | tee >(wc -l) 10 is GPL and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 3" | grep -i --binary-files=text -e "later" -e " or" | tee >(wc -l) 10 results "GPL-3.0-or-later" and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 3" | grep -i --binary-files=text -e "later" -e " or" | tee >(wc -l) 0 results "GPL-3.0-only" =========== =========== =========== ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | tee >(wc -l) retuns 17879 results, from which: ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -i --binary-files=text -e " lesser" -e " library" | tee >(wc -l) 15 is LGPL and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -v -i --binary-files=text -e " lesser" -e " library" | tee >(wc -l) 17864 is GPL and =========== =========== =========== ❯ cat ${TMPFILE} | grep -i --binary-files=text -e "version 2" | grep -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2[ ,;\<]" -e "version 2.0" | tee >(wc -l) 12 is LGPL 2.0 and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2[ ,;\<]" -e "version 2.0" | grep -i --binary-files=text -e "later" -e " or " | tee >(wc -l) 0 is "LGPL-2.0-or-later" and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2[ ,;\<]" -e "version 2.0" | grep -v -i --binary-files=text -e "later" -e " or " | tee >(wc -l) 12 is "LGPL-2.0-only" and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2\.[^0]" | tee >(wc -l) 3 is LGPL 2.1 and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2\.[^0]" | grep -i --binary-files=text -e "later" -e " or " | tee >(wc -l) 2 is "LGPL-2.1-or-later" both findings are in the 'LICENSE' file. However that doesn't necessiraly interests me, as the 'LICENSE' file is a list of just potential licenses. and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2\.[^0]" | grep -v -i --binary-files=text -e "later" -e " or " | tee >(wc -l) 1 is "LGPL-2.1-only" the finding is in the 'LICENSE' file. =========== =========== =========== ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -v -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2[ ,;\<]" -e "version 2.[0\s]" -e "version 2.\s" | tee >(wc -l) 17862 is GPL 2.0 and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -v -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2[ ,;\<]" -e "version 2.[0\s]" -e "version 2.\s" | grep -i --binary-files=text -e "later" -e " or " | tee >(wc -l) 33 is "GPL-2.0-or-later" found in: extra/gperftools/ extra/libbacktrace/ router/ and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -v -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2[ ,;\<]" -e "version 2.[0\s]" -e "version 2.\s" | grep -v -i --binary-files=text -e "later" -e " or " | tee >(wc -l) 17829 is "GPL-2.0-only" ~190 unique files with the FOSS 1.0 exception ~9500 unique files without it and ❯ cat ${TMPFILE} | grep -i --binary-files=text "version 2" | grep -v -i --binary-files=text -e " lesser" -e " library" | grep -i --binary-files=text -e "version 2\.[123456789]" | tee >(wc -l) 2 GPL 2.1 weird ... GPL 2.1 doesn't exists, only LGPL 2.1 does and by examining the files, both are false positives, as the text matched was: "The OpenLDAP Public License Version 2.8, 17 August 2003" =========== =========== =========== These were the GPL-family licenses. =========== =========== =========== =========== =========== =========== Now I tired a search that omits any GPL-family license to see what remained. ❯ grep -i licens -r "${DIR_NAME}/" | \ grep -v \ -e "// This source code is licensed under both the GPLv2 (found in the" \ -e "// COPYING file in the root directory) and Apache 2.0 License" \ -e "// (found in the LICENSE.Apache file in the root directory)." \ -e "// Use of this source code is governed by a BSD-style license that can be" \ -e "// found in the LICENSE file. See the AUTHORS file for names of contributors." \ -e "it under the terms of the GNU General Public License as published by" \ -e "the Free Software Foundation; version 2 of the License." \ -e "GNU General Public License for more details." \ -e "You should have received a copy of the GNU General Public License" \ -e "it under the terms of the GNU General Public License, version 2.0," \ -e "but not limited to OpenSSL) that is licensed under separate terms," \ -e "as designated in a particular file or component or in included license" \ -e "separately licensed software that they have included with MySQL." \ -e "GNU General Public License, version 2.0, for more details." \ -e "License as published by the Free Software Foundation; either" \ -e "version 2.1 of the License, or (at your option) any later version." \ -e "Lesser General Public License for more details." \ -e "License along with this library; if not, write to the Free Software" \ -e "License version 2.1 as published by the Free Software Foundation." \ -e "the terms of the GNU General Public License as published by the Free Software" \ -e "License along with this library; if not, write to the Free" \ -e "version 2 of the License, or (at your option) any later version." \ -e "Library General Public License for more details." \ -e "License along with this library; if not see " \ -e "GNU General Public License, version 2.0" \ | grep -i "licens" > ${TMPFILE} Which yelds 33132 results to go through. This is tremendously attention demanding, and likely place for oversights. I've managed to discover the following: =========== =========== =========== ❯ cat ${TMPFILE} | grep -i -e "separately licensed software that they have either included with" | wc -l 9347 This is the Universal-FOSS-exception-1.0. I had to check which licenses are these exceptions connected to. I found it connected to "GPL-2.0-only". Around 190 "GPL-2.0-only" licensed files have the exception, while around 9500 "LGPL-2.0-only" licensed files does not have it. I found that all "LGPL-2.0-only" license files also have the exception. =========== =========== =========== ❯ cat ${TMPFILE} | grep -i -e "www.boost.org/LICENSE_" -e "See accompanying file LICENSE_1_0.txt" -e "Version 1.0. (See accompanying file" -e "accompanying file LICENSE_1_0.txt" -e "Boost Software License" -e "http://www.boost.org/users/license.html" | wc -l 21337 The "BSL-1.0" license =========== =========== =========== ❯ cat ${TMPFILE} | grep -i -e "apache license" mysql-8.4.6/storage/ndb/test/crund/src/META-INF/persistence.xml: to you under the Apache License, Version 2.0 (the mysql-8.4.6/storage/ndb/test/crund/src/META-INF/persistence.xml: http://www.apache.org/licenses/LICENSE-2.0 The "Apache-2.0" licnese =========== =========== =========== ❯ cat ${TMPFILE} | grep -v -i -e "www.boost.org/LICENSE_" -e "See accompanying file LICENSE_1_0.txt" -e "Version 1.0. (See accompanying file" -e "accompanying file LICENSE_1_0.txt" -e "Boost Software License" -e "http://www.boost.org/users/license.html" | grep -v -i -e "apache" | grep -e "MIT" The "MIT" license =========== =========== =========== ❯ cat ${TMPFILE} | grep -v -i -e "www.boost.org/LICENSE_" -e "See accompanying file LICENSE_1_0.txt" -e "Version 1.0. (See accompanying file" -e "accompanying file LICENSE_1_0.txt" -e "Boost Software License" -e "http://www.boost.org/users/license.html" | grep -v -i -e "apache" | grep -v -e "MIT" | grep -e "BSD" The "BSD-2-Clause" License =========== =========== =========== ❯ cat ${TMPFILE} | grep -v -i -e "www.boost.org/LICENSE_" -e "See accompanying file LICENSE_1_0.txt" -e "Version 1.0. (See accompanying file" -e "accompanying file LICENSE_1_0.txt" -e "Boost Software License" -e "http://www.boost.org/users/license.html" | grep -v -i -e "apache" | grep -v -e "MIT" | grep -i -e "dual license" mysql-8.4.6/storage/innobase/ut/crc32.cc: Dual licensed under BSD license and GPLv2. The "( GPL-2.0-only OR BSD-2-Clause )" license =========== =========== =========== I hope I caught all of the licenses. If that's not the case, please contribute a fix or at least report a bug against this package so we can correct it. --- mysql8.4.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index ad98990..f9467f9 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -108,9 +108,9 @@ Release: 2%{?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: GPL-2.0-or-later AND LGPL-2.1-only AND BSL-1.0 AND BSD-2-Clause +# The the `Universal-FOSS-exception-1.0` exception allow client libraries to be linked with most open source SW, not only GPL code. +# Usage of the `Universal-FOSS-exception-1.0` in the SPDX license expression does not signify that we regard "Interfaces" as protected by copyright. +License: GPL-2.0-only AND ( GPL-2.0-only WITH Universal-FOSS-exception-1.0 ) AND GPL-2.0-or-later AND ( LGPL-2.0-only WITH Universal-FOSS-exception-1.0 ) AND ( GPL-3.0-or-later WITH Bison-exception-2.2 ) AND ( GPL-2.0-only OR BSD-2-Clause ) AND BSD-2-Clause AND BSL-1.0 AND Apache-2.0 AND MIT Source0: https://cdn.mysql.com/Downloads/MySQL-8.4/mysql-%{version}.tar.gz Source3: my.cnf.in From 2ed62cee088914e67a0556c4b9f71c437653afae Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Wed, 6 Aug 2025 08:51:52 +0000 Subject: [PATCH 11/24] [bugfix] Fix packaging of the default MySQL server log We've received a bug report, that the 'rpm -qc' incorrectly returns the MySQL server default log file '/var/log/mysql/mysqld.log' as a configuration file. https://issues.redhat.com/browse/RHEL-57601 This was caused by us packing it in the SPECfile '%files' section with the '%config %ghost' directives. The reason was historical. We tried to mark the file as owned by the package, but at the same time to not pack it, and also prevent its deleteion on package removal. The correct way is to not list the file at all. The parent directory is properly packed and owned instead (already), so it should be clear that the files inside are associated with that package. This is how we already do it with the DB datadir '/var/lib/mysql'. Resolves: RHEL-57601 While investigating this issue, we also reviewed the log file creation. The log file is created automatically by the MySQL server when needed. This can even happen in the middle of the server runtime, when the file is (re)moved, and the DB server is tasked to flush the logs. I checked the MySQL server documentation, and tested it, and I found, that the logfile is indeed created by the server. The only possible reason why the file might be needed to be created beforehand, is when the file lies on a location to which the MySQL server won't have permissions to write to. This is likely the case of MySQL upstream RPMs, which place it by default to the '/var/log': https://github.com/mysql/mysql-server/blob/96d58aa2b9a65aa1622f57aa943a336711fdb600/packaging/rpm-fedora/mysql.spec.in#L703 However Fedora and RHEL uses a designated directory '/var/log/mysql', which is owened by 'mysql:mysql', so the issue does not exists here. --- mysql8.4.spec | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index f9467f9..2434a69 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -801,9 +801,6 @@ popd %post -n %{pkgname}-server %systemd_post %{daemon_name}.service -if [ ! -e "%{logfile}" -a ! -h "%{logfile}" ] ; then - install /dev/null -m0640 -omysql -gmysql "%{logfile}" -fi %preun -n %{pkgname}-server %systemd_preun %{daemon_name}.service @@ -985,7 +982,6 @@ fi %attr(0700,mysql,mysql) %dir %{_localstatedir}/lib/mysql-keyring %attr(0755,mysql,mysql) %dir %{pidfiledir} %attr(0750,mysql,mysql) %dir %{logfiledir} -%attr(0640,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{logfile} %config(noreplace) %{logrotateddir}/%{daemon_name} %if %{with devel} From 78e520ad71455692070584767ccce1b960bb8466 Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Fri, 15 Aug 2025 14:10:48 +0200 Subject: [PATCH 12/24] Updated the rh-skipped-tests-list-ppc.list with an unstable test that caused the builds to fail in Koji on ELN This test is unstable as it failed in most of the builds. Resolves: RHBZ#2388622 --- rh-skipped-tests-list-ppc.list | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rh-skipped-tests-list-ppc.list b/rh-skipped-tests-list-ppc.list index dde6427..40f0273 100644 --- a/rh-skipped-tests-list-ppc.list +++ b/rh-skipped-tests-list-ppc.list @@ -18,3 +18,5 @@ rpl.rpl_parallel_ddl_innodb : BUG#0 rpl.rpl_parallel_ddl_myisam : BUG#0 rpl_gtid.mysqldump_bug33630199 : BUG#0 sys_vars.myisam_data_pointer_size_func : BUG#0 +# unstable on ELN +main.multi_update : BUG#0 From 34b13ed9e6d047eb3dc6f52d39a3af7741b62bb2 Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Tue, 26 Aug 2025 14:27:49 +0200 Subject: [PATCH 13/24] Bump release for package rebuild --- mysql8.4.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index 2434a69..edd62b3 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 2%{?with_debug:.debug}%{?dist} +Release: 3%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1116,6 +1116,9 @@ popd %endif %changelog +* Tue Aug 26 2025 Pavol Sloboda - 8.4.6-3 +- Bump release for package rebuild + * Wed Aug 06 2025 František Zatloukal - 8.4.6-2 - Rebuilt for icu 77.1 From 66e8beb3722162b2c8d8aa9de8b803d5283c5c48 Mon Sep 17 00:00:00 2001 From: Lukas Javorsky Date: Thu, 30 Oct 2025 07:56:23 +0000 Subject: [PATCH 14/24] Revert to soft static allocation of MariaDB and MySQL sysusers.d files Resolves: RHEL-119789 Related PR for `setup` RPM: https://src.fedoraproject.org/rpms/setup/pull-request/30 Partially reverts commit: 646e37c The MariaDB and MySQL sysusers.d files has to use soft static allocation in order to correctly handle the MariaDB PAM v2 plugin which utilizes setuid-to-root binary "/usr/lib64/mariadb/plugin/auth_pam_tool_dir/auth_pam_tool". --- mysql8.4.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index edd62b3..dd4f3ec 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 3%{?with_debug:.debug}%{?dist} +Release: 4%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -659,7 +659,7 @@ rm -r %{buildroot}%{_tmpfilesdir}/mysql.conf # We no longer enforce the hardcoded UID/GID 27 mkdir -p %{buildroot}%{_sysusersdir} cat > %{buildroot}%{_sysusersdir}/%{name}.conf << EOF -u mysql - 'MariaDB and MySQL Server' %{dbdatadir} - +u mysql 27 'MariaDB and MySQL Server' %{dbdatadir} - EOF # helper scripts for service starting @@ -1116,6 +1116,9 @@ popd %endif %changelog +* Mon Oct 27 2025 Lukas Javorsky - 8.4.6-4 +- Revert to soft static allocation of MariaDB and MySQL sysusers.d files + * Tue Aug 26 2025 Pavol Sloboda - 8.4.6-3 - Bump release for package rebuild From 8e3a14a4ac4f46ce57321e8acf44483151cb6a01 Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Wed, 5 Nov 2025 14:53:06 +0100 Subject: [PATCH 15/24] Rebase to 8.4.7 Upstream release notes: https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-7.html Resolves: RHBZ#2407097 --- mysql8.4.spec | 9 ++++++--- sources | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index dd4f3ec..7bd71cd 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -2,7 +2,7 @@ ExcludeArch: %{ix86} # Name of the package without any prefixes %global majorname mysql -%global package_version 8.4.6 +%global package_version 8.4.7 %global majorversion %(echo %{package_version} | cut -d'.' -f1-2 ) %global pkgnamepatch mysql @@ -21,7 +21,7 @@ ExcludeArch: %{ix86} # 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.4.6 +%global last_tested_version 8.4.7 # Set to 1 to force run the testsuite even if it was already tested in current version %global force_run_testsuite 0 @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 4%{?with_debug:.debug}%{?dist} +Release: 1%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1116,6 +1116,9 @@ popd %endif %changelog +* Thu Oct 30 2025 Pavol Sloboda - 8.4.7-1 +- Rebase to 8.4.7 + * Mon Oct 27 2025 Lukas Javorsky - 8.4.6-4 - Revert to soft static allocation of MariaDB and MySQL sysusers.d files diff --git a/sources b/sources index 458e60b..99a2f70 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (mysql-8.4.6.tar.gz) = 2d498dc71eeede4368bd70fb1d1c012abd774732e341312f469afa3823c3b37489032b3290fa7531fb78c2b36251dbd1b8e1554c9330e18e56407f96fb8d4a1e +SHA512 (mysql-8.4.7.tar.gz) = d9596395b176490d5e58be307c2f82f55c9acd3206c1ba29bdb8c96c67438bbe5594621f601161ccb77f56c8262d00255ab6fd8aa62db61c80a1721e3d4e45a2 From 7d6419fac46ba5ba3a64272599b77848c3c4023a Mon Sep 17 00:00:00 2001 From: Pavol Sloboda Date: Wed, 5 Nov 2025 14:56:30 +0100 Subject: [PATCH 16/24] Updated the skipped-tests-list files with the newest findings --- rh-skipped-tests-list-base.list | 7 +++++++ rh-skipped-tests-list-ppc.list | 8 ++++++++ rh-skipped-tests-list-s390.list | 3 +++ 3 files changed, 18 insertions(+) diff --git a/rh-skipped-tests-list-base.list b/rh-skipped-tests-list-base.list index 2315383..1a9e323 100644 --- a/rh-skipped-tests-list-base.list +++ b/rh-skipped-tests-list-base.list @@ -27,3 +27,10 @@ auth_sec.fips_persisted_option : BUG#0 auth_sec.fips_tlsv13 : BUG#0 rpl.rpl_fips : BUG#0 x.connection_fips : BUG#0 + +# Fails since 8.4.7 +perfschema.statement_digest_query_sample : BUG#0 +rpl.rpl_eventlog_psi_memory : BUG#0 +perfschema.system_events_component : BUG#0 +rpl.rpl_json : BUG#0 +perfschema.system_events_plugin : BUG#0 diff --git a/rh-skipped-tests-list-ppc.list b/rh-skipped-tests-list-ppc.list index 40f0273..7937566 100644 --- a/rh-skipped-tests-list-ppc.list +++ b/rh-skipped-tests-list-ppc.list @@ -20,3 +20,11 @@ rpl_gtid.mysqldump_bug33630199 : BUG#0 sys_vars.myisam_data_pointer_size_func : BUG#0 # unstable on ELN main.multi_update : BUG#0 + +# Fails since 8.4.7 +innodb_fts.optimize_big : BUG#0 +innodb_undo.undo_settings : BUG#0 +rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts : BUG#0 + +# Times out since 8.4.7 +parts.partition_reverse_scan_icp : BUG#0 diff --git a/rh-skipped-tests-list-s390.list b/rh-skipped-tests-list-s390.list index 20e655e..38a53f7 100644 --- a/rh-skipped-tests-list-s390.list +++ b/rh-skipped-tests-list-s390.list @@ -5,3 +5,6 @@ test_services.test_event_tracking_consumer : BUG#0 # Unstable since 8.4 innodb_undo.truncate_xa : BUG#0 x.result_types : BUG#0 + +# Times out since 8.4.7 +rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts : BUG#0 From 1dc9046efdf2689efe5e5f976e5d43010c5f0a4b Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Wed, 19 Nov 2025 13:39:17 +0100 Subject: [PATCH 17/24] Testsuite verification for 8.4.7 release We are currently experiencing very long build times on the s390x Fedora builders. The x86_64 build without tetsuite takes ~30 minutes. The x86_64, ppc64le, aarch64 builds with the main suite all takes aound 60 minutes, while the s390x takes nearly 4 hours. Builds with the full testsuite takes approximatelly double the time of the builds with just the main suite. -- There were some failing tests: | auth_sec.admin_channel_tls | auth_sec.admin_channel_tls_startup | auth_sec.cert_verify | auth_sec.cert_verify_openssl | x.mysqlxtest_mode_ssl | x.mysqlxtest_mode_ssl_unixsocket and all of them fail because the test certificates in the 'std_data' testsuite directory have expired. Some of those tests fail gracefuly, some not. But all of them produce variant of this error message: "Server SSL certificate doesn't verify: certificate has expired" -- I believe this is a recuring timebomb bug in MySQL. I found this upstream commit dealing with the issue few years ago: https://github.com/mysql/mysql-server/commit/8c22b5f6df99f9b055c62ccf57e9e634e280abc5 but this time different certificates needs refreshing, e.g.: | std_data/server-cert-verify-fail.pem | std_data/server-cert-verify-pass.pem and maybe some more. From b9eb6aa489eb7e02cc2bef9ddecc3c69531cb6c4 Mon Sep 17 00:00:00 2001 From: Nikola Davidova Date: Tue, 4 Nov 2025 13:32:39 +0000 Subject: [PATCH 18/24] Extend tmpfiles.d rules for ImageMode After switching to a container image with bootc switch, systemd failed to start mysqld because required runtime directories were missing or had wrong permissions. Adding tmpfiles entries with correct ownership ensures systemd creates the necessary directories at boot and gives them correct permissions, allowing the mysql daemon to start. "In a container build, you can write to '/var'. However, this will have a semantic similar to a Dockerfile VOLUME instruction; the content from the container image is only copied at initial install time. Any subsequent system updates will not by default see new changes. It's recommended instead to use e.g. systemd tmpfiles.d as a way to ensure that newly added state "reconciles" across upgrades as desired." https://docs.fedoraproject.org/en-US/bootc/filesystem/#_filesystem_bind_mount_var This covers all the files in /var sicne we only ship these as can be seen here: find | grep /var/ ./mysql8.4-server-8.4.5-1.fc43.x86_64.rpm/var/lib ./mysql8.4-server-8.4.5-1.fc43.x86_64.rpm/var/lib/mysql ./mysql8.4-server-8.4.5-1.fc43.x86_64.rpm/var/lib/mysql-files ./mysql8.4-server-8.4.5-1.fc43.x86_64.rpm/var/lib/mysql-keyring ./mysql8.4-server-8.4.5-1.fc43.x86_64.rpm/var/log ./mysql8.4-server-8.4.5-1.fc43.x86_64.rpm/var/log/mysql The '/usr' directory is not persistent therefore this change does not affect it and the '/etc' directory is merged in a different way and also not under the 'mysql:mysql' user --- mysql.tmpfiles.d.in | 7 +++++++ mysql8.4.spec | 3 +++ 2 files changed, 10 insertions(+) diff --git a/mysql.tmpfiles.d.in b/mysql.tmpfiles.d.in index d2c4b31..d22e348 100644 --- a/mysql.tmpfiles.d.in +++ b/mysql.tmpfiles.d.in @@ -1 +1,8 @@ d @PID_FILE_DIR@ 0755 mysql mysql - + +Rules for ephemeral file systems (ImageMode) +/var/lib/mysql 0755 mysql mysql - +/var/log/mysql 0750 mysql mysql - +/var/log/mysql/mysql.log 0640 mysql mysql - +/var/lib/mysql-files 0750 mysql mysql - +/var/lib/mysql-keyring 0700 mysql mysql - diff --git a/mysql8.4.spec b/mysql8.4.spec index 7bd71cd..293f1f5 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -977,11 +977,14 @@ popd %{_tmpfilesdir}/%{daemon_name}.conf %{_sysusersdir}/%{name}.conf + +# Remember to also update the mysql.tmpfiles.d.in file when updating these permissions %attr(0755,mysql,mysql) %dir %{dbdatadir} %attr(0750,mysql,mysql) %dir %{_localstatedir}/lib/mysql-files %attr(0700,mysql,mysql) %dir %{_localstatedir}/lib/mysql-keyring %attr(0755,mysql,mysql) %dir %{pidfiledir} %attr(0750,mysql,mysql) %dir %{logfiledir} + %config(noreplace) %{logrotateddir}/%{daemon_name} %if %{with devel} From 31eda3314377253217e09171b0dbdec69f7c4146 Mon Sep 17 00:00:00 2001 From: Nikola Davidova Date: Tue, 4 Nov 2025 13:32:42 +0000 Subject: [PATCH 19/24] Bump release for tmpfiles.d change --- mysql8.4.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index 293f1f5..0bf5c5c 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 1%{?with_debug:.debug}%{?dist} +Release: 2%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1119,6 +1119,9 @@ popd %endif %changelog +* Mon Nov 3 2025 Nikola Davidova - 8.4.7-2 +- Bump release for tmpfiles.d change + * Thu Oct 30 2025 Pavol Sloboda - 8.4.7-1 - Rebase to 8.4.7 From 38828ac15dbf1a37e7d85f5d928350b1cbb08703 Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Thu, 20 Nov 2025 14:05:51 +0100 Subject: [PATCH 20/24] [tmpfiles.d] Fixup of the tmpfile.d rules A comment is misisng a comment line prefix --- mysql.tmpfiles.d.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql.tmpfiles.d.in b/mysql.tmpfiles.d.in index d22e348..0471433 100644 --- a/mysql.tmpfiles.d.in +++ b/mysql.tmpfiles.d.in @@ -1,6 +1,6 @@ d @PID_FILE_DIR@ 0755 mysql mysql - -Rules for ephemeral file systems (ImageMode) +# Rules for ephemeral file systems (ImageMode) /var/lib/mysql 0755 mysql mysql - /var/log/mysql 0750 mysql mysql - /var/log/mysql/mysql.log 0640 mysql mysql - From 82cf0ae603fd224e0cf1c024754adee8a79402ca Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Thu, 20 Nov 2025 14:08:13 +0100 Subject: [PATCH 21/24] Bump release for tmpfiles.d fixup --- mysql8.4.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index 0bf5c5c..fdcf4b2 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 2%{?with_debug:.debug}%{?dist} +Release: 3%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1119,6 +1119,9 @@ popd %endif %changelog +* Thu Nov 20 2025 Michal Schorm - 8.4.7-3 +- Bump release for tmpfiles.d fixup + * Mon Nov 3 2025 Nikola Davidova - 8.4.7-2 - Bump release for tmpfiles.d change From dc2b214942cd168cf594853084dfcabcc0ab9529 Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Fri, 21 Nov 2025 07:58:32 +0100 Subject: [PATCH 22/24] [tmpfiles.d] Fixup of the tmpfile.d rules Each line must begin with a valid prefix (type) https://www.man7.org/linux/man-pages/man5/tmpfiles.d.5.html --- mysql.tmpfiles.d.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mysql.tmpfiles.d.in b/mysql.tmpfiles.d.in index 0471433..097295c 100644 --- a/mysql.tmpfiles.d.in +++ b/mysql.tmpfiles.d.in @@ -1,8 +1,8 @@ d @PID_FILE_DIR@ 0755 mysql mysql - # Rules for ephemeral file systems (ImageMode) -/var/lib/mysql 0755 mysql mysql - -/var/log/mysql 0750 mysql mysql - -/var/log/mysql/mysql.log 0640 mysql mysql - -/var/lib/mysql-files 0750 mysql mysql - -/var/lib/mysql-keyring 0700 mysql mysql - +d /var/lib/mysql 0755 mysql mysql - +d /var/log/mysql 0750 mysql mysql - +f /var/log/mysql/mysql.log 0640 mysql mysql - +d /var/lib/mysql-files 0750 mysql mysql - +d /var/lib/mysql-keyring 0700 mysql mysql - From bc1e3bbc9fd7bbee412610bc4345e1757a33e86d Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Fri, 21 Nov 2025 07:59:52 +0100 Subject: [PATCH 23/24] Bump release for tmpfiles.d fixup --- mysql8.4.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index fdcf4b2..8a0fd13 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 3%{?with_debug:.debug}%{?dist} +Release: 4%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -1119,6 +1119,9 @@ popd %endif %changelog +* Fri Nov 21 2025 Michal Schorm - 8.4.7-4 +- Bump release for tmpfiles.d fixup + * Thu Nov 20 2025 Michal Schorm - 8.4.7-3 - Bump release for tmpfiles.d fixup From 7fe02d1a0af5256616e7c413587ab984e4ada293 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Tue, 2 Dec 2025 11:37:23 +0100 Subject: [PATCH 24/24] RISC-V changes Disable numactrl, libquadmath build dependencies Disable ld.gold Add list of skipped tests Authorship set to David Abdurachmanov as he did them in RISC-V forge. --- mysql8.4.spec | 17 +++++++++++++---- rh-skipped-tests-list-riscv.list | 3 +++ 2 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 rh-skipped-tests-list-riscv.list diff --git a/mysql8.4.spec b/mysql8.4.spec index 8a0fd13..6aa0b7c 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -104,7 +104,7 @@ ExcludeArch: %{ix86} Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 4%{?with_debug:.debug}%{?dist} +Release: 5%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -132,6 +132,7 @@ 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 +Source54: rh-skipped-tests-list-riscv.list # Comments for these patches are in the patch files # Patches common for more mysql-like packages @@ -169,7 +170,7 @@ BuildRequires: mecab-devel BuildRequires: bison BuildRequires: libzstd-devel BuildRequires: libcurl-devel -%ifnarch aarch64 s390x +%ifnarch aarch64 s390x riscv64 BuildRequires: numactl-devel BuildRequires: libquadmath-devel %endif @@ -544,6 +545,9 @@ cat %{SOURCE52} | tee -a mysql-test/%{skiplist} cat %{SOURCE53} | tee -a mysql-test/%{skiplist} %endif +%ifarch riscv64 +cat %{SOURCE54} | tee -a mysql-test/%{skiplist} +%endif cp %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} \ @@ -593,10 +597,10 @@ cp %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} \ -DSYSTEMD_SERVICE_NAME="%{daemon_name}" \ -DSYSTEMD_PID_DIR="%{pidfiledir}" \ -DWITH_INNODB_MEMCACHED=ON \ -%ifnarch aarch64 s390x +%ifnarch aarch64 s390x riscv64 -DWITH_NUMA=ON \ %endif -%ifarch s390x +%ifarch s390x riscv64 -DUSE_LD_GOLD=OFF \ %endif -DWITH_ROUTER=OFF \ @@ -1119,6 +1123,11 @@ popd %endif %changelog +* Tue Dec 02 2025 David Abdurachmanov - 8.4.7-5 +- Disable numactrl and libquadmath on risc-v +- Disable ld.gold on risc-v +- Add list of skipped tests for risc-v + * Fri Nov 21 2025 Michal Schorm - 8.4.7-4 - Bump release for tmpfiles.d fixup diff --git a/rh-skipped-tests-list-riscv.list b/rh-skipped-tests-list-riscv.list new file mode 100644 index 0000000..2bba0af --- /dev/null +++ b/rh-skipped-tests-list-riscv.list @@ -0,0 +1,3 @@ +# Fails since 8.0.40 +# [Warning] [MY-011037] [Server] The CYCLE timer is not available. WAIT events in the performance_schema will not be timed. +main.test_mysql_thd_store_service : BUG#0