Compare commits

...

24 Commits
a10 ... c10s

Author SHA1 Message Date
Michal Schorm
94bff62cd6 [2/2] Testsuite verification for 8.4.9
Adding the rest of skipped tests specific to C10S, RHEL 10 Konflux, or both.
2026-05-15 14:19:12 +02:00
Michal Schorm
b902c8209b [1/2] Testsuite verification for 8.4.9
Skip 8 InnoDB compressed table tests on s390x:
innodb.zlob_geom, innodb_zip.{4k,8k,bug52745,index_large_prefix,
index_large_prefix_4k,index_large_prefix_8k,prefix_index_liftedlimit}

Root cause: Bug#39129182 (in 8.0.46/8.4.9/9.7.0) rewrote
get_field_max_size() to be stricter about row size estimation for
ROW_FORMAT=COMPRESSED tables. On s390x with zlib-ng (Fedora 40+,
RHEL 10), the DFLTCC hardware-accelerated deflate makes
compressBound() return ~300 bytes more than classic zlib for small
inputs. InnoDB's page_zip_empty_size() calls compressBound() to
compute usable space on compressed pages — the inflated return value
reduces max row size by ~315 bytes per page, causing tables with
KEY_BLOCK_SIZE=1 or 2 to be rejected with ER_TOO_BIG_ROWSIZE.

compressBound formulas:
  classic zlib:   n + (n>>12) + (n>>14) + (n>>25) + 13
  DFLTCC zlib-ng: ((2308 + n*16) >> 3) + 18

For n=8 (typical column directory): 21 bytes vs 322 bytes.

Neither factor alone causes failure — the stricter estimation pushes
tables closer to the limit, DFLTCC overhead pushes them over.
x86_64 is unaffected (no DFLTCC). Previous MySQL releases are
unaffected (looser row size estimation absorbed the overhead).

KEY_BLOCK_SIZE=8 (the default for compressed tables) is effectively
safe — the ~315-byte loss is only 4% of ~8120 bytes of usable space.
2026-05-15 14:16:07 +02:00
Michal Schorm
bde8c91075 Rebase to 8.4.9
Upstream release notes:
  https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-9.html

