diff --git a/.gitignore b/.gitignore index 85dace8..37d1ecc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/mysql-boost-8.0.22.tar.gz +SOURCES/mysql-boost-8.0.28.tar.gz diff --git a/.mysql.metadata b/.mysql.metadata index b7a1764..760d61e 100644 --- a/.mysql.metadata +++ b/.mysql.metadata @@ -1 +1 @@ -0bf6f95fa5cf925e9cee1edab765c694cb7571bd SOURCES/mysql-boost-8.0.22.tar.gz +0f34d6a9c8cedacb71549b1beb33133e31d75014 SOURCES/mysql-boost-8.0.28.tar.gz diff --git a/SOURCES/mysql-arm32-timer.patch b/SOURCES/mysql-arm32-timer.patch index 5bc7f67..d9c616c 100644 --- a/SOURCES/mysql-arm32-timer.patch +++ b/SOURCES/mysql-arm32-timer.patch @@ -1,8 +1,10 @@ ---- mysql-8.0.22/mysql-test/include/mtr_warnings.sql.old 2020-10-21 11:25:49.779775116 +0200 -+++ mysql-8.0.22/mysql-test/include/mtr_warnings.sql 2020-10-21 11:26:29.507185307 +0200 -@@ -299,6 +299,11 @@ - ("NOTIFY_SOCKET not set in environment. sd_notify messages will not be sent!"), - ("Invalid systemd notify socket, cannot send: "), +diff --git a/mysql-test/include/mtr_warnings.sql b/mysql-test/include/mtr_warnings.sql +index eff14a67..413dfc27 100644 +--- a/mysql-test/include/mtr_warnings.sql ++++ b/mysql-test/include/mtr_warnings.sql +@@ -363,6 +363,11 @@ INSERT INTO global_suppressions VALUES + */ + ("Manifest file '.*' is not read-only. For better security, please make sure that the file is read-only."), + /* + ARM32 don't support timers and get this warning in every test. diff --git a/SOURCES/mysql-fix-includes-robin-hood.patch b/SOURCES/mysql-fix-includes-robin-hood.patch new file mode 100644 index 0000000..0aca3ef --- /dev/null +++ b/SOURCES/mysql-fix-includes-robin-hood.patch @@ -0,0 +1,13 @@ +# Prevents fails when compiling with gcc11 (Fedora 34) +# Upstream PR: https://github.com/mysql/mysql-server/pull/323 + +--- mysql-8.0.23/extra/robin-hood-hashing/robin_hood.h.old 2021-02-04 17:15:31.034997221 +0100 ++++ mysql-8.0.23/extra/robin-hood-hashing/robin_hood.h 2021-02-04 17:15:50.781372066 +0100 +@@ -48,6 +48,7 @@ + #include + #include + #include ++#include + #if __cplusplus >= 201703L + # include + #endif diff --git a/SOURCES/mysql-gcc11.patch b/SOURCES/mysql-gcc11.patch deleted file mode 100644 index 8a030a8..0000000 --- a/SOURCES/mysql-gcc11.patch +++ /dev/null @@ -1,25 +0,0 @@ -index a826a081..00000000 -diff --git a/include/mysql/components/services/page_track_service.h b/include/mysql/components/services/page_track_service.h -index 103b5135..e6b3ba6f 100644 ---- a/include/mysql/components/services/page_track_service.h -+++ b/include/mysql/components/services/page_track_service.h -@@ -26,6 +26,7 @@ - - #include - #include -+#include - - #include - -diff --git a/sql-common/sql_string.cc b/sql-common/sql_string.cc -index 40435729..8b6ee827 100644 ---- a/sql-common/sql_string.cc -+++ b/sql-common/sql_string.cc -@@ -23,6 +23,7 @@ - #include "sql_string.h" - - #include -+#include - - #include "my_dbug.h" - #include "my_macros.h" diff --git a/SOURCES/mysql-mtr.patch b/SOURCES/mysql-mtr.patch new file mode 100644 index 0000000..629ab5d --- /dev/null +++ b/SOURCES/mysql-mtr.patch @@ -0,0 +1,102 @@ +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' + + + + +--- mysql-8.0.24/mysql-test/mysql-test-run.pl 2021-05-10 04:29:44.391897891 +0200 ++++ mysql-8.0.24/mysql-test/mysql-test-run.pl_patched 2021-05-10 04:38:51.031702753 +0200 +@@ -3374,17 +3374,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); +- 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-openssl3.patch b/SOURCES/mysql-openssl3.patch index 32bfe7b..1ffbfbf 100644 --- a/SOURCES/mysql-openssl3.patch +++ b/SOURCES/mysql-openssl3.patch @@ -153,10 +153,10 @@ diff -rup mysql-8.0.22-orig/mysys/my_md5.cc mysql-8.0.22/mysys/my_md5.cc } /** -diff -rup mysql-8.0.22-orig/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.cc mysql-8.0.22/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.cc ---- mysql-8.0.22-orig/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.cc 2021-05-19 21:36:14.531793376 +0200 -+++ mysql-8.0.22/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.cc 2021-05-19 23:06:55.049885943 +0200 -@@ -25,6 +25,7 @@ +diff -Naurp mysql-8.0.27/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/network/xcom_network_provider_ssl_native_lib.cc* +--- mysql-8.0.27/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/network/xcom_network_provider_ssl_native_lib.cc 2021-09-28 13:46:34.000000000 +0200 ++++ mysql-8.0.27/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/network/xcom_network_provider_ssl_native_lib.cc_patched 2021-10-31 10:57:37.865934624 +0100 +@@ -30,6 +30,7 @@ #include #include @@ -164,7 +164,7 @@ diff -rup mysql-8.0.22-orig/plugin/group_replication/libmysqlgcs/src/bindings/xc #include #include #include -@@ -35,6 +36,7 @@ +@@ -39,6 +40,7 @@ #endif #include "openssl/engine.h" diff --git a/SOURCES/mysql-s390-tsc.patch b/SOURCES/mysql-s390-tsc.patch index 3fca0ac..21fd2d4 100644 --- a/SOURCES/mysql-s390-tsc.patch +++ b/SOURCES/mysql-s390-tsc.patch @@ -2,21 +2,21 @@ Support s390/s390x in performance schema's cycle-counting functions. Filed upstream at http://bugs.mysql.com/bug.php?id=59953 diff --git a/include/my_rdtsc.h b/include/my_rdtsc.h -index 65f7df19..a28f470c 100644 +index 6e378e94..7703cf85 100644 --- a/include/my_rdtsc.h +++ b/include/my_rdtsc.h -@@ -128,5 +128,6 @@ void my_timer_init(MY_TIMER_INFO *mti); - #define MY_TIMER_ROUTINE_GETSYSTEMTIMEASFILETIME 26 - #define MY_TIMER_ROUTINE_ASM_SUNPRO_X86_64 27 +@@ -137,5 +137,6 @@ void my_timer_init(MY_TIMER_INFO *mti); + /* #define MY_TIMER_ROUTINE_ASM_SUNPRO_X86_64 27 - No longer used */ #define MY_TIMER_ROUTINE_ASM_AARCH64 28 -+#define MY_TIMER_ROUTINE_ASM_S390 29 + #define MY_TIMER_ROUTINE_GET_THREAD_TIMES 29 ++#define MY_TIMER_ROUTINE_ASM_S390 30 #endif diff --git a/mysys/my_rdtsc.cc b/mysys/my_rdtsc.cc -index 54d19691..f18c182f 100644 +index 3869db57..655a955e 100644 --- a/mysys/my_rdtsc.cc +++ b/mysys/my_rdtsc.cc -@@ -204,6 +204,13 @@ ulonglong my_timer_cycles(void) { +@@ -169,6 +169,13 @@ ulonglong my_timer_cycles(void) { __asm __volatile__("mrs %[rt],cntvct_el0" : [ rt ] "=r"(result)); return result; } @@ -30,8 +30,8 @@ index 54d19691..f18c182f 100644 #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME) /* gethrtime may appear as either cycle or nanosecond counter */ return (ulonglong)gethrtime(); -@@ -505,6 +512,8 @@ void my_timer_init(MY_TIMER_INFO *mti) { - mti->cycles.routine = MY_TIMER_ROUTINE_ASM_GCC_SPARC32; +@@ -491,6 +498,8 @@ void my_timer_init(MY_TIMER_INFO *mti) { + mti->cycles.routine = MY_TIMER_ROUTINE_ASM_GCC_SPARC64; #elif defined(__GNUC__) && defined(__aarch64__) mti->cycles.routine = MY_TIMER_ROUTINE_ASM_AARCH64; +#elif defined(__GNUC__) && defined(__s390__) diff --git a/SOURCES/rh-skipped-tests-list-arm.list b/SOURCES/rh-skipped-tests-list-arm.list new file mode 100644 index 0000000..d5a710f --- /dev/null +++ b/SOURCES/rh-skipped-tests-list-arm.list @@ -0,0 +1,32 @@ +gis.st_latitude : BUG#0 fails on F32+ +gis.st_longitude : BUG#0 fails on F32+ + +perfschema.func_file_io : BUG#0 missing hw on 32-bit arm +perfschema.global_read_lock : BUG#0 missing hw on 32-bit arm +perfschema.relaylog : BUG#0 missing hw on 32-bit arm +perfschema.setup_objects : BUG#0 missing hw on 32-bit arm + +clone.remote_error_basic : BUG#0 fails since 8.0.19 on F32+, max_allowed_packet is 0 + +clone.remote_dml_auto_tune : BUG#0 + +# Unstable +clone.local_dml_auto_tune : BUG#0 +innodb.innodb_bug-13628249 : BUG#0 +main.grant_dynamic_flush : BUG#0 +innodb.innodb_read_only : BUG#0 + +rpl_nogtid.rpl_mixed_mixing_engines : BUG#0 timeout after 1800 secs or armv7hl + +# 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 +perfschema.idx_session_account_connect_attrs : BUG#0 +perfschema.idx_session_connect_attrs : BUG#0 +rpl_gtid.rpl_mixed_temp_table_stored_function : BUG#0 +sysschema.pr_ps_setup_show_enabled : BUG#0 +perfschema.idx_threads : BUG#0 +sys_vars.myisam_data_pointer_size_func : BUG#0 +federated.federated_server : BUG#0 diff --git a/SOURCES/rh-skipped-tests-list-base.list b/SOURCES/rh-skipped-tests-list-base.list new file mode 100644 index 0000000..4e0a12e --- /dev/null +++ b/SOURCES/rh-skipped-tests-list-base.list @@ -0,0 +1,51 @@ +# Fails on all arches +main.subquery_sj_mat_bka_nobnl : BUG#0 failing since 8.0.24 on F32+ +main.derived_limit : BUG#0 failing since 8.0.24 on F32+ +main.explain_tree : BUG#0 failing since 8.0.24 on F32+ + +auth_sec.keyring_file_data_qa : BUG#0 failing on F32+ +innodb.alter_kill : BUG#0 failing on F34+ +main.mtr_unit_tests : BUG#0 failing on F35+ + +# Fails when -DENABLED_LOCAL_INFILE=ON +main.mysql_load_data_local_dir : BUG#0 failing on F32+ + +# Unstable +innodb.innodb_force_recovery : BUG#0 unstable since 8.0.24 on F32+ +clone.local_dml_auto_tune : BUG#0 unstable on x86_64 and i686 +perfschema.threads_mysql : BUG#0 unstable on x86_64 and i686 +rpl_gtid.rpl_multi_source_mtr_includes : BUG#0 unstable on x86_64 and i686 + +# 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 + +# Failing on C9S & RHEL 9 for MySQL release 8.0.27 +auth_sec.admin_channel_tls : BUG#0 +auth_sec.cipher_support : BUG#0 +auth_sec.openssl_cert_generation : BUG#0 +auth_sec.openssl_without_fips : BUG#0 +auth_sec.ssl_mode : BUG#0 +auth_sec.tls : BUG#0 +auth_sec.tls12_tls1 : BUG#0 +binlog.binlog_grant_alter_user : BUG#0 +main.grant_alter_user_qa : BUG#0 +main.grant_user_lock_qa : BUG#0 +main.openssl_1 : BUG#0 +main.ssl_cipher : BUG#0 +main.ssl_dynamic : BUG#0 +x.connection_openssl : BUG#0 +x.connection_openssl_unixsocket : BUG#0 +x.connection_tls_version : BUG#0 +main.slow_log : BUG#0 +main.ctype_unicode900_as_cs : BUG#0 + +# Failing consistently, but only on C9S ZUUL CI mock build +main.loaddata_special : BUG#0 + +# Failing on all arches since MySQL 8.0.28 +innodb.trigger_function_lock_compare : BUG#0 +# Failing only in i686 since MySQL 8.0.28 +main.index_merge_myisam : BUG#0 diff --git a/SOURCES/rh-skipped-tests-list-ppc.list b/SOURCES/rh-skipped-tests-list-ppc.list new file mode 100644 index 0000000..4386e9c --- /dev/null +++ b/SOURCES/rh-skipped-tests-list-ppc.list @@ -0,0 +1,9 @@ +# ppc64le +sys_vars.innodb_buffer_pool_size_basic : BUG#0 fails only on ppc64le on f32+ + +# Failing on RHEL 9 for MySQL release 8.0.27 +main.sp-threads : BUG#0 +main.dd_upgrade_error : BUG#0 +main.dd_upgrade_non_debug : BUG#0 +main.dd_upgrade_partition : BUG#0 +main.partition_prefixkey_upgrade : BUG#0 diff --git a/SOURCES/rh-skipped-tests-list-s390.list b/SOURCES/rh-skipped-tests-list-s390.list new file mode 100644 index 0000000..c477261 --- /dev/null +++ b/SOURCES/rh-skipped-tests-list-s390.list @@ -0,0 +1,36 @@ +# Fails since 8.0.21 +x.resource_groups : BUG#0 + +# Fails since 8.0.22 +main.subquery_bugs : BUG#0 + +# Fails since F32 Mass Rebuild +gis.geometry_class_attri_prop : BUG#0 +gis.geometry_property_function_issimple : BUG#0 +gis.gis_bugs_crashes : BUG#0 +gis.spatial_analysis_functions_buffer : BUG#0 +gis.spatial_analysis_functions_centroid : BUG#0 +gis.spatial_analysis_functions_distance : BUG#0 +gis.spatial_operators_intersection : BUG#0 +gis.spatial_operators_union : BUG#0 +gis.spatial_operators_symdifference : BUG#0 +gis.spatial_op_testingfunc_mix : BUG#0 +gis.spatial_utility_function_distance_sphere : BUG#0 +gis.spatial_utility_function_simplify : BUG#0 + +main.window_std_var : BUG#0 +main.window_std_var_optimized : BUG#0 +main.with_recursive : BUG#0 + +# Unstable +main.grant_dynamic_flush : BUG#0 + +# Failing on C9S & RHEL 9 for MySQL release 8.0.27 +gis.st_symdifference : BUG#0 +main.regular_expressions_utf-8 : BUG#0 +main.subquery_sj_dupsweed : BUG#0 +main.subquery_sj_dupsweed_bka : BUG#0 +main.subquery_sj_dupsweed_bka_nobnl : BUG#0 +main.subquery_sj_firstmatch : BUG#0 +main.subquery_sj_firstmatch_bka : BUG#0 +main.subquery_sj_firstmatch_bka_nobnl : BUG#0 diff --git a/SPECS/mysql.spec b/SPECS/mysql.spec index 9165d1d..94f3bfe 100644 --- a/SPECS/mysql.spec +++ b/SPECS/mysql.spec @@ -1,7 +1,3 @@ -# This is a fix for the https://fedoraproject.org/wiki/Changes/CMake_to_do_out-of-source_builds -# So the beaviour will be the same also in F31 nad F32 -%undefine __cmake_in_source_build - # Name of the package without any prefixes %global pkg_name %{name} %global pkgnamepatch mysql @@ -11,9 +7,15 @@ # --nocheck is not possible (e.g. in koji build) %{!?runselftest:%global runselftest 1} -# Set this to 1 to see which tests fail -%global check_testsuite 1 +# Set this to 1 to see which tests fail, but 0 on production ready build +%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.28 +# Set to 1 to force run the testsuite even if it was already tested in current version +%global force_run_testsuite 0 # Aditional SELinux rules %global require_mysql_selinux 1 @@ -72,8 +74,8 @@ %global sameevr %{?epoch:%{epoch}:}%{version}-%{release} Name: mysql -Version: 8.0.22 -Release: 7%{?with_debug:.debug}%{?dist} +Version: 8.0.28 +Release: 1%{?with_debug:.debug}%{?dist} Summary: MySQL client programs and shared libraries URL: http://www.mysql.com @@ -97,6 +99,11 @@ Source18: mysql@.service.in Source30: %{pkgnamepatch}.rpmlintrc # Configuration for server Source31: server.cnf.in +# 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 @@ -110,9 +117,10 @@ Patch5: %{pkgnamepatch}-paths.patch Patch51: %{pkgnamepatch}-chain-certs.patch Patch52: %{pkgnamepatch}-sharedir.patch Patch55: %{pkgnamepatch}-rpath.patch +Patch56: %{pkgnamepatch}-mtr.patch Patch75: %{pkgnamepatch}-arm32-timer.patch -Patch78: %{pkgnamepatch}-gcc11.patch Patch79: %{pkgnamepatch}-openssl3.patch +Patch80: %{pkgnamepatch}-fix-includes-robin-hood.patch # Patches taken from boost 1.59 Patch115: boost-1.58.0-pool.patch @@ -128,6 +136,7 @@ BuildRequires: lz4 BuildRequires: lz4-devel BuildRequires: mecab-devel BuildRequires: bison +BuildRequires: libcurl-devel BuildRequires: libzstd-devel %ifnarch aarch64 %{arm} s390 s390x BuildRequires: numactl-devel @@ -191,6 +200,8 @@ BuildRequires: perl(warnings) BuildRequires: systemd BuildRequires: make +# Since MySQL 8.0.28 +BuildRequires: libfido2-devel Requires: bash coreutils grep @@ -379,9 +390,10 @@ the MySQL sources. %patch51 -p1 %patch52 -p1 %patch55 -p1 +%patch56 -p1 %patch75 -p1 -%patch78 -p1 %patch79 -p1 +%patch80 -p1 # Patch Boost pushd boost/boost_$(echo %{boost_bundled_version}| tr . _) @@ -389,114 +401,22 @@ pushd boost/boost_$(echo %{boost_bundled_version}| tr . _) %patch125 -p1 popd -# Modify tests to pass on all archs -pushd mysql-test +# generate a list of tests that fail, but are not disabled by upstream +cat %{SOURCE50} | tee -a mysql-test/%{skiplist} -add_test () { - echo "$1" : BUG#0 "${@:2}" >> %{skiplist} -} - -touch %{skiplist} - -add_test auth_sec.keyring_file_data_qa failing for 8.0.22 -add_test innodb.alter_kill failing for 8.0.22 -add_test main.cast failing for 8.0.22 -add_test main.mysql_load_data_local_dir failing for 8.0.22 -add_test rpl.rpl_row_jsondiff_basic_nokey failing for 8.0.22 -add_test rpl.rpl_row_jsondiff_basic_pk failing for 8.0.22 -add_test rpl.rpl_show_slave_hosts failing for 8.0.22 - -%ifarch x86_64 -add_test rpl.rpl_xa_xplugin failing for 8.0.22 -add_test rpl.rpl_mix_missing_data_on_slave failing for 8.0.22 -add_test rpl.rpl_gtid_drop_mem_table failing for 8.0.22 +# disable some tests failing on different architectures +%ifarch %{arm} aarch64 +cat %{SOURCE51} | tee -a mysql-test/%{skiplist} %endif -%ifarch %arm aarch64 -add_test rpl_gtid.rpl_gtid_retrieve_last_trx_myisam failing for 8.0.22 -add_test rpl.rpl_ip_mix2 failing for 8.0.22 -add_test rpl.rpl_ipv4_as_ipv6 failing for 8.0.22 -add_test rpl.rpl_ipv6 failing for 8.0.22 -add_test rpl.rpl_mix_missing_data_on_slave failing for 8.0.22 -add_test rpl.rpl_msr_running_applier_prevents_switch_global_binlog_format failing for 8.0.22 -add_test rpl.rpl_multi_source_basic failing for 8.0.22 -add_test rpl.rpl_multi_source_perfschema failing for 8.0.22 -add_test rpl.rpl_multi_source_repository failing for 8.0.22 -add_test rpl.rpl_multi_source_slave_files failing for 8.0.22 -add_test rpl.rpl_multi_source_slave_start_stop failing for 8.0.22 -add_test rpl.rpl_perfschema_applier_status_by_coordinator failing for 8.0.22 -add_test rpl.rpl_perfschema_order_by failing for 8.0.22 -add_test rpl.rpl_slave_start_after_clone failing for 8.0.22 -add_test rpl.rpl_xa_survive_disconnect_table failing for 8.0.22 +%ifarch s390 s390x +cat %{SOURCE52} | tee -a mysql-test/%{skiplist} %endif -%ifarch s390x -add_test gis.geometry_class_attri_prop failing for 8.0.22 -add_test gis.geometry_property_function_issimple failing for 8.0.22 -add_test gis.gis_bugs_crashes failing for 8.0.22 -add_test gis.spatial_analysis_functions_buffer failing for 8.0.22 -add_test gis.spatial_analysis_functions_centroid failing for 8.0.22 -add_test gis.spatial_analysis_functions_distance failing for 8.0.22 -add_test gis.spatial_operators_intersection failing for 8.0.22 -add_test gis.spatial_op_testingfunc_mix failing for 8.0.22 -add_test gis.spatial_utility_function_distance_sphere failing for 8.0.22 -add_test gis.spatial_utility_function_simplify failing for 8.0.22 -add_test main.subquery_bugs failing for 8.0.22 -add_test main.window_std_var failing for 8.0.22 -add_test main.window_std_var_optimized failing for 8.0.22 -add_test main.with_recursive failing for 8.0.22 -add_test rpl.rpl_show_slave_hosts failing for 8.0.22 +%ifarch ppc ppc64 ppc64p7 ppc64le +cat %{SOURCE53} | tee -a mysql-test/%{skiplist} %endif -%ifarch %{ix86} -add_test collations.chinese failing for 8.0.22 -add_test main.ctype_unicode900_as_cs failing for 8.0.22 -add_test rpl_gtid.rpl_async_conn_failover_perfschema failing for 8.0.22 -add_test rpl_gtid.rpl_async_conn_failover_udf_check failing for 8.0.22 -add_test rpl_gtid.rpl_empty_multi_update failing for 8.0.22 -add_test rpl_gtid.rpl_gtid_purged_settable failing for 8.0.22 -add_test rpl_nogtid.rpl_semi_sync_shutdown_hang failing for 8.0.22 -add_test rpl_nogtid.rpl_sp_myisam failing for 8.0.22 -add_test rpl.rpl_gtid_drop_mem_table failing for 8.0.22 -add_test rpl.rpl_mix_missing_data_on_slave failing for 8.0.22 -add_test rpl.rpl_msr_running_applier_prevents_switch_global_binlog_format failing for 8.0.22 -add_test rpl.rpl_multi_source_basic failing for 8.0.22 -add_test rpl.rpl_multi_source_perfschema failing for 8.0.22 -add_test rpl.rpl_multi_source_repository failing for 8.0.22 -add_test rpl.rpl_multi_source_slave_files failing for 8.0.22 -add_test rpl.rpl_perfschema_applier_status_by_coordinator failing for 8.0.22 -add_test rpl.rpl_perfschema_order_by failing for 8.0.22 -add_test rpl.rpl_show_slave_hosts failing for 8.0.22 -add_test rpl.rpl_slave_start_after_clone failing for 8.0.22 -add_test rpl.rpl_xa_survive_disconnect_table failing for 8.0.22 -add_test rpl.rpl_xa_xplugin failing for 8.0.22 -%endif - -%ifarch %{power64} -add_test rpl_gtid.rpl_gtid_grant_as failing for 8.0.22 -add_test rpl_gtid.rpl_gtid_heartbeat_2slave failing for 8.0.22 -add_test rpl_gtid.rpl_gtid_mixed_row_create_drop_temporary_in_function_or_trigger failing for 8.0.22 -add_test rpl_gtid.rpl_gtid_row_mix_drop_table failing for 8.0.22 -add_test rpl_nogtid.rpl_change_master failing for 8.0.22 -add_test rpl_nogtid.rpl_invoked_features_myisam failing for 8.0.22 -add_test rpl_nogtid.rpl_mixed_implicit_commit_binlog failing for 8.0.22 -add_test rpl_nogtid.rpl_multi_source_slave_skip_counter failing for 8.0.22 -add_test rpl_nogtid.rpl_semi_sync_shutdown_hang failing for 8.0.22 -add_test rpl.rpl_gtid_drop_mem_table failing for 8.0.22 -add_test rpl.rpl_ipv6 failing for 8.0.22 -add_test rpl.rpl_mix_missing_data_on_slave failing for 8.0.22 -add_test rpl.rpl_msr_running_applier_prevents_switch_global_binlog_format failing for 8.0.22 -add_test rpl.rpl_multi_source_perfschema failing for 8.0.22 -add_test rpl.rpl_multi_source_repository failing for 8.0.22 -add_test rpl.rpl_multi_source_slave_start_stop failing for 8.0.22 -add_test rpl.rpl_perfschema_applier_status_by_coordinator failing for 8.0.22 -add_test rpl.rpl_slave_start_after_clone failing for 8.0.22 -add_test rpl.rpl_xa_survive_disconnect_table failing for 8.0.22 -%endif - -# mysql-test -popd - cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} \ %{SOURCE14} %{SOURCE15} %{SOURCE17} %{SOURCE18} %{SOURCE31} scripts @@ -559,6 +479,7 @@ cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} \ -DWITH_ROUTER=OFF \ -DWITH_SYSTEM_LIBS=ON \ -DWITH_MECAB=system \ + -DWITH_FIDO=system \ -DWITH_BOOST=boost \ -DREPRODUCIBLE_BUILD=OFF \ -DCMAKE_C_FLAGS="%{optflags}%{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ @@ -569,10 +490,14 @@ cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} \ -DTMPDIR=/var/tmp \ -DWITH_MYSQLD_LDFLAGS="%{build_ldflags}" \ -DCMAKE_C_LINK_FLAGS="%{build_ldflags}" \ - -DCMAKE_CXX_LINK_FLAGS="%{build_ldflags}" + -DCMAKE_CXX_LINK_FLAGS="%{build_ldflags}" \ + -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 -B %{_vpath_builddir} -LAH %cmake_build @@ -631,7 +556,7 @@ echo "%{_libdir}/mysql" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arc # and just create a symlink in /usr/sbin mv %{buildroot}%{_bindir}/mysqld %{buildroot}%{_libexecdir}/mysqld mkdir -p %{buildroot}%{_sbindir} -ln -s %{_libexecdir}/mysqld %{buildroot}%{_sbindir}/mysqld +ln -s ../libexec/mysqld %{buildroot}%{_sbindir}/mysqld %if %{with debug} mv %{buildroot}%{_bindir}/mysqld-debug %{buildroot}%{_libexecdir}/mysqld @@ -686,36 +611,64 @@ 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} +rm %{buildroot}%{_bindir}/{mysql_client_test,mysqlxtest,mysqltest_safe_process,zlib_decompress,mysql_keyring_encryption_test} rm -r %{buildroot}%{_datadir}/mysql-test %endif + + %check %if %{with test} %if %runselftest pushd %_vpath_builddir -make test VERBOSE=1 +# 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 -export MTR_BUILD_THREAD=%{__isa_bits} -./mtr %{?with_debug:--debug-server} \ - --mem --parallel=auto --force --retry=2 \ - --mysqld=--binlog-format=mixed \ - --suite-timeout=720 --testcase-timeout=30 \ - --report-unstable-tests --clean-vardir \ -%if %{check_testsuite} - --max-test-fail=0 || : -%else - --skip-test-list=%{skiplist} -%endif -rm -r var $(readlink var) +# 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 --mysqld=--binlog-format=mixed --max-test-fail=5 --report-unstable-tests --clean-vardir --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} + 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) + if [[ "%{last_tested_version}" != "%{version}" ]] || [[ %{force_run_testsuite} -ne 0 ]] + then + echo "running advanced testsuite" + perl ./mysql-test-run.pl $common_testsuite_arguments \ + %if %{ignore_testsuite_result} + --max-test-fail=9999 || : + %else + --skip-test-list=%{skiplist} + %endif + fi + + # There might be a dangling symlink left from the testing, remove it to not be installed + rm -r var $(readlink var) +) + popd popd + %endif %endif + + %pre 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 \ @@ -733,6 +686,8 @@ fi %postun server %systemd_postun_with_restart %{daemon_name}.service + + %if %{with client} %files %{_bindir}/mysql @@ -819,6 +774,7 @@ fi %{_bindir}/myisamlog %{_bindir}/myisampack %{_bindir}/my_print_defaults +%{_bindir}/mysql_migrate_keyring %{_bindir}/mysql_secure_installation %{_bindir}/mysql_ssl_rsa_setup %{_bindir}/mysql_tzinfo_to_sql @@ -844,10 +800,13 @@ fi %{_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/connection_control.so %{_libdir}/mysql/plugin/daemon_example.ini @@ -867,7 +826,9 @@ fi %{_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 @@ -922,6 +883,7 @@ fi %if %{with test} %files test %{_bindir}/mysql_client_test +%{_bindir}/mysql_keyring_encryption_test %{_bindir}/mysqltest %{_bindir}/mysqltest_safe_process %{_bindir}/mysqlxtest @@ -947,6 +909,7 @@ fi %{_libdir}/mysql/plugin/component_test_host_application_signal.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_system_variable_set.so %{_libdir}/mysql/plugin/component_test_pfs_notification.so %{_libdir}/mysql/plugin/component_test_pfs_resource_group.so %{_libdir}/mysql/plugin/component_test_status_var_service_int.so @@ -962,6 +925,7 @@ fi %{_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 @@ -992,6 +956,7 @@ fi %{_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 @@ -1011,6 +976,27 @@ fi %endif %changelog +* Wed Jan 05 2022 Lars Tangvald - 8.0.28-1 +- Update to MySQL 8.0.28 + +* Sun Oct 31 2021 Lars Tangvald - 8.0.27-1 +- Update to MySQL 8.0.27 + +* Tue Sep 21 2021 Lars Tangvald - 8.0.26-1 +- Update to MySQL 8.0.26 + +* Tue Sep 21 2021 Michal Schorm - 8.0.25-1 +- Update to MySQL 8.0.25 + +* Tue Sep 14 2021 Lars Tangvald - 8.0.24-1 +- Update to MySQL 8.0.24 +- Upstreamed patch: mysql-main-cast.patch + +* Tue Sep 14 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 + * Mon Aug 09 2021 Mohan Boddu - 8.0.22-7 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688