suite
This caused the skipped lists to be more spread out from the base
skipped list thus allowing us to run more tests on individual
architectures instead of skipping them for all.
older version of rpm in RHEL10 as it does not create the useradd and
groupadd %pre steps and they need to be provided using the
%sysusers_create_compat macro. This creates a need for a new
BuildRequires and the usage fo the %{sysusers_requires_compat} macro.
Since the %sysusers_create_compat macro expects a file to be present
during macro expansion we could either use a Source such as the one used
for the tmpfiles.d/mariadb.conf or cretae the file during macro
expansion. I chose the latter as it enables us to use %{dbdatadir} to
store the mariadb home directory and specify it to the config this way.
This also prompted a rewrite of the previous sysusers.d config as to not
duplicate the file content definitions. I am using the sysusers_contents
variable for this.
in RHEL10 is at version 10.44 and mariadb11.8.3 requires pcre 10.45
Also added a patch to source the pcre from a directory during the build
instead of downloading it using git as the builds do not have access to
the internet
Resolves: RHEL-119790
Related PR for `setup` RPM: https://src.fedoraproject.org/rpms/setup/pull-request/30
Reverts commit: 3577147
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".
After switching to a container image with bootc switch, systemd failed to start
MariaDB 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
MariaDB 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/
./mariadb11.8-server-11.8.2-3.fc43.x86_64.rpm/var/lib
./mariadb11.8-server-11.8.2-3.fc43.x86_64.rpm/var/lib/mysql
./mariadb11.8-server-11.8.2-3.fc43.x86_64.rpm/var/log
./mariadb11.8-server-11.8.2-3.fc43.x86_64.rpm/var/log/mariadb
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.
This commit fixes two issues:
1. A Fedora downstream one, since 11.6
(https://jira.mariadb.org/browse/MDEV-19210), MariaDB upstream use
environment files in their systemd service files to load environment
variables and pass the arguments '--wsrep-new-cluster' and
'--wsrep_start_position' when starting the daemon. The Fedora downstream
service file has been missing the variable for '--wsrep_start_position' since
it was added into MariaDB upstream in 10.1.15
(a6816995ee).
And this Fedora downstream commit adds those missing environment
variables and their arguments into the service files. After I tested
it, the recovery of failed nodes works.
2. A MariaDB upstream one, where the temporary 'wsrep' files have
incorrect SELinux policies set ('mysqld-db-t' instead of
'mysqld-run-t') because of their parent directories. This occurs
because their location is tied to the location of 'mysql.sock' in the
CMake files. As RPMs get built to have 'mysql.sock' in
'/var/lib/mysql' as opposed to inside '/run' like Debian or Arch, the
temporary files for the service could not actually be read by the
service during start-up, resulting in failure as no primary node was
ever created. Discussion with the MariaDB upstream
(https://jira.mariadb.org/browse/MDEV-37726) resulted in a patch that
separates the location of the socket file and the temporary
environment files into two CMake flags and allows for more flexible
building of the package. We use this patch temporarily until we
update to a version with it included.
to enable the ignoring of badfuncs for the relevant files and functions:
/usr/bin/resolveip:
- gethostbyname
- gethostbyaddr
- inet_aton
- inet_ntoa
/usr/lib*/mariadb/plugin/ha_sphinx.so:
- inet_addr
And thus enabling the rpminspect badfuncs test to pass without `verify`
outcomes.
as specified in this fedora change:
https://fedoraproject.org/wiki/Changes/DisableSTI
As STI is being deprecated and disabled in fedora 43, we are migrating
to tmt. For previous fedora releases (f41 and f42) STI test can still be
run as well as tmt tests. Therefore this change can be applied to the as
well.
This required changing the `tests.yml` to an fmf file called `main.fmf`.
I also had to add an exit, with the exit code being the number of the
failing tests, to the `runtest.sh` file.
Also the Makefile is no longer needed as tmt runs without it in this
format
I have also created a small script for the prepare phase, which checks
whether this is the distribution default mariadb package and if not gets
the packages name from the specfile name.
Removed the sourcing of `rhts-environment.sh` as it is not needed for the
tests.
Resolves: RHBZ#2382969
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.
have on fedora 43, 42 and 41 is compatible with mariadb at the moment,
therefore the mariadb-libfmt.patch is no longer needed as we can just
use the system fmt package. I have kept the infrastructure as it needs
to be used on rhel as rhel8 and rhel9 dont' have an fmt package and
rhel10s version is too old to be used with this version of mariadb.
as the mariadb upstream migrated the testsuite from
/usr/share/mysql-test to /usr/share/mariadb-test and changed the scripts
running the test suites to match the new directory. This change has been
discussed with the mariadb upstream and shouldn't break backwards
compatibilty of the package.
The MariaDB upstream use the unversioned name 'mariadb.conf'.
In Fedora downstream we swicthed to versioned package layout for MariaDB package,
and we also started to use the versioned mae for the sysusers.d configuration file.
This creates unnecessary divergence from the upstream, while not bringing any value.
In this commit we abandon versioned naming of the sysusers.d file,
as we found no benefit of it.
purpose and is supposed to a replacement for ha_federated.so
Upstream has opted to change the storage engine from federated to
federatedx as federated is no longer being developed by Oracle and
federatedx is a fork of it that is still being developed and maintained.
More information can be found here:
https://mariadb.com/kb/en/about-federatedx/
Disable the SBOM (software bill of materials).
This feature is currently intended only for upstream purposes.
Remove conflicting file parsec.so to avoid clash with MariaDB C Connector
added the missing bracket and removed the illegal . from the name and
replaced it with a _
This issue has been found after recieving a dnf error during
installation of the mariadb-server-galera package:
>>> Scriptlet output:
>>> Close parenthesis without matching open at line 15 of /var/lib/selinux/targeted/tmp/modules/200/mariadb-server-galera/cil
>>> libsemanage.semanage_load_files: Error while reading from file /var/lib/selinux/targeted/tmp/modules/200/mariadb-server-galera/cil. (No such file or directory).
>>> semodule: Failed!
and the subsequent call of `semodule -lfull | grep galera`
prints nothing and returns 1
The expected output for the installation is to go through normally
without the above mentioned error
And the expected output for `semodule -lfull | grep galera` is:
200 mariadb-server-galera cil
and the command returning 0
The 'mariadb-libs' sub-package contains the MariaDB client library.
However we don't build or use the 'mariadb-libs' sub-package anymore, since
the client library is shipped by the 'mariadb-connector-c' package instead.
This change was done between MariaDB 10.1 and 10.2, which is more than 7 years ago.
The right way would be to set this Obsolete inside the 'mariadb-connector-c'
package instead, but since it's such an acient artifact, I'll just drop it entirely.
This issue was found by RPMlint:
| mariadb11.8-common.noarch: W: obsolete-not-provided mariadb11.8-libs
rpmdeplint error:
mariadb-rocksdb-engine-3:10.11.13-8.fc43.x86_64 provides /usr/bin/sst_dump
which is also provided by rocksdb-tools-10.1.3-1.fc43.x86_64
- why the version of the bundled rocksdb provided by the mariadb-rocksdb-engine
subpackage is not specified inside the spec file and the info about where the
rough version of rocksdb can be found.
This file is already packed in 'mariadb-server-galera'.
Removing this file from the '-common' sub-package makes it identical both with
and without galera, wihch is necessary fixup for the previous commit, to keep
the '-common' sub-package 'noarch'
from the 'mariadb-server' to the 'mariadb-server-galera' sub-package,
as it is only used with the galera cluster and therefore it fits into
the '-server-galera' subpackage more.
This also means that the mariadb-server-galera subpackage can no longer be 'noarch'
as this .so file is located in the '%{_libdir}/mariadb/plugin', which is
an arch-specific directory.
More info about the wsrep_info plugin file:
https://mariadb.com/kb/en/wsrep_info-plugin/