From 948e9f4103b0b5d5c5a2d0f91f5ff57ca975f82e Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Thu, 6 Jun 2024 23:00:57 +0200 Subject: [PATCH] Rebase to 10.11.7 --- .gitignore | 1 + mariadb-libfmt.patch | 31 ++++++++++++++++++++++ mariadb-ssl-cipher-tests.patch | 13 --------- mariadb10.11.spec | 48 ++++++++++++++++++++++++---------- rh-skipped-tests-base.list | 17 ++++++++++++ sources | 3 ++- 6 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 mariadb-libfmt.patch delete mode 100644 mariadb-ssl-cipher-tests.patch diff --git a/.gitignore b/.gitignore index 20870bb..6ab2590 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /*/ /*.rpm /*.tar.gz +/*.zip diff --git a/mariadb-libfmt.patch b/mariadb-libfmt.patch new file mode 100644 index 0000000..ee97d2c --- /dev/null +++ b/mariadb-libfmt.patch @@ -0,0 +1,31 @@ +MariaDB upstream uses an old version (8.0) of the FMT library, unlike Fedora which packs a current one (10.2) + https://src.fedoraproject.org/rpms/fmt + https://github.com/MariaDB/server/blob/10.11/cmake/libfmt.cmake#L18 + +There is a breaking change between the FMT library version 8 and 10. +Sergei Golubchik from MariaDB upstream noticed that and decided to not rebase to the newer version for now. In the same commit: + https://github.com/MariaDB/server/commit/b5c367cd88e37091ab5f8dab0396c01c97d037e2 +He also fixed the CMake file controlling the FMT library. +It now correctly detects, whether the system version is able to compile a given code in an expected way. + +The incompatibility between FMT library version has been reported both agains Fedora and FMT upstream + https://bugzilla.redhat.com/show_bug.cgi?id=2266807 +The upstream created a patch and Fedora backported it + https://src.fedoraproject.org/rpms/fmt/c/7d6d6e2c33e845b3cbf3fcaf83f14dfeddfa8a70?branch=rawhide +but only in F40 and later. + +To avoid potential issues on systems with FMT library between 8.0 and the one with the fix backported, +introduce a bundling mechanism for use on such distributions. +We pre-download the sources archive and supply the CMake with it, instead of the web URL. + +--- mariadb-10.11.7/cmake/libfmt.cmake 2024-02-01 18:44:35.000000000 +0100 ++++ mariadb-10.11.7/cmake/libfmt.cmake_patched 2024-06-06 23:27:10.770987424 +0200 +@@ -15,7 +15,7 @@ MACRO(BUNDLE_LIBFMT) + ExternalProject_Add( + libfmt + PREFIX "${dir}" +- URL "https://github.com/fmtlib/fmt/archive/refs/tags/8.0.1.zip" ++ URL "file:///${dir}/8.0.1.zip" + URL_MD5 e77873199e897ca9f780479ad68e25b1 + INSTALL_COMMAND "" + CONFIGURE_COMMAND "" diff --git a/mariadb-ssl-cipher-tests.patch b/mariadb-ssl-cipher-tests.patch deleted file mode 100644 index 567e433..0000000 --- a/mariadb-ssl-cipher-tests.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up mariadb-10.3.9/mysql-test/main/ssl_cipher.test.fixtest mariadb-10.3.9/mysql-test/main/ssl_cipher.test ---- mariadb-10.3.13/mysql-test/main/ssl_cipher.test 2019-02-20 08:59:09.000000000 +0100 -+++ mariadb-10.3.13/mysql-test/main/ssl_cipher.test_patched 2019-02-22 11:22:01.250256060 +0100 -@@ -97,7 +97,9 @@ drop user mysqltest_1@localhost; - let $restart_parameters=--ssl-cipher=AES128-SHA; - source include/restart_mysqld.inc; - connect (ssl_con,localhost,root,,,,,SSL); -+--replace_regex /TLS_AES_.*/AES128-SHA/ - SHOW STATUS LIKE 'Ssl_cipher'; -+--replace_regex /TLS_AES_.*/AES128-SHA/ - SHOW STATUS LIKE 'Ssl_cipher_list'; - disconnect ssl_con; - connection default; diff --git a/mariadb10.11.spec b/mariadb10.11.spec index 8e45c13..69efc0b 100644 --- a/mariadb10.11.spec +++ b/mariadb10.11.spec @@ -1,6 +1,6 @@ # Plain package name for cases, where %%{name} differs (e.g. for versioned packages) %global majorname mariadb -%define package_version 10.11.6 +%define package_version 10.11.7 %define majorversion %(echo %{package_version} | cut -d'.' -f1-2 ) # Set if this package will be the default one in distribution @@ -15,7 +15,7 @@ # 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 10.11.6 +%global last_tested_version 10.11.7 # Set to 1 to force run the testsuite even if it was already tested in current version %global force_run_testsuite 0 @@ -109,6 +109,13 @@ %global pcre_bundled_version 10.42 %endif +# To avoid issues with a breaking change in FMT library, bundle it on systems where FMT wasn't fixed yet +# See mariadb-libfmt.patch for detailed description. +%bcond bundled_fmt 0 +%if %{with bundled_fmt} +%global fmt_bundled_version 8.0.1 +%endif + # Include systemd files %global daemon_name %{majorname} %global daemon_no_prefix %{majorname} @@ -136,7 +143,7 @@ Name: %{majorname}%{majorversion} Version: %{package_version} -Release: 4%{?with_debug:.debug}%{?dist} +Release: 1%{?with_debug:.debug}%{?dist} Epoch: 3 Summary: A very fast and robust SQL database server @@ -144,6 +151,9 @@ URL: http://mariadb.org License: GPLv2 and LGPLv2 Source0: https://downloads.mariadb.org/interstitial/mariadb-%{version}/source/mariadb-%{version}.tar.gz +%if %{with bundled_fmt} +Source1: https://github.com/fmtlib/fmt/archive/refs/tags/8.0.1.zip +%endif Source2: mysql_config_multilib.sh Source3: my.cnf.in Source6: README.mariadb-docs @@ -188,9 +198,10 @@ Patch4: %{majorname}-logrotate.patch Patch7: %{majorname}-scripts.patch # Patch9: pre-configure to comply with guidelines Patch9: %{majorname}-ownsetup.patch -# Patch10: Fix cipher name in the SSL Cipher name test -Patch10: %{majorname}-ssl-cipher-tests.patch +# Patch12: fixes of RocksDB for GCC 13 Patch12: rocksdb-6.8-gcc13.patch +# Patch13: bundle the FMT library +Patch13: %{majorname}-libfmt.patch # This macro is used for package/sub-package names in the entire specfile %if %?mariadb_default @@ -270,7 +281,7 @@ BuildRequires: perl(warnings) # for running some openssl tests rhbz#1189180 BuildRequires: openssl openssl-devel -BuildRequires: fmt-devel +%{!?with_bundled_fmt:BuildRequires: fmt-devel >= 10.2.1-4} Requires: bash coreutils grep @@ -452,6 +463,8 @@ Recommends: %{pkgname}-backup%{?_isa} = %{sameevr} %{?with_connect:Suggests: %{pkgname}-connect-engine%{?_isa} = %{sameevr}} %{?with_pam:Suggests: %{pkgname}-pam%{?_isa} = %{sameevr}} +%{?with_bundled_fmt:Provides: bundled(fmt) = %{fmt_bundled_version}} + Suggests: mytop Suggests: logrotate @@ -760,6 +773,11 @@ sources. %prep %setup -q -n %{majorname}-%{version} +%if %{with bundled_fmt} +mkdir -p redhat-linux-build/extra/libfmt/ +mv %{SOURCE1} redhat-linux-build/extra/libfmt/ +%endif + # Remove JAR files that upstream puts into tarball find . -name "*.jar" -type f -exec rm --verbose -f {} \; # Remove testsuite for the mariadb-connector-c @@ -772,15 +790,12 @@ rm -r storage/rocksdb/ %patch -P4 -p1 %patch -P7 -p1 %patch -P9 -p1 -# The test in Patch 10 has been recently updated by upstream -# and the test was disabled in the testuite run -# main.ssl_cipher [ disabled ] MDEV-17184 - Failures with OpenSSL 1.1.1 -# Keeping the patch commented out, need to revisit -# once the test is re-enabled by upstream in some future release -#%patch -P10 -p1 %if %{with rocksdb} %patch -P12 -p1 -d storage/rocksdb/rocksdb/ %endif +%if %{with bundled_fmt} +%patch -P13 -p1 +%endif # generate a list of tests that fail, but are not disabled by upstream cat %{SOURCE50} | tee -a mysql-test/unstable-tests @@ -882,7 +897,7 @@ fi -DCONC_WITH_SSL=%{?with_clibrary:ON}%{!?with_clibrary:NO} \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ - -DWITH_LIBFMT=system \ + -DWITH_LIBFMT=%{?with_bundled_fmt:bundled}%{!?with_bundled_fmt:system} \ -DLZ4_LIBS=%{?with_lz4:/usr/%{_lib}/liblz4.so}%{!?with_lz4:} \ -DWITH_INNODB_LZ4=%{?with_lz4:ON}%{!?with_lz4:OFF} \ -DWITH_ROCKSDB_LZ4=%{?with_lz4:ON}%{!?with_lz4:OFF} \ @@ -1721,12 +1736,17 @@ fi %endif %changelog +* Thu Jun 06 2024 Michal Schorm - 3:10.11.7-1 +- Rebase to 10.11.7 +- Patch 10 removed, the main.ssl_cipher test has been fixed + and re-enabled by upstream and now passes on all architectures + * Tue Apr 09 2024 Yaakov Selkowitz - 3:10.11.6-4 - Fix my.cnf dependency * Wed Feb 7 2024 Filip Janus - 3:10.11.6-3 - Rename macros related to demodularization - + * Wed Jan 31 2024 Filip Janus - 3:10.11.6-2 - Apply demodularization - the default stream builds mariadb.rpm diff --git a/rh-skipped-tests-base.list b/rh-skipped-tests-base.list index d53c914..0a79dd5 100644 --- a/rh-skipped-tests-base.list +++ b/rh-skipped-tests-base.list @@ -91,3 +91,20 @@ rpl.rpl_rewrite_db_sys_vars : rpl.rpl_semi_sync_wait_point : rpl.rpl_trigger : rpl.rpl_upgrade_master_info : + +# Fails since 10.11.7 +main.mdev375 : + +oqgraph.social : +perfschema.show_aggregate : +archive.archive : + +spider/bugfix.ddl_log : +spider/bugfix.mdev_28218 : +spider/bugfix.mdev_28218_mixed : +spider/bugfix.mdev_30370 : +spider/bugfix.mdev_32683 : +spider/bugfix.plugin_load_add_all : +spider/bugfix.plugin_load_add_spider : +spider/bugfix.udf_mysql_func_early : +spider/bugfix.udf_mysql_func_early_init_file : diff --git a/sources b/sources index e41e012..9424a7a 100755 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (mariadb-10.11.6.tar.gz) = 3d77f7be4a26d5a36af56150a5f8ed5e21adeed9bc8ea1bd694e47a25a571bd73468eada7c96e0dfe5a6c81bef625abf71a56d228cf43a738e555e3c0d824a6a +SHA512 (mariadb-10.11.7.tar.gz) = a6ebc9ba88b52e5d339b176b6fa48c03fcbe5bb590740a02c1bbd083a3d62e619937e645de2504a9f9adeed2f67127fab0307dece524b7c5217ad5df0f3ccc71 +SHA512 (8.0.1.zip) = 53f781e33ffb3bc38d743b81c5755a7d71dce95dcf5cdf23d5b4cf880a8f29189ca1b790272ee8586cbcd552648bae040247e572b2a97cd8b3631c284873f57d