On FreeBSD, perl isn't in /usr/bin, its in /usr/local/bin or
elsewhere in the path.
Like storage/{maria/unittest/,}ma_test_* , we use /usr/bin/env to
find perl and run it.
Replace all references to /usr/sbin/mysqld (and bin and libexec) with
mariadbd, so that the binary server will always be 'mariadbd'.
Also update all places that reference the server binary in other ways,
such as AppArmor profiles and scripts that previously expected to find
a 'mysqld' in process lists.
To install Spider one can simply drop a /etc/mysql/conf.d/spider.cnf like
[mariadb]
plugin-load-add=ha_spider.so
This is automatically generated and installed when plugin is correctly
registered to plugin.cmake with its own component name. Many other plugins
such as Connect and RocksDB install in the same way.
This solved MDEV-19917 as the mere adding and removing of spider.cnf
automatically installs and uninstalls it.
Remove the overly complex and uncecessary install.sql from Spider,
if should not be needed in modern times anymore.
With this change there is no need for a uninstall.sql either.
- Recommend max_allowed_packet=1G which is the same as the default client
value.
- Remove thread_concurrency removed in 10.5.
- Remove query cache, not recommended practice anymore.
- Remove binlog_*, should not recommend those too easily but rather require
the database administrator to read up on those themselves.
- Remove chroot setting, not relevant in modern container era.
- Show explicitly innodb_buffer_pool_size example as the most likely thing
a database administrator should change.
- Don't recommend rate limiting in slow log, logging once in a 1000
would not be optimal for the basic case, hence bad example.
- Install the example configs in /usr/share/mysql.
- Use correct path /run/ instead of /var/run/.
Split the big my.cnf into multiple smaller files with the same filenames
and contents as official Debian/Ubuntu packaging has.
The config contents stays the same apart from following additions
which the original MariaDB upstream configs had and probably needs
to be kept:
- lc-messages=en_US and skip-external-locking in server config
Configs the original MariaDB upstream had that are seemingly
unnecessary and thus removed:
- port=3306 removed from the client config
- log_warnings=2 removed from server config
Also adopt update-alternatives system using
mysql-common/configure-symlinks. This way it is aligned with
downstream Debian/Ubuntu packaging.
There is a 4 MB hard limit on Travis-CI and build output needs to be less
than that. Silencing the 'make install' step gets rid of a lot of
"Installing.." and "Missing.." and removing all mysql-test files will
make the dh_missing warnings much shorter.
Cherry-picked from 41952c85f1.
The buildbot.askmonty.org has explicit tests that check that this file
exists, thus to get tests pass, an empty placeholder must be created.
Remove this once CI has been updated not to expect this file.
We can't expect that users want to always convert their mysqld_safe
settings on an upgrade. In its current form it will always run, and that
seems unnecessary on every single installation.
Also the script is buggy, leaks mysqld_safe output into the written file
and since it gets syntax errors the whole mariadb.service will fail to
work.
These do now show up automatically due to init and systemd customizations,
so the handiest fix is to add them manually. This has been the praxis
in downstream MariaDB packaging for a couple years now, and works fine.
- Ensure service is loaded and started after installation,
(fixes service start issues in Debian/Ubuntu upgrades where
otherwise service mysql status stayed stopped)
- Ensure service stopped before removal/purge
(fixes unstopped processes detected by piuparts)
- Ensure systemd daemon is reloaded after removal/purge when service
has been removed
Partially reverts commit a4cc6fb91f.
While all current versions of Linux have systemd, support for traditional
init.d is still needed e.g. on Linux subsystem on Windows, kFreeBSD and
special variants of Debian/Ubuntu that for other reasons don't have
systemd.
Thus, re-introduce the init file that was remove, but this time with
then name 'mariadb'.
Supporting traditional sysv init in paraller with systemd is easy, since
Debian has facilities for it.
Also simplify and update salsa-ci.yml install/upgrade testing works
for all previous MariaDB and MySQL releases without any excess quirks.
Note that in fresh installs the salsa-ci.yml needs to run command
'service mariadb status' to control the service, while on upgrades
it is enough to run 'service mysql status', since the init.d/mysql
file is left behind from previous install, along with some other
config files such as /etc/default/mysql and /etc/mysql/* stuff.
Originally added in cc08c134f7 in 2015
for backwards compatibility with old packages.
It no longer makes much sense in providing mysql-* packages since the
virtual-mysql-* packages paradign has been in effect since 2016 and
all current MySQL installs should already follow the virtual-mysql-*
paradigm controlled by https://tracker.debian.org/pkg/mysql-defaults.
- Include binary wsrep_sst_rsync_wan previously omitted.
- Don't build the embedded server. This saves a lot of time and
around 500 MB of disk space.
- Clean away unused override_dh_installcron. The package does not
have any *.cron files, so this section is not needed.
- Make mariadb-server run time depend on procps so pgrep works.
The command pgrep is used in the maintainer scripts of mariadb-server,
thus we should ensure it is found on the system.
- Include build plugin func_test.so in test package. Don't include yet
type_test.so since it fails (MDEV-22243).
- Clean away obsolete Lintian overrides.
This was partially already done in 9e1b3af4a4
as the symlink mysqlreport pointed to mariadb-report. There just was no
script with that name, so this rename complements it and now both
mariadb-report and mysqlreport work again.
Likewise to TokuDB and Cassandra, if this plugin is maintained it should
be either fully enabled or not present at all. Packaging can be recovered
from MariaDB 10.2 if needed, or if build outside of this packaging, then
also the packaging scripts and snippets should be injected from the
outside.
Cassandra has deprecated their Thrift interface years ago (a few months
after Cassandra SE was released). The new way to access Cassandra is to
use the CQL Connector, which does not use Thrift.
There have been talks to make a CassandraSE V2 but no usable code have
been produced. The motivation to keep CassandraSE in the MariaDB source
code is to have it as an example for such future attempts.
It can stay in the source code but it should be removed from packaging
to avoid Debian packaging maintenance work around trying to compile it
and have tests pass on new platform.
If somebody wants Cassandra, they can use the 10.4 branch.
It was already disabled in 1589cf1cb3 but
turns out that as long as the packaging is there, is requires maintenance,
ensuring it still builds, debugging failing tests etc and that takes its
toll and is not worth all the extra work. Having it "only disabled" does
not help, since either we have it and keep it tested and working, or we
don't have it and don't spend time on keeping it working and tested.
In MDEV-19780 there was already a decision to drop TokuDB from MariaDB.
If somebody wants TokuDB, they can use the 10.4 branch.
As initially most tests fail, they have allow_failures defined so that
testing anyway proceeds all the way to the final 'upgrade extras' stage.
All of these tests work for downstream Debian packaging of MariaDB 10.4
and should eventually pass on upstream MariaDB 10.5 as well.
Also upstream the Debian autopkgtests from MariaDB 10.4 in Debian so that
pipeline includes running mtr.
With these in place Lintian will pass without errors (only warnings) and
the CI systems will at least be able to stop anybody from introducing
new Lintian errors.
Manages the security risk in way that also fixes Lintian warning:
W: mariadb-server-10.5: setuid-binary
usr/lib/mysql/plugin/auth_pam_tool_dir/auth_pam_tool 4755 root/root
Applied downstream in
9605a48a99
There are still some differences in due to systemd and service triggers,
but these differences make sense and are likely to be synced the other
way later so that downstream Debian official packaging adopts them.
The synced changes include among others:
- 9f49e4b494
- 6440c0d6e7
- 6e5ee72d64
- e62e67ae4b
- df2415a53d
- 643558da74
These changes are in line with what has been changes in downstream Debian
and they fix the following errors:
$ check_for_missing_breaks_replaces.py -o ${WORKING_DIR}/missing_breaks.xml --changes-file ${WORKING_DIR}/*.changes
[ERROR] mariadb-client-10.5 conflicts with mytop files: {'/usr/bin/mytop'}
[ERROR] mariadb-client-10.5 conflicts with mariadb-client-core-10.3 files: {'/usr/bin/mysqlcheck'}
[ERROR] mariadb-server-10.5 conflicts with mariadb-server-core-10.3 files: {'/usr/share/man/man1/resolveip.1.gz', '/usr/bin/resolveip', '/usr/share/mysql/mysql_test_data_timezone.sql'}
[ERROR] mariadb-client-10.5 conflicts with mysql-client-core-5.7 files: {'/usr/bin/mysqlcheck'} [ERROR] mariadb-server-10.5 conflicts with mariadb-server-core-10.3 files: {'/usr/share/man/man1/resolveip.1.gz', '/usr/bin/resolveip', '/usr/share/mysql/mysql_test_data_timezone.sql'}
[ERROR] mariadb-server-10.5 conflicts with mysql-client-5.7 files: {'/usr/bin/myisam_ftdump', '/usr/share/man/man1/myisam_ftdump.1.gz'}
[ERROR] mariadb-server-core-10.5 conflicts with mysql-server-5.7 files: {'/usr/share/mysql/mysql_test_data_timezone.sql', '/usr/bin/resolveip', '/usr/share/man/man1/resolveip.1.gz'}
[ERROR] mariadb-test conflicts with mysql-server-5.7 files: {'/usr/lib/mysql/plugin/adt_null.so', '/usr/lib/mysql/plugin/mypluglib.so'}
- Ensure cmake builds also apply CPPFLAGS flags for hardening to fully work
fc4f33cf40
- Install Ubuntu Apport files in the same way with same filename.
- MDEV-21705: Build flags to keep WolfSSL from crashing
- Clean away sql-bench from packaging immediately after build step.
- Delete private files from libraries so they don't get shipped in the -dev
packages.