Resolves: RHEL-170598
2026-05-13 02:30:50 +02:00
Michal Schorm
17687c7d06 [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
2026-02-24 13:20:21 +01:00
Michal Schorm
217fb53fc4 [tmpfiles.d] Fixup of the tmpfile.d rules
A comment is misisng a comment line prefix
2026-02-24 13:19:58 +01:00
Nikola Davidova
bdf88f920b 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
2026-02-24 13:19:48 +01:00
Lukas Javorsky
2d6d1bf1c4 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".
2026-02-24 13:19:18 +01:00
Michal Schorm
dcfa29f64f Rebase to 8.4.8
Release notes:
  https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-8.html

Resolves: RHEL-148486
2026-02-12 16:07:53 +01:00
Veronika Doubkova
95036b880d Skip tests that are failing on Konflux
Resolves: ROK-831
2025-12-09 14:12:43 +01:00
Michal Schorm
6df108e73d Rebase to MySQL 8.4.7
--

Testsuite results for the 8.4.7 release verified

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:
  8c22b5f6df
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.

--

Resolves: RHEL-128143
2025-11-20 09:04:12 +01:00
Vaclav Danek
93df896049 updated plans to handle multiple plans 2025-09-17 08:33:22 +02:00
Vaclav Danek
efe7783b29 fixed plan path 2025-09-17 08:09:45 +02:00
Vaclav Danek
df9905f8d5 updated gating 2025-09-16 22:39:51 +02:00
Pavol Sloboda
670b865cb2 [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-112386

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':
  96d58aa2b9/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.
2025-09-02 14:27:26 +02:00
Michal Schorm
a094014ba0 [Licenses] Review of the package licenses
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 <http://www.gnu.org/licenses>" \
        -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.

Related: RHEL-104250
2025-09-02 14:27:17 +02:00
Michal Schorm
b74fea14e5 [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.

Related: RHEL-104250
2025-09-02 14:27:13 +02:00
Pavol Sloboda
221864b470 Rebase to 8.4.6
Upstream release notes:
https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-6.html

Related: RHEL-104250
2025-09-02 14:27:10 +02:00
Michal Schorm
5501d7be55 [Fix for Fedora Change] Fix versioned layout macros
- cover both arch and noarch sub-packages
- add obsoletes against the older versions to the distribution default version

Related: RHEL-104250
2025-09-02 14:27:06 +02:00
Pavol Sloboda
509086ab6f Stopped removing the my_print_defaults when client is not built
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
2025-09-02 14:27:03 +02:00
Pavol Sloboda
70be037a81 Removed the mysql_plugin from the rm command when building without
-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
2025-09-02 14:26:50 +02:00
Pavol Sloboda
1c7250b943 Rebase to 8.4.5
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
2025-09-02 13:50:41 +02:00
Michal Schorm
ce7a3be1da Remove dependnecy on OpenSSL engines, which are deprecated in Fedora
Related: RHEL-87738
2025-09-02 13:50:37 +02:00
Michal Schorm
111a259568 [enhancement] Use %global instead of %define
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
2025-09-02 13:50:30 +02:00
Michal Schorm
92973eb3c4 Update the license clarification text to reflect the current state
Related: RHEL-87738
2025-09-02 13:49:22 +02:00
12 changed files with 158 additions and 101 deletions

View File

@ -3,7 +3,10 @@ that allow the client libraries to be linked with a non-GPL application,
so long as the application is under a license approved by Oracle. so long as the application is under a license approved by Oracle.
For details see For details see
http://www.mysql.com/about/legal/licensing/foss-exception/ 'The Universal FOSS Exception, Version 1.0':
https://oss.oracle.com/licenses/universal-foss-exception/
A predecessor of that license exception is now deprecated 'FOSS License Exception':
http://www.mysql.com/about/legal/licensing/foss-exception/
Some innobase code from Percona and Google is under BSD license. Some innobase code from Percona and Google is under BSD license.
Some code related to test-suite is under LGPLv2. Some code related to test-suite is under LGPLv2.

2
ci.fmf Normal file
View File

@ -0,0 +1,2 @@
resultsdb-testcase: separate

View File

@ -3,4 +3,4 @@ product_versions:
- rhel-10 - rhel-10
decision_context: osci_compose_gate decision_context: osci_compose_gate
rules: rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/rhel-gating.functional}

View File

@ -1,15 +0,0 @@
https://fedoraproject.org/wiki/Changes/OpensslDeprecateEngine
https://fedoraproject.org/wiki/Changes/OpensslNoEngine
--- mysql-8.4.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/network/xcom_network_provider_ssl_native_lib.cc 2024-04-10 08:26:28.000000000 +0200
+++ mysql-8.4.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/network/xcom_network_provider_ssl_native_lib.cc_patched 2024-07-18 18:33:26.237771364 +0200
@@ -50,7 +50,9 @@
#include "my_compiler.h"
#endif
+#if !defined(OPENSSL_NO_ENGINE)
#include "openssl/engine.h"
+#endif
#include "xcom/retry.h"
#include "xcom/task_debug.h"

View File

@ -3,32 +3,21 @@ Software Collections. Removing these hard-coded paths should fix it.
Upstream report: https://mariadb.atlassian.net/browse/MDEV-6485 Upstream report: https://mariadb.atlassian.net/browse/MDEV-6485
diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake diff -Naur mysql-8.4.6/cmake/install_layout.cmake mysql-8.4.6_patched/cmake/install_layout.cmake
index 9f7945d8..6734cdfd 100644 --- mysql-8.4.6/cmake/install_layout.cmake 2025-07-10 16:20:26.000000000 +0200
--- a/cmake/install_layout.cmake +++ mysql-8.4.6_patched/cmake/install_layout.cmake 2025-07-23 09:50:42.278223154 +0200
+++ b/cmake/install_layout.cmake @@ -202,6 +202,7 @@
@@ -105,7 +105,7 @@ IF(UNIX) ELSE()
" Choose between ${VALID_INSTALL_LAYOUTS}" ) SET(INSTALL_SBINDIR_RPM "sbin")
ENDIF()
- SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc"
+ SET(SYSCONFDIR "/etc"
CACHE PATH "config directory (for my.cnf)")
MARK_AS_ADVANCED(SYSCONFDIR)
ENDIF() 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") +SET(INSTALL_SYSCONFDIR_RPM "/etc")
# #
IF(CMAKE_SYSTEM_PROCESSOR IN_LIST KNOWN_64BIT_ARCHITECTURES) IF(CMAKE_SYSTEM_PROCESSOR IN_LIST KNOWN_64BIT_ARCHITECTURES)
SET(INSTALL_LIBDIR_RPM "lib64/mysql") SET(INSTALL_LIBDIR_RPM "lib64/mysql")
diff --git a/mysys/my_default.cc b/mysys/my_default.cc diff -Naur mysql-8.4.6/mysys/my_default.cc mysql-8.4.6_patched/mysys/my_default.cc
index 290f1666..8403425f 100644 --- mysql-8.4.6/mysys/my_default.cc 2025-07-10 16:20:26.000000000 +0200
--- a/mysys/my_default.cc +++ mysql-8.4.6_patched/mysys/my_default.cc 2025-07-23 09:52:21.494414633 +0200
+++ b/mysys/my_default.cc @@ -1693,12 +1693,12 @@
@@ -1570,12 +1570,12 @@ static const char **init_default_directories(MEM_ROOT *alloc) {
#else #else
@ -44,11 +33,10 @@ index 290f1666..8403425f 100644
#endif /* DEFAULT_SYSCONFDIR */ #endif /* DEFAULT_SYSCONFDIR */
#endif #endif
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt diff -Naur mysql-8.4.6/scripts/CMakeLists.txt mysql-8.4.6_patched/scripts/CMakeLists.txt
index 4149a764..b091d5e2 100644 --- mysql-8.4.6/scripts/CMakeLists.txt 2025-07-10 16:20:26.000000000 +0200
--- a/scripts/CMakeLists.txt +++ mysql-8.4.6_patched/scripts/CMakeLists.txt 2025-07-23 09:53:30.114124746 +0200
+++ b/scripts/CMakeLists.txt @@ -331,9 +331,9 @@
@@ -288,9 +288,9 @@ IF(UNIX)
ENDIF(UNIX) ENDIF(UNIX)
SET(prefix "${CMAKE_INSTALL_PREFIX}") SET(prefix "${CMAKE_INSTALL_PREFIX}")
@ -60,11 +48,10 @@ index 4149a764..b091d5e2 100644
SET(datadir ${prefix}/${INSTALL_MYSQLSHAREDIR}) SET(datadir ${prefix}/${INSTALL_MYSQLSHAREDIR})
SET(libsubdir ${INSTALL_LIBDIR}) SET(libsubdir ${INSTALL_LIBDIR})
SET(pkgincludedir ${prefix}/${INSTALL_INCLUDEDIR}) SET(pkgincludedir ${prefix}/${INSTALL_INCLUDEDIR})
diff --git a/scripts/mysqld_multi.pl.in b/scripts/mysqld_multi.pl.in diff -Naur mysql-8.4.6/scripts/mysqld_multi.pl.in mysql-8.4.6_patched/scripts/mysqld_multi.pl.in
index 84dd4d7c..50397ddd 100644 --- mysql-8.4.6/scripts/mysqld_multi.pl.in 2025-07-10 16:20:26.000000000 +0200
--- a/scripts/mysqld_multi.pl.in +++ mysql-8.4.6_patched/scripts/mysqld_multi.pl.in 2025-07-23 09:54:16.090991270 +0200
+++ b/scripts/mysqld_multi.pl.in @@ -587,9 +587,7 @@
@@ -586,9 +586,7 @@ sub list_defaults_files
my %seen; # Don't list the same file more than once my %seen; # Don't list the same file more than once
return grep { defined $_ and not $seen{$_}++ and -f $_ and -r $_ } return grep { defined $_ and not $seen{$_}++ and -f $_ and -r $_ }

View File

@ -1 +1,8 @@
d @PID_FILE_DIR@ 0755 mysql mysql - d @PID_FILE_DIR@ 0755 mysql mysql -
# Rules for ephemeral file systems (ImageMode)
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 -

View File

@ -2,8 +2,8 @@ ExcludeArch: %{ix86}
# Name of the package without any prefixes # Name of the package without any prefixes
%global majorname mysql %global majorname mysql
%global package_version 8.4.4 %global package_version 8.4.9
%define majorversion %(echo %{package_version} | cut -d'.' -f1-2 ) %global majorversion %(echo %{package_version} | cut -d'.' -f1-2 )
%global pkgnamepatch mysql %global pkgnamepatch mysql
@ -21,7 +21,7 @@ ExcludeArch: %{ix86}
# The last version on which the full testsuite has been run # 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 # In case of further rebuilds of that version, don't require full testsuite to be run
# run only "main" suite # run only "main" suite
%global last_tested_version 8.4.4 %global last_tested_version 8.4.9
# Set to 1 to force run the testsuite even if it was already tested in current version # Set to 1 to force run the testsuite even if it was already tested in current version
%global force_run_testsuite 0 %global force_run_testsuite 0
@ -104,13 +104,13 @@ ExcludeArch: %{ix86}
Name: %{majorname}%{majorversion} Name: %{majorname}%{majorversion}
Version: %{package_version} Version: %{package_version}
Release: 2%{?with_debug:.debug}%{?dist} Release: 1%{?with_debug:.debug}%{?dist}
Summary: MySQL client programs and shared libraries Summary: MySQL client programs and shared libraries
URL: http://www.mysql.com URL: http://www.mysql.com
# Exceptions allow client libraries to be linked with most open source SW, # The the `Universal-FOSS-exception-1.0` exception allow client libraries to be linked with most open source SW, not only GPL code.
# not only GPL code. See README.mysql-license # 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-or-later AND LGPL-2.1-only AND BSL-1.0 AND BSD-2-Clause 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 Source0: https://cdn.mysql.com/Downloads/MySQL-8.4/mysql-%{version}.tar.gz
Source2: mysql_config_multilib.sh Source2: mysql_config_multilib.sh
@ -145,7 +145,6 @@ Patch5: %{pkgnamepatch}-paths.patch
Patch51: %{pkgnamepatch}-sharedir.patch Patch51: %{pkgnamepatch}-sharedir.patch
Patch52: %{pkgnamepatch}-rpath.patch Patch52: %{pkgnamepatch}-rpath.patch
Patch56: %{pkgnamepatch}-flush-logrotate.patch Patch56: %{pkgnamepatch}-flush-logrotate.patch
Patch57: %{pkgnamepatch}-openssl-engine.patch
# Patches taken from boost 1.59 # Patches taken from boost 1.59
Patch112: boost-1.57.0-mpl-print.patch Patch112: boost-1.57.0-mpl-print.patch
@ -176,10 +175,6 @@ BuildRequires: libquadmath-devel
%endif %endif
BuildRequires: openssl BuildRequires: openssl
BuildRequires: openssl-devel BuildRequires: openssl-devel
%if 0%{?fedora} >= 41
# Complement of mysql-openssl-engine.patch
BuildRequires: openssl-devel-engine
%endif
BuildRequires: perl-interpreter BuildRequires: perl-interpreter
BuildRequires: perl-generators BuildRequires: perl-generators
@ -256,9 +251,9 @@ Provides: bundled(rapidjson)
# https://github.com/martinus/unordered_dense # https://github.com/martinus/unordered_dense
Provides: bundled(unordered_dense) Provides: bundled(unordered_dense)
%{?with_conflicts_mariadb:Conflicts: mariadb} %{?with_conflicts_mariadb:Conflicts: mariadb-any}
# Explicitly disallow installation of mysql + mariadb-server # 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 = %community_mysql_version}
%{?with_provides_community_mysql:Provides: community-mysql%{?_isa} = %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} %{?with_obsoletes_community_mysql:Obsoletes: community-mysql <= %obsolete_community_mysql_version}
@ -270,20 +265,32 @@ Conflicts: %{majorname}%{?1:-%{1}}-any\
# Provide also mysqlX.X if default # Provide also mysqlX.X if default
%if %?mysql_default %if %?mysql_default
%define mysqlX_if_default() %{expand:\ %define mysqlX_if_default_arched() %{expand:\
Obsoletes: mysql%{?1:-%{1}} < %{sameevr}\
Obsoletes: mysql%{majorversion}%{?1:-%{1}} < %{sameevr}\
Provides: mysql%{majorversion}%{?1:-%{1}} = %{sameevr}\ Provides: mysql%{majorversion}%{?1:-%{1}} = %{sameevr}\
Provides: mysql%{majorversion}%{?1:-%{1}}%{?_isa} = %{sameevr}\ Provides: mysql%{majorversion}%{?1:-%{1}}%{?_isa} = %{sameevr}\
} }
%define mysqlX_if_default_noarch() %{expand:\
Obsoletes: mysql%{?1:-%{1}} < %{sameevr}\
Obsoletes: mysql%{majorversion}%{?1:-%{1}} < %{sameevr}\
Provides: mysql%{majorversion}%{?1:-%{1}} = %{sameevr}\
}
%else %else
%define mysqlX_if_default() %{nil} %define mysqlX_if_default_arched() %{nil}
%define mysqlX_if_default_noarch() %{nil}
%endif %endif
%define add_metadata() %{expand:\ %define add_metadata_arched() %{expand:\
%conflict_with_other_streams %{**}\ %conflict_with_other_streams %{**}\
%mysqlX_if_default %{**}\ %mysqlX_if_default_arched %{**}\
}
%define add_metadata_noarch() %{expand:\
%conflict_with_other_streams %{**}\
%mysqlX_if_default_noarch %{**}\
} }
%add_metadata %add_metadata_arched
%description %description
MySQL is a multi-user, multi-threaded SQL database server. MySQL is a MySQL is a multi-user, multi-threaded SQL database server. MySQL is a
@ -307,7 +314,7 @@ Requires: %{pkgname}-common = %{sameevr}
%{?with_provides_community_mysql:Provides: community-mysql-libs%{?_isa}= %community_mysql_version} %{?with_provides_community_mysql:Provides: community-mysql-libs%{?_isa}= %community_mysql_version}
%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-libs <= %obsolete_community_mysql_version} %{?with_obsoletes_community_mysql:Obsoletes: community-mysql-libs <= %obsolete_community_mysql_version}
%add_metadata libs %add_metadata_arched libs
%description -n %{pkgname}-libs %description -n %{pkgname}-libs
The mysql-libs package provides the essential shared libraries for any The mysql-libs package provides the essential shared libraries for any
@ -324,7 +331,7 @@ Summary: The config files required by server and client
%{?with_provides_community_mysql:Provides: community-mysql-config%{?_isa} = %community_mysql_version} %{?with_provides_community_mysql:Provides: community-mysql-config%{?_isa} = %community_mysql_version}
%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-config <= %obsolete_community_mysql_version} %{?with_obsoletes_community_mysql:Obsoletes: community-mysql-config <= %obsolete_community_mysql_version}
%add_metadata config %add_metadata_arched config
%description -n %{pkgname}-config %description -n %{pkgname}-config
The package provides the config file my.cnf and my.cnf.d directory used by any The package provides the config file my.cnf and my.cnf.d directory used by any
@ -347,7 +354,7 @@ Requires: %{_sysconfdir}/my.cnf
%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-common <= %obsolete_community_mysql_version} %{?with_obsoletes_community_mysql:Obsoletes: community-mysql-common <= %obsolete_community_mysql_version}
# As this package is noarch, it can't use the %%{?_isa} RPM macro # As this package is noarch, it can't use the %%{?_isa} RPM macro
%conflict_with_other_streams common %add_metadata_noarch common
%description -n %{pkgname}-common %description -n %{pkgname}-common
The mysql-common package provides the essential shared files for any The mysql-common package provides the essential shared files for any
@ -365,7 +372,7 @@ Requires: %{pkgname}-common = %{sameevr}
%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-errmsg <= %obsolete_community_mysql_version} %{?with_obsoletes_community_mysql:Obsoletes: community-mysql-errmsg <= %obsolete_community_mysql_version}
# As this package is noarch, it can't use the %%{?_isa} RPM macro # As this package is noarch, it can't use the %%{?_isa} RPM macro
%conflict_with_other_streams errmsg %add_metadata_noarch errmsg
%description -n %{pkgname}-errmsg %description -n %{pkgname}-errmsg
The package provides error messages files for the MySQL daemon The package provides error messages files for the MySQL daemon
@ -405,16 +412,16 @@ Requires: (mysql-selinux if selinux-policy-targeted)
Suggests: logrotate Suggests: logrotate
%{?with_conflicts_mariadb:Conflicts: mariadb-server} %{?with_conflicts_mariadb:Conflicts: mariadb-server-any}
%{?with_conflicts_mariadb:Conflicts: mariadb-server-utils} %{?with_conflicts_mariadb:Conflicts: mariadb-server-utils-any}
%{?with_conflicts_mariadb:Conflicts: mariadb-server-galera} %{?with_conflicts_mariadb:Conflicts: mariadb-server-galera-any}
# Explicitly disallow installation of mysql + mariadb-server # 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 = %community_mysql_version}
%{?with_provides_community_mysql:Provides: community-mysql-server%{?_isa} = %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} %{?with_obsoletes_community_mysql:Obsoletes: community-mysql-server <= %obsolete_community_mysql_version}
%add_metadata server %add_metadata_arched server
%description -n %{pkgname}-server %description -n %{pkgname}-server
MySQL is a multi-user, multi-threaded SQL database server. MySQL is a MySQL is a multi-user, multi-threaded SQL database server. MySQL is a
@ -430,13 +437,13 @@ Summary: Files for development of MySQL applications
Requires: openssl-devel Requires: openssl-devel
Requires: zlib-devel Requires: zlib-devel
Requires: libzstd-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_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 = %community_mysql_version}
%{?with_provides_community_mysql:Provides: community-mysql-devel%{?_isa} = %community_mysql_version} %{?with_provides_community_mysql:Provides: community-mysql-devel%{?_isa} = %community_mysql_version}
%{?with_obsoletes_community_mysql:Obsoletes: community-mysql-devel <= %obsolete_community_mysql_version} %{?with_obsoletes_community_mysql:Obsoletes: community-mysql-devel <= %obsolete_community_mysql_version}
%add_metadata devel %add_metadata_arched devel
%description -n %{pkgname}-devel %description -n %{pkgname}-devel
MySQL is a multi-user, multi-threaded SQL database server. This MySQL is a multi-user, multi-threaded SQL database server. This
@ -473,12 +480,12 @@ Requires: perl(Test::More)
Requires: perl(Time::HiRes) Requires: perl(Time::HiRes)
Requires: perl(File::Compare) 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 = %community_mysql_version}
%{?with_provides_community_mysql:Provides: community-mysql-test%{?_isa} = %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} %{?with_obsoletes_community_mysql:Obsoletes: community-mysql-test <= %obsolete_community_mysql_version}
%add_metadata test %add_metadata_arched test
%description -n %{pkgname}-test %description -n %{pkgname}-test
MySQL is a multi-user, multi-threaded SQL database server. This MySQL is a multi-user, multi-threaded SQL database server. This
@ -491,7 +498,7 @@ BuildArch: noarch
Requires: %{pkgname}-test = %{sameevr} Requires: %{pkgname}-test = %{sameevr}
# As this package is noarch, it can't use the %%{?_isa} RPM macro # As this package is noarch, it can't use the %%{?_isa} RPM macro
%conflict_with_other_streams test-data %add_metadata_noarch test-data
%description -n %{pkgname}-test-data %description -n %{pkgname}-test-data
MySQL is a multi-user, multi-threaded SQL database server. This MySQL is a multi-user, multi-threaded SQL database server. This
@ -509,7 +516,6 @@ regression test suite distributed with the MySQL sources.
%patch -P51 -p1 %patch -P51 -p1
%patch -P52 -p1 %patch -P52 -p1
%patch -P56 -p1 %patch -P56 -p1
%patch -P57 -p1
# Patch Boost # Patch Boost
pushd extra/boost/boost_$(echo %{boost_bundled_version}| tr . _) pushd extra/boost/boost_$(echo %{boost_bundled_version}| tr . _)
@ -668,6 +674,13 @@ 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 install -D -p -m 0644 %{_vpath_builddir}/scripts/mysql.tmpfiles.d %{buildroot}%{_tmpfilesdir}/%{daemon_name}.conf
rm -r %{buildroot}%{_tmpfilesdir}/mysql.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 27 'MariaDB and MySQL Server' %{dbdatadir} -
EOF
# helper scripts for service starting # helper scripts for service starting
install -D -p -m 755 %{_vpath_builddir}/scripts/mysql-prepare-db-dir %{buildroot}%{_libexecdir}/mysql-prepare-db-dir install -D -p -m 755 %{_vpath_builddir}/scripts/mysql-prepare-db-dir %{buildroot}%{_libexecdir}/mysql-prepare-db-dir
install -p -m 755 %{_vpath_builddir}/scripts/mysql-wait-stop %{buildroot}%{_libexecdir}/mysql-wait-stop install -p -m 755 %{_vpath_builddir}/scripts/mysql-wait-stop %{buildroot}%{_libexecdir}/mysql-wait-stop
@ -722,11 +735,11 @@ rm %{buildroot}%{_mandir}/man1/mysql_config.1*
%if ! %{with client} %if ! %{with client}
rm %{buildroot}%{_bindir}/{mysql,mysql_config_editor,\ rm %{buildroot}%{_bindir}/{mysql,mysql_config_editor,\
mysql_plugin,mysqladmin,mysqlbinlog,\ mysqladmin,mysqlbinlog,\
mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,my_print_defaults} mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}
rm %{buildroot}%{_mandir}/man1/{mysql,mysql_config_editor,\ rm %{buildroot}%{_mandir}/man1/{mysql,mysql_config_editor,\
mysql_plugin,mysqladmin,mysqlbinlog,\ mysqladmin,mysqlbinlog,\
mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,my_print_defaults}.1* mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}.1*
%endif %endif
%if %{with config} %if %{with config}
@ -812,9 +825,6 @@ popd
%post -n %{pkgname}-server %post -n %{pkgname}-server
%systemd_post %{daemon_name}.service %systemd_post %{daemon_name}.service
if [ ! -e "%{logfile}" -a ! -h "%{logfile}" ] ; then
install /dev/null -m0640 -omysql -gmysql "%{logfile}"
fi
%preun -n %{pkgname}-server %preun -n %{pkgname}-server
%systemd_preun %{daemon_name}.service %systemd_preun %{daemon_name}.service
@ -990,12 +1000,15 @@ fi
%{_libexecdir}/mysql-scripts-common %{_libexecdir}/mysql-scripts-common
%{_tmpfilesdir}/%{daemon_name}.conf %{_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(0755,mysql,mysql) %dir %{dbdatadir}
%attr(0750,mysql,mysql) %dir %{_localstatedir}/lib/mysql-files %attr(0750,mysql,mysql) %dir %{_localstatedir}/lib/mysql-files
%attr(0700,mysql,mysql) %dir %{_localstatedir}/lib/mysql-keyring %attr(0700,mysql,mysql) %dir %{_localstatedir}/lib/mysql-keyring
%attr(0755,mysql,mysql) %dir %{pidfiledir} %attr(0755,mysql,mysql) %dir %{pidfiledir}
%attr(0750,mysql,mysql) %dir %{logfiledir} %attr(0750,mysql,mysql) %dir %{logfiledir}
%attr(0640,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{logfile}
%config(noreplace) %{logrotateddir}/%{daemon_name} %config(noreplace) %{logrotateddir}/%{daemon_name}
%if %{with devel} %if %{with devel}
@ -1060,6 +1073,8 @@ fi
%{_libdir}/mysql/plugin/component_test_sensitive_system_variables.so %{_libdir}/mysql/plugin/component_test_sensitive_system_variables.so
%{_libdir}/mysql/plugin/component_test_server_telemetry_metrics.so %{_libdir}/mysql/plugin/component_test_server_telemetry_metrics.so
%{_libdir}/mysql/plugin/component_test_server_telemetry_traces.so %{_libdir}/mysql/plugin/component_test_server_telemetry_traces.so
%{_libdir}/mysql/plugin/component_test_server_telemetry_logs_client.so
%{_libdir}/mysql/plugin/component_test_server_telemetry_logs_export.so
%{_libdir}/mysql/plugin/component_test_status_var_reader.so %{_libdir}/mysql/plugin/component_test_status_var_reader.so
%{_libdir}/mysql/plugin/component_test_status_var_service_int.so %{_libdir}/mysql/plugin/component_test_status_var_service_int.so
%{_libdir}/mysql/plugin/component_test_status_var_service_reg_only.so %{_libdir}/mysql/plugin/component_test_status_var_service_reg_only.so
@ -1131,6 +1146,28 @@ fi
%endif %endif
%changelog %changelog
* Wed May 06 2026 Michal Schorm <mschorm@redhat.com> - 8.4.9-1
- Rebase to 8.4.9
* Tue Feb 24 2026 Lukas Javorsky <ljavorsk@redhat.com> - 8.4.8-2
- Revert to soft static allocation of MariaDB and MySQL sysusers.d files
* Fri Jan 23 2026 Michal Schorm <mschorm@redhat.com> - 8.4.8-1
- Rebase to 8.4.8
* Tue Dec 09 2025 Veronika Doubkova <vdoubkov@redhat.com> - 8.4.7-2
- Skip tests that are failing on Konflux
- Resolves: ROK-831
* Thu Oct 30 2025 Pavol Sloboda <psloboda@redhat.com> - 8.4.7-1
- Rebase to 8.4.7
* Thu Jul 24 2025 Pavol Sloboda <psloboda@redhat.com> - 8.4.6-1
- Rebase to 8.4.6
* Mon Apr 28 2025 Pavol Sloboda <psloboda@redhat.com> - 8.4.5-1
- Rebase to 8.4.5
* Fri Feb 14 2025 Michal Schorm <mschorm@redhat.com> - 8.4.4-2 * Fri Feb 14 2025 Michal Schorm <mschorm@redhat.com> - 8.4.4-2
- Rebuilt - Rebuilt

10
plans.fmf Normal file
View File

@ -0,0 +1,10 @@
/rhel-gating:
plan:
import:
url: https://pkgs.devel.redhat.com/git/tests/mysql
name: /plans/versioned/mysql84/gating
/rhel-no-gating:
plan:
import:
url: https://pkgs.devel.redhat.com/git/tests/mysql
name: /plans/versioned/mysql84/no-gating

View File

@ -1,10 +0,0 @@
summary: Internal Tier1 tests plan
discover:
how: fmf
filter: 'tier: 1'
url: https://pkgs.devel.redhat.com/git/tests/mysql
execute:
how: tmt
adjust:
enabled: false
when: distro == centos-stream or distro == fedora

View File

@ -32,3 +32,17 @@ main.subquery_sj_mat_bka_nobnl : BUG#0
gis.spatial_analysis_functions_centroid : BUG#0 gis.spatial_analysis_functions_centroid : BUG#0
perfschema.transaction_nested_events : BUG#0 perfschema.transaction_nested_events : BUG#0
rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts : BUG#0 rpl_gtid.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts : BUG#0
# Failing on Konflux
main.basedir : BUG#0
main.grant_user_lock : BUG#0
main.loaddata_special : BUG#0
# Failing since 8.4.9 on RHEL 10 Konflux but passing in C10S
auth_sec.atomic_rename_user : BUG#0
connection_control.performance_schema_processlist : BUG#0
perfschema.threads_innodb : BUG#0
perfschema.system_events_component : BUG#0
perfschema.system_events_plugin : BUG#0
perfschema.threads_innodb : BUG#0
sys_vars.myisam_data_pointer_size_func : BUG#0

View File

@ -11,3 +11,25 @@ test_services.test_event_tracking_consumer : BUG#0
# Fails since MySQL 8.4.4 # Fails since MySQL 8.4.4
perfschema.threads_innodb : BUG#0 perfschema.threads_innodb : BUG#0
# Fails since 8.0.46 / 8.4.9 / 9.7.0 on s390x
# Bug#39129182 tightened InnoDB row size estimation in get_field_max_size().
# Combined with zlib-ng DFLTCC compressBound() overhead on s390x,
# compressed tables with small KEY_BLOCK_SIZE exceed row size limits.
innodb.zlob_geom : BUG#0
innodb_zip.4k : BUG#0
innodb_zip.8k : BUG#0
innodb_zip.bug52745 : BUG#0
innodb_zip.index_large_prefix : BUG#0
innodb_zip.index_large_prefix_4k : BUG#0
innodb_zip.index_large_prefix_8k : BUG#0
innodb_zip.prefix_index_liftedlimit : BUG#0
# Failing on both C10S and RHEL 10 Konflux since 8.4.9
perfschema.error_log : BUG#0
# Failing since 8.4.9 on RHEL 10 Konflux but passing in C10S
innodb_fts.optimize_big : BUG#0
rpl.rpl_parallel_ddl_innodb : BUG#0
rpl.rpl_parallel_ddl_myisam : BUG#0
rpl.rpl_semi_sync_turn_on_off_optimize_for_static_plugin_config : BUG#0

View File

@ -1 +1 @@
SHA512 (mysql-8.4.4.tar.gz) = 21f4d8162f57f63a589e3e5e140f89a8cc61f4c55a77dce4601e76192eb3d3fbeaf3bfb78f91345c517ad36bf4267f33202693cfc24812841c517a24fffcfd12 SHA512 (mysql-8.4.9.tar.gz) = bae8aba6ba921f96799063f6c10f9f02030276f802e74a8b80f2df34e56b0d4501a1c9a9f818529cb70ec700a8f11aedf7fa645fa5db8550f51291759e6a25ad