Use MariaDB since FreeBSD 10 on all installations instead of MySQL: with exim+dovecot, Roundcube, Zoneminder, MediaWiki, WordPress, MODX without issues. Also most Linux distros switched default MySQL to MariaDB many years ago. I can prepare patch for Mk/bsd.default-versions.mk, Uses/mysql.mk and can to try for UPDATING.
Created attachment 249484 [details] Change default version of MySQL to MariaDB 10.11
I fully support this. Add URL that lists all the distributions that including MariaDB and also lists those that have it as default "MySQL" flavor. Add MariaDB maintainer to cc
We use "vanilla" MySQL with thousands of databases. Current default version (MySQL 8.0) is adequate.
databases/p5-DBD-mysql fails to configure which blocks a lot of ports
(In reply to Antoine Brodin from comment #4) I know: https://reviews.freebsd.org/D44524 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277889#c9 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275100#c17
(In reply to Antoine Brodin from comment #4) This is fixed. So we can continue now. Can I ask for exp-run? The maintainer did not object to this change for more than 1 month (is maintainer timeout work for portmgr@?). (In reply to Alexey Koscheev from comment #3) You can continue use it with DEFAULT_VERSIONS+=mysql=80 in /etc/make.conf. But MariaDB is more relevant for default at least in open-source and free projects, IMHO.
(In reply to Vladimir Druzenko from comment #6) Fastfix: DEFAULT_VERSIONS+=mysql=8.0
(In reply to Vladimir Druzenko from comment #6) What about pkg users?
(In reply to Alexey Koscheev from comment #8) They can do the same things that pkg users currently do to use MariaDB.
(In reply to Vladimir Druzenko from comment #9) Swan, Pike, and Crawfish
New failures: https://pkg-status.freebsd.org/beefy22/data/140amd64-default-foo/2024-05-08_19h38m32s/logs/errors/p5-DBD-mysql-5.004.log https://pkg-status.freebsd.org/beefy22/data/140amd64-default-foo/2024-05-08_19h38m32s/logs/errors/mysqltcl-3.052_2.log New ignored: databases/mroonga databases/mysql-connector-c++ databases/qt6-base_sqldriver@mysql mail/dspam net-p2p/xbt New skipped: devel/qt6
bofh, databases/mroonga support MariaDB 10.11: > we only support Mroonga with MariaDB 10.11 in this release. https://mroonga.org/en/blog/2023/08/02/mroonga-13.05.html
(In reply to Antoine Brodin from comment #11) https://pkg-status.freebsd.org/beefy22/data/140amd64-default-foo/2024-05-08_19h38m32s/logs/errors/mysqltcl-3.052_2.log ./generic/mysqltcl.c:914:7: error: use of undeclared identifier 'bool' bool reconnect = 1; ^ Look like isn't related. Added maintainer tcltk@ to CC.
(In reply to Antoine Brodin from comment #11) https://pkg-status.freebsd.org/beefy22/data/140amd64-default-foo/2024-05-08_19h38m32s/logs/errors/mysqltcl-3.052_2.log How to add custom text to IGNORE message with "IGNORE_WITH_MYSQL=105m 106m 1011m" for databases/p5-DBD-mysql? Text is: "use databases/p5-DBD-mysql4 or databases/p5-DBD-MariaDB instead". Added maintainer of databases/p5-DBD-mysql* to CC.
(In reply to Antoine Brodin from comment #11) Patch for databases/qt6-base_sqldriver@mysql: --- databases/qt6-base_sqldriver/Makefile.orig +++ databases/qt6-base_sqldriver/Makefile @@ -31,7 +31,7 @@ sqlite_CMAKE_ON= QT_FEATURE_system_sqlite ${FLAVOR}_PLIST= ${.CURDIR}/pkg-plist.${FLAVOR} .if ${FLAVOR:U} == mysql -IGNORE_WITH_MYSQL= 105m 106m 1011m +CMAKE_ARGS+= -DMySQL_LIBRARY=${LOCALBASE}/lib/mysql/libmariadb.so .endif .include <bsd.port.mk> Build without errors on 13.3-p2 amd64 poudriere and live system.
(In reply to Vladimir Druzenko from comment #15) Looks like that would break build with MySQL, though.
(In reply to Jason E. Hale from comment #16) MariDB installs symlink libmysqlclient.so => libmariadb.so.3: Patch can be modified: --- databases/qt6-base_sqldriver/Makefile.orig +++ databases/qt6-base_sqldriver/Makefile @@ -31,7 +31,7 @@ sqlite_CMAKE_ON= QT_FEATURE_system_sqlite ${FLAVOR}_PLIST= ${.CURDIR}/pkg-plist.${FLAVOR} .if ${FLAVOR:U} == mysql -IGNORE_WITH_MYSQL= 105m 106m 1011m +CMAKE_ARGS+= -DMySQL_LIBRARY=${LOCALBASE}/lib/mysql/libmysqlclient.so .endif .include <bsd.port.mk>
(In reply to Vladimir Druzenko from comment #17) Maybe better to patch MySQL/MariaDB detection in qt6: devel/qt6-base/files/patch-cmake_FindMySQL.cmake: --- cmake/FindMySQL.cmake.orig +++ cmake/FindMySQL.cmake @@ -44,6 +44,9 @@ if(NOT DEFINED MySQL_ROOT) endif() if(PkgConfig_FOUND AND NOT DEFINED MySQL_ROOT) pkg_check_modules(PC_MySQL QUIET "mysqlclient") + if(NOT DEFINED MySQL_ROOT) + pkg_check_modules(PC_MySQL QUIET "libmariadb") + endif() set(MySQL_include_dir_hints ${PC_MySQL_INCLUDEDIR}) set(MySQL_library_hints ${PC_MySQL_LIBDIR}) set(MySQL_library_hints_debug "")
(In reply to Vladimir Druzenko from comment #18) devel/qt6-base/files/patch-cmake_FindMySQL.cmake: --- cmake/FindMySQL.cmake.orig +++ cmake/FindMySQL.cmake @@ -43,7 +43,7 @@ if(NOT DEFINED MySQL_ROOT) find_package(PkgConfig QUIET) endif() if(PkgConfig_FOUND AND NOT DEFINED MySQL_ROOT) - pkg_check_modules(PC_MySQL QUIET "mysqlclient") + pkg_search_module(PC_MySQL libmariadb mysqlclient) set(MySQL_include_dir_hints ${PC_MySQL_INCLUDEDIR}) set(MySQL_library_hints ${PC_MySQL_LIBDIR}) set(MySQL_library_hints_debug "")
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=cdd1752148745b583a6ffcc92955e994c07e0adb commit cdd1752148745b583a6ffcc92955e994c07e0adb Author: Pietro Cerutti <gahr@FreeBSD.org> AuthorDate: 2024-05-21 07:16:38 +0000 Commit: Pietro Cerutti <gahr@FreeBSD.org> CommitDate: 2024-05-21 07:18:58 +0000 databases/mysqltcl: fix build with MariaDB PR: 277922 (exp-run) Reported by: antoine databases/mysqltcl/Makefile | 2 +- databases/mysqltcl/files/patch-generic_mysqltcl.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-)
(In reply to Vladimir Druzenko from comment #13) Fixed in https://cgit.freebsd.org/ports/commit/?id=cdd1752148745b583a6ffcc92955e994c07e0adb, thanks!
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=359c8eed1862a08dbe0a9a67a62bb209c9471da9 commit 359c8eed1862a08dbe0a9a67a62bb209c9471da9 Author: Jason E. Hale <jhale@FreeBSD.org> AuthorDate: 2024-05-24 08:48:58 +0000 Commit: Jason E. Hale <jhale@FreeBSD.org> CommitDate: 2024-05-25 01:55:22 +0000 Qt6: Update to 6.7.1 As a patch release, Qt 6.7.1 does not introduce any new features but contains more than 400 bug fixes, security updates, and other improvements to the top of the Qt 6.7.0 release. See more information about the most important changes and bug fixes from Qt 6.7.1 release note. Enable building of databases/qt6-base_sqldriver@mysql with MariaDB. [1] Fix build of www/qt6-webengine with the SNDIO option enabled. [2] Announcement: https://www.qt.io/blog/qt-6.7.1-released Release note: https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.7.1/release-note.md PR: 277922 [1], 279180 [2] Reported by: vvd [1], Benjamin Takacs <nimaje+fbz@bureaucracy.de> [2] MFH: 2024Q2 Security: f5fa174d-19de-11ef-83d8-4ccc6adda413 Mk/Uses/qt.mk | 2 +- accessibility/qt6-speech/distinfo | 6 +- comms/qt6-connectivity/distinfo | 6 +- comms/qt6-sensors/distinfo | 6 +- comms/qt6-serialbus/distinfo | 6 +- comms/qt6-serialport/distinfo | 6 +- databases/qt6-base_sqldriver/Makefile | 4 - databases/qt6-base_sqldriver/distinfo | 6 +- devel/qt6-5compat/distinfo | 6 +- devel/qt6-base/Makefile | 3 - devel/qt6-base/distinfo | 8 +- .../files/patch-cmake_FindMySQL.cmake (new) | 13 + .../files/patch-src_corelib_tools_qspan.h (gone) | 15 - devel/qt6-base/pkg-plist | 6 +- devel/qt6-languageserver/distinfo | 6 +- devel/qt6-location/distinfo | 6 +- devel/qt6-positioning/distinfo | 6 +- devel/qt6-remoteobjects/distinfo | 6 +- devel/qt6-scxml/distinfo | 6 +- devel/qt6-tools/distinfo | 6 +- devel/qt6-translations/distinfo | 6 +- devel/qt6-translations/pkg-plist | 14 + graphics/qt6-3d/distinfo | 6 +- graphics/qt6-imageformats/Makefile | 1 - graphics/qt6-imageformats/distinfo | 6 +- graphics/qt6-lottie/distinfo | 6 +- graphics/qt6-quickeffectmaker/distinfo | 6 +- graphics/qt6-svg/distinfo | 6 +- graphics/qt6-wayland/distinfo | 6 +- misc/qt6-doc/distinfo | 6 +- misc/qt6-doc/pkg-plist | 14 + misc/qt6-examples/distinfo | 6 +- misc/qt6-examples/pkg-plist | 82 +- multimedia/qt6-multimedia/Makefile | 37 +- multimedia/qt6-multimedia/distinfo | 8 +- .../files/patch-src_multimedia_configure.cmake | 11 +- multimedia/qt6-multimedia/pkg-help (new) | 2 + multimedia/qt6-multimedia/pkg-plist | 49 + net/qt6-coap/distinfo | 6 +- net/qt6-networkauth/distinfo | 6 +- science/qt6-quick3dphysics/distinfo | 6 +- www/qt6-httpserver/distinfo | 6 +- www/qt6-webchannel/distinfo | 6 +- www/qt6-webengine/distinfo | 6 +- .../files/patch-security-rollup (gone) | 6091 -------------------- ...arty_chromium_media_audio_sndio_sndio__input.cc | 10 +- ...rty_chromium_media_audio_sndio_sndio__output.cc | 12 +- ...ty_webrtc_pc_legacy__stats__collector.cc (gone) | 114 - www/qt6-websockets/distinfo | 6 +- www/qt6-webview/distinfo | 6 +- x11-toolkits/qt6-charts/distinfo | 6 +- x11-toolkits/qt6-datavis3d/distinfo | 6 +- x11-toolkits/qt6-declarative/distinfo | 6 +- x11-toolkits/qt6-declarative/pkg-plist | 8 +- x11-toolkits/qt6-graphs/distinfo | 6 +- x11-toolkits/qt6-graphs/pkg-plist | 38 +- x11-toolkits/qt6-quick3d/distinfo | 6 +- x11-toolkits/qt6-quicktimeline/distinfo | 6 +- x11-toolkits/qt6-shadertools/distinfo | 6 +- x11-toolkits/qt6-virtualkeyboard/distinfo | 6 +- 60 files changed, 335 insertions(+), 6435 deletions(-)
A commit in branch 2024Q2 references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=60f70de1dc864e0b1d9dae3c9a93e0b12c64fc50 commit 60f70de1dc864e0b1d9dae3c9a93e0b12c64fc50 Author: Jason E. Hale <jhale@FreeBSD.org> AuthorDate: 2024-05-24 08:48:58 +0000 Commit: Jason E. Hale <jhale@FreeBSD.org> CommitDate: 2024-05-25 02:00:43 +0000 Qt6: Update to 6.7.1 As a patch release, Qt 6.7.1 does not introduce any new features but contains more than 400 bug fixes, security updates, and other improvements to the top of the Qt 6.7.0 release. See more information about the most important changes and bug fixes from Qt 6.7.1 release note. Enable building of databases/qt6-base_sqldriver@mysql with MariaDB. [1] Fix build of www/qt6-webengine with the SNDIO option enabled. [2] Announcement: https://www.qt.io/blog/qt-6.7.1-released Release note: https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.7.1/release-note.md PR: 277922 [1], 279180 [2] Reported by: vvd [1], Benjamin Takacs <nimaje+fbz@bureaucracy.de> [2] MFH: 2024Q2 Security: f5fa174d-19de-11ef-83d8-4ccc6adda413 (cherry picked from commit 359c8eed1862a08dbe0a9a67a62bb209c9471da9) Mk/Uses/qt.mk | 2 +- accessibility/qt6-speech/distinfo | 6 +- comms/qt6-connectivity/distinfo | 6 +- comms/qt6-sensors/distinfo | 6 +- comms/qt6-serialbus/distinfo | 6 +- comms/qt6-serialport/distinfo | 6 +- databases/qt6-base_sqldriver/Makefile | 4 - databases/qt6-base_sqldriver/distinfo | 6 +- devel/qt6-5compat/distinfo | 6 +- devel/qt6-base/Makefile | 3 - devel/qt6-base/distinfo | 8 +- .../files/patch-cmake_FindMySQL.cmake (new) | 13 + .../files/patch-src_corelib_tools_qspan.h (gone) | 15 - devel/qt6-base/pkg-plist | 6 +- devel/qt6-languageserver/distinfo | 6 +- devel/qt6-location/distinfo | 6 +- devel/qt6-positioning/distinfo | 6 +- devel/qt6-remoteobjects/distinfo | 6 +- devel/qt6-scxml/distinfo | 6 +- devel/qt6-tools/distinfo | 6 +- devel/qt6-translations/distinfo | 6 +- devel/qt6-translations/pkg-plist | 14 + graphics/qt6-3d/distinfo | 6 +- graphics/qt6-imageformats/distinfo | 6 +- graphics/qt6-lottie/distinfo | 6 +- graphics/qt6-quickeffectmaker/distinfo | 6 +- graphics/qt6-svg/distinfo | 6 +- graphics/qt6-wayland/distinfo | 6 +- misc/qt6-doc/distinfo | 6 +- misc/qt6-doc/pkg-plist | 14 + misc/qt6-examples/distinfo | 6 +- misc/qt6-examples/pkg-plist | 82 +- multimedia/qt6-multimedia/Makefile | 37 +- multimedia/qt6-multimedia/distinfo | 8 +- .../files/patch-src_multimedia_configure.cmake | 11 +- multimedia/qt6-multimedia/pkg-help (new) | 2 + multimedia/qt6-multimedia/pkg-plist | 49 + net/qt6-coap/distinfo | 6 +- net/qt6-networkauth/distinfo | 6 +- science/qt6-quick3dphysics/distinfo | 6 +- www/qt6-httpserver/distinfo | 6 +- www/qt6-webchannel/distinfo | 6 +- www/qt6-webengine/distinfo | 6 +- .../files/patch-security-rollup (gone) | 6091 -------------------- ...arty_chromium_media_audio_sndio_sndio__input.cc | 10 +- ...rty_chromium_media_audio_sndio_sndio__output.cc | 12 +- ...ty_webrtc_pc_legacy__stats__collector.cc (gone) | 114 - www/qt6-websockets/distinfo | 6 +- www/qt6-webview/distinfo | 6 +- x11-toolkits/qt6-charts/distinfo | 6 +- x11-toolkits/qt6-datavis3d/distinfo | 6 +- x11-toolkits/qt6-declarative/distinfo | 6 +- x11-toolkits/qt6-declarative/pkg-plist | 8 +- x11-toolkits/qt6-graphs/distinfo | 6 +- x11-toolkits/qt6-graphs/pkg-plist | 38 +- x11-toolkits/qt6-quick3d/distinfo | 6 +- x11-toolkits/qt6-quicktimeline/distinfo | 6 +- x11-toolkits/qt6-shadertools/distinfo | 6 +- x11-toolkits/qt6-virtualkeyboard/distinfo | 6 +- 59 files changed, 335 insertions(+), 6434 deletions(-)
(In reply to Antoine Brodin from comment #11) From this list left: New ignored: databases/mroonga databases/mysql-connector-c++ net-p2p/xbt
I'm not sure now is the right time to choose MariaDB: <https://www.prnewswire.com/news-releases/recommended-cash-offer-for-mariadb-plc-by-meridian-bidco-llc-which-is-an-affiliate-of-k1-investment-management-llc-as-manager-of-k5-private-investors-lp-302155375.html>
I think it's a pity that I, as a MySQL maintainer, am not asked about this. I do not agree with this change and ask you not to implement it.
I would like to vote against this change. Let me add some details: > Use MariaDB since FreeBSD 10 on all installations instead of MySQL: with exim+dovecot, Roundcube, Zoneminder, MediaWiki, WordPress, MODX without issues. Amazing. But the same applies to MySQL 8.0, does it not? > Also most Linux distros switched default MySQL to MariaDB many years ago. Very weak argument. > I can prepare patch for Mk/bsd.default-versions.mk, Uses/mysql.mk and can to try for UPDATING. Sorry, please, no. If someone is willing to use MariaDB, he is free to do so. > But MariaDB is more relevant for default at least in open-source and free projects, IMHO. What are the criteria (behind "because I don't like Oracle")? Both projects are using OSS licenses, both have active communities and support, and both are behind commercial bodies, after all. There should be a strong reason to make such a switch. I also see downsides: 1. That would force migration from Oracle MySQL to MariaDB. Companies may have support contracts with one of the bodies already as well as tools/software compatible with only one of them (e.g. i am using XtraBackup from Percona) 2. Configuration is not 100% compatible. 3. A lot of testing is required to do such switch in the complex environment. To me such change is only reasonable if upstream would die, or change license to non-OSS one or would officially be against FreeBSD port. None of these happened. So why we should make a problems for the users?
I also oppose this change.
Migrating from MySQL 8.0 to MariaDB 10.11 involves more than simply uninstalling MySQL and installing MariaDB using the same /var/db/mysql data directory. There are numerous incompatibilities between the two systems. For instance, MySQL 8.0 supports collations like utf8mb4_0900_ai_ci, which are not available in MariaDB. As a result, exporting databases in .sql format and importing them into MariaDB is impractical on a large scale. Additionally, there are differences in storage engines, authentication plugins, and optimizers, as well as query planners, all of which can lead to varying query performance and behavior.
The default version only really matters, imho, because pkg builds with it in the standard repository and it is thus a dependency for a lot of pkgs. It would be nicest to keep the pkgs independent where there are not ABI dependencies and thereby create more user choice outside of ports. I know in xbps and apt this is done. When installing a package that requires PHP, if none is installed, the default will be installed. However, if a compatible version is already installed, it will neither remove it nor parallel another version, but instead make the new package dependent on that one at install time. Example Any clients of PHP that do not explicitly use PHP ABIs should not be built as flavor -php82, like mediawiki142-php82. We are creating that explicit dependency; nothing in the code itself is. Ports allows for the version range to be specified, this should translate to pkg. Example 2 Any dependent of MySQL (or even MySQL/PostgreSQL in some cases) should not explicitly specify the version if not using an ABI. I'm sure there are more and that it's not a small job, but I would expect dependencies to be handled via config file or alternative selector or some such, not explicitly called out by version in the pkg. Default should mean default, but because of the increasing use of pkg over ports, it is defacto more than a default.