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.
Related: RHEL-104250
as it is required by the server subpackage thus removing it when the
client subpackage is not being built will result in a build failure.
Related: RHEL-104250
-client subpackage as mysql_plugin is deprecated from version 5.7.11
and has been removed in version 8.0 therefore it is no longer provided
by upstream and it caused build failures when rm could not find it.
Related: RHEL-104250
Upstream release notes:
https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-5.html
I have ran the extended testsuite during builds on f40-f43 on all
architectures in 2 runs (that is 32 individual build logs parsed for the
upcoming statistics)
These are the statistics of the test results containing the number of
times a test has failed and its name, the tests that fail because of a
timeout are marked with `-- timed out`. Tests not marked with timeout
failed on asserts.
These tests are not added to the rh-skipped-test-lists-*.list.
The results are split into all architectures together:
12 rpl.rpl_eventlog_psi_memory
12 rpl.rpl_channel_creation_under_replica_load
12 innodb_fts.optimize_big
11 innodb_fts.bug_34846823 -- timed out
10 perfschema.system_events_plugin
8 rpl_gtid.mysqldump_bug33630199 -- timed out
8 perfschema.system_events_component
7 sys_vars.myisam_data_pointer_size_func -- timed out
7 rpl.rpl_parallel_ddl_myisam
7 rpl.rpl_parallel_ddl_innodb
7 parts.partition_reverse_scan_icp -- timed out
7 innodb.multi_value_basic -- timed out
7 innodb.lob_recovery -- timed out
7 federated.federated_server -- timed out
5 rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts
3 perfschema.transaction_nested_events
3 innodb_undo.undo_settings
2 x.connection_not_alive
2 perfschema.relaylog
The ppc64le architecture (since it had the most amount of failing tests
by far and the same tests were failing there almost every time):
8 rpl.rpl_eventlog_psi_memory
8 rpl_gtid.mysqldump_bug33630199 -- timed out
7 sys_vars.myisam_data_pointer_size_func -- timed out
7 rpl.rpl_parallel_ddl_myisam
7 rpl.rpl_parallel_ddl_innodb
7 rpl.rpl_channel_creation_under_replica_load
7 perfschema.system_events_plugin
7 parts.partition_reverse_scan_icp -- timed out
7 innodb.multi_value_basic -- timed out
7 innodb.lob_recovery -- timed out
7 innodb_fts.optimize_big
7 innodb_fts.bug_34846823 -- timed out
7 federated.federated_server -- timed out
6 perfschema.system_events_component
4 rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts
2 innodb_undo.undo_settings
And other architectures excluding ppc64le:
5 rpl.rpl_channel_creation_under_replica_load
5 innodb_fts.optimize_big
4 rpl.rpl_eventlog_psi_memory
4 innodb_fts.bug_34846823 -- timed out
3 perfschema.transaction_nested_events
3 perfschema.system_events_plugin
2 x.connection_not_alive
2 perfschema.system_events_component
2 perfschema.relaylog
1 rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts
1 innodb_undo.undo_settings
Related: RHEL-87738
The other occurences are functions that are called with various arguments through the SPECfile.
I tried to replace them too, but the resulting logic did not expanded correcly and resulted in
various FTI issues.
Related: RHEL-87738
Add "--mysqld=--skip-innodb-use-native-aio" option for running the testsuite in CentOS Stream / RHEL build system.
Remove the skipped auth_sec tests from the skipped tests list, they no longer exist.
Dependency 'perl(File::Compare)' added in order for the 'binlog.binlog_mysqlbinlog_linux' test to run.
Update the skipped tests lists regarding the 'main' suite.
Related: RHEL-63025
mysql8.4-test.x86_64: E: file-parent-ownership-mismatch Path "/usr/share/mysql-test/platform-specific-tests.list" owned by "root" is stored in directory owned by "mysql"
mysql8.4-server.x86_64: E: missing-dependency-to-logrotate for logrotate script /etc/logrotate.d/mysqld
"macro-in-comment"
Related: RHEL-63025
When
%attr(-,mysql,mysql) %{_datadir}/mysql-test
is used,the path, *and everything on it* is added
Only when prepended with '%dir', it won't added anything else than the directory itself
The mistake resulted in all files under
%attr(-,mysql,mysql) %{_datadir}/mysql-test
to be present in both subpackages 'mysql-test' and 'mysql-test-data'.
Explanation of the options per:
https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_MYSQL_TEST_RUN_PL.html
The MTR_MAX_PARALLEL environment variable, if set, specifies the maximum number
of parallel workers that can be spawned when the --parallel=auto option is specified.
If --parallel=auto is not specified, MTR_MAX_PARALLEL variable has no effect.
Explanation of the options per:
https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_MYSQL_TEST_RUN_PL.html
--port-base=P
The value may also be given with the environment variable MTR_PORT_BASE.
The variable MTR_PORT_BASE is a more logical replacement for the original variable MTR_BUILD_THREAD.
It gives the actual port number directly (will be rounded down to a multiple of 10).
If you use MTR_BUILD_THREAD, the port number is found by multiplying this by 10 and adding 10000.
Specify base of port numbers to be used; a block of 10 will be allocated. P should be divisible by 10;
if it is not, it will be rounded down. If running with more than one parallel test thread, thread 2
will use the next block of 10 and so on.
If the port number is given as auto, which is also the default,
mysql-test-run.pl will allocate a number unique to this host.
--port-base was added as a more logical alternative to --build-thread.
If both are used, --port-base takes precedence.
Explanation of the options per:
https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_MYSQL_TEST_RUN_PL.html
--max-test-fail=N
Stop execution after the specified number of tests have failed, to avoid
using up resources (and time) in case of massive failures. retries are not
counted. Defaults to 10, set to 0 for no limit.
--retry=N
If a test fails, it is retried up to a maximum of N runs, but will terminate
after 2 failures. Default is 3, set to 1 or 0 for no retries. This option has
no effect unless --force is also used; without it, test execution will terminate
after the first failure.
Small sub-package 'mysql-test' will remain architecture dependent
and will continue to carry all architecture dependent parts of the testsuite.
New huge sub-package 'mysql-test-data' will hold all of the
achitecture independent data and will be built as 'noarch'.
This will save over 1GB of redundant data per each package build.
Two reasons:
1) This license is included due to the Perl module 'Expect'. However I wasn't able to actually
locate it's sources in the MySQL source tarball. I believe it's a remnant of a code that was
removed in the past.
I've asked the MySQL upstream to verify my claim and either disprove it or fix the LICENSE
file in wihch they mention it.
For this reason I believe the 'GPL-1.0-or-later' also does not apply, so I'm removing it too.
I'll put the 'GPL-1.0-or-later' should upstream disprove my findings.
2) As per clarification on the Fedora License mailing list:
https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/message/LBAZXYBAA4YHJ2GEWEP5S7QXVOB76MUR/
"
If your package is licensed under a known choice of two licenses and
one is a "good" license and one is a "bad" license, then the License:
field must reflect the "good" license only. This is highly uncommon in
Fedora packages apart from the case of Perl modules dual licensed
under the GPL and the Artistic License 1.0. In that case you must pick
the appropriate identifier for the GPL side (which in Perl modules
will typically map to SPDX "GPL-1.0-or-later"). You are encouraged to
include a comment memorializing this, for example:
\# Upstream project is dual licensed GPL | Artistic 1.0
"
After discussion with change owner, I've prepared the correct solution.
There is a difference between Fedora and CentOS Stream 10 / RHEL 10:
- in CentOS Stream 10 / RHEL 10, the change is self-contained by the
'openssl-devel' package itself, which now defines OPENSSL_NO_ENGINE
in the headers so new application builds don't use engine at all
- in Fedora, the headers containing the OPENSSL_NO_ENGINE definition
are put into a separate sub-package 'openssl-devel-engine', instead
of being put into the 'openssl-devel'
mysql-c99.patch
- directory "plugin/innodb_memcached" no longer exists
boost-1.76.0-fix_multiprecision_issue_419-ppc64le.patch
- upstreamed
ExcludeArch: %{ix86}
- MySQL 8.4 is not supported on 32-bit architectures
%ifnarch aarch64 s390x
BuildRequires: libquadmath-devel
%endif
- sub-package of gcc
- Only available on some architectures
%{_bindir}/mysql_upgrade
- was deprecated in 8.0
- now no longer available
%global runselftest 0
- disable testsuite during development time,
takes ages to complete on s390x and produces random failures on ppc64le
- I've checked that the result is sane
- testsuite enabled
- testcase checking disabled, as it produces huge amount of errors before each test even begin
these errors seems to be fully non-deterministic (random)