diff options
Diffstat (limited to 'dev-db')
27 files changed, 27 insertions, 9469 deletions
diff --git a/dev-db/Manifest.gz b/dev-db/Manifest.gz Binary files differindex 79b5ffcfbc3b..1220a8e1e410 100644 --- a/dev-db/Manifest.gz +++ b/dev-db/Manifest.gz diff --git a/dev-db/mariadb-connector-c/Manifest b/dev-db/mariadb-connector-c/Manifest index 078d65c91e34..9f08c23ff10a 100644 --- a/dev-db/mariadb-connector-c/Manifest +++ b/dev-db/mariadb-connector-c/Manifest @@ -1,11 +1,6 @@ AUX mariadb-connector-c-3.1.3-fix-pkconfig-file.patch 616 BLAKE2B 650c5a794da6d3d0095a823917704d52a5f16c349ce7017b93b1bebfec01287929470a89a2e4aec2f9f7cd5135368e43f2a2e89257c0d7042b878e1806ede8aa SHA512 fe621abedaf81d1fa367c52f69ccce1765757db8d9f412aa40b440d7e51d4de3785a90150e76893f7066b1ba656eb1bad020465e58adae13f08245b839bde4de -AUX mariadb-connector-c-3.3.4-fix-building-without-gssapi.patch 715 BLAKE2B e7fc6c3432dfee51deebc80696ad7f556980e3ccb011d5795cb950bcedccaa06f8c7563ebe927b482f4a3c6b47245f3d5d277305caf9c5936b0f6dd01b0818e4 SHA512 a1b8df19b1534d4d47f8ab07f21b8ab812f3d4e75eaec331f5c7f4039b1f918928572bb3a437cc4b94a12df0fa543e856afe9a7203cc1952b99bdba82bc9c5a2 AUX mariadb-connector-c-3.3.4-remove-zstd.patch 732 BLAKE2B 56544c653e2eded85bce16fd18775945b2f83a94a0a2cdb4964baf14fa9a448264cfea680d1293296c828c4338e15b6275414003f048ee357ab055a63f2a7f18 SHA512 fe407b8ecfac43d135a47c161f8812a0911c19d7e515ff62a454aa259925e56a470350b2bcd7e5e7aefd996ea020a204590a0ab0f496e80142195849ae4a8a3d -DIST mariadb-connector-c-3.2.7-src.tar.gz 1212691 BLAKE2B ae2d1317fdc087c6d64b7cf11f4343bf35662d04da5c693f6f3b45ec405ff0f3d5d03157eb56a9c05cf4e16b9980baffec8800b886ae3d962d22a828a6938671 SHA512 3f0c67c5fd12e889a3704e0a638b64a784f05d12c7c424f7ce64e78a3eb17e2ad588e0e23f0ce037cd49efb695294ab69277da78f02940c2a7ea0676886b9c36 -DIST mariadb-connector-c-3.3.4-src.tar.gz 1389030 BLAKE2B 4bee45ee4f76979d36072ab2119042b4de1127a42e99510bd0c1bc5e163fdb4e9b7ca4cce9381ed89e0c733158293d0641c7b7cbd14feaf3257a442c62083e23 SHA512 3a3f20efe58f8458a426501248b154107b76bd2001a43e41923e31568c8419cd88f2379e3636a54118ee64ac160a1c6f68dd79c0ac053fa273d9b6b127410ef6 DIST mariadb-connector-c-3.3.8-src.tar.gz 1393368 BLAKE2B 09a8a310f97809f0b0396770a77d4512fe1124de263e2077e5a14a2fa1fbc59d7e35a09d97b0471b687943fc9ce06925507e4b950fdacfdc7ca04ea5ee56bf9e SHA512 d2630bda8deb28696842a6b5dd308060a8b9a83a04dfb3ed908387f53af4108510c6f536aaecc4a3c9a035c7be91b98229d6c480366a3579b6be2c5a8d85ff56 -EBUILD mariadb-connector-c-3.2.7.ebuild 3542 BLAKE2B f6eb1fe296cc2bb9a52d2d09fe9c8dc8636c15d321765d308333e767263971f27f41273ae3b5d008f063371eb0624df352a592a1e29d69e1310c6143d451d4f4 SHA512 cf4d440ffbaf8adfd277b68becd643108713dbba1f55d867c611577d07f6a26badb5a3d5946dc8757b145712fe6a4beeb99b6a3a001699123121f9e9c0b7c3fc -EBUILD mariadb-connector-c-3.3.4.ebuild 3653 BLAKE2B 034d1ba2357e76829dacfa9b5315ff1c5cad60670eec1b9819720f76e574356262480e85c960e709a4f81b7e10ea2eefe638f4baf818ebab44806614ede6034c SHA512 6c0465efe935bf745dd162dcb4c5d53f62277f28708e4b0a00f2302d2de349ce8155d14280e2867ff0d1fb329fc3a9b50c6aad93793c93fb2bbbdd3c8a7d92ab -EBUILD mariadb-connector-c-3.3.8.ebuild 3854 BLAKE2B 98c80ec76898da321a84f72fcf81a67a94fd5832232e6187e5592475b75796106b16749f105cd1ceaa56f5a1b5712c293720887393a533b6916409914b67d3ec SHA512 aad15183963c93e4a1b6377b91eba5df5c13fca18ea042ef44b847bfe206cd2044a5d179deef5578a305664d4cb6cd1c86bbb75a0d36eaecd4d2596557c0cd8b -EBUILD mariadb-connector-c-9999.ebuild 3854 BLAKE2B 98c80ec76898da321a84f72fcf81a67a94fd5832232e6187e5592475b75796106b16749f105cd1ceaa56f5a1b5712c293720887393a533b6916409914b67d3ec SHA512 aad15183963c93e4a1b6377b91eba5df5c13fca18ea042ef44b847bfe206cd2044a5d179deef5578a305664d4cb6cd1c86bbb75a0d36eaecd4d2596557c0cd8b +EBUILD mariadb-connector-c-3.3.8.ebuild 4048 BLAKE2B 02cc78d1571eee86ddab4c6e5b85be930e69943acbe56abde220e1306a272d920b17f131771258ea214159c2b292ca483fb063c37428c5f96a97835f991f86d1 SHA512 5f2a557fdeb73138f68f32cbc272a4c5565a702190516dcc721f1b9627424d88f26b82d92cf295a8968e0c9bd04a380244b788fb98c63492eaeb3616aae16db5 +EBUILD mariadb-connector-c-9999.ebuild 4054 BLAKE2B 92e1aaacab156524d12ce07f21e7fe954215c8c13926dac15ad21611f543699caddd2a72f3d9dd50ebc335d074665161cb8fc5a6351a0d0cd88a7d8bbf2fd298 SHA512 f33d4709be52cdbff47eaf254afdbb2bc1490540582c7d0cfb8597bd1db0850fcf61051d2204bfe1803397d60b8fbc08431cd103a833f0ab68759f705a1e95f2 MISC metadata.xml 348 BLAKE2B 4c817753c3ccda9cdade926d129408d83169373335553a3c990224a74444e122d1150cfb031395d923959911e8485b1dc88e00cce2aeb599d4a26b2fd5d8eef5 SHA512 009615c60fbffadc877e7d26cddd26e1f5fbfbbc844ba7cf388ea748a091f16f819ac539a8998c0588fc96c3cd882fb3cadde556510fa1732636aac64c95ddf9 diff --git a/dev-db/mariadb-connector-c/files/mariadb-connector-c-3.3.4-fix-building-without-gssapi.patch b/dev-db/mariadb-connector-c/files/mariadb-connector-c-3.3.4-fix-building-without-gssapi.patch deleted file mode 100644 index a76af28aabd4..000000000000 --- a/dev-db/mariadb-connector-c/files/mariadb-connector-c-3.3.4-fix-building-without-gssapi.patch +++ /dev/null @@ -1,15 +0,0 @@ -# https://jira.mariadb.org/browse/CONC-637 -# https://github.com/mariadb-corporation/mariadb-connector-c/commit/4e2408c1cc298ada91b30683501c0c94a6621562 -diff --git a/plugins/auth/CMakeLists.txt b/plugins/auth/CMakeLists.txt -index ed9be6f3..da0b58e4 100644 ---- a/plugins/auth/CMakeLists.txt -+++ b/plugins/auth/CMakeLists.txt -@@ -120,7 +120,7 @@ IF(GSSAPI_SOURCES) - IF(CMAKE_C_COMPILER_ID MATCHES "Clang") - SET_SOURCE_FILES_PROPERTIES(${GSSAPI_SOURCES} PROPERTY COMPILE_FLAGS "-Wno-deprecated-declarations") - ENDIF() -- IF(have__Wl___as_needed) -+ IF(have__Wl___as_needed AND TARGET auth_gssapi_client) - SET_TARGET_PROPERTIES(auth_gssapi_client PROPERTIES LINK_FLAGS "-Wl,--as-needed") - ENDIF() - ENDIF() diff --git a/dev-db/mariadb-connector-c/mariadb-connector-c-3.2.7.ebuild b/dev-db/mariadb-connector-c/mariadb-connector-c-3.2.7.ebuild deleted file mode 100644 index edcdefb279d3..000000000000 --- a/dev-db/mariadb-connector-c/mariadb-connector-c-3.2.7.ebuild +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -if [[ ${PV} == 9999 ]] ; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/MariaDB/mariadb-connector-c.git" -else - MY_PN=${PN#mariadb-} - MY_PV=${PV/_b/-b} - SRC_URI="https://downloads.mariadb.com/Connectors/c/connector-c-${PV}/${P}-src.tar.gz" - S="${WORKDIR%/}/${PN}-${MY_PV}-src" - KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv ~s390 x86" -fi - -inherit cmake-multilib flag-o-matic toolchain-funcs - -DESCRIPTION="C client library for MariaDB/MySQL" -HOMEPAGE="https://mariadb.org/" - -LICENSE="LGPL-2.1" -SLOT="0/3" -IUSE="+curl gnutls kerberos +ssl static-libs test" -RESTRICT="!test? ( test )" - -DEPEND=" - sys-libs/zlib:=[${MULTILIB_USEDEP}] - virtual/libiconv:=[${MULTILIB_USEDEP}] - curl? ( net-misc/curl[${MULTILIB_USEDEP}] ) - kerberos? ( - || ( - app-crypt/mit-krb5[${MULTILIB_USEDEP}] - app-crypt/heimdal[${MULTILIB_USEDEP}] - ) - ) - ssl? ( - gnutls? ( >=net-libs/gnutls-3.3.24:=[${MULTILIB_USEDEP}] ) - !gnutls? ( dev-libs/openssl:=[${MULTILIB_USEDEP}] ) - ) -" -BDEPEND="test? ( dev-db/mariadb[server] )" -RDEPEND="${DEPEND}" - -MULTILIB_CHOST_TOOLS=( /usr/bin/mariadb_config ) -MULTILIB_WRAPPED_HEADERS+=( /usr/include/mariadb/mariadb_version.h ) - -PATCHES=( - "${FILESDIR}"/${PN}-3.1.3-fix-pkconfig-file.patch -) - -src_prepare() { - # These tests the remote_io plugin which requires network access - sed -i 's/{"test_remote1", test_remote1, TEST_CONNECTION_NEW, 0, NULL, NULL},//g' "unittest/libmariadb/misc.c" || die - - # These tests don't work with --skip-grant-tables - sed -i 's/{"test_conc366", test_conc366, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},//g' "unittest/libmariadb/connection.c" || die - sed -i 's/{"test_conc66", test_conc66, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},//g' "unittest/libmariadb/connection.c" || die - - # [Warning] Aborted connection 2078 to db: 'test' user: 'root' host: '' (Got an error reading communication packets) - # Not sure about this one - might also require network access - sed -i 's/{"test_default_auth", test_default_auth, TEST_CONNECTION_NONE, 0, NULL, NULL},//g' "unittest/libmariadb/connection.c" || die - - cmake_src_prepare -} - -src_configure() { - # mariadb cannot use ld.gold, bug #508724 - tc-ld-disable-gold - - # bug #855233 (MDEV-11914, MDEV-25633) at least - filter-lto - - # bug #943757 - append-cflags -std=gnu17 - - cmake-multilib_src_configure -} - -multilib_src_configure() { - local mycmakeargs=( - -DWITH_EXTERNAL_ZLIB=ON - -DWITH_SSL:STRING=$(usex ssl $(usex gnutls GNUTLS OPENSSL) OFF) - -DWITH_CURL=$(usex curl) - -DWITH_ICONV=ON - -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT:STRING=$(usex kerberos DYNAMIC OFF) - -DMARIADB_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DINSTALL_LIBDIR="$(get_libdir)" - -DINSTALL_MANDIR=share/man - -DINSTALL_PCDIR="$(get_libdir)/pkgconfig" - -DINSTALL_PLUGINDIR="$(get_libdir)/mariadb/plugin" - -DINSTALL_BINDIR=bin - -DWITH_UNIT_TESTS=$(usex test) - ) - - cmake_src_configure -} - -multilib_src_test() { - mkdir -vp "${T}/mysql/data" || die - - mysql_install_db --no-defaults --datadir="${T}/mysql/data" || die - mysqld --no-defaults --datadir="${T}/mysql/data" --socket="${T}/mysql/mysql.sock" --skip-grant-tables --skip-networking & - - while ! mysqladmin ping --socket="${T}/mysql/mysql.sock" --silent ; do - sleep 1 - done - - cd unittest/libmariadb || die - MYSQL_TEST_SOCKET="${T}/mysql/mysql.sock" MARIADB_CC_TEST=1 ctest --verbose || die -} - -multilib_src_install_all() { - if ! use static-libs ; then - find "${ED}" -name "*.a" -delete || die - fi -} diff --git a/dev-db/mariadb-connector-c/mariadb-connector-c-3.3.4.ebuild b/dev-db/mariadb-connector-c/mariadb-connector-c-3.3.4.ebuild deleted file mode 100644 index 0965ba371186..000000000000 --- a/dev-db/mariadb-connector-c/mariadb-connector-c-3.3.4.ebuild +++ /dev/null @@ -1,119 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -if [[ ${PV} == 9999 ]] ; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/MariaDB/mariadb-connector-c.git" -else - MY_PN=${PN#mariadb-} - MY_PV=${PV/_b/-b} - SRC_URI="https://downloads.mariadb.com/Connectors/c/connector-c-${PV}/${P}-src.tar.gz" - S="${WORKDIR%/}/${PN}-${MY_PV}-src" - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~x86" -fi - -inherit cmake-multilib flag-o-matic toolchain-funcs - -DESCRIPTION="C client library for MariaDB/MySQL" -HOMEPAGE="https://mariadb.org/" - -LICENSE="LGPL-2.1" -SLOT="0/3" -IUSE="+curl gnutls kerberos +ssl static-libs test" -RESTRICT="!test? ( test )" - -DEPEND=" - sys-libs/zlib:=[${MULTILIB_USEDEP}] - virtual/libiconv:=[${MULTILIB_USEDEP}] - curl? ( net-misc/curl[${MULTILIB_USEDEP}] ) - kerberos? ( - || ( - app-crypt/mit-krb5[${MULTILIB_USEDEP}] - app-crypt/heimdal[${MULTILIB_USEDEP}] - ) - ) - ssl? ( - gnutls? ( >=net-libs/gnutls-3.3.24:=[${MULTILIB_USEDEP}] ) - !gnutls? ( dev-libs/openssl:=[${MULTILIB_USEDEP}] ) - ) -" -BDEPEND="test? ( dev-db/mariadb[server] )" -RDEPEND="${DEPEND}" - -MULTILIB_CHOST_TOOLS=( /usr/bin/mariadb_config ) -MULTILIB_WRAPPED_HEADERS+=( /usr/include/mariadb/mariadb_version.h ) - -PATCHES=( - "${FILESDIR}"/${PN}-3.1.3-fix-pkconfig-file.patch - "${FILESDIR}"/${PN}-3.3.4-fix-building-without-gssapi.patch - "${FILESDIR}"/${PN}-3.3.4-remove-zstd.patch -) - -src_prepare() { - # These tests the remote_io plugin which requires network access - sed -i 's/{"test_remote1", test_remote1, TEST_CONNECTION_NEW, 0, NULL, NULL},//g' "unittest/libmariadb/misc.c" || die - - # These tests don't work with --skip-grant-tables - sed -i 's/{"test_conc366", test_conc366, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},//g' "unittest/libmariadb/connection.c" || die - sed -i 's/{"test_conc66", test_conc66, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},//g' "unittest/libmariadb/connection.c" || die - - # [Warning] Aborted connection 2078 to db: 'test' user: 'root' host: '' (Got an error reading communication packets) - # Not sure about this one - might also require network access - sed -i 's/{"test_default_auth", test_default_auth, TEST_CONNECTION_NONE, 0, NULL, NULL},//g' "unittest/libmariadb/connection.c" || die - - cmake_src_prepare -} - -src_configure() { - # mariadb cannot use ld.gold, bug #508724 - tc-ld-disable-gold - - # bug #855233 (MDEV-11914, MDEV-25633) at least - filter-lto - - # bug #943757 - append-cflags -std=gnu17 - - cmake-multilib_src_configure -} - -multilib_src_configure() { - local mycmakeargs=( - -DWITH_EXTERNAL_ZLIB=ON - -DWITH_SSL:STRING=$(usex ssl $(usex gnutls GNUTLS OPENSSL) OFF) - -DWITH_CURL=$(usex curl) - -DWITH_ICONV=ON - -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT:STRING=$(usex kerberos DYNAMIC OFF) - -DMARIADB_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DINSTALL_LIBDIR="$(get_libdir)" - -DINSTALL_MANDIR=share/man - -DINSTALL_PCDIR="$(get_libdir)/pkgconfig" - -DINSTALL_PLUGINDIR="$(get_libdir)/mariadb/plugin" - -DINSTALL_BINDIR=bin - -DWITH_UNIT_TESTS=$(usex test) - ) - - cmake_src_configure -} - -multilib_src_test() { - mkdir -vp "${T}/mysql/data" || die - - mysql_install_db --no-defaults --datadir="${T}/mysql/data" || die - mysqld --no-defaults --datadir="${T}/mysql/data" --socket="${T}/mysql/mysql.sock" --skip-grant-tables --skip-networking & - - while ! mysqladmin ping --socket="${T}/mysql/mysql.sock" --silent ; do - sleep 1 - done - - cd unittest/libmariadb || die - MYSQL_TEST_SOCKET="${T}/mysql/mysql.sock" MARIADB_CC_TEST=1 ctest --verbose || die -} - -multilib_src_install_all() { - if ! use static-libs ; then - find "${ED}" -name "*.a" -delete || die - fi -} diff --git a/dev-db/mariadb-connector-c/mariadb-connector-c-3.3.8.ebuild b/dev-db/mariadb-connector-c/mariadb-connector-c-3.3.8.ebuild index 45553edc1b5e..fdf4b945fa06 100644 --- a/dev-db/mariadb-connector-c/mariadb-connector-c-3.3.8.ebuild +++ b/dev-db/mariadb-connector-c/mariadb-connector-c-3.3.8.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -11,7 +11,7 @@ else MY_PV=${PV/_b/-b} SRC_URI="https://downloads.mariadb.com/Connectors/c/connector-c-${PV}/${P}-src.tar.gz" S="${WORKDIR%/}/${PN}-${MY_PV}-src" - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~x86" + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 x86" fi inherit cmake-multilib flag-o-matic toolchain-funcs @@ -108,8 +108,15 @@ multilib_src_test() { mysql_install_db --no-defaults --datadir="${T}/mysql/data" || die mysqld --no-defaults --datadir="${T}/mysql/data" --socket="${T}/mysql/mysql.sock" --skip-grant-tables --skip-networking & - while ! mysqladmin ping --socket="${T}/mysql/mysql.sock" --silent ; do + local attempts=0 + while ! mysqladmin ping --no-defaults --socket="${T}/mysql/mysql.sock" --silent ; do + # 5 minutes should be more than enough + if [[ ${attempts} -gt 300 ]] ; then + die "mysqld not found after 300 seconds, aborting" + fi + sleep 1 + attempts=$((attempts + 1)) done cd unittest/libmariadb || die diff --git a/dev-db/mariadb-connector-c/mariadb-connector-c-9999.ebuild b/dev-db/mariadb-connector-c/mariadb-connector-c-9999.ebuild index 45553edc1b5e..16f992e304e8 100644 --- a/dev-db/mariadb-connector-c/mariadb-connector-c-9999.ebuild +++ b/dev-db/mariadb-connector-c/mariadb-connector-c-9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -108,8 +108,15 @@ multilib_src_test() { mysql_install_db --no-defaults --datadir="${T}/mysql/data" || die mysqld --no-defaults --datadir="${T}/mysql/data" --socket="${T}/mysql/mysql.sock" --skip-grant-tables --skip-networking & - while ! mysqladmin ping --socket="${T}/mysql/mysql.sock" --silent ; do + local attempts=0 + while ! mysqladmin ping --no-defaults --socket="${T}/mysql/mysql.sock" --silent ; do + # 5 minutes should be more than enough + if [[ ${attempts} -gt 300 ]] ; then + die "mysqld not found after 300 seconds, aborting" + fi + sleep 1 + attempts=$((attempts + 1)) done cd unittest/libmariadb || die diff --git a/dev-db/mariadb/Manifest b/dev-db/mariadb/Manifest index 6319afa33f8f..0bf583bc4a94 100644 --- a/dev-db/mariadb/Manifest +++ b/dev-db/mariadb/Manifest @@ -7,10 +7,7 @@ AUX my.cnf.distro-client 643 BLAKE2B 5ffd286907ee28c92c85bbcc9a6266555733f1115f2 AUX my.cnf.distro-server 998 BLAKE2B a7f2977a96d394cb7e24d72d82a1c21095c4b55607e5ca4a2c10619278796c328931a5ec076c15b60afef370c2e5da02ca0c628f330e876b4d2c984eeb54df5f SHA512 d9ab6f7fdfe08e6c242f84410ec680ef6aa6778c4bd55fee67c644e1a7d997446d8ef2129be6fc9833d16fe40cf17e09cdf0cf015f06bb145bbf9cfecb51e882 DIST mariadb-10.11.10-patches-01.tar.xz 5300 BLAKE2B 842dd7002220ab6c164e50adcb2c0184752c1080e4c2c2609c431d8867b2ccf5b910b61d3f9a5f1e9b979d34423a5dbab1c3bced1e5d8b2af780addc9baddff5 SHA512 23a8e6d58927cadd39c84653069880039c4cbe6226d920550f3abdd995c0656013fef994cf4d23d34902c3cce7aa92a2819d5ef7f7c23ee9eca8a2720f4f6afa DIST mariadb-10.11.10.tar.gz 104463642 BLAKE2B c6101ea5094c5bb78cf55ba37026d2e18f48e59a54eef1849051acc2c64111b82b9eba73b909fe0f07d111521433b42d84f6d155bcdf6e4ed50c186767b078db SHA512 3a8655384813ba515ce185e8a03427785fbea75b3226e2a1db02839dd66c22622ba27eeb2ca7b3d840bba43720a4393bbf71eb4b2b9e41ab837629e89a8b5976 -DIST mariadb-10.11.3-patches-01.tar.xz 4984 BLAKE2B abc78c83505c745ab7320b99dcda8c667fed8332dede466142027b24957fa9ff3d03f8402679ce6cffdc89bc9f0559f8c717b7ec9df52a2c5db39195f096d731 SHA512 127386c9dc8ce242d9d309e31b9357a928ba816d24d94d60cbc8723fb3bd0fb136c7d049bfb37aac057f9ebcc73c155ac20b8bcf2542f89401140728c2dcf29a -DIST mariadb-10.11.5.tar.gz 99709948 BLAKE2B 97429df4f0a10eb72c74dd0e951954b7c096a6b42fdaa97c682d1409e2a21716171a2b66aae6ec8ab3f4371bed57aff1f054554d398242e413d5c8e7ad988da4 SHA512 851e6508c1e495afa608a8bcd5c62faa5800e69cc1ba81b9366bf250e07ce8a9801a4ee07ecbaec4b57180c9b3bf2ed8acb7f5f03dd37a87a53928bfd4dfe559 DIST mariadb-10.6.13-patches-01.tar.xz 4984 BLAKE2B 625d04310b02aad4fec4b633e9fab06636364f3c5ed3cb88e89acd4224786c3c9ed478b636ac699e77a888b73dab12cb279df41d6095e93e9c4ae3a159570286 SHA512 1e6ac167bfd77570e8ff5955aaa9a101d9387ac4857d856f1fb8c9a489c4c2a154481b9385584435e8dc95baef0dd3ef6831c7de2d6f004401cc338edcaa9d12 -DIST mariadb-10.6.14.tar.gz 95286643 BLAKE2B 4a186f3f52b63ab7321aa7556776ff8a986bd602d78dc6a143cc3bfdfd8cc09b0a22688cba02b8907f4b3f0d1e7c640f5caad768c1e89486d6af24e6cf3168a8 SHA512 11b88480ac61303172e98ed3271c8172e840cded5175caba1469d6ec063df647b536ee6e95f110abd8d95d95c9b8d7edf1cb611113be225d5e8eeb2041f86438 DIST mariadb-10.6.15.tar.gz 98204031 BLAKE2B 4534b82f1c1e16ce2c7c21879714e24b20fada36ef10a8a0dbe770c1d99055822fcaf146646b19b459cfd948bff0662d23f1f661a843919f90a354838bda7ee6 SHA512 61b5af8c2f8bd2f641aaa708941563d5f6ecc118acc9a154c009c3ae1d50e7360ae59241f87e5c2111775a3ffeb42a64f4853e9c7096b58d68a3695b5d0ef97c DIST mariadb-10.6.16-patches-01.tar.xz 4956 BLAKE2B a178930f7abe474e1419509c0bbabf783e1b931cfc3f4b4bddf426d9671d4e69e62a800d759f424f957562091c634049e594332ab15dc758e98d26c48ba69d1d SHA512 42969e6881cf2548c48fcce7f8439c9d56596ef038d55affcada45f4cd42a3666617f5786b69fe9ba42f11b06e85f43b722f2190aa7ed5badb461c48282751e5 DIST mariadb-10.6.17.tar.gz 99067793 BLAKE2B 9df7592eb11a92fc4cbf4f1913e11f7ae652effde44358ee930726473a40fc26e46e02dc79e8b16068df37c82afe6b3141305624174d2e44c53107065c57b1ee SHA512 e07cf3e90d93d6139969875b11d6df3210b2c9f69257688b392843a7caed0dc3b75ba8904384fd0a55c24ece624e04b68c005a3731ee68f3957787a27b52ad56 @@ -19,10 +16,8 @@ DIST mariadb-10.6.20.tar.gz 102697156 BLAKE2B 8bd665406c3462890a783276f4946c92d8 DIST mariadb-11.4.4-patches-01.tar.xz 5300 BLAKE2B dbebe4e5068c8ce56dc11527e37aea16727723d7ac9351865e8761e95209900ca50782ab2ce44fd86ad2e70f59b6ffa9c0758f158c48870e343ce37bca37b9fb SHA512 af51163404c699e7580ffd1fa931f86dafa7e6471641ba40f7072a04b6f1f4df0e89cc89926be6062810d18c55b97e3c696367ae483fbabab0227e69d7866f99 DIST mariadb-11.4.4.tar.gz 111017581 BLAKE2B 0680c7d0a93b60dc02bd5cba49fcc050245606edc6a14aead7995b5f4baa15d731b857d5f1ca4bec2febd1b0a0062c5162ff9a8231397a40c9a740db4e5264d0 SHA512 dfa4c137d67c11c997bf67bceb27d072c51831f35e2ad438fe2f234cb530eb74e3283429aef620036db06943d7309dec36a4d015f578fd2a1f933637681841fb EBUILD mariadb-10.11.10.ebuild 42933 BLAKE2B 65fd393487e0a401e22a215cfd5846b2fda891a168c0bcdb2b2c53bee9acca7325e13262ad30242be2c4f06da52445bcb3d99b7b0387bbf8f7d5c449dcb6dfa6 SHA512 069b9f5f0ce373868fa86735a3619c795167e7aff660648d270f38dc607c7d6006466e24282c05d985c0f4f5486e18706d9f028ac6ee01bb5de208acc13d0746 -EBUILD mariadb-10.11.5-r1.ebuild 42624 BLAKE2B 4986355393faf58cf56afb08ba21628ec9655617586d165df1667c4ffbe8792f76dff1a319b03de2cdc8f857a312d7e3200a17c3d9e1008d32d568cc71b00bc5 SHA512 54b914d59947932ee487514300a968b363201312991e41a812caf53dae29f085712dd1bb158ce24dadef3117705bbd9b326567d473fac2332bf7521a914b67d3 -EBUILD mariadb-10.6.14.ebuild 43027 BLAKE2B b2d5adf3ed54f435d6f09ab651d89b54db446b41f3e1bfcb220f005559baf93d4d4dee85c6d94a1df46bdfe11550713c5da6f1e179a77d13a29cdbd2503c1545 SHA512 392a6063672ab098671413cd76a6011d6110ec8f51c9d8a2e669cbf38dc574672c6ab317d32634aaa4daeee75010ec09c97c8b05e02f77c438b08a886c032db7 EBUILD mariadb-10.6.15.ebuild 42828 BLAKE2B 3d02a9a306819fee4d70481d97f8d2ae246864477a54a71199e69419f26e09ed20c7c3d7805940784c5d5e277d49c7b27b38211c001167b496324f6aec37681c SHA512 7ff2877e1254c86190595ac6283f1a2b37f63eb37c579fe53b1eb05e51a7ea1f8dae9444e31964bb7b0caee03524d74f5bb3d03aebe6ea4ea222bd82f781ec64 -EBUILD mariadb-10.6.17.ebuild 42885 BLAKE2B 2e4f123ba402d38f537f46cee3536dea219081e56ef9e19ab3b2671d65af7f3356028867ed923fe7c26d15427f1b2be4669ef04d71c998d70d49cf88e4998d25 SHA512 5b2edb5694818b5112f5a7e993aa3c812872d4964b33c8c6b2a045be0e87b2e8c5ef8ebc42332e4b994bebf4e1396432953b06507b85b11d4d27b35b6cbcdb02 +EBUILD mariadb-10.6.17.ebuild 42881 BLAKE2B 1aa3df34c120f431a6713ee196310f4fff3357a9309ea2f70bbfeb5e03eb25e15941c1cd6501ac91222f28c71b2f5f8eda3a989e74d4496552648a4d967a330d SHA512 9287cce1af28095569a5fe8464fbd2585b045b537d19df86fe96183ef72bce3282a74f315af49c6fc49f4f3674a24652f433c0091c7f2440bc65d8a09e72188e EBUILD mariadb-10.6.20.ebuild 42758 BLAKE2B 0594e11bdae6fe1417253d099ed2ddd5a6f9c8303b203950a2f027bcde8a092ef3e1715cf37d6cabf97a72a23ee92031bef26eeabef28b4f431a2dd0c4d005d1 SHA512 2fc023f42a4c2d40d4ae64af31515a656d4a8b0c20a9f2be3dcfae5630984747a216f6e748eb0548a36557adf9c8ec14c80699e908dc261e8c721d7da7f0ece4 EBUILD mariadb-11.4.4.ebuild 42928 BLAKE2B e201fadfeaad71c0798a533c505f2caf63fb7a066d862bcf2747c0b132f4705af6d7fa76283099e470d21afa6404dff7522a42555e74cc6689f86a4bfac9a145 SHA512 9f22b43a551f7f30c00702e9bc59b4d1bd0bf25c5a33e5ef2eee155521fd72a844873bd07ae6407b44dce8fb1c99f68196c7e8e7cb99693654ea90cbaceeae39 MISC metadata.xml 2415 BLAKE2B 15e491cb0881203b21f66652af9e420582e3992a610bde08dfae2d076c417b298529eafd659adaa4cdeecd70b0c10c83796f8dfd8fbdede7489c48fdd2bdb015 SHA512 ecc641157ada5ad6d84b534b6a40e27e59ef428668d61f3908817735d31d4828dd0327343bf4ad13a5f6a1bc306cc46137388489176c3116f2a0e0946471b49b diff --git a/dev-db/mariadb/mariadb-10.11.5-r1.ebuild b/dev-db/mariadb/mariadb-10.11.5-r1.ebuild deleted file mode 100644 index 935d3e35a064..000000000000 --- a/dev-db/mariadb/mariadb-10.11.5-r1.ebuild +++ /dev/null @@ -1,1326 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" -SUBSLOT="18" - -JAVA_PKG_OPT_USE="jdbc" - -inherit systemd flag-o-matic prefix toolchain-funcs \ - multiprocessing java-pkg-opt-2 cmake - -HOMEPAGE="https://mariadb.org/" -SRC_URI="mirror://mariadb/${PN}-${PV}/source/${P}.tar.gz - https://github.com/hydrapolic/gentoo-dist/raw/master/mariadb/mariadb-10.11.3-patches-01.tar.xz" - -DESCRIPTION="An enhanced, drop-in replacement for MySQL" -LICENSE="GPL-2 LGPL-2.1+" -SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}" -IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4 - innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga - numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx - sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc - test xml yassl" - -RESTRICT="!bindist? ( bindist ) !test? ( test )" - -REQUIRED_USE="jdbc? ( extraengine server !static ) - ?? ( tcmalloc jemalloc ) - static? ( yassl !pam ) - test? ( extraengine )" - -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" - -# Shorten the path because the socket path length must be shorter than 107 chars -# and we will run a mysql server during test phase -S="${WORKDIR}/mysql" - -# Be warned, *DEPEND are version-dependant -# These are used for both runtime and compiletime -# <libfmt-10 bugs #938106 #935299 -COMMON_DEPEND=" - <dev-libs/libfmt-10:= - >=dev-libs/libpcre2-10.34:= - >=sys-apps/texinfo-4.7-r1 - sys-libs/ncurses:0= - >=sys-libs/zlib-1.2.3:0= - virtual/libcrypt:= - !bindist? ( - sys-libs/binutils-libs:0= - >=sys-libs/readline-4.1:0= - ) - jemalloc? ( dev-libs/jemalloc:0= ) - kerberos? ( virtual/krb5 ) - kernel_linux? ( - dev-libs/libaio:0= - sys-libs/liburing:= - sys-process/procps:0= - ) - server? ( - app-arch/bzip2 - app-arch/xz-utils - backup? ( app-arch/libarchive:0= ) - columnstore? ( - app-arch/snappy:= - dev-libs/boost:= - dev-libs/libxml2:2= - ) - cracklib? ( sys-libs/cracklib:0= ) - extraengine? ( - odbc? ( dev-db/unixODBC:0= ) - xml? ( dev-libs/libxml2:2= ) - ) - innodb-lz4? ( app-arch/lz4 ) - innodb-lzo? ( dev-libs/lzo ) - innodb-snappy? ( app-arch/snappy:= ) - mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 ) - numa? ( sys-process/numactl ) - oqgraph? ( - dev-libs/boost:= - dev-libs/judy:0= - ) - pam? ( sys-libs/pam:0= ) - s3? ( net-misc/curl ) - systemd? ( sys-apps/systemd:= ) - ) - systemtap? ( >=dev-debug/systemtap-1.3:0= ) - tcmalloc? ( dev-util/google-perftools:0= ) - yassl? ( net-libs/gnutls:0= ) - !yassl? ( - >=dev-libs/openssl-1.0.0:0= - ) -" -BDEPEND="app-alternatives/yacc" -DEPEND="${COMMON_DEPEND} - server? ( - extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) ) - test? ( acct-group/mysql acct-user/mysql ) - ) - static? ( sys-libs/ncurses[static-libs] ) -" -RDEPEND="${COMMON_DEPEND} - !dev-db/mysql !dev-db/percona-server - !dev-db/mariadb:10.3 - !dev-db/mariadb:10.4 - !dev-db/mariadb:10.5 - !dev-db/mariadb:10.6 - !dev-db/mariadb:10.7 - !dev-db/mariadb:10.8 - !dev-db/mariadb:10.9 - !dev-db/mariadb:10.10 - !dev-db/mariadb:11.0 - selinux? ( sec-policy/selinux-mysql ) - server? ( - columnstore? ( dev-db/mariadb-connector-c ) - extraengine? ( jdbc? ( >=virtual/jre-1.8 ) ) - galera? ( - sys-apps/iproute2 - =sys-cluster/galera-26* - sst-rsync? ( sys-process/lsof ) - sst-mariabackup? ( net-misc/socat[ssl] ) - ) - !prefix? ( dev-db/mysql-init-scripts acct-group/mysql acct-user/mysql ) - ) -" -# For other stuff to bring us in -# dev-perl/DBD-mysql is needed by some scripts installed by MySQL -PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" - -mysql_init_vars() { - MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"} - MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} - MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} - MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"} - - if [[ -z "${MY_DATADIR}" ]] ; then - MY_DATADIR="" - if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then - MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \ - | sed -ne '/datadir/s|^--datadir=||p' \ - | tail -n1) - if [[ -z "${MY_DATADIR}" ]] ; then - MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ - | sed -e 's/.*=\s*//' \ - | tail -n1) - fi - fi - if [[ -z "${MY_DATADIR}" ]] ; then - MY_DATADIR="${MY_LOCALSTATEDIR}" - einfo "Using default MY_DATADIR" - fi - elog "MySQL MY_DATADIR is ${MY_DATADIR}" - - if [[ -z "${PREVIOUS_DATADIR}" ]] ; then - if [[ -e "${MY_DATADIR}" ]] ; then - # If you get this and you're wondering about it, see bug #207636 - elog "MySQL datadir found in ${MY_DATADIR}" - elog "A new one will not be created." - PREVIOUS_DATADIR="yes" - else - PREVIOUS_DATADIR="no" - fi - export PREVIOUS_DATADIR - fi - else - if [[ ${EBUILD_PHASE} == "config" ]]; then - local new_MY_DATADIR - new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \ - | sed -ne '/datadir/s|^--datadir=||p' \ - | tail -n1) - - if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then - ewarn "MySQL MY_DATADIR has changed" - ewarn "from ${MY_DATADIR}" - ewarn "to ${new_MY_DATADIR}" - MY_DATADIR="${new_MY_DATADIR}" - fi - fi - fi - - export MY_SHAREDSTATEDIR MY_SYSCONFDIR - export MY_LOCALSTATEDIR MY_LOGDIR - export MY_DATADIR -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if has test ${FEATURES} ; then - # Bug #213475 - MySQL _will_ object strenuously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if ! has userpriv ${FEATURES} ; then - die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." - fi - fi - fi - - java-pkg-opt-2_pkg_setup -} - -src_unpack() { - unpack ${A} - - mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die -} - -src_prepare() { - eapply "${WORKDIR}"/mariadb-patches - eapply "${FILESDIR}"/${PN}-10.6.11-gssapi.patch - eapply "${FILESDIR}"/${PN}-10.6.11-include.patch - eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch - - eapply_user - - _disable_plugin() { - echo > "${S}/plugin/${1}/CMakeLists.txt" || die - } - _disable_engine() { - echo > "${S}/storage/${1}/CMakeLists.txt" || die - } - - if use jemalloc; then - echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt" - elif use tcmalloc; then - echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt" - fi - - local plugin - local server_plugins=( handler_socket auth_socket feedback metadata_lock_info - locale_info qc_info server_audit sql_errlog auth_ed25519 ) - local test_plugins=( audit_null auth_examples daemon_example fulltext - debug_key_management example_key_management versioning ) - if ! use server; then # These plugins are for the server - for plugin in "${server_plugins[@]}" ; do - _disable_plugin "${plugin}" - done - fi - - if ! use test; then # These plugins are only used during testing - for plugin in "${test_plugins[@]}" ; do - _disable_plugin "${plugin}" - done - _disable_engine test_sql_discovery - echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die - fi - - _disable_engine example - - if ! use oqgraph ; then # avoids extra library checks - _disable_engine oqgraph - fi - - if use mroonga ; then - # Remove the bundled groonga - # There is no CMake flag, it simply checks for existance - rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga" - else - _disable_engine mroonga - fi - - # Fix static bindings in galera replication - sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \ - "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die - sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \ - "${S}"/wsrep-lib/src/CMakeLists.txt || die - - # Fix galera_recovery.sh script - sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \ - scripts/galera_recovery.sh || die - - sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \ - "${S}"/scripts/mysql_install_db.sh || die - - cmake_src_prepare - java-pkg-opt-2_src_prepare -} - -src_configure() { - # bug #855233 (MDEV-11914, MDEV-25633) at least - filter-lto - # bug 508724 mariadb cannot use ld.gold - tc-ld-disable-gold - # Bug #114895, bug #110149 - filter-flags "-O" "-O[01]" - - # It fails on alpha without this - use alpha && append-ldflags "-Wl,--no-relax" - - # bug #945352 - append-cflags -std=gnu17 - - append-cxxflags -felide-constructors - - # bug #283926, with GCC4.4, this is required to get correct behavior. - append-flags -fno-strict-aliasing - - CMAKE_BUILD_TYPE="RelWithDebInfo" - - # debug hack wrt #497532 - local mycmakeargs=( - -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" - -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" - -DSYSCONFDIR="${EPREFIX}/etc/mysql" - -DINSTALL_BINDIR=bin - -DINSTALL_DOCDIR=share/doc/${PF} - -DINSTALL_DOCREADMEDIR=share/doc/${PF} - -DINSTALL_INCLUDEDIR=include/mysql - -DINSTALL_INFODIR=share/info - -DINSTALL_LIBDIR=$(get_libdir) - -DINSTALL_MANDIR=share/man - -DINSTALL_MYSQLSHAREDIR=share/mariadb - -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin - -DINSTALL_SCRIPTDIR=bin - -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" - -DINSTALL_SBINDIR=sbin - -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb" - -DWITH_COMMENT="Gentoo Linux ${PF}" - -DWITH_UNIT_TESTS=$(usex test ON OFF) - -DWITH_LIBEDIT=0 - -DWITH_LIBFMT=system - -DWITH_ZLIB=system - -DWITHOUT_LIBWRAP=1 - -DENABLED_LOCAL_INFILE=1 - -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DWITH_DEFAULT_COMPILER_OPTIONS=0 - -DWITH_DEFAULT_FEATURE_SET=0 - -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)" - # The build forces this to be defined when cross-compiling. We pass it - # all the time for simplicity and to make sure it is actually correct. - -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1) - -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)" - -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO) - -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF) - -DCONC_WITH_EXTERNAL_ZLIB=YES - -DWITH_EXTERNAL_ZLIB=YES - -DSUFFIX_INSTALL_DIR="" - -DWITH_UNITTEST=OFF - -DWITHOUT_CLIENTLIBS=YES - -DCLIENT_PLUGIN_DIALOG=OFF - -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF - -DCLIENT_PLUGIN_CLIENT_ED25519=OFF - -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC - -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF - ) - if use test ; then - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test ) - else - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) - fi - - if ! use yassl ; then - mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC ) - else - mycmakeargs+=( -DWITH_SSL=bundled ) - fi - - # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION - mycmakeargs+=( - -DWITH_READLINE=$(usex bindist 1 0) - -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1) - -DENABLE_DTRACE=$(usex systemtap) - ) - - if use server ; then - # Connect and Federated{,X} must be treated special - # otherwise they will not be built as plugins - if ! use extraengine ; then - mycmakeargs+=( - -DPLUGIN_CONNECT=NO - -DPLUGIN_FEDERATED=NO - -DPLUGIN_FEDERATEDX=NO - ) - fi - - mycmakeargs+=( - -DWITH_PCRE=system - -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO) - -DPLUGIN_SPHINX=$(usex sphinx YES NO) - -DPLUGIN_AUTH_PAM=$(usex pam YES NO) - -DPLUGIN_AWS_KEY_MANAGEMENT=NO - -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO) - -DPLUGIN_SEQUENCE=$(usex extraengine YES NO) - -DPLUGIN_SPIDER=$(usex extraengine YES NO) - -DPLUGIN_S3=$(usex s3 YES NO) - -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO) - -DCONNECT_WITH_MYSQL=1 - -DCONNECT_WITH_LIBXML2=$(usex xml) - -DCONNECT_WITH_ODBC=$(usex odbc) - -DCONNECT_WITH_JDBC=$(usex jdbc) - # Build failure and autodep wrt bug 639144 - -DCONNECT_WITH_MONGO=OFF - -DWITH_WSREP=$(usex galera) - -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF) - -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF) - -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF) - -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO) - -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO) - -DWITH_MARIABACKUP=$(usex backup ON OFF) - -DWITH_LIBARCHIVE=$(usex backup ON OFF) - -DINSTALL_SQLBENCHDIR="" - -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO) - # systemd is only linked to for server notification - -DWITH_SYSTEMD=$(usex systemd yes no) - -DWITH_NUMA=$(usex numa ON OFF) - ) - - if use test ; then - # This is needed for the new client lib which tests a real, open server - mycmakeargs+=( -DSKIP_TESTS=ON ) - fi - - if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then - ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" - ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." - ewarn "You MUST file bugs without these variables set." - - mycmakeargs+=( - -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} - -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} - ) - - elif ! use latin1 ; then - mycmakeargs+=( - -DDEFAULT_CHARSET=utf8mb4 - -DDEFAULT_COLLATION=utf8mb4_unicode_520_ci - ) - else - mycmakeargs+=( - -DDEFAULT_CHARSET=latin1 - -DDEFAULT_COLLATION=latin1_swedish_ci - ) - fi - mycmakeargs+=( - -DEXTRA_CHARSETS=all - -DMYSQL_USER=mysql - -DDISABLE_SHARED=$(usex static YES NO) - -DWITH_DEBUG=$(usex debug) - -DWITH_EMBEDDED_SERVER=OFF - -DWITH_PROFILING=$(usex profiling) - ) - - if use static; then - mycmakeargs+=( -DWITH_PIC=1 ) - fi - - if use jemalloc || use tcmalloc ; then - mycmakeargs+=( -DWITH_SAFEMALLOC=OFF ) - fi - - # Storage engines - mycmakeargs+=( - -DWITH_ARCHIVE_STORAGE_ENGINE=1 - -DWITH_BLACKHOLE_STORAGE_ENGINE=1 - -DWITH_CSV_STORAGE_ENGINE=1 - -DWITH_HEAP_STORAGE_ENGINE=1 - -DWITH_INNOBASE_STORAGE_ENGINE=1 - -DWITH_MYISAMMRG_STORAGE_ENGINE=1 - -DWITH_MYISAM_STORAGE_ENGINE=1 - -DWITH_PARTITION_STORAGE_ENGINE=1 - ) - else - mycmakeargs+=( - -DWITHOUT_SERVER=1 - -DWITH_EMBEDDED_SERVER=OFF - -DEXTRA_CHARSETS=none - -DINSTALL_SQLBENCHDIR= - -DWITH_SYSTEMD=no - ) - fi - - cmake_src_configure -} - -src_compile() { - cmake_src_compile -} - -# Official test instructions: -# USE='extraengine perl server' \ -# FEATURES='test userpriv' \ -# ebuild mariadb-X.X.XX.ebuild \ -# digest clean package -src_test() { - _disable_test() { - local rawtestname bug reason - rawtestname="${1}" ; shift - bug="${1}" ; shift - reason="${@}" - ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})" - echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def" - } - - local TESTDIR="${BUILD_DIR}/mysql-test" - local retstatus_tests - - if ! use server ; then - einfo "Skipping server tests due to minimal build." - return 0 - fi - - # Ensure that parallel runs don't die - export MTR_BUILD_THREAD="$((${RANDOM} % 100))" - - if [[ -z "${MTR_PARALLEL}" ]] ; then - local -x MTR_PARALLEL=$(makeopts_jobs) - - if [[ ${MTR_PARALLEL} -gt 4 ]] ; then - # Running multiple tests in parallel usually require higher ulimit - # and fs.aio-max-nr setting. In addition, tests like main.multi_update - # are known to hit timeout when system is busy. - # To avoid test failure we will limit MTR_PARALLEL to 4 instead of - # using "auto". - local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})" - info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!" - einfo "${info_msg}" - unset info_msg - MTR_PARALLEL=4 - fi - else - einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'" - fi - - # Try to increase file limits to increase test coverage - if ! ulimit -n 16500 1>/dev/null 2>&1 ; then - # Upper limit comes from parts.partition_* tests - ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager." - - if ! ulimit -n 4162 1>/dev/null 2>&1 ; then - # Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)' - ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager." - - if ! ulimit -n 3000 1>/dev/null 2>&1 ; then - ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager." - else - einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 4162 (medium test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 16500 (best test coverage)." - fi - - # create directories because mysqladmin might run out of order - mkdir -p "${T}"/var-tests{,/log} || die - - if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then - touch "${S}"/mysql-test/unstable-tests || die - fi - - cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die - - local -a disabled_tests - disabled_tests+=( "compat/oracle.plugin;0;Needs example plugin which Gentoo disables" ) - disabled_tests+=( "innodb_gis.1;25095;Known rounding error with latest AMD processors" ) - disabled_tests+=( "innodb_gis.gis;25095;Known rounding error with latest AMD processors" ) - disabled_tests+=( "main.gis;25095;Known rounding error with latest AMD processors" ) - disabled_tests+=( "main.explain_non_select;0;Sporadically failing test" ) - disabled_tests+=( "main.func_time;0;Dependent on time test was written" ) - disabled_tests+=( "main.mysql_upgrade;27044;Sporadically failing test" ) - disabled_tests+=( "main.plugin_auth;0;Needs client libraries built" ) - disabled_tests+=( "main.selectivity_no_engine;26320;Sporadically failing test" ) - disabled_tests+=( "main.stat_tables;0;Sporadically failing test" ) - disabled_tests+=( "main.stat_tables_innodb;0;Sporadically failing test" ) - disabled_tests+=( "main.upgrade_MDEV-19650;25096;Known to be broken" ) - disabled_tests+=( "mariabackup.*;0;Broken test suite" ) - disabled_tests+=( "perfschema.nesting;23458;Known to be broken" ) - disabled_tests+=( "perfschema.prepared_statements;0;Broken test suite" ) - disabled_tests+=( "perfschema.privilege_table_io;27045;Sporadically failing test" ) - disabled_tests+=( "plugins.auth_ed25519;0;Needs client libraries built" ) - disabled_tests+=( "plugins.cracklib_password_check;0;False positive due to varying policies" ) - disabled_tests+=( "plugins.two_password_validations;0;False positive due to varying policies" ) - disabled_tests+=( "roles.acl_statistics;0;False positive due to a user count mismatch caused by previous test" ) - disabled_tests+=( "spider.*;0;Fails with network sandbox" ) - disabled_tests+=( "sys_vars.wsrep_on_without_provider;25625;Known to be broken" ) - - if ! use latin1 ; then - disabled_tests+=( "funcs_1.is_columns_mysql;0;Requires USE=latin1" ) - disabled_tests+=( "main.information_schema;0;Requires USE=latin1" ) - disabled_tests+=( "main.sp2;24177;Requires USE=latin1" ) - disabled_tests+=( "main.system_mysql_db;0;Requires USE=latin1" ) - disabled_tests+=( "main.upgrade_MDEV-19650;24178;Requires USE=latin1" ) - fi - - local test_infos_str test_infos_arr - for test_infos_str in "${disabled_tests[@]}" ; do - IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}" - - if [[ ${#test_infos_arr[@]} != 3 ]] ; then - die "Invalid test data set, not matching format: ${test_infos_str}" - fi - - _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}" - done - unset test_infos_str test_infos_arr - - # run mysql-test tests - pushd "${TESTDIR}" &>/dev/null || die - perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def" - retstatus_tests=$? - - popd &>/dev/null || die - - # Cleanup is important for these testcases. - pkill -9 -f "${S}/ndb" 2>/dev/null - pkill -9 -f "${S}/sql" 2>/dev/null - - local failures="" - [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests" - - [[ -z "${failures}" ]] || die "Test failures: ${failures}" - einfo "Tests successfully completed" -} - -src_install() { - cmake_src_install - - # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used - if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then - rm "${ED}/usr/include/mysql/server/private/config.h" || die - fi - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Convenience links - einfo "Making Convenience links for mysqlcheck multi-call binary" - dosym "mysqlcheck" "/usr/bin/mysqlanalyze" - dosym "mysqlcheck" "/usr/bin/mysqlrepair" - dosym "mysqlcheck" "/usr/bin/mysqloptimize" - - # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir - if [[ -d "${ED}/usr/data" ]] ; then - rm -Rf "${ED}/usr/data" || die - fi - - # Unless they explicitly specific USE=test, then do not install the - # testsuite. It DOES have a use to be installed, esp. when you want to do a - # validation of your database configuration after tuning it. - if ! use test ; then - rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test" - fi - - # Configuration stuff - einfo "Building default configuration ..." - insinto "${MY_SYSCONFDIR#${EPREFIX}}" - [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf - cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die - eprefixify "${TMPDIR}/my.cnf" - doins "${TMPDIR}/my.cnf" - insinto "${MY_SYSCONFDIR#${EPREFIX}}/mariadb.d" - cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die - eprefixify "${TMPDIR}/50-distro-client.cnf" - doins "${TMPDIR}/50-distro-client.cnf" - - if use server ; then - mycnf_src="my.cnf.distro-server" - sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ - "${FILESDIR}/${mycnf_src}" \ - > "${TMPDIR}/my.cnf.ok" || die - if use prefix ; then - sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ - "${TMPDIR}/my.cnf.ok" || die - fi - if use latin1 ; then - sed -i \ - -e "/character-set/s|utf8|latin1|g" \ - "${TMPDIR}/my.cnf.ok" || die - fi - eprefixify "${TMPDIR}/my.cnf.ok" - newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf - - einfo "Including support files and sample configurations" - docinto "support-files" - local script - for script in \ - "${S}"/support-files/magic - do - [[ -f "$script" ]] && dodoc "${script}" - done - - docinto "scripts" - for script in "${S}"/scripts/mysql* ; do - [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}" - done - # Manually install supporting files that conflict with other packages - # but are needed for galera and initial installation - exeinto /usr/libexec/mariadb - doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror" - - if use pam ; then - keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir - fi - fi - - # Conflicting files - conflicting_files=() - - # We prefer my_print_defaults from dev-db/mysql-connector-c - conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" ) - - # Remove bundled mytop in favor of dev-db/mytop - conflicting_files+=( "${ED}/usr/bin/mytop" ) - conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" ) - - local conflicting_file - for conflicting_file in "${conflicting_files[@]}" ; do - if [[ -e "${conflicting_file}" ]] ; then - rm -v "${conflicting_file}" || die - fi - done - - # Fix a dangling symlink when galera is not built - if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then - rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die - fi - - # Remove dangling symlink - rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die - - # Remove broken SST scripts that are incompatible - local scriptremove - for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do - if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then - rm "${ED}/usr/bin/${scriptremove}" || die - fi - done -} - -pkg_preinst() { - java-pkg-opt-2_pkg_preinst -} - -pkg_postinst() { - # Make sure the vars are correctly initialized - mysql_init_vars - - # Create log directory securely if it does not exist - [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}" - - if use server ; then - if use pam; then - einfo - elog "This install includes the PAM authentication plugin." - elog "To activate and configure the PAM plugin, please read:" - elog "https://mariadb.com/kb/en/mariadb/pam-authentication-plugin/" - einfo - chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die - fi - - if [[ -z "${REPLACING_VERSIONS}" ]] ; then - einfo - elog "You might want to run:" - elog "\"emerge --config =${CATEGORY}/${PF}\"" - elog "if this is a new install." - elog - elog "If you are switching server implentations, you should run the" - elog "mysql_upgrade tool." - einfo - else - einfo - elog "If you are upgrading major versions, you should run the" - elog "mysql_upgrade tool." - einfo - fi - - if use galera ; then - einfo - elog "Be sure to edit the my.cnf file to activate your cluster settings." - elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\"" - elog "The first time the cluster is activated, you should add" - elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node." - elog "This option should then be removed for subsequent starts." - einfo - if [[ -n "${REPLACING_VERSIONS}" ]] ; then - local rver - for rver in ${REPLACING_VERSIONS} ; do - if ver_test "${rver}" -lt "10.4.0" ; then - ewarn "Upgrading galera from a previous version requires admin restart of the entire cluster." - ewarn "Please refer to https://mariadb.com/kb/en/library/changes-improvements-in-mariadb-104/#galera-4" - ewarn "for more information" - fi - done - fi - fi - fi - - # Note about configuration change - einfo - elog "This version of mariadb reorganizes the configuration from a single my.cnf" - elog "to several files in /etc/mysql/${PN}.d." - elog "Please backup any changes you made to /etc/mysql/my.cnf" - elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension." - elog "You may have as many files as needed and they are read alphabetically." - elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." - einfo -} - -pkg_config() { - _getoptval() { - local section="${1}" - local option="--${2}" - local extra_options="${3}" - local cmd=( - "${my_print_defaults_binary}" - "${extra_options}" - "${section}" - ) - - local values=() - local parameters=( $(eval "${cmd[@]}" 2>/dev/null) ) - for parameter in "${parameters[@]}" - do - # my_print_defaults guarantees output of options, one per line, - # in the form that they would be specified on the command line. - # So checking for --option=* should be safe. - case ${parameter} in - ${option}=*) - values+=( "${parameter#*=}" ) - ;; - esac - done - - if [[ ${#values[@]} -gt 0 ]] ; then - # Option could have been set multiple times - # in which case only the last occurrence - # contains the current value - echo "${values[-1]}" - fi - } - - _mktemp_dry() { - # emktemp has no --dry-run option - local template="${1}" - - if [[ -z "${template}" ]] ; then - if [[ -z "${T}" ]] ; then - template="/tmp/XXXXXXX" - else - template="${T}/XXXXXXX" - fi - fi - - local template_wo_X=${template//X/} - local n_X - let n_X=${#template}-${#template_wo_X} - if [[ ${n_X} -lt 3 ]] ; then - echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2 - return - fi - - local attempts=0 - local character tmpfile - while [[ true ]] ; do - let attempts=attempts+1 - - new_file= - while read -n1 character ; do - if [[ "${character}" == "X" ]] ; then - tmpfile+="${RANDOM:0:1}" - else - tmpfile+="${character}" - fi - done < <(echo -n "${template}") - - if [[ ! -f "${tmpfile}" ]] - then - echo "${tmpfile}" - return - fi - - if [[ ${attempts} -ge 100 ]] ; then - echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2 - return - fi - done - } - - local mysql_binary="${EROOT}/usr/bin/mysql" - if [[ ! -x "${mysql_binary}" ]] ; then - die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysqld_binary="${EROOT}/usr/sbin/mysqld" - if [[ ! -x "${mysqld_binary}" ]] ; then - die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db" - if [[ ! -x "${mysql_install_db_binary}" ]] ; then - die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" - if [[ ! -x "${my_print_defaults_binary}" ]] ; then - die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" - fi - - if [[ -z "${MYSQL_USER}" ]] ; then - MYSQL_USER=mysql - if use prefix ; then - MYSQL_USER=$(id -u -n 2>/dev/null) - if [[ -z "${MYSQL_USER}" ]] ; then - die "Failed to determine current username!" - fi - fi - fi - - if [[ -z "${MYSQL_GROUP}" ]] ; then - MYSQL_GROUP=mysql - if use prefix ; then - MYSQL_GROUP=$(id -g -n 2>/dev/null) - if [[ -z "${MYSQL_GROUP}" ]] ; then - die "Failed to determine current user groupname!" - fi - fi - fi - - # my_print_defaults needs to read stuff in $HOME/.my.cnf - local -x HOME="${EROOT}/root" - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Read currently set data directory - MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - - # Bug #213475 - MySQL _will_ object strenously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if [[ -z "${MY_DATADIR}" ]] ; then - die "Sorry, unable to find MY_DATADIR!" - elif [[ -d "${MY_DATADIR}/mysql" ]] ; then - ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!" - ewarn "Please rename or delete its content if you wish to initialize a new data directory." - die "${PN} data directory at '${MY_DATADIR}' looks already initialized!" - fi - - MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_TMPDIR=${MYSQL_TMPDIR%/} - # These are dir+prefix - MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} - MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} - - # Create missing directories. - # Always check if mysql user can write to directory even if we just - # created directory because a parent directory might be not - # accessible for that user. - PID_DIR="${EROOT}/run/mysqld" - if [[ ! -d "${PID_DIR}" ]] ; then - einfo "Creating ${PN} PID directory '${PID_DIR}' ..." - install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \ - || die "Failed to create PID directory '${PID_DIR}'!" - fi - - local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_pid_dir_testfile}" ]] \ - && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_pid_dir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!" - else - rm "${_pid_dir_testfile}" || die - unset _pid_dir_testfile - fi - - if [[ ! -d "${MY_DATADIR}" ]] ; then - einfo "Creating ${PN} data directory '${MY_DATADIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \ - || die "Failed to create ${PN} data directory '${MY_DATADIR}'!" - fi - - local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_datadir_testfile}" ]] \ - && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_datadir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!" - else - rm "${_my_datadir_testfile}" || die - unset _my_datadir_testfile - fi - - if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then - einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \ - || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!" - fi - - if [[ -z "${MYSQL_TMPDIR}" ]] ; then - MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")" - [[ -z "${MYSQL_TMPDIR}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!" - - mkdir "${MYSQL_TMPDIR}" || die - chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die - fi - - # Now we need to test MYSQL_TMPDIR... - local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_tmpdir_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_tmpdir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!" - else - rm "${_my_tmpdir_testfile}" || die - unset _my_tmpdir_testfile - fi - - if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then - # Only create directory when MYSQL_LOG_BIN is an absolute path - einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \ - || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'" - fi - - if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then - # Only test when MYSQL_LOG_BIN is an absolute path - local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_logbin_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_logbin_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!" - else - rm "${_my_logbin_testfile}" || die - unset _my_logbin_testfile - fi - fi - - if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then - # Only create directory when MYSQL_RELAY_LOG is an absolute path - einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \ - || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!" - fi - - if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then - # Only test when MYSQL_RELAY_LOG is an absolute path - local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_relaylog_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_relaylog_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!" - else - rm "${_my_relaylog_testfile}" || die - unset _my_relaylog_testfile - fi - fi - - local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null) - [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir" - - # Limit access - chmod 0770 "${SETUP_TMPDIR}" || die - chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die - - local mysql_install_log="${SETUP_TMPDIR}/install_db.log" - local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log" - - echo "" - einfo "Detected settings:" - einfo "==================" - einfo "MySQL User:\t\t\t\t${MYSQL_USER}" - einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}" - einfo "MySQL DATA directory:\t\t${MY_DATADIR}" - einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}" - - if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then - # Absolute path for binary log files specified - einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}" - fi - - if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then - # Absolute path for relay log files specified - einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}" - fi - - einfo "PID DIR:\t\t\t\t${PID_DIR}" - einfo "Install db log:\t\t\t${mysql_install_log}" - einfo "Install server log:\t\t\t${mysqld_logfile}" - - echo - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local tmp_mysqld_password_source= - - for tmp_mysqld_password_source in mysql client ; do - einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" - if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then - if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then - ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" - MYSQL_ROOT_PASSWORD= - continue - fi - - einfo "Found password in '${tmp_mysqld_password_source}' section!" - break - fi - done - - # Sometimes --show is required to display passwords in some implementations of my_print_defaults - if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" - fi - - unset tmp_mysqld_password_source - fi - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local pwd1="a" - local pwd2="b" - - echo - einfo "No password for mysql 'root' user was specified via environment" - einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config" - einfo "file like '${HOME}/.my.cnf'." - einfo "To continue please provide a password for the mysql 'root' user" - einfo "now on console:" - ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!" - read -rsp " >" pwd1 ; echo - - einfo "Retype the password" - read -rsp " >" pwd2 ; echo - - if [[ "x${pwd1}" != "x${pwd2}" ]] ; then - die "Passwords are not the same!" - fi - - MYSQL_ROOT_PASSWORD="${pwd1}" - unset pwd1 pwd2 - - echo - fi - - local -a mysqld_options - - # Fix bug 446200. Don't reference host my.cnf, needs to come first, - # see http://bugs.mysql.com/bug.php?id=31312 - use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" ) - - # Figure out which options we need to disable to do the setup - local helpfile="${TMPDIR}/mysqld-help" - "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null - - local opt optexp optfull - for opt in host-cache name-resolve networking slave-start \ - federated ssl log-bin relay-log slow-query-log external-locking \ - log-slave-updates \ - ; do - optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" - grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" ) - done - - # Prepare timezones, see - # https://dev.mysql.com/doc/mysql/en/time-zone-support.html - local tz_sql="${SETUP_TMPDIR}/tz.sql" - - echo "USE mysql;" >"${tz_sql}" - "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null - if [[ $? -ne 0 ]] ; then - die "mysql_tzinfo_to_sql failed!" - fi - - local cmd=( - "${mysql_install_db_binary}" - "${mysqld_options[@]}" - "--init-file='${tz_sql}'" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - "--log-error='${mysql_install_log}'" - "--rpm" - "--cross-bootstrap" - "--skip-test-db" - "--user=${MYSQL_USER}" - ) - - einfo "Initializing ${PN} data directory: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1 - - if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2 - die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!" - fi - - local x=${RANDOM} - local socket="${PID_DIR}/mysqld.${x}.sock" - [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!" - local pidfile="${PID_DIR}/mysqld.${x}.pid" - [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!" - unset x - - cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - --max_allowed_packet=8M - --net_buffer_length=16K - "--socket='${socket}'" - "--pid-file='${pidfile}'" - "--log-error='${mysqld_logfile}'" - "--user=${MYSQL_USER}" - ) - - einfo "Starting mysqld to finalize initialization: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 & - - echo -n "Waiting for mysqld to accept connections " - local maxtry=15 - while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - if [[ -S "${socket}" ]] ; then - # Even with a socket we don't know if mysqld will abort - # start due to an error so just wait a little bit more... - maxtry=5 - while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - fi - - echo - - if [[ ! -S "${socket}" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2 - die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!" - fi - - local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log" - touch "${mysql_logfile}" || die - - ebegin "Setting root password" - # Do this from memory, as we don't want clear text passwords in temp files - local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'" - cmd=( - "${mysql_binary}" - --no-defaults - "--socket='${socket}'" - -hlocalhost - "-e \"${sql}\"" - ) - eval "${cmd[@]}" >"${mysql_logfile}" 2>&1 - local rc=$? - eend ${rc} - - if [[ ${rc} -ne 0 ]] ; then - # Poor man's solution which tries to avoid having password - # in log. NOTE: sed can fail if user didn't follow advice - # and included character which will require escaping... - sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null - - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}" - die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!" - fi - - # Stop the server - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - echo -n "Stopping the server " - pkill -F "${pidfile}" &>/dev/null - - maxtry=10 - while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - echo - - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - # We somehow failed to stop server. - # However, not a fatal error. Just warn the user. - ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!" - fi - fi - - rm -r "${SETUP_TMPDIR}" || die - - einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!" -} diff --git a/dev-db/mariadb/mariadb-10.6.14.ebuild b/dev-db/mariadb/mariadb-10.6.14.ebuild deleted file mode 100644 index 9255fba16887..000000000000 --- a/dev-db/mariadb/mariadb-10.6.14.ebuild +++ /dev/null @@ -1,1342 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" -SUBSLOT="18" - -JAVA_PKG_OPT_USE="jdbc" - -inherit systemd flag-o-matic prefix toolchain-funcs \ - multiprocessing java-pkg-opt-2 cmake - -HOMEPAGE="https://mariadb.org/" -SRC_URI="mirror://mariadb/${PN}-${PV}/source/${P}.tar.gz - https://github.com/hydrapolic/gentoo-dist/raw/master/mariadb/mariadb-10.6.13-patches-01.tar.xz" - -DESCRIPTION="An enhanced, drop-in replacement for MySQL" -LICENSE="GPL-2 LGPL-2.1+" -SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}" -IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4 - innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga - numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx - sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc - test xml yassl" - -RESTRICT="!bindist? ( bindist ) !test? ( test )" - -REQUIRED_USE="jdbc? ( extraengine server !static ) - ?? ( tcmalloc jemalloc ) - static? ( yassl !pam ) - test? ( extraengine )" - -KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" - -# Shorten the path because the socket path length must be shorter than 107 chars -# and we will run a mysql server during test phase -S="${WORKDIR}/mysql" - -# Be warned, *DEPEND are version-dependant -# These are used for both runtime and compiletime -COMMON_DEPEND=" - >=dev-libs/libpcre2-10.34:= - >=sys-apps/texinfo-4.7-r1 - sys-libs/ncurses:0= - >=sys-libs/zlib-1.2.3:0= - virtual/libcrypt:= - !bindist? ( - sys-libs/binutils-libs:0= - >=sys-libs/readline-4.1:0= - ) - jemalloc? ( dev-libs/jemalloc:0= ) - kerberos? ( virtual/krb5 ) - kernel_linux? ( - dev-libs/libaio:0= - sys-libs/liburing:= - sys-process/procps:0= - ) - server? ( - app-arch/bzip2 - app-arch/xz-utils - backup? ( app-arch/libarchive:0= ) - columnstore? ( - app-arch/snappy:= - dev-libs/boost:= - dev-libs/libxml2:2= - ) - cracklib? ( sys-libs/cracklib:0= ) - extraengine? ( - odbc? ( dev-db/unixODBC:0= ) - xml? ( dev-libs/libxml2:2= ) - ) - innodb-lz4? ( app-arch/lz4 ) - innodb-lzo? ( dev-libs/lzo ) - innodb-snappy? ( app-arch/snappy:= ) - mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 ) - numa? ( sys-process/numactl ) - oqgraph? ( - dev-libs/boost:= - dev-libs/judy:0= - ) - pam? ( sys-libs/pam:0= ) - s3? ( net-misc/curl ) - systemd? ( sys-apps/systemd:= ) - ) - systemtap? ( >=dev-debug/systemtap-1.3:0= ) - tcmalloc? ( dev-util/google-perftools:0= ) - yassl? ( net-libs/gnutls:0= ) - !yassl? ( - >=dev-libs/openssl-1.0.0:0= - ) -" -BDEPEND="app-alternatives/yacc" -DEPEND="${COMMON_DEPEND} - server? ( - extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) ) - test? ( acct-group/mysql acct-user/mysql ) - ) - static? ( sys-libs/ncurses[static-libs] ) -" -RDEPEND="${COMMON_DEPEND} - !dev-db/mysql !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster - !dev-db/mariadb:0 - !dev-db/mariadb:5.5 - !dev-db/mariadb:10.1 - !dev-db/mariadb:10.2 - !dev-db/mariadb:10.3 - !dev-db/mariadb:10.4 - !dev-db/mariadb:10.5 - !dev-db/mariadb:10.7 - !dev-db/mariadb:10.8 - !dev-db/mariadb:10.9 - !dev-db/mariadb:10.10 - !dev-db/mariadb:10.11 - !dev-db/mariadb:11.0 - !<virtual/mysql-5.6-r11 - !<virtual/libmysqlclient-18-r1 - selinux? ( sec-policy/selinux-mysql ) - server? ( - columnstore? ( dev-db/mariadb-connector-c ) - extraengine? ( jdbc? ( >=virtual/jre-1.8 ) ) - galera? ( - sys-apps/iproute2 - =sys-cluster/galera-26* - sst-rsync? ( sys-process/lsof ) - sst-mariabackup? ( net-misc/socat[ssl] ) - ) - !prefix? ( dev-db/mysql-init-scripts acct-group/mysql acct-user/mysql ) - ) -" -# For other stuff to bring us in -# dev-perl/DBD-mysql is needed by some scripts installed by MySQL -PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" - -QA_CONFIG_IMPL_DECL_SKIP=( - # These don't exist on Linux - pthread_threadid_np - getthrid -) - -mysql_init_vars() { - MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"} - MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} - MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} - MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"} - - if [[ -z "${MY_DATADIR}" ]] ; then - MY_DATADIR="" - if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then - MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \ - | sed -ne '/datadir/s|^--datadir=||p' \ - | tail -n1) - if [[ -z "${MY_DATADIR}" ]] ; then - MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ - | sed -e 's/.*=\s*//' \ - | tail -n1) - fi - fi - if [[ -z "${MY_DATADIR}" ]] ; then - MY_DATADIR="${MY_LOCALSTATEDIR}" - einfo "Using default MY_DATADIR" - fi - elog "MySQL MY_DATADIR is ${MY_DATADIR}" - - if [[ -z "${PREVIOUS_DATADIR}" ]] ; then - if [[ -e "${MY_DATADIR}" ]] ; then - # If you get this and you're wondering about it, see bug #207636 - elog "MySQL datadir found in ${MY_DATADIR}" - elog "A new one will not be created." - PREVIOUS_DATADIR="yes" - else - PREVIOUS_DATADIR="no" - fi - export PREVIOUS_DATADIR - fi - else - if [[ ${EBUILD_PHASE} == "config" ]]; then - local new_MY_DATADIR - new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \ - | sed -ne '/datadir/s|^--datadir=||p' \ - | tail -n1) - - if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then - ewarn "MySQL MY_DATADIR has changed" - ewarn "from ${MY_DATADIR}" - ewarn "to ${new_MY_DATADIR}" - MY_DATADIR="${new_MY_DATADIR}" - fi - fi - fi - - export MY_SHAREDSTATEDIR MY_SYSCONFDIR - export MY_LOCALSTATEDIR MY_LOGDIR - export MY_DATADIR -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if has test ${FEATURES} ; then - # Bug #213475 - MySQL _will_ object strenuously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if ! has userpriv ${FEATURES} ; then - die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." - fi - fi - fi - - java-pkg-opt-2_pkg_setup -} - -src_unpack() { - unpack ${A} - - mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die -} - -src_prepare() { - eapply "${WORKDIR}"/mariadb-patches - eapply "${FILESDIR}"/${PN}-10.6.11-gssapi.patch - eapply "${FILESDIR}"/${PN}-10.6.11-include.patch - eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch - eapply "${FILESDIR}"/${PN}-10.6.17-libxml-2.12.patch - - eapply_user - - _disable_plugin() { - echo > "${S}/plugin/${1}/CMakeLists.txt" || die - } - _disable_engine() { - echo > "${S}/storage/${1}/CMakeLists.txt" || die - } - - if use jemalloc; then - echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt" - elif use tcmalloc; then - echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt" - fi - - local plugin - local server_plugins=( handler_socket auth_socket feedback metadata_lock_info - locale_info qc_info server_audit sql_errlog auth_ed25519 ) - local test_plugins=( audit_null auth_examples daemon_example fulltext - debug_key_management example_key_management versioning ) - if ! use server; then # These plugins are for the server - for plugin in "${server_plugins[@]}" ; do - _disable_plugin "${plugin}" - done - fi - - if ! use test; then # These plugins are only used during testing - for plugin in "${test_plugins[@]}" ; do - _disable_plugin "${plugin}" - done - _disable_engine test_sql_discovery - echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die - fi - - _disable_engine example - - if ! use oqgraph ; then # avoids extra library checks - _disable_engine oqgraph - fi - - if use mroonga ; then - # Remove the bundled groonga - # There is no CMake flag, it simply checks for existance - rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga" - else - _disable_engine mroonga - fi - - # Fix static bindings in galera replication - sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \ - "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die - sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \ - "${S}"/wsrep-lib/src/CMakeLists.txt || die - - # Fix galera_recovery.sh script - sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \ - scripts/galera_recovery.sh || die - - sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \ - "${S}"/scripts/mysql_install_db.sh || die - - cmake_src_prepare - java-pkg-opt-2_src_prepare -} - -src_configure() { - # bug #855233 (MDEV-11914, MDEV-25633) at least - filter-lto - # bug 508724 mariadb cannot use ld.gold - tc-ld-disable-gold - # Bug #114895, bug #110149 - filter-flags "-O" "-O[01]" - - # It fails on alpha without this - use alpha && append-ldflags "-Wl,--no-relax" - - # bug #945352 - append-cflags -std=gnu17 - - append-cxxflags -felide-constructors - - # bug #283926, with GCC4.4, this is required to get correct behavior. - append-flags -fno-strict-aliasing - - CMAKE_BUILD_TYPE="RelWithDebInfo" - - # debug hack wrt #497532 - local mycmakeargs=( - -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" - -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" - -DSYSCONFDIR="${EPREFIX}/etc/mysql" - -DINSTALL_BINDIR=bin - -DINSTALL_DOCDIR=share/doc/${PF} - -DINSTALL_DOCREADMEDIR=share/doc/${PF} - -DINSTALL_INCLUDEDIR=include/mysql - -DINSTALL_INFODIR=share/info - -DINSTALL_LIBDIR=$(get_libdir) - -DINSTALL_MANDIR=share/man - -DINSTALL_MYSQLSHAREDIR=share/mariadb - -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin - -DINSTALL_SCRIPTDIR=bin - -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" - -DINSTALL_SBINDIR=sbin - -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb" - -DWITH_COMMENT="Gentoo Linux ${PF}" - -DWITH_UNIT_TESTS=$(usex test ON OFF) - -DWITH_LIBEDIT=0 - -DWITH_ZLIB=system - -DWITHOUT_LIBWRAP=1 - -DENABLED_LOCAL_INFILE=1 - -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DWITH_DEFAULT_COMPILER_OPTIONS=0 - -DWITH_DEFAULT_FEATURE_SET=0 - -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)" - # The build forces this to be defined when cross-compiling. We pass it - # all the time for simplicity and to make sure it is actually correct. - -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1) - -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)" - -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO) - -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF) - -DCONC_WITH_EXTERNAL_ZLIB=YES - -DWITH_EXTERNAL_ZLIB=YES - -DSUFFIX_INSTALL_DIR="" - -DWITH_UNITTEST=OFF - -DWITHOUT_CLIENTLIBS=YES - -DCLIENT_PLUGIN_DIALOG=OFF - -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF - -DCLIENT_PLUGIN_CLIENT_ED25519=OFF - -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC - -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF - ) - if use test ; then - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test ) - else - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) - fi - - if ! use yassl ; then - mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC ) - else - mycmakeargs+=( -DWITH_SSL=bundled ) - fi - - if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then - mycmakeargs+=( - -DDTRACE="${BROOT}"/usr/bin/stap-dtrace - ) - fi - - # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION - mycmakeargs+=( - -DWITH_READLINE=$(usex bindist 1 0) - -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1) - -DENABLE_DTRACE=$(usex systemtap) - ) - - if use server ; then - # Connect and Federated{,X} must be treated special - # otherwise they will not be built as plugins - if ! use extraengine ; then - mycmakeargs+=( - -DPLUGIN_CONNECT=NO - -DPLUGIN_FEDERATED=NO - -DPLUGIN_FEDERATEDX=NO - ) - fi - - mycmakeargs+=( - -DWITH_PCRE=system - -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO) - -DPLUGIN_SPHINX=$(usex sphinx YES NO) - -DPLUGIN_AUTH_PAM=$(usex pam YES NO) - -DPLUGIN_AWS_KEY_MANAGEMENT=NO - -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO) - -DPLUGIN_SEQUENCE=$(usex extraengine YES NO) - -DPLUGIN_SPIDER=$(usex extraengine YES NO) - -DPLUGIN_S3=$(usex s3 YES NO) - -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO) - -DCONNECT_WITH_MYSQL=1 - -DCONNECT_WITH_LIBXML2=$(usex xml) - -DCONNECT_WITH_ODBC=$(usex odbc) - -DCONNECT_WITH_JDBC=$(usex jdbc) - # Build failure and autodep wrt bug 639144 - -DCONNECT_WITH_MONGO=OFF - -DWITH_WSREP=$(usex galera) - -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF) - -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF) - -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF) - -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO) - -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO) - -DWITH_MARIABACKUP=$(usex backup ON OFF) - -DWITH_LIBARCHIVE=$(usex backup ON OFF) - -DINSTALL_SQLBENCHDIR="" - -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO) - # systemd is only linked to for server notification - -DWITH_SYSTEMD=$(usex systemd yes no) - -DWITH_NUMA=$(usex numa ON OFF) - ) - - if use test ; then - # This is needed for the new client lib which tests a real, open server - mycmakeargs+=( -DSKIP_TESTS=ON ) - fi - - if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then - ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" - ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." - ewarn "You MUST file bugs without these variables set." - - mycmakeargs+=( - -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} - -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} - ) - - elif ! use latin1 ; then - mycmakeargs+=( - -DDEFAULT_CHARSET=utf8mb4 - -DDEFAULT_COLLATION=utf8mb4_unicode_520_ci - ) - else - mycmakeargs+=( - -DDEFAULT_CHARSET=latin1 - -DDEFAULT_COLLATION=latin1_swedish_ci - ) - fi - mycmakeargs+=( - -DEXTRA_CHARSETS=all - -DMYSQL_USER=mysql - -DDISABLE_SHARED=$(usex static YES NO) - -DWITH_DEBUG=$(usex debug) - -DWITH_EMBEDDED_SERVER=OFF - -DWITH_PROFILING=$(usex profiling) - ) - - if use static; then - mycmakeargs+=( -DWITH_PIC=1 ) - fi - - if use jemalloc || use tcmalloc ; then - mycmakeargs+=( -DWITH_SAFEMALLOC=OFF ) - fi - - # Storage engines - mycmakeargs+=( - -DWITH_ARCHIVE_STORAGE_ENGINE=1 - -DWITH_BLACKHOLE_STORAGE_ENGINE=1 - -DWITH_CSV_STORAGE_ENGINE=1 - -DWITH_HEAP_STORAGE_ENGINE=1 - -DWITH_INNOBASE_STORAGE_ENGINE=1 - -DWITH_MYISAMMRG_STORAGE_ENGINE=1 - -DWITH_MYISAM_STORAGE_ENGINE=1 - -DWITH_PARTITION_STORAGE_ENGINE=1 - ) - else - mycmakeargs+=( - -DWITHOUT_SERVER=1 - -DWITH_EMBEDDED_SERVER=OFF - -DEXTRA_CHARSETS=none - -DINSTALL_SQLBENCHDIR= - -DWITH_SYSTEMD=no - ) - fi - - cmake_src_configure -} - -src_compile() { - cmake_src_compile -} - -# Official test instructions: -# USE='extraengine perl server' \ -# FEATURES='test userpriv' \ -# ebuild mariadb-X.X.XX.ebuild \ -# digest clean package -src_test() { - _disable_test() { - local rawtestname bug reason - rawtestname="${1}" ; shift - bug="${1}" ; shift - reason="${@}" - ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})" - echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def" - } - - local TESTDIR="${BUILD_DIR}/mysql-test" - local retstatus_tests - - if ! use server ; then - einfo "Skipping server tests due to minimal build." - return 0 - fi - - # Ensure that parallel runs don't die - export MTR_BUILD_THREAD="$((${RANDOM} % 100))" - - if [[ -z "${MTR_PARALLEL}" ]] ; then - local -x MTR_PARALLEL=$(makeopts_jobs) - - if [[ ${MTR_PARALLEL} -gt 4 ]] ; then - # Running multiple tests in parallel usually require higher ulimit - # and fs.aio-max-nr setting. In addition, tests like main.multi_update - # are known to hit timeout when system is busy. - # To avoid test failure we will limit MTR_PARALLEL to 4 instead of - # using "auto". - local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})" - info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!" - einfo "${info_msg}" - unset info_msg - MTR_PARALLEL=4 - fi - else - einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'" - fi - - # Try to increase file limits to increase test coverage - if ! ulimit -n 16500 1>/dev/null 2>&1 ; then - # Upper limit comes from parts.partition_* tests - ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager." - - if ! ulimit -n 4162 1>/dev/null 2>&1 ; then - # Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)' - ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager." - - if ! ulimit -n 3000 1>/dev/null 2>&1 ; then - ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager." - else - einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 4162 (medium test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 16500 (best test coverage)." - fi - - # create directories because mysqladmin might run out of order - mkdir -p "${T}"/var-tests{,/log} || die - - if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then - touch "${S}"/mysql-test/unstable-tests || die - fi - - cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die - - local -a disabled_tests - disabled_tests+=( "compat/oracle.plugin;0;Needs example plugin which Gentoo disables" ) - disabled_tests+=( "innodb_gis.1;25095;Known rounding error with latest AMD processors" ) - disabled_tests+=( "innodb_gis.gis;25095;Known rounding error with latest AMD processors" ) - disabled_tests+=( "main.gis;25095;Known rounding error with latest AMD processors" ) - disabled_tests+=( "main.explain_non_select;0;Sporadically failing test" ) - disabled_tests+=( "main.func_time;0;Dependent on time test was written" ) - disabled_tests+=( "main.mysql_upgrade;27044;Sporadically failing test" ) - disabled_tests+=( "main.plugin_auth;0;Needs client libraries built" ) - disabled_tests+=( "main.selectivity_no_engine;26320;Sporadically failing test" ) - disabled_tests+=( "main.stat_tables;0;Sporadically failing test" ) - disabled_tests+=( "main.stat_tables_innodb;0;Sporadically failing test" ) - disabled_tests+=( "main.upgrade_MDEV-19650;25096;Known to be broken" ) - disabled_tests+=( "mariabackup.*;0;Broken test suite" ) - disabled_tests+=( "perfschema.nesting;23458;Known to be broken" ) - disabled_tests+=( "perfschema.prepared_statements;0;Broken test suite" ) - disabled_tests+=( "perfschema.privilege_table_io;27045;Sporadically failing test" ) - disabled_tests+=( "plugins.auth_ed25519;0;Needs client libraries built" ) - disabled_tests+=( "plugins.cracklib_password_check;0;False positive due to varying policies" ) - disabled_tests+=( "plugins.two_password_validations;0;False positive due to varying policies" ) - disabled_tests+=( "roles.acl_statistics;0;False positive due to a user count mismatch caused by previous test" ) - disabled_tests+=( "spider.*;0;Fails with network sandbox" ) - disabled_tests+=( "sys_vars.wsrep_on_without_provider;25625;Known to be broken" ) - - if ! use latin1 ; then - disabled_tests+=( "funcs_1.is_columns_mysql;0;Requires USE=latin1" ) - disabled_tests+=( "main.information_schema;0;Requires USE=latin1" ) - disabled_tests+=( "main.sp2;24177;Requires USE=latin1" ) - disabled_tests+=( "main.system_mysql_db;0;Requires USE=latin1" ) - disabled_tests+=( "main.upgrade_MDEV-19650;24178;Requires USE=latin1" ) - fi - - local test_infos_str test_infos_arr - for test_infos_str in "${disabled_tests[@]}" ; do - IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}" - - if [[ ${#test_infos_arr[@]} != 3 ]] ; then - die "Invalid test data set, not matching format: ${test_infos_str}" - fi - - _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}" - done - unset test_infos_str test_infos_arr - - # run mysql-test tests - pushd "${TESTDIR}" &>/dev/null || die - perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def" - retstatus_tests=$? - - popd &>/dev/null || die - - # Cleanup is important for these testcases. - pkill -9 -f "${S}/ndb" 2>/dev/null - pkill -9 -f "${S}/sql" 2>/dev/null - - local failures="" - [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests" - - [[ -z "${failures}" ]] || die "Test failures: ${failures}" - einfo "Tests successfully completed" -} - -src_install() { - cmake_src_install - - # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used - if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then - rm "${ED}/usr/include/mysql/server/private/config.h" || die - fi - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Convenience links - einfo "Making Convenience links for mysqlcheck multi-call binary" - dosym "mysqlcheck" "/usr/bin/mysqlanalyze" - dosym "mysqlcheck" "/usr/bin/mysqlrepair" - dosym "mysqlcheck" "/usr/bin/mysqloptimize" - - # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir - if [[ -d "${ED}/usr/data" ]] ; then - rm -Rf "${ED}/usr/data" || die - fi - - # Unless they explicitly specific USE=test, then do not install the - # testsuite. It DOES have a use to be installed, esp. when you want to do a - # validation of your database configuration after tuning it. - if ! use test ; then - rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test" - fi - - # Configuration stuff - einfo "Building default configuration ..." - insinto "${MY_SYSCONFDIR#${EPREFIX}}" - [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf - cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die - eprefixify "${TMPDIR}/my.cnf" - doins "${TMPDIR}/my.cnf" - insinto "${MY_SYSCONFDIR#${EPREFIX}}/mariadb.d" - cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die - eprefixify "${TMPDIR}/50-distro-client.cnf" - doins "${TMPDIR}/50-distro-client.cnf" - - if use server ; then - mycnf_src="my.cnf.distro-server" - sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ - "${FILESDIR}/${mycnf_src}" \ - > "${TMPDIR}/my.cnf.ok" || die - if use prefix ; then - sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ - "${TMPDIR}/my.cnf.ok" || die - fi - if use latin1 ; then - sed -i \ - -e "/character-set/s|utf8|latin1|g" \ - "${TMPDIR}/my.cnf.ok" || die - fi - eprefixify "${TMPDIR}/my.cnf.ok" - newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf - - einfo "Including support files and sample configurations" - docinto "support-files" - local script - for script in \ - "${S}"/support-files/magic - do - [[ -f "$script" ]] && dodoc "${script}" - done - - docinto "scripts" - for script in "${S}"/scripts/mysql* ; do - [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}" - done - # Manually install supporting files that conflict with other packages - # but are needed for galera and initial installation - exeinto /usr/libexec/mariadb - doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror" - - if use pam ; then - keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir - fi - fi - - # Conflicting files - conflicting_files=() - - # We prefer my_print_defaults from dev-db/mysql-connector-c - conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" ) - - # Remove bundled mytop in favor of dev-db/mytop - conflicting_files+=( "${ED}/usr/bin/mytop" ) - conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" ) - - local conflicting_file - for conflicting_file in "${conflicting_files[@]}" ; do - if [[ -e "${conflicting_file}" ]] ; then - rm -v "${conflicting_file}" || die - fi - done - - # Fix a dangling symlink when galera is not built - if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then - rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die - fi - - # Remove dangling symlink - rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die - - # Remove broken SST scripts that are incompatible - local scriptremove - for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do - if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then - rm "${ED}/usr/bin/${scriptremove}" || die - fi - done -} - -pkg_preinst() { - java-pkg-opt-2_pkg_preinst -} - -pkg_postinst() { - # Make sure the vars are correctly initialized - mysql_init_vars - - # Create log directory securely if it does not exist - [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}" - - if use server ; then - if use pam; then - einfo - elog "This install includes the PAM authentication plugin." - elog "To activate and configure the PAM plugin, please read:" - elog "https://mariadb.com/kb/en/mariadb/pam-authentication-plugin/" - einfo - chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die - fi - - if [[ -z "${REPLACING_VERSIONS}" ]] ; then - einfo - elog "You might want to run:" - elog "\"emerge --config =${CATEGORY}/${PF}\"" - elog "if this is a new install." - elog - elog "If you are switching server implentations, you should run the" - elog "mysql_upgrade tool." - einfo - else - einfo - elog "If you are upgrading major versions, you should run the" - elog "mysql_upgrade tool." - einfo - fi - - if use galera ; then - einfo - elog "Be sure to edit the my.cnf file to activate your cluster settings." - elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\"" - elog "The first time the cluster is activated, you should add" - elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node." - elog "This option should then be removed for subsequent starts." - einfo - if [[ -n "${REPLACING_VERSIONS}" ]] ; then - local rver - for rver in ${REPLACING_VERSIONS} ; do - if ver_test "${rver}" -lt "10.4.0" ; then - ewarn "Upgrading galera from a previous version requires admin restart of the entire cluster." - ewarn "Please refer to https://mariadb.com/kb/en/library/changes-improvements-in-mariadb-104/#galera-4" - ewarn "for more information" - fi - done - fi - fi - fi - - # Note about configuration change - einfo - elog "This version of mariadb reorganizes the configuration from a single my.cnf" - elog "to several files in /etc/mysql/${PN}.d." - elog "Please backup any changes you made to /etc/mysql/my.cnf" - elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension." - elog "You may have as many files as needed and they are read alphabetically." - elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." - einfo -} - -pkg_config() { - _getoptval() { - local section="${1}" - local option="--${2}" - local extra_options="${3}" - local cmd=( - "${my_print_defaults_binary}" - "${extra_options}" - "${section}" - ) - - local values=() - local parameters=( $(eval "${cmd[@]}" 2>/dev/null) ) - for parameter in "${parameters[@]}" - do - # my_print_defaults guarantees output of options, one per line, - # in the form that they would be specified on the command line. - # So checking for --option=* should be safe. - case ${parameter} in - ${option}=*) - values+=( "${parameter#*=}" ) - ;; - esac - done - - if [[ ${#values[@]} -gt 0 ]] ; then - # Option could have been set multiple times - # in which case only the last occurrence - # contains the current value - echo "${values[-1]}" - fi - } - - _mktemp_dry() { - # emktemp has no --dry-run option - local template="${1}" - - if [[ -z "${template}" ]] ; then - if [[ -z "${T}" ]] ; then - template="/tmp/XXXXXXX" - else - template="${T}/XXXXXXX" - fi - fi - - local template_wo_X=${template//X/} - local n_X - let n_X=${#template}-${#template_wo_X} - if [[ ${n_X} -lt 3 ]] ; then - echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2 - return - fi - - local attempts=0 - local character tmpfile - while [[ true ]] ; do - let attempts=attempts+1 - - new_file= - while read -n1 character ; do - if [[ "${character}" == "X" ]] ; then - tmpfile+="${RANDOM:0:1}" - else - tmpfile+="${character}" - fi - done < <(echo -n "${template}") - - if [[ ! -f "${tmpfile}" ]] - then - echo "${tmpfile}" - return - fi - - if [[ ${attempts} -ge 100 ]] ; then - echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2 - return - fi - done - } - - local mysql_binary="${EROOT}/usr/bin/mysql" - if [[ ! -x "${mysql_binary}" ]] ; then - die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysqld_binary="${EROOT}/usr/sbin/mysqld" - if [[ ! -x "${mysqld_binary}" ]] ; then - die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db" - if [[ ! -x "${mysql_install_db_binary}" ]] ; then - die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" - if [[ ! -x "${my_print_defaults_binary}" ]] ; then - die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" - fi - - if [[ -z "${MYSQL_USER}" ]] ; then - MYSQL_USER=mysql - if use prefix ; then - MYSQL_USER=$(id -u -n 2>/dev/null) - if [[ -z "${MYSQL_USER}" ]] ; then - die "Failed to determine current username!" - fi - fi - fi - - if [[ -z "${MYSQL_GROUP}" ]] ; then - MYSQL_GROUP=mysql - if use prefix ; then - MYSQL_GROUP=$(id -g -n 2>/dev/null) - if [[ -z "${MYSQL_GROUP}" ]] ; then - die "Failed to determine current user groupname!" - fi - fi - fi - - # my_print_defaults needs to read stuff in $HOME/.my.cnf - local -x HOME="${EROOT}/root" - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Read currently set data directory - MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - - # Bug #213475 - MySQL _will_ object strenously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if [[ -z "${MY_DATADIR}" ]] ; then - die "Sorry, unable to find MY_DATADIR!" - elif [[ -d "${MY_DATADIR}/mysql" ]] ; then - ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!" - ewarn "Please rename or delete its content if you wish to initialize a new data directory." - die "${PN} data directory at '${MY_DATADIR}' looks already initialized!" - fi - - MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_TMPDIR=${MYSQL_TMPDIR%/} - # These are dir+prefix - MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} - MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} - - # Create missing directories. - # Always check if mysql user can write to directory even if we just - # created directory because a parent directory might be not - # accessible for that user. - PID_DIR="${EROOT}/run/mysqld" - if [[ ! -d "${PID_DIR}" ]] ; then - einfo "Creating ${PN} PID directory '${PID_DIR}' ..." - install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \ - || die "Failed to create PID directory '${PID_DIR}'!" - fi - - local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_pid_dir_testfile}" ]] \ - && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_pid_dir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!" - else - rm "${_pid_dir_testfile}" || die - unset _pid_dir_testfile - fi - - if [[ ! -d "${MY_DATADIR}" ]] ; then - einfo "Creating ${PN} data directory '${MY_DATADIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \ - || die "Failed to create ${PN} data directory '${MY_DATADIR}'!" - fi - - local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_datadir_testfile}" ]] \ - && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_datadir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!" - else - rm "${_my_datadir_testfile}" || die - unset _my_datadir_testfile - fi - - if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then - einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \ - || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!" - fi - - if [[ -z "${MYSQL_TMPDIR}" ]] ; then - MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")" - [[ -z "${MYSQL_TMPDIR}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!" - - mkdir "${MYSQL_TMPDIR}" || die - chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die - fi - - # Now we need to test MYSQL_TMPDIR... - local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_tmpdir_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_tmpdir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!" - else - rm "${_my_tmpdir_testfile}" || die - unset _my_tmpdir_testfile - fi - - if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then - # Only create directory when MYSQL_LOG_BIN is an absolute path - einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \ - || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'" - fi - - if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then - # Only test when MYSQL_LOG_BIN is an absolute path - local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_logbin_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_logbin_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!" - else - rm "${_my_logbin_testfile}" || die - unset _my_logbin_testfile - fi - fi - - if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then - # Only create directory when MYSQL_RELAY_LOG is an absolute path - einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \ - || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!" - fi - - if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then - # Only test when MYSQL_RELAY_LOG is an absolute path - local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_relaylog_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_relaylog_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!" - else - rm "${_my_relaylog_testfile}" || die - unset _my_relaylog_testfile - fi - fi - - local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null) - [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir" - - # Limit access - chmod 0770 "${SETUP_TMPDIR}" || die - chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die - - local mysql_install_log="${SETUP_TMPDIR}/install_db.log" - local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log" - - echo "" - einfo "Detected settings:" - einfo "==================" - einfo "MySQL User:\t\t\t\t${MYSQL_USER}" - einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}" - einfo "MySQL DATA directory:\t\t${MY_DATADIR}" - einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}" - - if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then - # Absolute path for binary log files specified - einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}" - fi - - if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then - # Absolute path for relay log files specified - einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}" - fi - - einfo "PID DIR:\t\t\t\t${PID_DIR}" - einfo "Install db log:\t\t\t${mysql_install_log}" - einfo "Install server log:\t\t\t${mysqld_logfile}" - - echo - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local tmp_mysqld_password_source= - - for tmp_mysqld_password_source in mysql client ; do - einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" - if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then - if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then - ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" - MYSQL_ROOT_PASSWORD= - continue - fi - - einfo "Found password in '${tmp_mysqld_password_source}' section!" - break - fi - done - - # Sometimes --show is required to display passwords in some implementations of my_print_defaults - if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" - fi - - unset tmp_mysqld_password_source - fi - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local pwd1="a" - local pwd2="b" - - echo - einfo "No password for mysql 'root' user was specified via environment" - einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config" - einfo "file like '${HOME}/.my.cnf'." - einfo "To continue please provide a password for the mysql 'root' user" - einfo "now on console:" - ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!" - read -rsp " >" pwd1 ; echo - - einfo "Retype the password" - read -rsp " >" pwd2 ; echo - - if [[ "x${pwd1}" != "x${pwd2}" ]] ; then - die "Passwords are not the same!" - fi - - MYSQL_ROOT_PASSWORD="${pwd1}" - unset pwd1 pwd2 - - echo - fi - - local -a mysqld_options - - # Fix bug 446200. Don't reference host my.cnf, needs to come first, - # see http://bugs.mysql.com/bug.php?id=31312 - use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" ) - - # Figure out which options we need to disable to do the setup - local helpfile="${TMPDIR}/mysqld-help" - "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null - - local opt optexp optfull - for opt in host-cache name-resolve networking slave-start \ - federated ssl log-bin relay-log slow-query-log external-locking \ - log-slave-updates \ - ; do - optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" - grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" ) - done - - # Prepare timezones, see - # https://dev.mysql.com/doc/mysql/en/time-zone-support.html - local tz_sql="${SETUP_TMPDIR}/tz.sql" - - echo "USE mysql;" >"${tz_sql}" - "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null - if [[ $? -ne 0 ]] ; then - die "mysql_tzinfo_to_sql failed!" - fi - - local cmd=( - "${mysql_install_db_binary}" - "${mysqld_options[@]}" - "--init-file='${tz_sql}'" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - "--log-error='${mysql_install_log}'" - "--rpm" - "--cross-bootstrap" - "--skip-test-db" - "--user=${MYSQL_USER}" - ) - - einfo "Initializing ${PN} data directory: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1 - - if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2 - die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!" - fi - - local x=${RANDOM} - local socket="${PID_DIR}/mysqld.${x}.sock" - [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!" - local pidfile="${PID_DIR}/mysqld.${x}.pid" - [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!" - unset x - - cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - --max_allowed_packet=8M - --net_buffer_length=16K - "--socket='${socket}'" - "--pid-file='${pidfile}'" - "--log-error='${mysqld_logfile}'" - "--user=${MYSQL_USER}" - ) - - einfo "Starting mysqld to finalize initialization: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 & - - echo -n "Waiting for mysqld to accept connections " - local maxtry=15 - while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - if [[ -S "${socket}" ]] ; then - # Even with a socket we don't know if mysqld will abort - # start due to an error so just wait a little bit more... - maxtry=5 - while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - fi - - echo - - if [[ ! -S "${socket}" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2 - die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!" - fi - - local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log" - touch "${mysql_logfile}" || die - - ebegin "Setting root password" - # Do this from memory, as we don't want clear text passwords in temp files - local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'" - cmd=( - "${mysql_binary}" - --no-defaults - "--socket='${socket}'" - -hlocalhost - "-e \"${sql}\"" - ) - eval "${cmd[@]}" >"${mysql_logfile}" 2>&1 - local rc=$? - eend ${rc} - - if [[ ${rc} -ne 0 ]] ; then - # Poor man's solution which tries to avoid having password - # in log. NOTE: sed can fail if user didn't follow advice - # and included character which will require escaping... - sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null - - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}" - die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!" - fi - - # Stop the server - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - echo -n "Stopping the server " - pkill -F "${pidfile}" &>/dev/null - - maxtry=10 - while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - echo - - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - # We somehow failed to stop server. - # However, not a fatal error. Just warn the user. - ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!" - fi - fi - - rm -r "${SETUP_TMPDIR}" || die - - einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!" -} diff --git a/dev-db/mariadb/mariadb-10.6.17.ebuild b/dev-db/mariadb/mariadb-10.6.17.ebuild index acf533c2cb8c..d790e913d96a 100644 --- a/dev-db/mariadb/mariadb-10.6.17.ebuild +++ b/dev-db/mariadb/mariadb-10.6.17.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI="8" @@ -29,7 +29,7 @@ REQUIRED_USE="jdbc? ( extraengine server !static ) static? ( yassl !pam ) test? ( extraengine )" -KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv x86" +KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv x86" # Shorten the path because the socket path length must be shorter than 107 chars # and we will run a mysql server during test phase diff --git a/dev-db/mysql-connector-c/Manifest b/dev-db/mysql-connector-c/Manifest index bf8f28bee96c..5817a482d48e 100644 --- a/dev-db/mysql-connector-c/Manifest +++ b/dev-db/mysql-connector-c/Manifest @@ -1,10 +1,6 @@ AUX mysql-connector-c-8.0.19-do-not-install-comp_err.patch 307 BLAKE2B 864c07e9d4fb9a38ac418476f4b7738caa1f2a5dc633ad5921859793983c7b42acd87263ce2703df5a8c7d3bc3d7a60efb28a3ff17c311d89cc7b12edd22574f SHA512 cbb9be24a67a649b68230fe3482063d2d16fb629233e070289eb1ab0011bd8c43b0c056e4b6ca430a62ce0e8f47bb9490cb6746b7dc3fe06a05670b078cd084f -AUX mysql-connector-c-8.0.22-always-build-decompress-utilities.patch 534 BLAKE2B 15bef04f750b5f373d8c5f39690e90be482bfea66430234befc777e9d84d0060d20e1290798ddacbf0e9f0f8db45ba0318d88b61aec3fd1e859285cefff446ef SHA512 7ae81f4fe020c12e45eba041dcca921fa93f42a12d8c8d840b1bec819c00de8b780a792e99cdc3cae55eef74c911de3087b6583d6213913b36428b96f0e1c3af AUX mysql-connector-c-8.0.27-res_n.patch 1635 BLAKE2B f75811958a6415bf45aa571a8da14c371500216a197602dec19b8b565bc219f98e8feb9bc660d81e32c4af7f39abb626af405d33a7f478617c8ee96c5b4453b8 SHA512 bb6315f0ac540d0723dffd9f8c2bdad9b9b1c0a3d706f80fd3bbdc9c7f276a8dda2754df94f6cb4ffecb0c3b0e65edc96c90b171eb0a4e5032fe6583e56ade85 -AUX mysql-connector-c-8.0.32-musl.patch 833 BLAKE2B 92fd8e0b41ec07faf37bf94795e87883bb6bf860e7e0ba27919fe2caedb06b4a015d866d48568d5342f0557b6cba42fe912e8e8ea2f2c6c8a1a21fc05531d11e SHA512 35646ccce4f6064eb8b71cb7309db34abe851e5a46acb7b428a7c667bbe6f63de82ef74e00e58192c4fb55c82fe5ad3818551ec3eb334364fa426c106e846f5d AUX mysql-connector-c-8.0.36-always-build-decompress-utilities.patch 607 BLAKE2B 67196391d8d9a042087129cda2d7aa67903e73aa9446f32e831eef5b97d7c48cdf1c9774af19c814e82ee6a7524ae8ec481a8bb5a998f4e4fc67238b8cb89c14 SHA512 f020448bbe67d6ad262a444af4c36efc3b2dd7d1a2fa21145f1018e5dd20c1ab447e4171ad23536fbeb1ba3a1a2bdbc8e58c7bce9608ab858889e1f4e2426c64 -DIST mysql-boost-8.0.32.tar.gz 436207624 BLAKE2B 8a75fd6fe12d4f870622b3386118737b8f17d116df625ef6187647c870d456823543e0a1e9aa05fff53313c3872df1df23add2508ec735bb7972718fc1e90539 SHA512 937e0d0350cb583bb4de15b080f08ed92b253a6d7c09f13a028855dae154fc84f0c95fb082b818b2fa6fa792cd2d9db8d7dc7a20a2a0d3d2b6839fbd2c821b44 DIST mysql-boost-8.0.36.tar.gz 438154682 BLAKE2B 066c9dd7f2804ad29808c3bfcf5eae53466f7c40cf1386a9c1f26a0b45dcc3eda8d9618de36e8008e5e4d58b726d6c8ca85aec8d1eda8981f5a49e495b32f046 SHA512 a6c1c009a322b7e7aa2aa607573060414c847c77d48f44a24058ffb89673621f2ebbcc1a4448fa841a87ff721159cc8eaf44a57721c7dc233c130691c16a9d4a -EBUILD mysql-connector-c-8.0.32-r1.ebuild 3327 BLAKE2B 60483b60dfcc46df33fe68dda5289b4e8092b5bc942083637e5b25a554b880235a53cf0772a9b58e3edfce9051cc3c05a0f73986df3d573483d6dea76e77f2d2 SHA512 d59fa7278607f1a2760f7d291a30afd4ab69115de9e9e171efb14a66899c838647a69b47d4389aba6695b5796ef109398af9095572de5c03c1ba0db9b8ed8175 EBUILD mysql-connector-c-8.0.36.ebuild 3193 BLAKE2B d27adfacf052bfee9e17642b5b07c78c408be52f11b73f36bd213522c62d542e0708abb53c4f58cdb99df6be460354d749efb4b34f0e812536889c9a3ee8d5e1 SHA512 81d17293faa94dc938dc165caec455ec619efbaa73fd676e3ab20ef2ee7ea5174afcf47f65d5cb6c370f2d4fa1d912c4c940d02dc39f44dc260898b4822c202d MISC metadata.xml 240 BLAKE2B cc93ae4da8408b221c296e092d9db6ae3879754ade669d81c1218d53a5f007c6b7717bda6f92dbb0af38ff9b5e45f44e91503b12d3603d9955ec7d5a2a67399b SHA512 0f41c32ce3d736e061302252f14913d7425bc97e19d0c2f3b80c50637ab3521aa6cfc67f82e5f70f91174cddb36bb5622837dc18fd9db3bf75eb860359aade27 diff --git a/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.22-always-build-decompress-utilities.patch b/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.22-always-build-decompress-utilities.patch deleted file mode 100644 index b0046fd8b224..000000000000 --- a/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.22-always-build-decompress-utilities.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/utilities/CMakeLists.txt -+++ b/utilities/CMakeLists.txt -@@ -123,14 +123,11 @@ MYSQL_ADD_EXECUTABLE(perror - DEPENDENCIES GenError - LINK_LIBRARIES mysys - ) --IF(BUILD_BUNDLED_LZ4) -- MYSQL_ADD_EXECUTABLE(lz4_decompress -- lz4_decompress.cc -- COMPONENT Server -- LINK_LIBRARIES ${LZ4_LIBRARY} mysys -- ) --ENDIF() -- -+MYSQL_ADD_EXECUTABLE(lz4_decompress -+ lz4_decompress.cc -+ COMPONENT Server -+ LINK_LIBRARIES ${LZ4_LIBRARY} mysys -+ ) - MYSQL_ADD_EXECUTABLE(zlib_decompress - zlib_decompress.cc - COMPONENT Server diff --git a/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.32-musl.patch b/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.32-musl.patch deleted file mode 100644 index 252c5eeda32e..000000000000 --- a/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.32-musl.patch +++ /dev/null @@ -1,25 +0,0 @@ -https://github.com/mysql/mysql-server/pull/454 - -From c875f049cb3571da1b9b5bcae50caccc5ee47cfb Mon Sep 17 00:00:00 2001 -From: orbea <orbea@riseup.net> -Date: Fri, 7 Apr 2023 12:47:51 -0700 -Subject: [PATCH] sql/memory: Fix the musl build - -_SC_LEVEL1_DCACHE_LINESIZE is not specific to linux, but to glibc. ---- - sql/memory/aligned_atomic.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sql/memory/aligned_atomic.h b/sql/memory/aligned_atomic.h -index d13d45b9deea..bd19c0cf4d6f 100644 ---- a/sql/memory/aligned_atomic.h -+++ b/sql/memory/aligned_atomic.h -@@ -76,7 +76,7 @@ static inline size_t _cache_line_size() { - return line_size; - } - --#elif defined(__linux__) -+#elif defined(__GLIBC__) - static inline size_t _cache_line_size() { - long size = sysconf(_SC_LEVEL1_DCACHE_LINESIZE); - if (size == -1) return 64; diff --git a/dev-db/mysql-connector-c/mysql-connector-c-8.0.32-r1.ebuild b/dev-db/mysql-connector-c/mysql-connector-c-8.0.32-r1.ebuild deleted file mode 100644 index 439f779c8568..000000000000 --- a/dev-db/mysql-connector-c/mysql-connector-c-8.0.32-r1.ebuild +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake-multilib flag-o-matic - -DESCRIPTION="C client library for MariaDB/MySQL" -HOMEPAGE="https://dev.mysql.com/downloads/" - -if [[ ${PV} == "9999" ]]; then - EGIT_REPO_URI="https://github.com/mysql/mysql-server.git" - - inherit git-r3 -else - SRC_URI="https://dev.mysql.com/get/Downloads/MySQL-$(ver_cut 1-2)/mysql-boost-${PV}.tar.gz" - KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" - - S="${WORKDIR}/mysql-${PV}" -fi - -LICENSE="GPL-2" -SLOT="0/21" -IUSE="ldap static-libs" - -RDEPEND=" - >=app-arch/lz4-1.9.4:=[${MULTILIB_USEDEP}] - app-arch/zstd:=[${MULTILIB_USEDEP}] - dev-libs/openssl:=[${MULTILIB_USEDEP}] - >=sys-libs/zlib-1.2.13:=[${MULTILIB_USEDEP}] - ldap? ( dev-libs/cyrus-sasl:=[${MULTILIB_USEDEP}] ) -" -DEPEND="${RDEPEND}" -# Avoid file collisions, #692580 -RDEPEND+=" - !<dev-db/mysql-5.6.45-r1 - !=dev-db/mysql-5.7.23* - !=dev-db/mysql-5.7.24* - !=dev-db/mysql-5.7.25* - !=dev-db/mysql-5.7.26-r0 - !=dev-db/mysql-5.7.27-r0 - !<dev-db/percona-server-5.7.26.29-r1 -" - -DOCS=( README ) - -# Wrap the config script -MULTILIB_CHOST_TOOLS=( /usr/bin/mysql_config ) - -PATCHES=( - "${FILESDIR}"/${PN}-8.0.22-always-build-decompress-utilities.patch - "${FILESDIR}"/${PN}-8.0.19-do-not-install-comp_err.patch - "${FILESDIR}"/${PN}-8.0.27-res_n.patch - "${FILESDIR}"/${PN}-8.0.32-musl.patch -) - -src_prepare() { - sed -i -e 's/CLIENT_LIBS/CONFIG_CLIENT_LIBS/' "scripts/CMakeLists.txt" || die - - # All these are for the server only. - # Disable rpm call which would trigger sandbox, #692368 - sed -i \ - -e '/MYSQL_CHECK_LIBEVENT/d' \ - -e '/MYSQL_CHECK_RAPIDJSON/d' \ - -e '/MYSQL_CHECK_ICU/d' \ - -e '/MYSQL_CHECK_EDITLINE/d' \ - -e '/MYSQL_CHECK_CURL/d' \ - -e '/ADD_SUBDIRECTORY(man)/d' \ - -e '/ADD_SUBDIRECTORY(share)/d' \ - -e '/INCLUDE(cmake\/boost/d' \ - -e 's/MY_RPM rpm/MY_RPM rpmNOTEXISTENT/' \ - CMakeLists.txt || die - - # Skip building clients - echo > client/CMakeLists.txt || die - - # Forcefully disable auth plugin - if ! use ldap ; then - sed -i -e '/MYSQL_CHECK_SASL/d' CMakeLists.txt || die - echo > libmysql/authentication_ldap/CMakeLists.txt || die - fi - - cmake_src_prepare -} - -multilib_src_configure() { - # Code is now requiring C++17 due to https://github.com/mysql/mysql-server/commit/236ab55bedd8c9eacd80766d85edde2a8afacd08 - append-cxxflags -std=c++17 - - local mycmakeargs=( - -DCMAKE_C_FLAGS_RELWITHDEBINFO=-DNDEBUG - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=-DNDEBUG - -DINSTALL_LAYOUT=RPM - -DINSTALL_LIBDIR=$(get_libdir) - -DWITH_DEFAULT_COMPILER_OPTIONS=OFF - -DENABLED_LOCAL_INFILE=ON - -DMYSQL_UNIX_ADDR="${EPREFIX}/run/mysqld/mysqld.sock" - # Automagically uses LLD with not using LTO (bug #710272, #775845) - -DUSE_LD_LLD=OFF - -DWITH_LZ4=system - -DWITH_NUMA=OFF - -DWITH_SSL=system - -DWITH_ZLIB=system - -DWITH_ZSTD=system - -DLIBMYSQL_OS_OUTPUT_NAME=mysqlclient - -DSHARED_LIB_PATCH_VERSION="0" - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - -DWITHOUT_SERVER=ON - -DWITH_BUILD_ID=OFF - ) - - cmake_src_configure -} - -multilib_src_install_all() { - # Not a GNU info file, more like a tiny README. - rm "${ED}"/usr/share/info/mysql.info || die - - doman \ - man/my_print_defaults.1 \ - man/perror.1 \ - man/zlib_decompress.1 - - if ! use static-libs ; then - find "${ED}" -name "*.a" -delete || die - fi -} diff --git a/dev-db/mysql/Manifest b/dev-db/mysql/Manifest index bc73872b1ebd..5bc8c906c9ba 100644 --- a/dev-db/mysql/Manifest +++ b/dev-db/mysql/Manifest @@ -3,27 +3,11 @@ AUX my.cnf-8.0.distro-client 749 BLAKE2B b01b39c85430714b5a4bfb9923c9ed1df99cdce AUX my.cnf-8.0.distro-server 1125 BLAKE2B f4d6941aad1fc29e81e6c805ac42f4c8d3c7bc250990a9c432800dbe25b5c31be08d8e3895666b57f21606ffb69e704c57ed2692fd94696b9d325a4442596587 SHA512 82d35b7bc944e5690e1f2670a3d5674845610c2d11d6d8b1c5784ccb3877c6298de70eced3d7c497c0bcaecfa9e339ac43ce0534a97e7d976e950bb1a7f5c75d AUX my.cnf.distro-client 637 BLAKE2B b0812e0e03aa9a3b2e55e08b933a0b41b6afd95ded61f4d9d7c34a2d3810ec38520abd0d89e1c6565f61d4cd8a36d653f9f3199b3dd6a91345cdb5ff962685d8 SHA512 74bd1d9a58075d0a6195be1f94db310bcbe8da532b03844e6fa1ff84676e84843fc9adf9aed06b7e4db53c9aa24ef0885d96de0ccfe4c6ad98afe4c145d43f4f AUX my.cnf.distro-server 994 BLAKE2B 41dceff58edf748f9f60ac3c0d1682d2fc2f026fc1fd14b4c2dea398814beda3c09aabea04dd3a9e145464524c629e7e69dc257d1245e0a46dd8584b7f685172 SHA512 cf172edc23d3dda49c21af6b8adef8aa13694d8ceecddf1d612d4ae34d00ba53c51ae4ae7ca4d11083eeacb5d862f59a855a9d80e9e448ab8bbf17f42aac2650 -AUX mysql-8.0.27-gcc12.patch 879 BLAKE2B 66346c9bddf7555e732a2ed2a297e46bf39862a1addfb56ec44995b142d47ea1b58f6f5524ff2672902557b948f4606ce992b16681367873bc936370c70ee20a SHA512 b5f6f89a1fdbdb384dc5b66e5730417e49e942ab9855ab1808d893489bd8c1980751a0a433e1f66694a14308c0f4a3244a7bd51929abc3b808a07854be23ea55 -AUX mysql-8.0.31-build-tmpdir-nodefault.patch 528 BLAKE2B 678f8bf9edd9d517612b83690cf595b1554677f12d0f7a8d5784849e1aa80d0ef414f569d09106c5da40e60b450d5ca0b4b145bb48b22763bfbe78e5a04b3387 SHA512 cad6137dba330a44316fbd59b535081079e497ce429db68f1989765fc6736e27efff7aee063a714e5ea0fcb6ecb6985405dd1e2b53e0708e72a64319dded17e9 -AUX mysql-8.0.32-gcc13.patch 650 BLAKE2B a6ce813719fb4ef0f8bcdecdc6c42dd9a13a705c4e5c1f7be3c7d81078290921b7402e4c8e2aadf81333e9b361da84c0d9679881d9c4c2e089e6ffa3031324df SHA512 d41b413f7ecfcb82b3d4780e46f8a54d1c7c95c23202ea4d0a1d821b56ba2f87b213ca097a52d5617b70b0f1422e011875ad1f4c25393503c69e212350f8c4a9 AUX mysql-8.0.36-boost-clang-fix.patch 4065 BLAKE2B aee8b1b021ac5a330c5d4bd3964fe4282bd5186b7f288a432ff7544a8fa81b54777d60ddfa33217c526ab79391ba858059d8bbed68da366cce16a5578ddee4e3 SHA512 b09614aa85c03eb36d20b0d7267bfae4f340016170729ef87044f74cabb42b6fc903b205d8ff0a5e2f39fa6845ad319472924c8c57f4419ab1a7042e62d7ef2d DIST mysql-5.7.36-patches-01.tar.xz 6396 BLAKE2B ed9783f207d40fc220992c4193bdd8e96523f69414daa756f1f30306c1aedff9e96216ba2294a4c41eefbaf39c8bb37784bf1e7cce656c93f829c9cf0682fa6d SHA512 b0fbd41ebb2d32067e6c81707dffa91fece2d368f4b2fa47951492936509972d425b64d7613748c42b31cf9ba9dab697efeff70debe7268855a90d322d3f3158 -DIST mysql-8.0.27-patches-03.tar.xz 9864 BLAKE2B 03136477a97a5bff0c5f1cbc7921a77d9b36e148e94f80463f00f0efd1a6859af4595f9cf15aa492bce043fdc9d6c6328bd64102f8b0127eacbc7795b1785ecb SHA512 8c00c8fef2b01389f59138eaa29399d8a9ce7930b6bdfb7689d1d7bf14a32fbb10a2b8dbe91933b805899ef3af0cf0bda704d4be14249991b381054bcc496058 -DIST mysql-8.0.31-patches-01.tar.xz 5464 BLAKE2B c067bf311c83d4aa0f48d56621997bc58820fa0b41bd708eae04b0b54b89d549c5c1b84ca93adcbbdcb008199510ea667a12b1bcd44bf6b6df02062b4551d0a2 SHA512 95af6bb5aa0c407f0a1014f33523608b0df0797fd7fbdbba8a19985258a7c04788d7587c8f67cd1745284522c58297931c8827e31f77e8c89baaeff71a5e0ddc -DIST mysql-8.0.34-patches-01.tar.xz 9304 BLAKE2B e80dd1fab00fb183e0b980763a9b6c3b879357b776b2acc9709527e5d6e2549f801835936433e55fcde2820201edb3dead5d95f31ef617ef9542d2a0bd95efca SHA512 1ac196d609fabd9c978bc8dd3564a45f0d681c292215d8979604d7e402c622d70a1c66ed191ded081c597042298c43154a9bb09bb4566e7fe97991f67d91d999 DIST mysql-8.0.36-patches-01.tar.xz 10768 BLAKE2B d9b9c6f170e08eee249bbef77713116ad2f1bd05d638f908011c8be406548b9a87a5189d440147c76ac8aef8058d3fdf25d754191a52fef786812ddd6a2409dd SHA512 3f6af0f17e2ded2ec5cc9b0001062bda061e51a17f4f2d1f1fb604590de026a70bd21cecdff28e05adb1b89356fec1c1b33bc9c848e8a20186412d8547452305 DIST mysql-boost-5.7.41.tar.gz 53266489 BLAKE2B 7201d6c53cf711bd121464fc85260e1799f7195f45706b91f3cb8d605fe2bd2639d532b4045a336645a553d9b0b1131cc45140a19483902e5dc37d3e2479b6f5 SHA512 88e1cc4864616ed92880a3f02285763aac2ddfc1cdeeff07e1502c97bbdfd31c9ed9d02f8f6381a352857a85241e4e4eb6bc0d978e3928a68ef49362f670482a -DIST mysql-boost-8.0.27.tar.gz 292184025 BLAKE2B 177209f3c62b0326ca9d021c751a701dec84c1b15c946ab0a68b1b4cf0620468eb3a1df77a918284007a0fde1aaa6a9767d0baed57936612813ef583df51c35e SHA512 6ef2426c0bee46bdf8e2fa5cb159d5ae19f0bed4f7c9bea9b33e0dd922b568c3c68ca063dcbcd7ea6904aaea31877c10064ea10b4bc63fb40d9f31778e3a7891 -DIST mysql-boost-8.0.31.tar.gz 334504577 BLAKE2B 0506472c732351a1055be9bbd81212e95280ae464af95cb5b579777dd8fad4634b099fa2830c3095066daf8c586f1d8cd2316e7268fb0d2577dd706c595c9102 SHA512 87b1678de8c2fd640fd6f3ae58266ea63fe240578330e3296d0e5fc209bbe9b0c22996214b6ca4cce8c0d9cc2f9897f4e6723d835b33fc4342983c82929c3d96 -DIST mysql-boost-8.0.32.tar.gz 436207624 BLAKE2B 8a75fd6fe12d4f870622b3386118737b8f17d116df625ef6187647c870d456823543e0a1e9aa05fff53313c3872df1df23add2508ec735bb7972718fc1e90539 SHA512 937e0d0350cb583bb4de15b080f08ed92b253a6d7c09f13a028855dae154fc84f0c95fb082b818b2fa6fa792cd2d9db8d7dc7a20a2a0d3d2b6839fbd2c821b44 -DIST mysql-boost-8.0.34.tar.gz 439550780 BLAKE2B f50701b7e97e6cec21d6ce0f80f07a8df68a14c637a67841c06f578be8ed01d216dcb3b859a29f1befd4223b99e60675d6fa70f4b227bf6af81804e2c43161d4 SHA512 e5e79ac6870c214cf62c8e2830106d60e09d2e6df30654b84bb5d26864b4eabe777468a223e6ee4c1e22b7f6ec086c73e85e3f4c1fa66912b0e59b606ab46cd6 -DIST mysql-boost-8.0.36.tar.gz 438154682 BLAKE2B 066c9dd7f2804ad29808c3bfcf5eae53466f7c40cf1386a9c1f26a0b45dcc3eda8d9618de36e8008e5e4d58b726d6c8ca85aec8d1eda8981f5a49e495b32f046 SHA512 a6c1c009a322b7e7aa2aa607573060414c847c77d48f44a24058ffb89673621f2ebbcc1a4448fa841a87ff721159cc8eaf44a57721c7dc233c130691c16a9d4a DIST mysql-boost-8.0.37.tar.gz 445594692 BLAKE2B 105521985ec8c622a28b5e0f7f13e519b2d91af6ce7c2b483cf1c096aa79f156cc59eabb6281b485d6f558eb6e20a95d5edc349bbd72d1c4a2591eef59270f4c SHA512 4c6033d4f96990d3f324f0d5733273425ddf7cc11660e110e0dc848da6cfa47b7565c1eb0b5d1e08878a0ea2c7d1eb85b400ccca28e5b4383f7e9216ba3e1660 EBUILD mysql-5.7.41.ebuild 38688 BLAKE2B 962c28d2f6ee89e005820d780c1e95676274f9bb2e800728844680489618363c5a75819362c168d8adb321a077b5ee054b19e901fde8a3e190e210efd5dce482 SHA512 46f86f07913896c824ba0c4c409f15a9bc60882ca310dfd175a611ca068900bf7ac52bca6053dbcf556e437549980de423fd42182bd6601bbf1ce52e9a1750dc -EBUILD mysql-8.0.27-r1.ebuild 40502 BLAKE2B 38e264de6f1e6c13e75218d858ea74887d14be9b3d2b17408584612a63c768d2538a793f15e1eead6c7d96995699b52768ae387c50c2954f8a0d7a6729fc6f60 SHA512 f5b962dc40f9acf9cb53eb6db7987ad1ca16cb2e032bf5b9276bae1c84175d839239eb99100f4e897bc70dc5971e23a0ab3fbd3fb59dcf794c3583bfba951df7 -EBUILD mysql-8.0.31-r2.ebuild 40548 BLAKE2B cc9db5c5fae53a999020e481ab25f21d83af55d45b04377e7f22b587d45501c7cdf048985da4f473ea1ad1eb53a8e9b61cb9efb49d997ff9cb3dd657c2291506 SHA512 e9b0cbb6ed06d5225335101b188d07ade195bb37aa23b6e4e7816dff64c65cce3a1de17f204fb5985656e6c414c9db02ca3dabe8cc414789f320f705d6ffc7e2 -EBUILD mysql-8.0.32-r2.ebuild 40292 BLAKE2B 6147630b1e441f5b1317c51d9df9283be141ad76984d74ede6a96f200a0f366e8fb2210b177a1be2b05c8eee401cff13ef12c01dc35bba4f04dc16976eee6303 SHA512 d92988cc5a628b31b39eaabea54fdf564071c11d5fe4b51a4ae49e90e3f2357155fb894ecc66726b7a7905c39d9dce26be7356abd1958b16dd6db00e2a46169c -EBUILD mysql-8.0.34.ebuild 39611 BLAKE2B d4a6add580108cf55d750afec27d7101804b22a9e9658a947bb0e6a1d02d03262822c3691ae0b739635acf4a5b8c4c49e9df2890e0a9a9f00d6bc37b5527977d SHA512 ed8ed74e95ccd1e583cd91624dd40438cb10109a72c9f1e58383cd059dcc9606283409302d56b0ba75ee8ad0a6f62d791f590c10c4e5e550fa0fd6e043f50c77 -EBUILD mysql-8.0.36.ebuild 41203 BLAKE2B 500fabafb926c5da8b0dcf71f906753fa4d41ddc706c2fd2f7ee589d484cf5db959965c9165d375abe66a3dd2d1ff4b22f996a6dcf08e66ada998feb8cfba426 SHA512 8b12c0241ad5de4ed0026cf92b00b4b5efb031074738a6821fad1d8741cd7c16d15cd900d1cd7b153726bc2b115c9955940f89e818a224c9d3ab0124ff5ffee0 -EBUILD mysql-8.0.37.ebuild 41721 BLAKE2B f3908e79658472091f5c1a3fa64724458454f539ebf559c1be6acc2a60cf2c2c02c242a4d4869cfeb0883122d425c48389e340705430fd0556506f1dfe007b96 SHA512 ed54f559c35b71086d1657d7ee601f014da8d49aa610a3e3930022e03ac2a5451641bb61cc11e571f55ae94edc39f566b1e9cd92b9906a2d801b52d858c3120f +EBUILD mysql-8.0.37.ebuild 41716 BLAKE2B 867dd5ab52a9e29d4e8f117744f636bfcff0587f26be08df5ef4c9e70b55256c4608c68feb6a7070e2d23e37c7b1e92ddc5337f1b1149452b2e8e267b31a8dbb SHA512 c7a7a26aa468683514dc52c914983f4273d6ab14b4bc487c9526eeececeaf34959756f4203ed47d318f6cf4028946cb6f3cdad8ddd77ae0af2658dd85300d481 MISC metadata.xml 1353 BLAKE2B ec0454ffdcce75567e9817fa199f1e6ec1ac73520001c299b794cbfebcd42f9e5abfcf9e6faec47bd0b04f40b03846798f1735e1561c91e4e3c0df48627fe4da SHA512 d5f33d05fd1505d13afa2e968cbfcbe1c6ad6a581468608ed1fd88daf1dd17dd66fbc55b8b6eceb42e2d03bd4327985ff7432c668f983775b103e4375b4ad8c6 diff --git a/dev-db/mysql/files/mysql-8.0.27-gcc12.patch b/dev-db/mysql/files/mysql-8.0.27-gcc12.patch deleted file mode 100644 index f4ecb59273a6..000000000000 --- a/dev-db/mysql/files/mysql-8.0.27-gcc12.patch +++ /dev/null @@ -1,33 +0,0 @@ -https://bugs.gentoo.org/840990 -https://bugs.gentoo.org/852737 ---- a/client/logger.cc -+++ b/client/logger.cc -@@ -27,6 +27,7 @@ - #include <time.h> - #include <iostream> - #include <locale> -+#include <memory> - - using namespace std; - ---- a/components/keyrings/common/component_helpers/src/keyring_log_builtins_definition.cc -+++ b/components/keyrings/common/component_helpers/src/keyring_log_builtins_definition.cc -@@ -25,6 +25,7 @@ - #include <cstring> - #include <iostream> - #include <locale> -+#include <memory> - #include <sstream> - - #include <m_string.h> - ---- a/router/src/harness/include/mysql/harness/net_ts/executor.h -+++ b/router/src/harness/include/mysql/harness/net_ts/executor.h -@@ -35,6 +35,7 @@ - #include <stdexcept> // logic_error - #include <thread> - #include <type_traits> // decay_t, enable_if -+#include <utility> - #include <unordered_map> - - #include "my_compiler.h" diff --git a/dev-db/mysql/files/mysql-8.0.31-build-tmpdir-nodefault.patch b/dev-db/mysql/files/mysql-8.0.31-build-tmpdir-nodefault.patch deleted file mode 100644 index f0f4a392b44d..000000000000 --- a/dev-db/mysql/files/mysql-8.0.31-build-tmpdir-nodefault.patch +++ /dev/null @@ -1,12 +0,0 @@ -https://bugs.gentoo.org/878951 ---- a/cmake/info_macros.cmake.in 2022-09-13 12:15:16.000000000 -0400 -+++ b/cmake/info_macros.cmake.in 2022-11-01 00:12:06.270464679 -0400 -@@ -175,7 +175,7 @@ - IF(HAVE_BUILD_ID_SUPPORT AND NOT WITHOUT_SERVER) - FILE(APPEND ${INFO_BIN} "\n===== BUILD ID =====\n") - EXECUTE_PROCESS(COMMAND -- ${MYSQLD_EXECUTABLE} --help -+ ${MYSQLD_EXECUTABLE} --no-defaults --help - OUTPUT_VARIABLE mysqld_help - RESULT_VARIABLE mysqld_help_result - ERROR_VARIABLE mysqld_help_error diff --git a/dev-db/mysql/files/mysql-8.0.32-gcc13.patch b/dev-db/mysql/files/mysql-8.0.32-gcc13.patch deleted file mode 100644 index e7ec0603bbea..000000000000 --- a/dev-db/mysql/files/mysql-8.0.32-gcc13.patch +++ /dev/null @@ -1,21 +0,0 @@ -https://bugs.gentoo.org/895818 -https://github.com/mysql/mysql-server/pull/456 - -From 2e5614c4ec50c60fbadbd57f213c1c7d6b959be9 Mon Sep 17 00:00:00 2001 -From: Alfred Wingate <parona@protonmail.com> -Date: Wed, 12 Apr 2023 16:16:13 +0300 -Subject: [PATCH] sql/binlog/group_commit: include header for std::uint64_t - -GCC 13 changed default header dependencies for C++ necessitating -including cstdint explicitly. ---- a/sql/binlog/group_commit/bgc_ticket.h -+++ b/sql/binlog/group_commit/bgc_ticket.h -@@ -23,6 +23,7 @@ - #ifndef BINLOG_BCG_TICKET_H - #define BINLOG_BCG_TICKET_H - -+#include <cstdint> - #include <functional> - #include <limits> - #include <memory> - diff --git a/dev-db/mysql/mysql-8.0.27-r1.ebuild b/dev-db/mysql/mysql-8.0.27-r1.ebuild deleted file mode 100644 index 3e1f2bf8e459..000000000000 --- a/dev-db/mysql/mysql-8.0.27-r1.ebuild +++ /dev/null @@ -1,1219 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" - -CMAKE_MAKEFILE_GENERATOR=emake - -inherit check-reqs cmake flag-o-matic linux-info \ - multiprocessing prefix toolchain-funcs - -MY_PV="${PV//_pre*}" -MY_P="${PN}-${MY_PV}" - -# Patch version -PATCH_SET=( https://dev.gentoo.org/~{whissi,dlan}/dist/mysql/${P}-patches-03.tar.xz ) - -SRC_URI="https://cdn.mysql.com/Downloads/MySQL-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz - https://cdn.mysql.com/archives/mysql-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz - http://downloads.mysql.com/archives/MySQL-$(ver_cut 1-2)/${PN}-boost-${MY_PV}.tar.gz - ${PATCH_SET[@]}" - -HOMEPAGE="https://www.mysql.com/" -DESCRIPTION="A fast, multi-threaded, multi-user SQL database server" -LICENSE="GPL-2" -SLOT="8.0" -IUSE="cjk cracklib debug jemalloc latin1 numa +perl profiling - router selinux +server tcmalloc test" - -RESTRICT="!test? ( test )" - -REQUIRED_USE="?? ( tcmalloc jemalloc ) - cjk? ( server ) - jemalloc? ( server ) - numa? ( server ) - profiling? ( server ) - router? ( server ) - tcmalloc? ( server )" - -# -ppc, -riscv for bug #761715 -KEYWORDS="amd64 arm arm64 ~hppa ~mips -ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" - -# Shorten the path because the socket path length must be shorter than 107 chars -# and we will run a mysql server during test phase -S="${WORKDIR}/mysql" - -# Be warned, *DEPEND are version-dependant -# These are used for both runtime and compiletime -COMMON_DEPEND=" - >=app-arch/lz4-0_p131:= - app-arch/zstd:= - sys-libs/ncurses:0= - >=sys-libs/zlib-1.2.3:0= - >=dev-libs/openssl-1.0.0:0= - server? ( - dev-libs/icu:= - dev-libs/libevent:=[ssl,threads(+)] - >=dev-libs/protobuf-3.8:= - net-libs/libtirpc:= - cjk? ( app-text/mecab:= ) - jemalloc? ( dev-libs/jemalloc:0= ) - kernel_linux? ( - dev-libs/libaio:0= - sys-process/procps:0= - ) - numa? ( sys-process/numactl ) - tcmalloc? ( dev-util/google-perftools:0= ) - ) -" - -DEPEND=" - ${COMMON_DEPEND} - || ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 ) - app-alternatives/yacc - server? ( net-libs/rpcsvc-proto ) - test? ( - acct-group/mysql acct-user/mysql - dev-perl/JSON - ) -" - -RDEPEND=" - ${COMMON_DEPEND} - !dev-db/mariadb !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster - !dev-db/mysql:0 - !dev-db/mysql:5.7 - selinux? ( sec-policy/selinux-mysql ) - !prefix? ( - acct-group/mysql acct-user/mysql - dev-db/mysql-init-scripts - ) -" - -# For other stuff to bring us in -# dev-perl/DBD-mysql is needed by some scripts installed by MySQL -PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" - -mysql_init_vars() { - : ${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"} - : ${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} - : ${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} - : ${MY_LOGDIR="${EPREFIX}/var/log/mysql"} - MY_DATADIR="${MY_LOCALSTATEDIR}" - - export MY_SHAREDSTATEDIR MY_SYSCONFDIR - export MY_LOCALSTATEDIR MY_LOGDIR - export MY_DATADIR -} - -pkg_pretend() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use server ; then - CHECKREQS_DISK_BUILD="3G" - - if has test $FEATURES ; then - CHECKREQS_DISK_BUILD="9G" - fi - - check-reqs_pkg_pretend - fi - fi -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - CHECKREQS_DISK_BUILD="3G" - - if has test ${FEATURES} ; then - CHECKREQS_DISK_BUILD="9G" - - # Bug #213475 - MySQL _will_ object strenuously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if ! has userpriv ${FEATURES} ; then - die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." - fi - - local aio_max_nr=$(sysctl -n fs.aio-max-nr 2>/dev/null) - [[ -z "${aio_max_nr}" || ${aio_max_nr} -lt 250000 ]] \ - && die "FEATURES=test will require fs.aio-max-nr=250000 at minimum!" - - if use latin1 ; then - # Upstream only supports tests with default charset - die "Testing with USE=latin1 is not supported." - fi - fi - - if use kernel_linux ; then - if use numa ; then - linux-info_get_any_version - - local CONFIG_CHECK="~NUMA" - - local WARNING_NUMA="This package expects NUMA support in kernel which this system does not have at the moment;" - WARNING_NUMA+=" Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support" - - check_extra_config - fi - fi - - use server && check-reqs_pkg_setup - fi -} - -src_unpack() { - unpack ${A} - - mv -f "${WORKDIR}/${MY_P}" "${S}" || die -} - -src_prepare() { - eapply "${WORKDIR}"/mysql-patches - eapply "${FILESDIR}"/${PN}-8.0.27-gcc12.patch - - # Avoid rpm call which would trigger sandbox, #692368 - sed -i \ - -e 's/MY_RPM rpm/MY_RPM rpmNOTEXISTENT/' \ - CMakeLists.txt || die - - # Remove the centos and rhel selinux policies to support mysqld_safe under SELinux - if [[ -d "${S}/support-files/SELinux" ]] ; then - echo > "${S}/support-files/SELinux/CMakeLists.txt" || die - fi - - # Remove man pages for client-lib tools we don't install - rm \ - man/my_print_defaults.1 \ - man/perror.1 \ - man/zlib_decompress.1 \ - || die - - cmake_src_prepare -} - -src_configure() { - # Bug #114895, bug #110149 - filter-flags "-O" "-O[01]" - - # Code is now requiring C++17 due to https://github.com/mysql/mysql-server/commit/236ab55bedd8c9eacd80766d85edde2a8afacd08 - append-cxxflags -std=c++17 - - CMAKE_BUILD_TYPE="RelWithDebInfo" - - # debug hack wrt #497532 - local mycmakeargs=( - -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" - -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" - -DSYSCONFDIR="${EPREFIX}/etc/mysql" - -DINSTALL_BINDIR=bin - -DINSTALL_DOCDIR=share/doc/${PF} - -DINSTALL_DOCREADMEDIR=share/doc/${PF} - -DINSTALL_INCLUDEDIR=include/mysql - -DINSTALL_INFODIR=share/info - -DINSTALL_LIBDIR=$(get_libdir) - -DINSTALL_MANDIR=share/man - -DINSTALL_MYSQLSHAREDIR=share/mysql - -DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin - -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" - -DINSTALL_SBINDIR=sbin - -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql" - -DCOMPILATION_COMMENT="Gentoo Linux ${PF}" - -DWITH_UNIT_TESTS=$(usex test ON OFF) - # Using bundled editline to get CTRL+C working - -DWITH_EDITLINE=bundled - -DWITH_ZLIB=system - -DWITH_SSL=system - -DWITH_LIBWRAP=0 - -DENABLED_LOCAL_INFILE=1 - -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DWITH_DEFAULT_COMPILER_OPTIONS=0 - # The build forces this to be defined when cross-compiling. We pass it - # all the time for simplicity and to make sure it is actually correct. - -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1) - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - -DWITH_CURL=system - -DWITH_BOOST="${S}/boost" - -DWITH_ROUTER=$(usex router ON OFF) - ) - - if tc-is-lto ; then - mycmakeargs+=( -DWITH_LTO=ON ) - else - mycmakeargs+=( -DWITH_LTO=OFF ) - fi - - if use test ; then - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test ) - else - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) - fi - - mycmakeargs+=( -DWITHOUT_CLIENTLIBS=YES ) - - mycmakeargs+=( - -DWITH_ICU=system - -DWITH_LZ4=system - # Our dev-libs/rapidjson doesn't carry necessary fixes for std::regex - -DWITH_RAPIDJSON=bundled - -DWITH_ZSTD=system - ) - - if [[ -n "${MYSQL_DEFAULT_CHARSET}" && -n "${MYSQL_DEFAULT_COLLATION}" ]] ; then - ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" - ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." - ewarn "You MUST file bugs without these variables set." - ewarn "Tests will probably fail!" - - mycmakeargs+=( - -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} - -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} - ) - elif use latin1 ; then - mycmakeargs+=( - -DDEFAULT_CHARSET=latin1 - -DDEFAULT_COLLATION=latin1_swedish_ci - ) - else - mycmakeargs+=( - -DDEFAULT_CHARSET=utf8mb4 - -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci - ) - fi - - if use server ; then - mycmakeargs+=( - -DWITH_EXTRA_CHARSETS=all - -DWITH_DEBUG=$(usex debug) - -DWITH_MECAB=$(usex cjk system OFF) - -DWITH_LIBEVENT=system - -DWITH_PROTOBUF=system - -DWITH_NUMA=$(usex numa ON OFF) - ) - - if use jemalloc ; then - mycmakeargs+=( -DWITH_JEMALLOC=ON ) - elif use tcmalloc ; then - mycmakeargs+=( -DWITH_TCMALLOC=ON ) - fi - - if use profiling ; then - # Setting to OFF doesn't work: Once set, profiling options will be added - # to `mysqld --help` output via sql/sys_vars.cc causing - # "main.mysqld--help-notwin" test to fail - mycmakeargs+=( -DENABLED_PROFILING=ON ) - fi - - # Storage engines - mycmakeargs+=( - -DWITH_EXAMPLE_STORAGE_ENGINE=0 - -DWITH_ARCHIVE_STORAGE_ENGINE=1 - -DWITH_BLACKHOLE_STORAGE_ENGINE=1 - -DWITH_CSV_STORAGE_ENGINE=1 - -DWITH_FEDERATED_STORAGE_ENGINE=1 - -DWITH_HEAP_STORAGE_ENGINE=1 - -DWITH_INNOBASE_STORAGE_ENGINE=1 - -DWITH_INNODB_MEMCACHED=0 - -DWITH_MYISAMMRG_STORAGE_ENGINE=1 - -DWITH_MYISAM_STORAGE_ENGINE=1 - ) - else - mycmakeargs+=( - -DWITHOUT_SERVER=1 - -DWITH_SYSTEMD=no - ) - fi - - cmake_src_configure -} - -# Official test instructions: -# ulimit -n 16500 && \ -# USE='perl server' \ -# FEATURES='test userpriv' \ -# ebuild mysql-X.X.XX.ebuild \ -# digest clean package -src_test() { - _disable_test() { - local rawtestname bug reason - rawtestname="${1}" ; shift - bug="${1}" ; shift - reason="${@}" - ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})" - echo ${rawtestname} : BUG#${bug} ${reason} >> "${T}/disabled.def" - } - - local TESTDIR="${BUILD_DIR}/mysql-test" - local retstatus_tests - - if ! use server ; then - einfo "Skipping server tests due to minimal build." - return 0 - fi - - # Ensure that parallel runs don't die - export MTR_BUILD_THREAD="$((${RANDOM} % 100))" - - if [[ -z "${MTR_PARALLEL}" ]] ; then - local -x MTR_PARALLEL=$(makeopts_jobs) - - if [[ ${MTR_PARALLEL} -gt 4 ]] ; then - # Running multiple tests in parallel usually require higher ulimit - # and fs.aio-max-nr setting. In addition, tests like main.multi_update - # are known to hit timeout when system is busy. - # To avoid test failure we will limit MTR_PARALLEL to 4 instead of - # using "auto". - local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})" - info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!" - einfo "${info_msg}" - unset info_msg - MTR_PARALLEL=4 - fi - else - einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'" - fi - - # create directories because mysqladmin might run out of order - mkdir -p "${T}"/var-tests{,/log} || die - - # Run mysql tests - pushd "${TESTDIR}" &>/dev/null || die - - touch "${T}/disabled.def" - - local -a disabled_tests - disabled_tests+=( "auth_sec.atomic_rename_user;103512;Depends on user running test" ) - disabled_tests+=( "auth_sec.keyring_file_data_qa;0;Won't work with user privileges" ) - disabled_tests+=( "auth_sec.openssl_without_fips;94718;Known test failure" ) - disabled_tests+=( "gis.geometry_class_attri_prop;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.geometry_property_function_issimple;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.gis_bugs_crashes;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_analysis_functions_buffer;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_analysis_functions_centroid;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_analysis_functions_distance;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_op_testingfunc_mix;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_operators_intersection;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_utility_function_distance_sphere;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_utility_function_simplify;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.st_symdifference;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "innodb.alter_kill;0;Known test failure -- no upstream bug yet" ) - disabled_tests+=( "main.derived_limit;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.explain_tree;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.gis-precise;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.mysql_load_data_local_dir;0;Known test failure -- no upstream bug yet" ) - disabled_tests+=( "main.select_icp_mrr;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_bugs;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_dupsweed;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_dupsweed_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_dupsweed_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_firstmatch;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_firstmatch_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_firstmatch_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_mat_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.window_std_var;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.window_std_var_optimized;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.with_recursive;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "perfschema.statement_digest_query_sample;0;Test will fail on slow hardware") - disabled_tests+=( "rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch;0;Unstable test" ) - disabled_tests+=( "rpl_gtid.rpl_gtid_stm_drop_table;90612;Known test failure" ) - disabled_tests+=( "rpl_gtid.rpl_multi_source_mtr_includes;0;Known failure - no upstream bug yet" ) - disabled_tests+=( "sys_vars.myisam_data_pointer_size_func;87935;Test will fail on slow hardware") - disabled_tests+=( "x.connection;0;Known failure - no upstream bug yet" ) - disabled_tests+=( "x.message_compressed_payload;0;False positive caused by protobuff-3.11+" ) - disabled_tests+=( "x.message_protobuf_nested;0;False positive caused by protobuff-3.11+" ) - - if ! hash zip 1>/dev/null 2>&1 ; then - # no need to force dep app-arch/zip for one test - disabled_tests+=( "innodb.discarded_partition_create;0;Requires app-arch/zip" ) - disabled_tests+=( "innodb.partition_upgrade_create;0;Requires app-arch/zip" ) - fi - - if has_version ">=dev-libs/openssl-3" ; then - # >=dev-libs/openssl-3 defaults to security level 1 which disallow - # TLSv1/1.1 but tests will require TLSv1/1.1. - einfo "Set OpenSSL configuration for test suite ..." - cat > "${T}/openssl_tlsv1.cnf" <<- EOF || die - openssl_conf = default_conf - - [ req ] - default_bits = 2048 - default_keyfile = privkey.pem - distinguished_name = req_distinguished_name - - [ req_distinguished_name ] - countryName = Country Name (2 letter code) - countryName_default = AU - countryName_min = 2 - countryName_max = 2 - - stateOrProvinceName = State or Province Name (full name) - stateOrProvinceName_default = Some-State - - localityName = Locality Name (eg, city) - - 0.organizationName = Organization Name (eg, company) - 0.organizationName_default = Internet Widgits Pty Ltd - - organizationalUnitName = Organizational Unit Name (eg, section) - - commonName = Common Name (e.g. server FQDN or YOUR name) - commonName_max = 64 - - emailAddress = Email Address - emailAddress_max = 64 - - [default_conf] - ssl_conf = ssl_sect - - [ssl_sect] - system_default = system_default_sect - - [system_default_sect] - CipherString = DEFAULT@SECLEVEL=0 - EOF - - local -x OPENSSL_CONF="${T}/openssl_tlsv1.cnf" - - disabled_tests+=( "x.connection_tls_version;0;Not compatible with OpenSSL 3.x error messages" ) - fi - - local test_infos_str test_infos_arr - for test_infos_str in "${disabled_tests[@]}" ; do - IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}" - - if [[ ${#test_infos_arr[@]} != 3 ]] ; then - die "Invalid test data set, not matching format: ${test_infos_str}" - fi - - _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}" - done - unset test_infos_str test_infos_arr - - # Try to increase file limits to increase test coverage - if ! ulimit -n 16500 1>/dev/null 2>&1 ; then - # Upper limit comes from parts.partition_* tests - ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager." - - if ! ulimit -n 4162 1>/dev/null 2>&1 ; then - # Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)' - ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager." - - if ! ulimit -n 3000 1>/dev/null 2>&1 ; then - ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager." - else - einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 4162 (medium test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 16500 (best test coverage)." - fi - - # run mysql-test tests - perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def" - retstatus_tests=$? - - popd &>/dev/null || die - - # Cleanup is important for these testcases. - pkill -9 -f "${S}/ndb" 2>/dev/null - pkill -9 -f "${S}/sql" 2>/dev/null - - local failures="" - [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests" - - [[ -z "${failures}" ]] || die "Test failures: ${failures}" - einfo "Tests successfully completed" -} - -src_install() { - cmake_src_install - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Convenience links - einfo "Making Convenience links for mysqlcheck multi-call binary" - dosym "mysqlcheck" "/usr/bin/mysqlanalyze" - dosym "mysqlcheck" "/usr/bin/mysqlrepair" - dosym "mysqlcheck" "/usr/bin/mysqloptimize" - - # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir - if [[ -d "${ED}/usr/data" ]] ; then - rm -Rf "${ED}/usr/data" || die - fi - - # Unless they explicitly specific USE=test, then do not install the - # testsuite. It DOES have a use to be installed, esp. when you want to do a - # validation of your database configuration after tuning it. - if ! use test ; then - rm -rf "${ED}/${MY_SHAREDSTATEDIR#${EPREFIX}}/mysql-test" - fi - - # Configuration stuff - einfo "Building default configuration ..." - insinto "${MY_SYSCONFDIR#${EPREFIX}}" - [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf - cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die - eprefixify "${TMPDIR}/my.cnf" - doins "${TMPDIR}/my.cnf" - insinto "${MY_SYSCONFDIR#${EPREFIX}}/mysql.d" - cp "${FILESDIR}/my.cnf-8.0.distro-client" "${TMPDIR}/50-distro-client.cnf" || die - eprefixify "${TMPDIR}/50-distro-client.cnf" - doins "${TMPDIR}/50-distro-client.cnf" - - mycnf_src="my.cnf-8.0.distro-server" - sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ - "${FILESDIR}/${mycnf_src}" \ - > "${TMPDIR}/my.cnf.ok" || die - - if use prefix ; then - sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ - "${TMPDIR}/my.cnf.ok" || die - fi - - if use latin1 ; then - sed -i \ - -e "/character-set/s|utf8mb4|latin1|g" \ - "${TMPDIR}/my.cnf.ok" || die - fi - - eprefixify "${TMPDIR}/my.cnf.ok" - - newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf - - #Remove mytop if perl is not selected - [[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop" - - if use router ; then - rm -rf \ - "${ED}/usr/LICENSE.router" \ - "${ED}/usr/README.router" \ - "${ED}/usr/run" \ - "${ED}/usr/var" \ - || die - fi - - # Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them. - find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die -} - -pkg_postinst() { - # Make sure the vars are correctly initialized - mysql_init_vars - - # Create log directory securely if it does not exist - # NOTE: $MY_LOGDIR contains $EPREFIX by default - [[ -d "${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${MY_LOGDIR}" - - # Note about configuration change - einfo - elog "This version of ${PN} reorganizes the configuration from a single my.cnf" - elog "to several files in /etc/mysql/mysql.d." - elog "Please backup any changes you made to /etc/mysql/my.cnf" - elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension." - elog "You may have as many files as needed and they are read alphabetically." - elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." - einfo - - if [[ -z "${REPLACING_VERSIONS}" ]] ; then - einfo - elog "You might want to run:" - elog " \"emerge --config =${CATEGORY}/${PF}\"" - elog "if this is a new install." - einfo - else - einfo - elog "Upgrade process for ${PN}-8.x has changed. Please read" - elog "https://dev.mysql.com/doc/refman/8.0/en/upgrade-binary-package.html" - einfo - fi -} - -pkg_config() { - _getoptval() { - local section="$1" - local flag="--${2}=" - local extra_options="${3}" - local cmd=( - "${my_print_defaults_binary}" - "${extra_options}" - "${section}" - ) - local results=( $(eval "${cmd[@]}" 2>/dev/null | sed -n "/^${flag}/s,${flag},,gp") ) - - if [[ ${#results[@]} -gt 0 ]] ; then - # When option is set multiple times only return last value - echo "${results[-1]}" - fi - } - - _mktemp_dry() { - # emktemp has no --dry-run option - local template="${1}" - - if [[ -z "${template}" ]] ; then - if [[ -z "${T}" ]] ; then - template="/tmp/XXXXXXX" - else - template="${T}/XXXXXXX" - fi - fi - - local template_wo_X=${template//X/} - local n_X - let n_X=${#template}-${#template_wo_X} - if [[ ${n_X} -lt 3 ]] ; then - echo "${FUNCNAME[0]}: too few X's in template ‘${template}’" >&2 - return - fi - - local attempts=0 - local character tmpfile - while [[ true ]] ; do - let attempts=attempts+1 - - new_file= - while read -n1 character ; do - if [[ "${character}" == "X" ]] ; then - tmpfile+="${RANDOM:0:1}" - else - tmpfile+="${character}" - fi - done < <(echo -n "${template}") - - if [[ ! -f "${tmpfile}" ]] - then - echo "${tmpfile}" - return - fi - - if [[ ${attempts} -ge 100 ]] ; then - echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2 - return - fi - done - } - - local mysqld_binary="${EROOT}/usr/sbin/mysqld" - if [[ ! -x "${mysqld_binary}" ]] ; then - die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysql_binary="${EROOT}/usr/bin/mysql" - if [[ ! -x "${mysql_binary}" ]] ; then - die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" - if [[ ! -x "${my_print_defaults_binary}" ]] ; then - die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" - fi - - if [[ -z "${MYSQL_USER}" ]] ; then - MYSQL_USER=mysql - if use prefix ; then - MYSQL_USER=$(id -u -n 2>/dev/null) - if [[ -z "${MYSQL_USER}" ]] ; then - die "Failed to determine current username!" - fi - fi - fi - - if [[ -z "${MYSQL_GROUP}" ]] ; then - MYSQL_GROUP=mysql - if use prefix ; then - MYSQL_GROUP=$(id -g -n 2>/dev/null) - if [[ -z "${MYSQL_GROUP}" ]] ; then - die "Failed to determine current user groupname!" - fi - fi - fi - - # my_print_defaults needs to read stuff in $HOME/.my.cnf - local -x HOME="${EROOT}/root" - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Read currently set data directory - MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - - # Bug #213475 - MySQL _will_ object strenously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if [[ -z "${MY_DATADIR}" ]] ; then - die "Sorry, unable to find MY_DATADIR!" - elif [[ -d "${MY_DATADIR}/mysql" ]] ; then - ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!" - ewarn "Please rename or delete its content if you wish to initialize a new data directory." - die "${PN} data directory at '${MY_DATADIR}' looks already initialized!" - fi - - MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_TMPDIR=${MYSQL_TMPDIR%/} - # These are dir+prefix - MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} - MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} - - # Create missing directories. - # Always check if mysql user can write to directory even if we just - # created directory because a parent directory might be not - # accessible for that user. - PID_DIR="${EROOT}/run/mysqld" - if [[ ! -d "${PID_DIR}" ]] ; then - einfo "Creating ${PN} PID directory '${PID_DIR}' ..." - install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \ - || die "Failed to create PID directory '${PID_DIR}'!" - fi - - local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_pid_dir_testfile}" ]] \ - && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_pid_dir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!" - else - rm "${_pid_dir_testfile}" || die - unset _pid_dir_testfile - fi - - if [[ ! -d "${MY_DATADIR}" ]] ; then - einfo "Creating ${PN} data directory '${MY_DATADIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \ - || die "Failed to create ${PN} data directory '${MY_DATADIR}'!" - fi - - local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_datadir_testfile}" ]] \ - && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_datadir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!" - else - rm "${_my_datadir_testfile}" || die - unset _my_datadir_testfile - fi - - if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then - einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \ - || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!" - fi - - if [[ -z "${MYSQL_TMPDIR}" ]] ; then - MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")" - [[ -z "${MYSQL_TMPDIR}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!" - - mkdir "${MYSQL_TMPDIR}" || die - chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die - fi - - # Now we need to test MYSQL_TMPDIR... - local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_tmpdir_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_tmpdir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!" - else - rm "${_my_tmpdir_testfile}" || die - unset _my_tmpdir_testfile - fi - - if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${MYSQL_LOG_BIN}" ]] ; then - einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \ - || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'" - fi - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_logbin_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_logbin_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!" - else - rm "${_my_logbin_testfile}" || die - unset _my_logbin_testfile - fi - fi - - if [[ -n "${MYSQL_RELAY_LOG}" && ! -d "${MYSQL_RELAY_LOG}" ]] ; then - einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \ - || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_relaylog_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_relaylog_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!" - else - rm "${_my_relaylog_testfile}" || die - unset _my_relaylog_testfile - fi - fi - - local mysql_install_log="$(_mktemp_dry "${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log")" - if [[ -z "${mysql_install_log}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysql_install_log}" || die - chown ${MYSQL_USER} "${mysql_install_log}" || die - fi - - local mysqld_logfile="$(_mktemp_dry "${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log")" - if [[ -z "${mysqld_logfile}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysqld_logfile}" || die - chown ${MYSQL_USER} "${mysqld_logfile}" || die - fi - - echo "" - einfo "Detected settings:" - einfo "==================" - einfo "MySQL User:\t\t\t\t${MYSQL_USER}" - einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}" - einfo "MySQL DATA directory:\t\t${MY_DATADIR}" - einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}" - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}" - fi - - einfo "PID DIR:\t\t\t\t${PID_DIR}" - einfo "Install db log:\t\t\t${mysql_install_log}" - einfo "Install server log:\t\t\t${mysqld_logfile}" - - local -a config_files - - local config_file="${EROOT}/etc/mysql/mysql.d/50-distro-client.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Client configuration '${config_file}' not found; Skipping configuration of default authentication plugin for client ..." - fi - - config_file="${EROOT}/etc/mysql/mysql.d/50-distro-server.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Server configuration '${config_file}' not found; Skipping configuration of default authentication plugin for mysqld ..." - fi - - if [[ ${#config_files[@]} -gt 0 ]] ; then - if [[ -z "${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" ]] ; then - local user_answer - - echo - einfo "Please select default authentication plugin (enter number or plugin name):" - einfo "1) caching_sha2_password [MySQL 8.0 default]" - einfo "2) mysql_native_password [MySQL 5.7 default]" - einfo - einfo "For details see:" - einfo "https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password" - read -p " >" user_answer - echo - - case "${user_answer}" in - 1|caching_sha2_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=caching_sha2_password - ;; - 2|mysql_native_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password - ;; - '') - die "No authentication plugin selected!" - ;; - *) - die "Authentication plugin '${user_answer}' is unknown/unsupported!" - ;; - esac - - echo "Selected authentication plugin: ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" >> "${mysql_install_log}" - - unset user_answer - fi - - local cfg_option cfg_option_tabs cfg_section - for config_file in "${config_files[@]}" ; do - cfg_option="default-authentication-plugin" - cfg_section="mysqld" - cfg_option_tabs="\t\t" - if [[ "${config_file}" == *client.cnf ]] ; then - cfg_option="default-auth" - cfg_section="client" - cfg_option_tabs="\t\t\t\t" - fi - - if grep -qE "^(loose-)?${cfg_option}\b.*=" "${config_file}" 2>/dev/null ; then - einfo "Ensuring that ${cfg_option} is set to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "s/^\(loose-\)\?${cfg_option}\b.*=.*/loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}/" \ - "${config_file}" || die "Failed to change ${cfg_option} in '${config_file}'!" - else - einfo "Setting ${cfg_option} to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "/^\[${cfg_section}\]$/a loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" \ - "${config_file}" || die "Failed to add ${cfg_option} to '${config_file}'!" - fi - done - unset cfg_option cfg_option_tabs cfg_section - fi - unset config_files config_file - - echo - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local tmp_mysqld_password_source= - - for tmp_mysqld_password_source in mysql client ; do - einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" - if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then - if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then - ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" - MYSQL_ROOT_PASSWORD= - continue - fi - - einfo "Found password in '${tmp_mysqld_password_source}' section!" - break - fi - done - - # Sometimes --show is required to display passwords in some implementations of my_print_defaults - if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" - fi - - unset tmp_mysqld_password_source - fi - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local pwd1="a" - local pwd2="b" - - echo - einfo "No password for mysql 'root' user was specified via environment" - einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config" - einfo "file like '${HOME}/.my.cnf'." - einfo "To continue please provide a password for the mysql 'root' user" - einfo "now on console:" - ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!" - read -rsp " >" pwd1 ; echo - - einfo "Retype the password" - read -rsp " >" pwd2 ; echo - - if [[ "x$pwd1" != "x$pwd2" ]] ; then - die "Passwords are not the same!" - fi - - MYSQL_ROOT_PASSWORD="${pwd1}" - unset pwd1 pwd2 - - echo - fi - - local -a mysqld_options - - # Fix bug 446200. Don't reference host my.cnf, needs to come first, - # see http://bugs.mysql.com/bug.php?id=31312 - use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" ) - - # Figure out which options we need to disable to do the setup - local helpfile="${TMPDIR}/mysqld-help" - "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null - - local opt optexp optfull - for opt in host-cache name-resolve networking slave-start \ - federated ssl log-bin relay-log slow-query-log external-locking \ - log-slave-updates \ - ; do - optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" - grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" ) - done - - # Prepare timezones, see - # https://dev.mysql.com/doc/mysql/en/time-zone-support.html - local tz_sql="$(_mktemp_dry "${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql")" - [[ -z "${tz_sql}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql' failed!" - - echo "USE mysql;" >"${tz_sql}" - "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null - if [[ $? -ne 0 ]] ; then - die "mysql_tzinfo_to_sql failed!" - fi - - # --initialize-insecure will not set root password - # --initialize would set a random one in the log which we don't need as we set it ourselves - local cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--initialize-insecure" - "--init-file='${tz_sql}'" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - "--log-error='${mysql_install_log}'" - "--user=${MYSQL_USER}" - ) - - einfo "Initializing ${PN} data directory: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1 - - if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql.ibd" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2 - die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!" - fi - - rm "${tz_sql}" || die - - local x=${RANDOM} - local socket="${EROOT}${PID_DIR}/mysqld${x}.sock" - local pidfile="${EROOT}${PID_DIR}/mysqld${x}.pid" - unset x - - cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - --max_allowed_packet=8M - --net_buffer_length=16K - "--socket='${socket}'" - "--pid-file='${pidfile}'" - "--log-error='${mysqld_logfile}'" - "--user=${MYSQL_USER}" - ) - - einfo "Starting mysqld to finalize initialization: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 & - - echo -n "Waiting for mysqld to accept connections " - local maxtry=15 - while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - if [[ -S "${socket}" ]] ; then - # Even with a socket we don't know if mysqld will abort - # start due to an error so just wait a little bit more... - maxtry=5 - while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - fi - - echo - - if [[ ! -S "${socket}" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2 - die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!" - fi - - local mysql_logfile="${TMPDIR}/set_root_pw.log" - touch "${mysql_logfile}" || die - - ebegin "Setting root password" - # Do this from memory, as we don't want clear text passwords in temp files - local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'" - cmd=( - "${mysql_binary}" - --no-defaults - "--socket='${socket}'" - -hlocalhost - "-e \"${sql}\"" - ) - eval "${cmd[@]}" >"${mysql_logfile}" 2>&1 - local rc=$? - eend ${rc} - - if [[ ${rc} -ne 0 ]] ; then - # Poor man's solution which tries to avoid having password - # in log. NOTE: sed can fail if user didn't follow advice - # and included character which will require escaping... - sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null - - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}" - die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!" - fi - - # Stop the server - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - echo -n "Stopping the server " - pkill -F "${pidfile}" &>/dev/null - - maxtry=10 - while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - echo - - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - # We somehow failed to stop server. - # However, not a fatal error. Just warn the user. - ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!" - fi - fi - - einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!" -} diff --git a/dev-db/mysql/mysql-8.0.31-r2.ebuild b/dev-db/mysql/mysql-8.0.31-r2.ebuild deleted file mode 100644 index 3b9b79fb88df..000000000000 --- a/dev-db/mysql/mysql-8.0.31-r2.ebuild +++ /dev/null @@ -1,1219 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -CMAKE_MAKEFILE_GENERATOR=emake -inherit check-reqs cmake flag-o-matic linux-info multiprocessing prefix toolchain-funcs - -MY_PV="${PV//_pre*}" -MY_P="${PN}-${MY_PV}" - -# Patch version -PATCH_SET=( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-patches-01.tar.xz ) - -HOMEPAGE="https://www.mysql.com/" -DESCRIPTION="A fast, multi-threaded, multi-user SQL database server" -SRC_URI="https://cdn.mysql.com/Downloads/MySQL-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz" -SRC_URI+=" https://cdn.mysql.com/archives/mysql-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz" -SRC_URI+=" https://downloads.mysql.com/archives/MySQL-$(ver_cut 1-2)/${PN}-boost-${MY_PV}.tar.gz" -SRC_URI+=" ${PATCH_SET[@]}" -# Shorten the path because the socket path length must be shorter than 107 chars -# and we will run a mysql server during test phase -S="${WORKDIR}/mysql" - -LICENSE="GPL-2" -SLOT="8.0" -# -ppc, -riscv for bug #761715 -KEYWORDS="amd64 arm arm64 ~hppa ~mips -ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" -IUSE="cjk cracklib debug jemalloc latin1 numa +perl profiling router selinux +server tcmalloc test" -RESTRICT="!test? ( test )" -REQUIRED_USE="?? ( tcmalloc jemalloc ) - cjk? ( server ) - jemalloc? ( server ) - numa? ( server ) - profiling? ( server ) - router? ( server ) - tcmalloc? ( server )" - -# Be warned, *DEPEND are version-dependent -# These are used for both runtime and compiletime -COMMON_DEPEND=" - >=app-arch/lz4-0_p131:= - app-arch/zstd:= - sys-libs/ncurses:0= - >=sys-libs/zlib-1.2.3:0= - >=dev-libs/openssl-1.0.0:0= - server? ( - dev-libs/icu:= - dev-libs/libevent:=[ssl,threads(+)] - >=dev-libs/protobuf-3.8:= - net-libs/libtirpc:= - cjk? ( app-text/mecab:= ) - jemalloc? ( dev-libs/jemalloc:0= ) - kernel_linux? ( - dev-libs/libaio:0= - sys-process/procps:0= - ) - numa? ( sys-process/numactl ) - tcmalloc? ( dev-util/google-perftools:0= ) - ) -" - -DEPEND=" - ${COMMON_DEPEND} - || ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 ) - app-alternatives/yacc - server? ( net-libs/rpcsvc-proto ) - test? ( - acct-group/mysql acct-user/mysql - dev-perl/JSON - ) -" - -RDEPEND=" - ${COMMON_DEPEND} - !dev-db/mariadb !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster - !dev-db/mysql:0 - !dev-db/mysql:5.7 - selinux? ( sec-policy/selinux-mysql ) - !prefix? ( - acct-group/mysql acct-user/mysql - dev-db/mysql-init-scripts - ) -" - -# For other stuff to bring us in -# dev-perl/DBD-mysql is needed by some scripts installed by MySQL -PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" - -PATCHES=( - "${WORKDIR}"/mysql-patches - "${FILESDIR}"/mysql-8.0.31-build-tmpdir-nodefault.patch -) - -mysql_init_vars() { - : ${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"} - : ${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} - : ${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} - : ${MY_LOGDIR="${EPREFIX}/var/log/mysql"} - MY_DATADIR="${MY_LOCALSTATEDIR}" - - export MY_SHAREDSTATEDIR MY_SYSCONFDIR - export MY_LOCALSTATEDIR MY_LOGDIR - export MY_DATADIR -} - -pkg_pretend() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use server ; then - CHECKREQS_DISK_BUILD="3G" - - if has test $FEATURES ; then - CHECKREQS_DISK_BUILD="9G" - fi - - check-reqs_pkg_pretend - fi - fi -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - CHECKREQS_DISK_BUILD="3G" - - if has test ${FEATURES} ; then - CHECKREQS_DISK_BUILD="9G" - - # Bug #213475 - MySQL _will_ object strenuously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if ! has userpriv ${FEATURES} ; then - die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." - fi - - local aio_max_nr=$(sysctl -n fs.aio-max-nr 2>/dev/null) - [[ -z "${aio_max_nr}" || ${aio_max_nr} -lt 250000 ]] \ - && die "FEATURES=test will require fs.aio-max-nr=250000 at minimum!" - - if use latin1 ; then - # Upstream only supports tests with default charset - die "Testing with USE=latin1 is not supported." - fi - fi - - if use kernel_linux ; then - if use numa ; then - linux-info_get_any_version - - local CONFIG_CHECK="~NUMA" - - local WARNING_NUMA="This package expects NUMA support in kernel which this system does not have at the moment;" - WARNING_NUMA+=" Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support" - - check_extra_config - fi - fi - - use server && check-reqs_pkg_setup - fi -} - -src_unpack() { - unpack ${A} - - mv -f "${WORKDIR}/${MY_P}" "${S}" || die -} - -src_prepare() { - # Avoid rpm call which would trigger sandbox, #692368 - sed -i \ - -e 's/MY_RPM rpm/MY_RPM rpmNOTEXISTENT/' \ - CMakeLists.txt || die - - # Remove the centos and rhel selinux policies to support mysqld_safe under SELinux - if [[ -d "${S}/support-files/SELinux" ]] ; then - echo > "${S}/support-files/SELinux/CMakeLists.txt" || die - fi - - # Remove man pages for client-lib tools we don't install - rm \ - man/my_print_defaults.1 \ - man/perror.1 \ - man/zlib_decompress.1 \ - || die - - cmake_src_prepare -} - -src_configure() { - # Bug #114895, bug #110149 - filter-flags "-O" "-O[01]" - - # Code is now requiring C++17 due to https://github.com/mysql/mysql-server/commit/236ab55bedd8c9eacd80766d85edde2a8afacd08 - append-cxxflags -std=c++17 - - CMAKE_BUILD_TYPE="RelWithDebInfo" - - # debug hack wrt #497532 - local mycmakeargs=( - -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG')" - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG')" - - -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" - -DSYSCONFDIR="${EPREFIX}/etc/mysql" - - -DINSTALL_BINDIR=bin - -DINSTALL_DOCDIR=share/doc/${PF} - -DINSTALL_DOCREADMEDIR=share/doc/${PF} - -DINSTALL_INCLUDEDIR=include/mysql - -DINSTALL_INFODIR=share/info - -DINSTALL_LIBDIR=$(get_libdir) - -DINSTALL_MANDIR=share/man - -DINSTALL_MYSQLSHAREDIR=share/mysql - -DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin - -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" - -DINSTALL_SBINDIR=sbin - -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql" - - -DCOMPILATION_COMMENT="Gentoo Linux ${PF}" - -DWITH_UNIT_TESTS=$(usex test ON OFF) - - # Using bundled editline to get CTRL+C working - -DWITH_EDITLINE=bundled - -DWITH_ZLIB=system - -DWITH_SSL=system - -DWITH_LIBWRAP=0 - -DENABLED_LOCAL_INFILE=1 - -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DWITH_DEFAULT_COMPILER_OPTIONS=0 - # The build forces this to be defined when cross-compiling. We pass it - # all the time for simplicity and to make sure it is actually correct. - -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1) - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - - -DWITH_CURL=system - -DWITH_BOOST="${S}/boost" - -DWITH_ROUTER=$(usex router ON OFF) - ) - - if tc-is-lto ; then - mycmakeargs+=( -DWITH_LTO=ON ) - else - mycmakeargs+=( -DWITH_LTO=OFF ) - fi - - if use test ; then - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test ) - else - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) - fi - - mycmakeargs+=( -DWITHOUT_CLIENTLIBS=YES ) - - mycmakeargs+=( - -DWITH_ICU=system - -DWITH_LZ4=system - # Our dev-libs/rapidjson doesn't carry necessary fixes for std::regex - -DWITH_RAPIDJSON=bundled - -DWITH_ZSTD=system - ) - - if [[ -n "${MYSQL_DEFAULT_CHARSET}" && -n "${MYSQL_DEFAULT_COLLATION}" ]] ; then - ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" - ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." - ewarn "You MUST file bugs without these variables set." - ewarn "Tests will probably fail!" - - mycmakeargs+=( - -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} - -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} - ) - elif use latin1 ; then - mycmakeargs+=( - -DDEFAULT_CHARSET=latin1 - -DDEFAULT_COLLATION=latin1_swedish_ci - ) - else - mycmakeargs+=( - -DDEFAULT_CHARSET=utf8mb4 - -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci - ) - fi - - if use server ; then - mycmakeargs+=( - -DWITH_EXTRA_CHARSETS=all - -DWITH_DEBUG=$(usex debug) - -DWITH_MECAB=$(usex cjk system OFF) - -DWITH_LIBEVENT=system - -DWITH_PROTOBUF=system - -DWITH_NUMA=$(usex numa ON OFF) - ) - - if use jemalloc ; then - mycmakeargs+=( -DWITH_JEMALLOC=ON ) - elif use tcmalloc ; then - mycmakeargs+=( -DWITH_TCMALLOC=ON ) - fi - - if use profiling ; then - # Setting to OFF doesn't work: Once set, profiling options will be added - # to `mysqld --help` output via sql/sys_vars.cc causing - # "main.mysqld--help-notwin" test to fail - mycmakeargs+=( -DENABLED_PROFILING=ON ) - fi - - # Storage engines - mycmakeargs+=( - -DWITH_EXAMPLE_STORAGE_ENGINE=0 - -DWITH_ARCHIVE_STORAGE_ENGINE=1 - -DWITH_BLACKHOLE_STORAGE_ENGINE=1 - -DWITH_CSV_STORAGE_ENGINE=1 - -DWITH_FEDERATED_STORAGE_ENGINE=1 - -DWITH_HEAP_STORAGE_ENGINE=1 - -DWITH_INNOBASE_STORAGE_ENGINE=1 - -DWITH_INNODB_MEMCACHED=0 - -DWITH_MYISAMMRG_STORAGE_ENGINE=1 - -DWITH_MYISAM_STORAGE_ENGINE=1 - ) - else - mycmakeargs+=( - -DWITHOUT_SERVER=1 - -DWITH_SYSTEMD=no - ) - fi - - cmake_src_configure -} - -# Official test instructions: -# ulimit -n 16500 && \ -# USE='perl server' \ -# FEATURES='test userpriv' \ -# ebuild mysql-X.X.XX.ebuild \ -# digest clean package -src_test() { - _disable_test() { - local rawtestname bug reason - rawtestname="${1}" ; shift - bug="${1}" ; shift - reason="${@}" - ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})" - echo ${rawtestname} : BUG#${bug} ${reason} >> "${T}/disabled.def" - } - - local TESTDIR="${BUILD_DIR}/mysql-test" - local retstatus_tests - - if ! use server ; then - einfo "Skipping server tests due to minimal build." - return 0 - fi - - # Ensure that parallel runs don't die - export MTR_BUILD_THREAD="$((${RANDOM} % 100))" - - if [[ -z "${MTR_PARALLEL}" ]] ; then - local -x MTR_PARALLEL=$(makeopts_jobs) - - if [[ ${MTR_PARALLEL} -gt 4 ]] ; then - # Running multiple tests in parallel usually require higher ulimit - # and fs.aio-max-nr setting. In addition, tests like main.multi_update - # are known to hit timeout when system is busy. - # To avoid test failure we will limit MTR_PARALLEL to 4 instead of - # using "auto". - local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})" - info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!" - einfo "${info_msg}" - unset info_msg - MTR_PARALLEL=4 - fi - else - einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'" - fi - - # create directories because mysqladmin might run out of order - mkdir -p "${T}"/var-tests{,/log} || die - - # Run mysql tests - pushd "${TESTDIR}" &>/dev/null || die - - touch "${T}/disabled.def" - - local -a disabled_tests - disabled_tests+=( "auth_sec.atomic_rename_user;103512;Depends on user running test" ) - disabled_tests+=( "auth_sec.keyring_file_data_qa;0;Won't work with user privileges" ) - disabled_tests+=( "auth_sec.openssl_without_fips;94718;Known test failure" ) - disabled_tests+=( "gis.geometry_class_attri_prop;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.geometry_property_function_issimple;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.gis_bugs_crashes;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_analysis_functions_buffer;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_analysis_functions_centroid;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_analysis_functions_distance;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_op_testingfunc_mix;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_operators_intersection;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_utility_function_distance_sphere;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.spatial_utility_function_simplify;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "gis.st_symdifference;5452;Known rounding error with latest AMD processors (PS)" ) - disabled_tests+=( "innodb.alter_kill;0;Known test failure -- no upstream bug yet" ) - disabled_tests+=( "main.derived_limit;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.explain_tree;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.gis-precise;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.mysql_load_data_local_dir;0;Known test failure -- no upstream bug yet" ) - disabled_tests+=( "main.select_icp_mrr;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_bugs;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_dupsweed;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_dupsweed_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_dupsweed_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_firstmatch;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_firstmatch_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_firstmatch_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.subquery_sj_mat_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.window_std_var;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.window_std_var_optimized;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "main.with_recursive;0;Known rounding error with latest AMD processors -- no upstream bug yet" ) - disabled_tests+=( "perfschema.statement_digest_query_sample;0;Test will fail on slow hardware") - disabled_tests+=( "rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch;0;Unstable test" ) - disabled_tests+=( "rpl_gtid.rpl_gtid_stm_drop_table;90612;Known test failure" ) - disabled_tests+=( "rpl_gtid.rpl_multi_source_mtr_includes;0;Known failure - no upstream bug yet" ) - disabled_tests+=( "sys_vars.myisam_data_pointer_size_func;87935;Test will fail on slow hardware") - disabled_tests+=( "x.connection;0;Known failure - no upstream bug yet" ) - disabled_tests+=( "x.message_compressed_payload;0;False positive caused by protobuff-3.11+" ) - disabled_tests+=( "x.message_protobuf_nested;0;False positive caused by protobuff-3.11+" ) - - if ! hash zip 1>/dev/null 2>&1 ; then - # no need to force dep app-arch/zip for one test - disabled_tests+=( "innodb.discarded_partition_create;0;Requires app-arch/zip" ) - disabled_tests+=( "innodb.partition_upgrade_create;0;Requires app-arch/zip" ) - fi - - if has_version ">=dev-libs/openssl-3" ; then - # >=dev-libs/openssl-3 defaults to security level 1 which disallow - # TLSv1/1.1 but tests will require TLSv1/1.1. - einfo "Set OpenSSL configuration for test suite ..." - cat > "${T}/openssl_tlsv1.cnf" <<- EOF || die - openssl_conf = default_conf - - [ req ] - default_bits = 2048 - default_keyfile = privkey.pem - distinguished_name = req_distinguished_name - - [ req_distinguished_name ] - countryName = Country Name (2 letter code) - countryName_default = AU - countryName_min = 2 - countryName_max = 2 - - stateOrProvinceName = State or Province Name (full name) - stateOrProvinceName_default = Some-State - - localityName = Locality Name (eg, city) - - 0.organizationName = Organization Name (eg, company) - 0.organizationName_default = Internet Widgits Pty Ltd - - organizationalUnitName = Organizational Unit Name (eg, section) - - commonName = Common Name (e.g. server FQDN or YOUR name) - commonName_max = 64 - - emailAddress = Email Address - emailAddress_max = 64 - - [default_conf] - ssl_conf = ssl_sect - - [ssl_sect] - system_default = system_default_sect - - [system_default_sect] - CipherString = DEFAULT@SECLEVEL=0 - EOF - - local -x OPENSSL_CONF="${T}/openssl_tlsv1.cnf" - - disabled_tests+=( "x.connection_tls_version;0;Not compatible with OpenSSL 3.x error messages" ) - fi - - local test_infos_str test_infos_arr - for test_infos_str in "${disabled_tests[@]}" ; do - IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}" - - if [[ ${#test_infos_arr[@]} != 3 ]] ; then - die "Invalid test data set, not matching format: ${test_infos_str}" - fi - - _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}" - done - unset test_infos_str test_infos_arr - - # Try to increase file limits to increase test coverage - if ! ulimit -n 16500 1>/dev/null 2>&1 ; then - # Upper limit comes from parts.partition_* tests - ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager." - - if ! ulimit -n 4162 1>/dev/null 2>&1 ; then - # Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)' - ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager." - - if ! ulimit -n 3000 1>/dev/null 2>&1 ; then - ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager." - else - einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 4162 (medium test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 16500 (best test coverage)." - fi - - # run mysql-test tests - perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def" - retstatus_tests=$? - - popd &>/dev/null || die - - # Cleanup is important for these testcases. - pkill -9 -f "${S}/ndb" 2>/dev/null - pkill -9 -f "${S}/sql" 2>/dev/null - - local failures="" - [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests" - - [[ -z "${failures}" ]] || die "Test failures: ${failures}" - einfo "Tests successfully completed" -} - -src_install() { - cmake_src_install - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Convenience links - einfo "Making Convenience links for mysqlcheck multi-call binary" - dosym "mysqlcheck" "/usr/bin/mysqlanalyze" - dosym "mysqlcheck" "/usr/bin/mysqlrepair" - dosym "mysqlcheck" "/usr/bin/mysqloptimize" - - # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir - if [[ -d "${ED}/usr/data" ]] ; then - rm -Rf "${ED}/usr/data" || die - fi - - # Unless they explicitly specific USE=test, then do not install the - # testsuite. It DOES have a use to be installed, esp. when you want to do a - # validation of your database configuration after tuning it. - if ! use test ; then - rm -rf "${ED}/${MY_SHAREDSTATEDIR#${EPREFIX}}/mysql-test" - fi - - # Configuration stuff - einfo "Building default configuration ..." - insinto "${MY_SYSCONFDIR#${EPREFIX}}" - [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf - cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die - eprefixify "${TMPDIR}/my.cnf" - doins "${TMPDIR}/my.cnf" - insinto "${MY_SYSCONFDIR#${EPREFIX}}/mysql.d" - cp "${FILESDIR}/my.cnf-8.0.distro-client" "${TMPDIR}/50-distro-client.cnf" || die - eprefixify "${TMPDIR}/50-distro-client.cnf" - doins "${TMPDIR}/50-distro-client.cnf" - - mycnf_src="my.cnf-8.0.distro-server" - sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ - "${FILESDIR}/${mycnf_src}" \ - > "${TMPDIR}/my.cnf.ok" || die - - if use prefix ; then - sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ - "${TMPDIR}/my.cnf.ok" || die - fi - - if use latin1 ; then - sed -i \ - -e "/character-set/s|utf8mb4|latin1|g" \ - "${TMPDIR}/my.cnf.ok" || die - fi - - eprefixify "${TMPDIR}/my.cnf.ok" - - newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf - - #Remove mytop if perl is not selected - [[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop" - - if use router ; then - rm -rf \ - "${ED}/usr/LICENSE.router" \ - "${ED}/usr/README.router" \ - "${ED}/usr/run" \ - "${ED}/usr/var" \ - || die - fi - - # Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them. - find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die -} - -pkg_postinst() { - # Make sure the vars are correctly initialized - mysql_init_vars - - # Create log directory securely if it does not exist - # NOTE: $MY_LOGDIR contains $EPREFIX by default - [[ -d "${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${MY_LOGDIR}" - - # Note about configuration change - einfo - elog "This version of ${PN} reorganizes the configuration from a single my.cnf" - elog "to several files in /etc/mysql/mysql.d." - elog "Please backup any changes you made to /etc/mysql/my.cnf" - elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension." - elog "You may have as many files as needed and they are read alphabetically." - elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." - einfo - - if [[ -z "${REPLACING_VERSIONS}" ]] ; then - einfo - elog "You might want to run:" - elog " \"emerge --config =${CATEGORY}/${PF}\"" - elog "if this is a new install." - einfo - else - einfo - elog "Upgrade process for ${PN}-8.x has changed. Please read" - elog "https://dev.mysql.com/doc/refman/8.0/en/upgrade-binary-package.html" - einfo - fi -} - -pkg_config() { - _getoptval() { - local section="$1" - local flag="--${2}=" - local extra_options="${3}" - local cmd=( - "${my_print_defaults_binary}" - "${extra_options}" - "${section}" - ) - local results=( $(eval "${cmd[@]}" 2>/dev/null | sed -n "/^${flag}/s,${flag},,gp") ) - - if [[ ${#results[@]} -gt 0 ]] ; then - # When option is set multiple times only return last value - echo "${results[-1]}" - fi - } - - _mktemp_dry() { - # emktemp has no --dry-run option - local template="${1}" - - if [[ -z "${template}" ]] ; then - if [[ -z "${T}" ]] ; then - template="/tmp/XXXXXXX" - else - template="${T}/XXXXXXX" - fi - fi - - local template_wo_X=${template//X/} - local n_X - let n_X=${#template}-${#template_wo_X} - if [[ ${n_X} -lt 3 ]] ; then - echo "${FUNCNAME[0]}: too few X's in template ‘${template}’" >&2 - return - fi - - local attempts=0 - local character tmpfile - while [[ true ]] ; do - let attempts=attempts+1 - - new_file= - while read -n1 character ; do - if [[ "${character}" == "X" ]] ; then - tmpfile+="${RANDOM:0:1}" - else - tmpfile+="${character}" - fi - done < <(echo -n "${template}") - - if [[ ! -f "${tmpfile}" ]] - then - echo "${tmpfile}" - return - fi - - if [[ ${attempts} -ge 100 ]] ; then - echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2 - return - fi - done - } - - local mysqld_binary="${EROOT}/usr/sbin/mysqld" - if [[ ! -x "${mysqld_binary}" ]] ; then - die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysql_binary="${EROOT}/usr/bin/mysql" - if [[ ! -x "${mysql_binary}" ]] ; then - die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" - if [[ ! -x "${my_print_defaults_binary}" ]] ; then - die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" - fi - - if [[ -z "${MYSQL_USER}" ]] ; then - MYSQL_USER=mysql - if use prefix ; then - MYSQL_USER=$(id -u -n 2>/dev/null) - if [[ -z "${MYSQL_USER}" ]] ; then - die "Failed to determine current username!" - fi - fi - fi - - if [[ -z "${MYSQL_GROUP}" ]] ; then - MYSQL_GROUP=mysql - if use prefix ; then - MYSQL_GROUP=$(id -g -n 2>/dev/null) - if [[ -z "${MYSQL_GROUP}" ]] ; then - die "Failed to determine current user groupname!" - fi - fi - fi - - # my_print_defaults needs to read stuff in $HOME/.my.cnf - local -x HOME="${EROOT}/root" - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Read currently set data directory - MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - - # Bug #213475 - MySQL _will_ object strenously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if [[ -z "${MY_DATADIR}" ]] ; then - die "Sorry, unable to find MY_DATADIR!" - elif [[ -d "${MY_DATADIR}/mysql" ]] ; then - ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!" - ewarn "Please rename or delete its content if you wish to initialize a new data directory." - die "${PN} data directory at '${MY_DATADIR}' looks already initialized!" - fi - - MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_TMPDIR=${MYSQL_TMPDIR%/} - # These are dir+prefix - MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} - MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} - - # Create missing directories. - # Always check if mysql user can write to directory even if we just - # created directory because a parent directory might be not - # accessible for that user. - PID_DIR="${EROOT}/run/mysqld" - if [[ ! -d "${PID_DIR}" ]] ; then - einfo "Creating ${PN} PID directory '${PID_DIR}' ..." - install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \ - || die "Failed to create PID directory '${PID_DIR}'!" - fi - - local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_pid_dir_testfile}" ]] \ - && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_pid_dir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!" - else - rm "${_pid_dir_testfile}" || die - unset _pid_dir_testfile - fi - - if [[ ! -d "${MY_DATADIR}" ]] ; then - einfo "Creating ${PN} data directory '${MY_DATADIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \ - || die "Failed to create ${PN} data directory '${MY_DATADIR}'!" - fi - - local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_datadir_testfile}" ]] \ - && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_datadir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!" - else - rm "${_my_datadir_testfile}" || die - unset _my_datadir_testfile - fi - - if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then - einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \ - || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!" - fi - - if [[ -z "${MYSQL_TMPDIR}" ]] ; then - MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")" - [[ -z "${MYSQL_TMPDIR}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!" - - mkdir "${MYSQL_TMPDIR}" || die - chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die - fi - - # Now we need to test MYSQL_TMPDIR... - local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_tmpdir_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_tmpdir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!" - else - rm "${_my_tmpdir_testfile}" || die - unset _my_tmpdir_testfile - fi - - if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${MYSQL_LOG_BIN}" ]] ; then - einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \ - || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'" - fi - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_logbin_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_logbin_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!" - else - rm "${_my_logbin_testfile}" || die - unset _my_logbin_testfile - fi - fi - - if [[ -n "${MYSQL_RELAY_LOG}" && ! -d "${MYSQL_RELAY_LOG}" ]] ; then - einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \ - || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_relaylog_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_relaylog_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!" - else - rm "${_my_relaylog_testfile}" || die - unset _my_relaylog_testfile - fi - fi - - local mysql_install_log="$(_mktemp_dry "${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log")" - if [[ -z "${mysql_install_log}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysql_install_log}" || die - chown ${MYSQL_USER} "${mysql_install_log}" || die - fi - - local mysqld_logfile="$(_mktemp_dry "${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log")" - if [[ -z "${mysqld_logfile}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysqld_logfile}" || die - chown ${MYSQL_USER} "${mysqld_logfile}" || die - fi - - echo "" - einfo "Detected settings:" - einfo "==================" - einfo "MySQL User:\t\t\t\t${MYSQL_USER}" - einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}" - einfo "MySQL DATA directory:\t\t${MY_DATADIR}" - einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}" - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}" - fi - - einfo "PID DIR:\t\t\t\t${PID_DIR}" - einfo "Install db log:\t\t\t${mysql_install_log}" - einfo "Install server log:\t\t\t${mysqld_logfile}" - - local -a config_files - - local config_file="${EROOT}/etc/mysql/mysql.d/50-distro-client.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Client configuration '${config_file}' not found; Skipping configuration of default authentication plugin for client ..." - fi - - config_file="${EROOT}/etc/mysql/mysql.d/50-distro-server.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Server configuration '${config_file}' not found; Skipping configuration of default authentication plugin for mysqld ..." - fi - - if [[ ${#config_files[@]} -gt 0 ]] ; then - if [[ -z "${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" ]] ; then - local user_answer - - echo - einfo "Please select default authentication plugin (enter number or plugin name):" - einfo "1) caching_sha2_password [MySQL 8.0 default]" - einfo "2) mysql_native_password [MySQL 5.7 default]" - einfo - einfo "For details see:" - einfo "https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password" - read -p " >" user_answer - echo - - case "${user_answer}" in - 1|caching_sha2_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=caching_sha2_password - ;; - 2|mysql_native_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password - ;; - '') - die "No authentication plugin selected!" - ;; - *) - die "Authentication plugin '${user_answer}' is unknown/unsupported!" - ;; - esac - - echo "Selected authentication plugin: ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" >> "${mysql_install_log}" - - unset user_answer - fi - - local cfg_option cfg_option_tabs cfg_section - for config_file in "${config_files[@]}" ; do - cfg_option="default-authentication-plugin" - cfg_section="mysqld" - cfg_option_tabs="\t\t" - if [[ "${config_file}" == *client.cnf ]] ; then - cfg_option="default-auth" - cfg_section="client" - cfg_option_tabs="\t\t\t\t" - fi - - if grep -qE "^(loose-)?${cfg_option}\b.*=" "${config_file}" 2>/dev/null ; then - einfo "Ensuring that ${cfg_option} is set to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "s/^\(loose-\)\?${cfg_option}\b.*=.*/loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}/" \ - "${config_file}" || die "Failed to change ${cfg_option} in '${config_file}'!" - else - einfo "Setting ${cfg_option} to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "/^\[${cfg_section}\]$/a loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" \ - "${config_file}" || die "Failed to add ${cfg_option} to '${config_file}'!" - fi - done - unset cfg_option cfg_option_tabs cfg_section - fi - unset config_files config_file - - echo - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local tmp_mysqld_password_source= - - for tmp_mysqld_password_source in mysql client ; do - einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" - if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then - if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then - ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" - MYSQL_ROOT_PASSWORD= - continue - fi - - einfo "Found password in '${tmp_mysqld_password_source}' section!" - break - fi - done - - # Sometimes --show is required to display passwords in some implementations of my_print_defaults - if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" - fi - - unset tmp_mysqld_password_source - fi - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local pwd1="a" - local pwd2="b" - - echo - einfo "No password for mysql 'root' user was specified via environment" - einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config" - einfo "file like '${HOME}/.my.cnf'." - einfo "To continue please provide a password for the mysql 'root' user" - einfo "now on console:" - ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!" - read -rsp " >" pwd1 ; echo - - einfo "Retype the password" - read -rsp " >" pwd2 ; echo - - if [[ "x$pwd1" != "x$pwd2" ]] ; then - die "Passwords are not the same!" - fi - - MYSQL_ROOT_PASSWORD="${pwd1}" - unset pwd1 pwd2 - - echo - fi - - local -a mysqld_options - - # Fix bug 446200. Don't reference host my.cnf, needs to come first, - # see http://bugs.mysql.com/bug.php?id=31312 - use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" ) - - # Figure out which options we need to disable to do the setup - local helpfile="${TMPDIR}/mysqld-help" - "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null - - local opt optexp optfull - for opt in host-cache name-resolve networking slave-start \ - federated ssl log-bin relay-log slow-query-log external-locking \ - log-slave-updates \ - ; do - optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" - grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" ) - done - - # Prepare timezones, see - # https://dev.mysql.com/doc/mysql/en/time-zone-support.html - local tz_sql="$(_mktemp_dry "${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql")" - [[ -z "${tz_sql}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql' failed!" - - echo "USE mysql;" >"${tz_sql}" - "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null - if [[ $? -ne 0 ]] ; then - die "mysql_tzinfo_to_sql failed!" - fi - - # --initialize-insecure will not set root password - # --initialize would set a random one in the log which we don't need as we set it ourselves - local cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--initialize-insecure" - "--init-file='${tz_sql}'" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - "--log-error='${mysql_install_log}'" - "--user=${MYSQL_USER}" - ) - - einfo "Initializing ${PN} data directory: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1 - - if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql.ibd" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2 - die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!" - fi - - rm "${tz_sql}" || die - - local x=${RANDOM} - local socket="${EROOT}${PID_DIR}/mysqld${x}.sock" - local pidfile="${EROOT}${PID_DIR}/mysqld${x}.pid" - unset x - - cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - --max_allowed_packet=8M - --net_buffer_length=16K - "--socket='${socket}'" - "--pid-file='${pidfile}'" - "--log-error='${mysqld_logfile}'" - "--user=${MYSQL_USER}" - ) - - einfo "Starting mysqld to finalize initialization: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 & - - echo -n "Waiting for mysqld to accept connections " - local maxtry=15 - while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - if [[ -S "${socket}" ]] ; then - # Even with a socket we don't know if mysqld will abort - # start due to an error so just wait a little bit more... - maxtry=5 - while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - fi - - echo - - if [[ ! -S "${socket}" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2 - die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!" - fi - - local mysql_logfile="${TMPDIR}/set_root_pw.log" - touch "${mysql_logfile}" || die - - ebegin "Setting root password" - # Do this from memory, as we don't want clear text passwords in temp files - local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'" - cmd=( - "${mysql_binary}" - --no-defaults - "--socket='${socket}'" - -hlocalhost - "-e \"${sql}\"" - ) - eval "${cmd[@]}" >"${mysql_logfile}" 2>&1 - local rc=$? - eend ${rc} - - if [[ ${rc} -ne 0 ]] ; then - # Poor man's solution which tries to avoid having password - # in log. NOTE: sed can fail if user didn't follow advice - # and included character which will require escaping... - sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null - - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}" - die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!" - fi - - # Stop the server - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - echo -n "Stopping the server " - pkill -F "${pidfile}" &>/dev/null - - maxtry=10 - while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - echo - - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - # We somehow failed to stop server. - # However, not a fatal error. Just warn the user. - ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!" - fi - fi - - einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!" -} diff --git a/dev-db/mysql/mysql-8.0.32-r2.ebuild b/dev-db/mysql/mysql-8.0.32-r2.ebuild deleted file mode 100644 index bf84e493abbe..000000000000 --- a/dev-db/mysql/mysql-8.0.32-r2.ebuild +++ /dev/null @@ -1,1240 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -CMAKE_MAKEFILE_GENERATOR=emake -inherit check-reqs cmake edo flag-o-matic linux-info multiprocessing prefix toolchain-funcs - -MY_PV="${PV//_pre*}" -MY_P="${PN}-${MY_PV}" - -# Patch version -PATCH_SET=( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-8.0.31-patches-01.tar.xz ) - -HOMEPAGE="https://www.mysql.com/" -DESCRIPTION="A fast, multi-threaded, multi-user SQL database server" -SRC_URI="https://cdn.mysql.com/Downloads/MySQL-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz" -SRC_URI+=" https://cdn.mysql.com/archives/mysql-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz" -SRC_URI+=" https://downloads.mysql.com/archives/MySQL-$(ver_cut 1-2)/${PN}-boost-${MY_PV}.tar.gz" -SRC_URI+=" ${PATCH_SET[@]}" -# Shorten the path because the socket path length must be shorter than 107 chars -# and we will run a mysql server during test phase -S="${WORKDIR}/mysql" - -LICENSE="GPL-2" -SLOT="8.0" -# -ppc, -riscv for bug #761715 -KEYWORDS="amd64 arm arm64 ~hppa ~mips -ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" -IUSE="cjk cracklib debug jemalloc latin1 numa +perl profiling router selinux +server tcmalloc test" -RESTRICT="!test? ( test )" -REQUIRED_USE="?? ( tcmalloc jemalloc ) - cjk? ( server ) - jemalloc? ( server ) - numa? ( server ) - profiling? ( server ) - router? ( server ) - tcmalloc? ( server )" - -# Be warned, *DEPEND are version-dependent -# These are used for both runtime and compiletime -COMMON_DEPEND=" - >=app-arch/lz4-1.9.4:= - app-arch/zstd:= - >=dev-libs/openssl-1.0.0:= - sys-libs/ncurses:= - >=sys-libs/zlib-1.2.13:= - server? ( - dev-libs/icu:= - dev-libs/libevent:=[ssl,threads(+)] - >=dev-libs/protobuf-3.8:= - net-libs/libtirpc:= - cjk? ( app-text/mecab:= ) - jemalloc? ( dev-libs/jemalloc:= ) - kernel_linux? ( - dev-libs/libaio:= - sys-process/procps:= - ) - numa? ( sys-process/numactl ) - tcmalloc? ( dev-util/google-perftools:= ) - ) -" -DEPEND=" - ${COMMON_DEPEND} - app-alternatives/yacc - server? ( net-libs/rpcsvc-proto ) - test? ( - acct-group/mysql acct-user/mysql - dev-perl/JSON - ) -" -RDEPEND=" - ${COMMON_DEPEND} - !dev-db/mariadb - !dev-db/mariadb-galera - !dev-db/percona-server - !dev-db/mysql-cluster - !dev-db/mysql:0 - !dev-db/mysql:5.7 - selinux? ( sec-policy/selinux-mysql ) - !prefix? ( - acct-group/mysql acct-user/mysql - dev-db/mysql-init-scripts - ) -" -# For other stuff to bring us in -# dev-perl/DBD-mysql is needed by some scripts installed by MySQL -PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" - -PATCHES=( - "${WORKDIR}"/mysql-patches - "${FILESDIR}"/${PN}-8.0.32-gcc13.patch -) - -mysql_init_vars() { - : ${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"} - : ${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} - : ${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} - : ${MY_LOGDIR="${EPREFIX}/var/log/mysql"} - MY_DATADIR="${MY_LOCALSTATEDIR}" - - export MY_SHAREDSTATEDIR MY_SYSCONFDIR - export MY_LOCALSTATEDIR MY_LOGDIR - export MY_DATADIR -} - -pkg_pretend() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use server ; then - CHECKREQS_DISK_BUILD="3G" - - if has test ${FEATURES} ; then - CHECKREQS_DISK_BUILD="9G" - fi - - check-reqs_pkg_pretend - fi - fi -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - CHECKREQS_DISK_BUILD="3G" - - if has test ${FEATURES} ; then - CHECKREQS_DISK_BUILD="9G" - - # Bug #213475 - MySQL _will_ object strenuously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if ! has userpriv ${FEATURES} ; then - die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." - fi - - local aio_max_nr=$(sysctl -n fs.aio-max-nr 2>/dev/null) - if [[ -z "${aio_max_nr}" || ${aio_max_nr} -lt 250000 ]] ; then - die "FEATURES=test will require fs.aio-max-nr=250000 at minimum!" - fi - - if use latin1 ; then - # Upstream only supports tests with default charset - die "Testing with USE=latin1 is not supported." - fi - fi - - if use kernel_linux && use numa ; then - linux-info_get_any_version - - local CONFIG_CHECK="~NUMA" - - local WARNING_NUMA="This package expects NUMA support in kernel which this system does not have at the moment;" - WARNING_NUMA+=" Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support" - - check_extra_config - fi - - use server && check-reqs_pkg_setup - fi -} - -src_unpack() { - unpack ${A} - - mv -f "${WORKDIR}/${MY_P}" "${S}" || die -} - -src_prepare() { - # Avoid rpm call which would trigger sandbox, #692368 - sed -i \ - -e 's/MY_RPM rpm/MY_RPM rpmNOTEXISTENT/' \ - CMakeLists.txt || die - - # Remove the centos and rhel selinux policies to support mysqld_safe under SELinux - if [[ -d "${S}/support-files/SELinux" ]] ; then - echo > "${S}/support-files/SELinux/CMakeLists.txt" || die - fi - - # Remove man pages for client-lib tools we don't install - rm \ - man/my_print_defaults.1 \ - man/perror.1 \ - man/zlib_decompress.1 \ - || die - - cmake_src_prepare -} - -src_configure() { - # Bug #114895, bug #110149 - filter-flags "-O" "-O[01]" - - # Code is now requiring C++17 due to https://github.com/mysql/mysql-server/commit/236ab55bedd8c9eacd80766d85edde2a8afacd08 - append-cxxflags -std=c++17 - - # Broken with FORTIFY_SOURCE=3 - # Our toolchain sets F_S=2 by default w/ >= -O2, so we need - # to unset F_S first, then explicitly set 2, to negate any default - # and anything set by the user if they're choosing 3 (or if they've - # modified GCC to set 3). - # - # bug #891259 - if tc-enables-fortify-source ; then - filter-flags -D_FORTIFY_SOURCE=3 - append-cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 - fi - - # debug hack wrt #497532 - local mycmakeargs=( - -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG')" - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG')" - - -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" - -DSYSCONFDIR="${EPREFIX}/etc/mysql" - - -DINSTALL_BINDIR=bin - -DINSTALL_DOCDIR=share/doc/${PF} - -DINSTALL_DOCREADMEDIR=share/doc/${PF} - -DINSTALL_INCLUDEDIR=include/mysql - -DINSTALL_INFODIR=share/info - -DINSTALL_LIBDIR=$(get_libdir) - -DINSTALL_MANDIR=share/man - -DINSTALL_MYSQLSHAREDIR=share/mysql - -DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin - -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" - -DINSTALL_SBINDIR=sbin - -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql" - - -DCOMPILATION_COMMENT="Gentoo Linux ${PF}" - -DWITH_UNIT_TESTS=$(usex test ON OFF) - - # Using bundled editline to get CTRL+C working - -DWITH_EDITLINE=bundled - -DWITH_ZLIB=system - -DWITH_SSL=system - -DWITH_LIBWRAP=0 - -DENABLED_LOCAL_INFILE=1 - -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DWITH_DEFAULT_COMPILER_OPTIONS=0 - # The build forces this to be defined when cross-compiling. We pass it - # all the time for simplicity and to make sure it is actually correct. - -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1) - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - - -DWITH_CURL=system - -DWITH_BOOST="${S}/boost" - -DWITH_ROUTER=$(usex router ON OFF) - ) - - if tc-is-lto ; then - mycmakeargs+=( -DWITH_LTO=ON ) - else - mycmakeargs+=( -DWITH_LTO=OFF ) - fi - - if use test ; then - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test ) - else - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) - fi - - mycmakeargs+=( -DWITHOUT_CLIENTLIBS=YES ) - - mycmakeargs+=( - -DWITH_ICU=system - -DWITH_LZ4=system - # Our dev-libs/rapidjson doesn't carry necessary fixes for std::regex - -DWITH_RAPIDJSON=bundled - -DWITH_ZSTD=system - ) - - if [[ -n "${MYSQL_DEFAULT_CHARSET}" && -n "${MYSQL_DEFAULT_COLLATION}" ]] ; then - ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" - ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." - ewarn "You MUST file bugs without these variables set." - ewarn "Tests will probably fail!" - - mycmakeargs+=( - -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} - -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} - ) - elif use latin1 ; then - mycmakeargs+=( - -DDEFAULT_CHARSET=latin1 - -DDEFAULT_COLLATION=latin1_swedish_ci - ) - else - mycmakeargs+=( - -DDEFAULT_CHARSET=utf8mb4 - -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci - ) - fi - - if use server ; then - mycmakeargs+=( - -DWITH_EXTRA_CHARSETS=all - -DWITH_DEBUG=$(usex debug) - -DWITH_MECAB=$(usex cjk system OFF) - -DWITH_LIBEVENT=system - -DWITH_PROTOBUF=system - -DWITH_NUMA=$(usex numa ON OFF) - ) - - if use jemalloc ; then - mycmakeargs+=( -DWITH_JEMALLOC=ON ) - elif use tcmalloc ; then - mycmakeargs+=( -DWITH_TCMALLOC=ON ) - fi - - if use profiling ; then - # Setting to OFF doesn't work: Once set, profiling options will be added - # to `mysqld --help` output via sql/sys_vars.cc causing - # "main.mysqld--help-notwin" test to fail - mycmakeargs+=( -DENABLED_PROFILING=ON ) - fi - - # Storage engines - mycmakeargs+=( - -DWITH_EXAMPLE_STORAGE_ENGINE=0 - -DWITH_ARCHIVE_STORAGE_ENGINE=1 - -DWITH_BLACKHOLE_STORAGE_ENGINE=1 - -DWITH_CSV_STORAGE_ENGINE=1 - -DWITH_FEDERATED_STORAGE_ENGINE=1 - -DWITH_HEAP_STORAGE_ENGINE=1 - -DWITH_INNOBASE_STORAGE_ENGINE=1 - -DWITH_INNODB_MEMCACHED=0 - -DWITH_MYISAMMRG_STORAGE_ENGINE=1 - -DWITH_MYISAM_STORAGE_ENGINE=1 - ) - else - mycmakeargs+=( - -DWITHOUT_SERVER=1 - -DWITH_SYSTEMD=no - ) - fi - - cmake_src_configure -} - -# Official test instructions: -# ulimit -n 16500 && USE='perl server' FEATURES='test userpriv' \ -# ebuild mysql-X.X.XX.ebuild digest clean test install -src_test() { - _disable_test() { - local rawtestname bug reason - rawtestname="${1}" ; shift - bug="${1}" ; shift - reason="${@}" - - ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})" - echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def" - } - - local TESTDIR="${BUILD_DIR}/mysql-test" - local retstatus_tests - - einfo "Official test instructions:" - einfo "ulimit -n 16500 && USE='perl server' FEATURES='test userpriv' ebuild ..." - - if ! use server ; then - ewarn "Skipping server tests due to minimal build!" - return 0 - fi - - # Ensure that parallel runs don't die - export MTR_BUILD_THREAD="$((${RANDOM} % 100))" - - if [[ -z "${MTR_PARALLEL}" ]] ; then - local -x MTR_PARALLEL=$(makeopts_jobs) - - if [[ ${MTR_PARALLEL} -gt 4 ]] ; then - # Running multiple tests in parallel usually require higher ulimit - # and fs.aio-max-nr settings. In addition, tests like main.multi_update - # are known to hit timeouts when the system is busy. - # - # To avoid test failure we will limit MTR_PARALLEL to 4 instead of - # using "auto". - einfo "Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})" - einfo "to avoid test failures. Set MTR_PARALLEL if you know what you are doing!" - MTR_PARALLEL=4 - fi - else - einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'" - fi - - # Create directories because mysqladmin might run out of order - mkdir -p "${T}"/var-tests{,/log} || die - - # Run mysql tests - pushd "${TESTDIR}" &>/dev/null || die - - touch "${T}/disabled.def" || die - - local -a disabled_tests=( - "auth_sec.atomic_rename_user;103512;Depends on user running test" - "auth_sec.keyring_file_data_qa;0;Won't work with user privileges" - "auth_sec.openssl_without_fips;94718;Known test failure" - - "gis.geometry_class_attri_prop;5452;Known rounding error with latest AMD processors (PS)" - "gis.geometry_property_function_issimple;5452;Known rounding error with latest AMD processors (PS)" - "gis.gis_bugs_crashes;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_buffer;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_centroid;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_distance;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_op_testingfunc_mix;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_operators_intersection;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_utility_function_distance_sphere;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_utility_function_simplify;5452;Known rounding error with latest AMD processors (PS)" - "gis.st_symdifference;5452;Known rounding error with latest AMD processors (PS)" - - "innodb.alter_kill;0;Known test failure -- no upstream bug yet" - - "main.derived_limit;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.explain_tree;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.gis-precise;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.mysql_load_data_local_dir;0;Known test failure -- no upstream bug yet" - "main.select_icp_mrr;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_bugs;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_mat_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.window_std_var;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.window_std_var_optimized;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.with_recursive;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "perfschema.statement_digest_query_sample;0;Test will fail on slow hardware" - - "rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch;0;Unstable test" - "rpl_gtid.rpl_gtid_stm_drop_table;90612;Known test failure" - "rpl_gtid.rpl_multi_source_mtr_includes;0;Known failure - no upstream bug yet" - - "sys_vars.myisam_data_pointer_size_func;87935;Test will fail on slow hardware" - - "x.connection;0;Known failure - no upstream bug yet" - "x.message_compressed_payload;0;False positive caused by protobuff-3.11+" - "x.message_protobuf_nested;0;False positive caused by protobuff-3.11+" - ) - - if ! hash zip 1>/dev/null 2>&1 ; then - # No need to force dep app-arch/zip for one test - disabled_tests+=( - "innodb.discarded_partition_create;0;Requires app-arch/zip" - "innodb.partition_upgrade_create;0;Requires app-arch/zip" - ) - fi - - if has_version ">=dev-libs/openssl-3" ; then - # >=dev-libs/openssl-3 defaults to security level 1 which disallow - # TLSv1/1.1 but tests will require TLSv1/1.1. - einfo "Set OpenSSL configuration for test suite ..." - - cat > "${T}/openssl_tlsv1.cnf" <<- EOF || die - openssl_conf = default_conf - - [ req ] - default_bits = 2048 - default_keyfile = privkey.pem - distinguished_name = req_distinguished_name - - [ req_distinguished_name ] - countryName = Country Name (2 letter code) - countryName_default = AU - countryName_min = 2 - countryName_max = 2 - - stateOrProvinceName = State or Province Name (full name) - stateOrProvinceName_default = Some-State - - localityName = Locality Name (eg, city) - - 0.organizationName = Organization Name (eg, company) - 0.organizationName_default = Internet Widgits Pty Ltd - - organizationalUnitName = Organizational Unit Name (eg, section) - - commonName = Common Name (e.g. server FQDN or YOUR name) - commonName_max = 64 - - emailAddress = Email Address - emailAddress_max = 64 - - [default_conf] - ssl_conf = ssl_sect - - [ssl_sect] - system_default = system_default_sect - - [system_default_sect] - CipherString = DEFAULT@SECLEVEL=0 - EOF - - local -x OPENSSL_CONF="${T}/openssl_tlsv1.cnf" - - disabled_tests+=( "x.connection_tls_version;0;Not compatible with OpenSSL 3.x error messages" ) - fi - - local test_infos_str test_infos_arr - for test_infos_str in "${disabled_tests[@]}" ; do - IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}" - - if [[ ${#test_infos_arr[@]} != 3 ]] ; then - die "Invalid test data set, not matching format: ${test_infos_str}" - fi - - _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}" - done - unset test_infos_str test_infos_arr - - # Try to increase file limits to increase test coverage - if ! ulimit -n 16500 1>/dev/null 2>&1 ; then - # Upper limit comes from parts.partition_* tests - ewarn "For maximum test coverage, please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager." - - if ! ulimit -n 4162 1>/dev/null 2>&1 ; then - # Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)' - ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager." - - if ! ulimit -n 3000 1>/dev/null 2>&1 ; then - ewarn "For minimum test coverage, please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager." - else - einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 4162 (medium test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 16500 (best test coverage)." - fi - - # run mysql-test tests - nonfatal edo perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def" - retstatus_tests=$? - - popd &>/dev/null || die - - # Cleanup is important for these testcases. - pkill -9 -f "${S}/ndb" 2>/dev/null - pkill -9 -f "${S}/sql" 2>/dev/null - - local failures="" - [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests" - - [[ -z "${failures}" ]] || die "Test failures: ${failures}" - einfo "Tests successfully completed" -} - -src_install() { - cmake_src_install - - # Not a GNU info file, more like a tiny README. - rm "${ED}"/usr/share/info/mysql.info || die - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Convenience links - einfo "Making Convenience links for mysqlcheck multi-call binary" - dosym "mysqlcheck" "/usr/bin/mysqlanalyze" - dosym "mysqlcheck" "/usr/bin/mysqlrepair" - dosym "mysqlcheck" "/usr/bin/mysqloptimize" - - # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir - if [[ -d "${ED}/usr/data" ]] ; then - rm -Rf "${ED}/usr/data" || die - fi - - # Unless they explicitly specific USE=test, then do not install the - # testsuite. It DOES have a use to be installed, esp. when you want to do a - # validation of your database configuration after tuning it. - if ! use test ; then - rm -rf "${ED}/${MY_SHAREDSTATEDIR#${EPREFIX}}/mysql-test" - fi - - # Configuration stuff - einfo "Building default configuration ..." - insinto "${MY_SYSCONFDIR#${EPREFIX}}" - [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf - cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die - eprefixify "${TMPDIR}/my.cnf" - doins "${TMPDIR}/my.cnf" - insinto "${MY_SYSCONFDIR#${EPREFIX}}/mysql.d" - cp "${FILESDIR}/my.cnf-8.0.distro-client" "${TMPDIR}/50-distro-client.cnf" || die - eprefixify "${TMPDIR}/50-distro-client.cnf" - doins "${TMPDIR}/50-distro-client.cnf" - - mycnf_src="my.cnf-8.0.distro-server" - sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ - "${FILESDIR}/${mycnf_src}" \ - > "${TMPDIR}/my.cnf.ok" || die - - if use prefix ; then - sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ - "${TMPDIR}/my.cnf.ok" || die - fi - - if use latin1 ; then - sed -i \ - -e "/character-set/s|utf8mb4|latin1|g" \ - "${TMPDIR}/my.cnf.ok" || die - fi - - eprefixify "${TMPDIR}/my.cnf.ok" - - newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf - - #Remove mytop if perl is not selected - [[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop" - - if use router ; then - rm -rf \ - "${ED}/usr/LICENSE.router" \ - "${ED}/usr/README.router" \ - "${ED}/usr/run" \ - "${ED}/usr/var" \ - || die - fi - - # Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them. - find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die -} - -pkg_postinst() { - # Make sure the vars are correctly initialized - mysql_init_vars - - # Create log directory securely if it does not exist - # NOTE: $MY_LOGDIR contains $EPREFIX by default - [[ -d "${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${MY_LOGDIR}" - - # Note about configuration change - einfo - elog "This version of ${PN} reorganizes the configuration from a single my.cnf" - elog "to several files in /etc/mysql/mysql.d." - elog "Please backup any changes you made to /etc/mysql/my.cnf" - elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension." - elog "You may have as many files as needed and they are read alphabetically." - elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." - einfo - - if [[ -z "${REPLACING_VERSIONS}" ]] ; then - einfo - elog "You might want to run:" - elog " \"emerge --config =${CATEGORY}/${PF}\"" - elog "if this is a new install." - einfo - else - einfo - elog "Upgrade process for ${PN}-8.x has changed. Please read" - elog "https://dev.mysql.com/doc/refman/8.0/en/upgrade-binary-package.html" - einfo - fi -} - -pkg_config() { - _getoptval() { - local section="$1" - local flag="--${2}=" - local extra_options="${3}" - local cmd=( - "${my_print_defaults_binary}" - "${extra_options}" - "${section}" - ) - local results=( $(eval "${cmd[@]}" 2>/dev/null | sed -n "/^${flag}/s,${flag},,gp") ) - - if [[ ${#results[@]} -gt 0 ]] ; then - # When option is set multiple times only return last value - echo "${results[-1]}" - fi - } - - _mktemp_dry() { - # emktemp has no --dry-run option - local template="${1}" - - if [[ -z "${template}" ]] ; then - if [[ -z "${T}" ]] ; then - template="/tmp/XXXXXXX" - else - template="${T}/XXXXXXX" - fi - fi - - local template_wo_X=${template//X/} - local n_X - let n_X=${#template}-${#template_wo_X} - if [[ ${n_X} -lt 3 ]] ; then - echo "${FUNCNAME[0]}: too few X's in template ‘${template}’" >&2 - return - fi - - local attempts=0 - local character tmpfile - while [[ true ]] ; do - let attempts=attempts+1 - - new_file= - while read -n1 character ; do - if [[ "${character}" == "X" ]] ; then - tmpfile+="${RANDOM:0:1}" - else - tmpfile+="${character}" - fi - done < <(echo -n "${template}") - - if [[ ! -f "${tmpfile}" ]] - then - echo "${tmpfile}" - return - fi - - if [[ ${attempts} -ge 100 ]] ; then - echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2 - return - fi - done - } - - local mysqld_binary="${EROOT}/usr/sbin/mysqld" - if [[ ! -x "${mysqld_binary}" ]] ; then - die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysql_binary="${EROOT}/usr/bin/mysql" - if [[ ! -x "${mysql_binary}" ]] ; then - die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" - if [[ ! -x "${my_print_defaults_binary}" ]] ; then - die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" - fi - - if [[ -z "${MYSQL_USER}" ]] ; then - MYSQL_USER=mysql - if use prefix ; then - MYSQL_USER=$(id -u -n 2>/dev/null) - if [[ -z "${MYSQL_USER}" ]] ; then - die "Failed to determine current username!" - fi - fi - fi - - if [[ -z "${MYSQL_GROUP}" ]] ; then - MYSQL_GROUP=mysql - if use prefix ; then - MYSQL_GROUP=$(id -g -n 2>/dev/null) - if [[ -z "${MYSQL_GROUP}" ]] ; then - die "Failed to determine current user groupname!" - fi - fi - fi - - # my_print_defaults needs to read stuff in $HOME/.my.cnf - local -x HOME="${EROOT}/root" - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Read currently set data directory - MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - - # Bug #213475 - MySQL _will_ object strenously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if [[ -z "${MY_DATADIR}" ]] ; then - die "Sorry, unable to find MY_DATADIR!" - elif [[ -d "${MY_DATADIR}/mysql" ]] ; then - ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!" - ewarn "Please rename or delete its content if you wish to initialize a new data directory." - die "${PN} data directory at '${MY_DATADIR}' looks already initialized!" - fi - - MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_TMPDIR=${MYSQL_TMPDIR%/} - # These are dir+prefix - MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} - MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} - - # Create missing directories. - # Always check if mysql user can write to directory even if we just - # created directory because a parent directory might be not - # accessible for that user. - PID_DIR="${EROOT}/run/mysqld" - if [[ ! -d "${PID_DIR}" ]] ; then - einfo "Creating ${PN} PID directory '${PID_DIR}' ..." - install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \ - || die "Failed to create PID directory '${PID_DIR}'!" - fi - - local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_pid_dir_testfile}" ]] \ - && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_pid_dir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!" - else - rm "${_pid_dir_testfile}" || die - unset _pid_dir_testfile - fi - - if [[ ! -d "${MY_DATADIR}" ]] ; then - einfo "Creating ${PN} data directory '${MY_DATADIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \ - || die "Failed to create ${PN} data directory '${MY_DATADIR}'!" - fi - - local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_datadir_testfile}" ]] \ - && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_datadir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!" - else - rm "${_my_datadir_testfile}" || die - unset _my_datadir_testfile - fi - - if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then - einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \ - || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!" - fi - - if [[ -z "${MYSQL_TMPDIR}" ]] ; then - MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")" - [[ -z "${MYSQL_TMPDIR}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!" - - mkdir "${MYSQL_TMPDIR}" || die - chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die - fi - - # Now we need to test MYSQL_TMPDIR... - local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_tmpdir_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_tmpdir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!" - else - rm "${_my_tmpdir_testfile}" || die - unset _my_tmpdir_testfile - fi - - if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${MYSQL_LOG_BIN}" ]] ; then - einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \ - || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'" - fi - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_logbin_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_logbin_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!" - else - rm "${_my_logbin_testfile}" || die - unset _my_logbin_testfile - fi - fi - - if [[ -n "${MYSQL_RELAY_LOG}" && ! -d "${MYSQL_RELAY_LOG}" ]] ; then - einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \ - || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_relaylog_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_relaylog_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!" - else - rm "${_my_relaylog_testfile}" || die - unset _my_relaylog_testfile - fi - fi - - local mysql_install_log="$(_mktemp_dry "${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log")" - if [[ -z "${mysql_install_log}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysql_install_log}" || die - chown ${MYSQL_USER} "${mysql_install_log}" || die - fi - - local mysqld_logfile="$(_mktemp_dry "${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log")" - if [[ -z "${mysqld_logfile}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysqld_logfile}" || die - chown ${MYSQL_USER} "${mysqld_logfile}" || die - fi - - echo "" - einfo "Detected settings:" - einfo "==================" - einfo "MySQL User:\t\t\t\t${MYSQL_USER}" - einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}" - einfo "MySQL DATA directory:\t\t${MY_DATADIR}" - einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}" - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}" - fi - - einfo "PID DIR:\t\t\t\t${PID_DIR}" - einfo "Install db log:\t\t\t${mysql_install_log}" - einfo "Install server log:\t\t\t${mysqld_logfile}" - - local -a config_files - - local config_file="${EROOT}/etc/mysql/mysql.d/50-distro-client.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Client configuration '${config_file}' not found; Skipping configuration of default authentication plugin for client ..." - fi - - config_file="${EROOT}/etc/mysql/mysql.d/50-distro-server.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Server configuration '${config_file}' not found; Skipping configuration of default authentication plugin for mysqld ..." - fi - - if [[ ${#config_files[@]} -gt 0 ]] ; then - if [[ -z "${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" ]] ; then - local user_answer - - echo - einfo "Please select default authentication plugin (enter number or plugin name):" - einfo "1) caching_sha2_password [MySQL 8.0 default]" - einfo "2) mysql_native_password [MySQL 5.7 default]" - einfo - einfo "For details see:" - einfo "https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password" - read -p " >" user_answer - echo - - case "${user_answer}" in - 1|caching_sha2_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=caching_sha2_password - ;; - 2|mysql_native_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password - ;; - '') - die "No authentication plugin selected!" - ;; - *) - die "Authentication plugin '${user_answer}' is unknown/unsupported!" - ;; - esac - - echo "Selected authentication plugin: ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" >> "${mysql_install_log}" - - unset user_answer - fi - - local cfg_option cfg_option_tabs cfg_section - for config_file in "${config_files[@]}" ; do - cfg_option="default-authentication-plugin" - cfg_section="mysqld" - cfg_option_tabs="\t\t" - if [[ "${config_file}" == *client.cnf ]] ; then - cfg_option="default-auth" - cfg_section="client" - cfg_option_tabs="\t\t\t\t" - fi - - if grep -qE "^(loose-)?${cfg_option}\b.*=" "${config_file}" 2>/dev/null ; then - einfo "Ensuring that ${cfg_option} is set to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "s/^\(loose-\)\?${cfg_option}\b.*=.*/loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}/" \ - "${config_file}" || die "Failed to change ${cfg_option} in '${config_file}'!" - else - einfo "Setting ${cfg_option} to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "/^\[${cfg_section}\]$/a loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" \ - "${config_file}" || die "Failed to add ${cfg_option} to '${config_file}'!" - fi - done - unset cfg_option cfg_option_tabs cfg_section - fi - unset config_files config_file - - echo - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local tmp_mysqld_password_source= - - for tmp_mysqld_password_source in mysql client ; do - einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" - if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then - if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then - ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" - MYSQL_ROOT_PASSWORD= - continue - fi - - einfo "Found password in '${tmp_mysqld_password_source}' section!" - break - fi - done - - # Sometimes --show is required to display passwords in some implementations of my_print_defaults - if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" - fi - - unset tmp_mysqld_password_source - fi - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local pwd1="a" - local pwd2="b" - - echo - einfo "No password for mysql 'root' user was specified via environment" - einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config" - einfo "file like '${HOME}/.my.cnf'." - einfo "To continue please provide a password for the mysql 'root' user" - einfo "now on console:" - ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!" - read -rsp " >" pwd1 ; echo - - einfo "Retype the password" - read -rsp " >" pwd2 ; echo - - if [[ "x$pwd1" != "x$pwd2" ]] ; then - die "Passwords are not the same!" - fi - - MYSQL_ROOT_PASSWORD="${pwd1}" - unset pwd1 pwd2 - - echo - fi - - local -a mysqld_options - - # Fix bug 446200. Don't reference host my.cnf, needs to come first, - # see http://bugs.mysql.com/bug.php?id=31312 - use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" ) - - # Figure out which options we need to disable to do the setup - local helpfile="${TMPDIR}/mysqld-help" - "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null - - local opt optexp optfull - for opt in host-cache name-resolve networking slave-start \ - federated ssl log-bin relay-log slow-query-log external-locking \ - log-slave-updates \ - ; do - optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" - grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" ) - done - - # Prepare timezones, see - # https://dev.mysql.com/doc/mysql/en/time-zone-support.html - local tz_sql="$(_mktemp_dry "${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql")" - [[ -z "${tz_sql}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql' failed!" - - echo "USE mysql;" >"${tz_sql}" - "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null - if [[ $? -ne 0 ]] ; then - die "mysql_tzinfo_to_sql failed!" - fi - - # --initialize-insecure will not set root password - # --initialize would set a random one in the log which we don't need as we set it ourselves - local cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--initialize-insecure" - "--init-file='${tz_sql}'" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - "--log-error='${mysql_install_log}'" - "--user=${MYSQL_USER}" - ) - - einfo "Initializing ${PN} data directory: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1 - - if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql.ibd" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2 - die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!" - fi - - rm "${tz_sql}" || die - - local x=${RANDOM} - local socket="${EROOT}${PID_DIR}/mysqld${x}.sock" - local pidfile="${EROOT}${PID_DIR}/mysqld${x}.pid" - unset x - - cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - --max_allowed_packet=8M - --net_buffer_length=16K - "--socket='${socket}'" - "--pid-file='${pidfile}'" - "--log-error='${mysqld_logfile}'" - "--user=${MYSQL_USER}" - ) - - einfo "Starting mysqld to finalize initialization: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 & - - echo -n "Waiting for mysqld to accept connections " - local maxtry=15 - while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - if [[ -S "${socket}" ]] ; then - # Even with a socket we don't know if mysqld will abort - # start due to an error so just wait a little bit more... - maxtry=5 - while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - fi - - echo - - if [[ ! -S "${socket}" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2 - die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!" - fi - - local mysql_logfile="${TMPDIR}/set_root_pw.log" - touch "${mysql_logfile}" || die - - ebegin "Setting root password" - # Do this from memory, as we don't want clear text passwords in temp files - local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'" - cmd=( - "${mysql_binary}" - --no-defaults - "--socket='${socket}'" - -hlocalhost - "-e \"${sql}\"" - ) - eval "${cmd[@]}" >"${mysql_logfile}" 2>&1 - local rc=$? - eend ${rc} - - if [[ ${rc} -ne 0 ]] ; then - # Poor man's solution which tries to avoid having password - # in log. NOTE: sed can fail if user didn't follow advice - # and included character which will require escaping... - sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null - - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}" - die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!" - fi - - # Stop the server - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - echo -n "Stopping the server " - pkill -F "${pidfile}" &>/dev/null - - maxtry=10 - while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - echo - - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - # We somehow failed to stop server. - # However, not a fatal error. Just warn the user. - ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!" - fi - fi - - einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!" -} diff --git a/dev-db/mysql/mysql-8.0.34.ebuild b/dev-db/mysql/mysql-8.0.34.ebuild deleted file mode 100644 index f7feb0d829ce..000000000000 --- a/dev-db/mysql/mysql-8.0.34.ebuild +++ /dev/null @@ -1,1223 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit check-reqs cmake edo flag-o-matic linux-info multiprocessing prefix toolchain-funcs - -MY_PV="${PV//_pre*}" -MY_P="${PN}-${MY_PV}" - -# Patch version -PATCH_SET=( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-8.0.34-patches-01.tar.xz ) - -HOMEPAGE="https://www.mysql.com/" -DESCRIPTION="A fast, multi-threaded, multi-user SQL database server" -SRC_URI="https://cdn.mysql.com/Downloads/MySQL-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz" -SRC_URI+=" https://cdn.mysql.com/archives/mysql-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz" -SRC_URI+=" https://downloads.mysql.com/archives/MySQL-$(ver_cut 1-2)/${PN}-boost-${MY_PV}.tar.gz" -SRC_URI+=" ${PATCH_SET[@]}" -# Shorten the path because the socket path length must be shorter than 107 chars -# and we will run a mysql server during test phase -S="${WORKDIR}/mysql" - -LICENSE="GPL-2" -SLOT="8.0" -# -ppc for bug #761715 -KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~mips -ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" -IUSE="cjk cracklib debug jemalloc latin1 numa +perl profiling router selinux +server tcmalloc test" -RESTRICT="!test? ( test )" - -REQUIRED_USE="?? ( tcmalloc jemalloc ) - cjk? ( server ) - jemalloc? ( server ) - numa? ( server ) - profiling? ( server ) - router? ( server ) - tcmalloc? ( server )" - -# Be warned, *DEPEND are version-dependent -# These are used for both runtime and compiletime -COMMON_DEPEND=" - >=app-arch/lz4-1.9.4:= - >=app-arch/zstd-1.2.0:= - >=dev-libs/openssl-1.0.0:= - sys-libs/ncurses:= - >=sys-libs/zlib-1.2.13:= - server? ( - dev-libs/icu:= - dev-libs/libevent:=[ssl,threads(+)] - net-libs/libtirpc:= - cjk? ( app-text/mecab:= ) - jemalloc? ( dev-libs/jemalloc:= ) - kernel_linux? ( - dev-libs/libaio:= - sys-process/procps:= - ) - numa? ( sys-process/numactl ) - tcmalloc? ( dev-util/google-perftools:= ) - ) -" -DEPEND=" - ${COMMON_DEPEND} - app-alternatives/yacc - server? ( net-libs/rpcsvc-proto ) - test? ( - acct-group/mysql acct-user/mysql - dev-perl/Expect - dev-perl/JSON - ) -" -RDEPEND=" - ${COMMON_DEPEND} - !dev-db/mariadb - !dev-db/mariadb-galera - !dev-db/percona-server - !dev-db/mysql-cluster - !dev-db/mysql:0 - !dev-db/mysql:5.7 - selinux? ( sec-policy/selinux-mysql ) - !prefix? ( - acct-group/mysql acct-user/mysql - dev-db/mysql-init-scripts - ) -" -# For other stuff to bring us in -# dev-perl/DBD-mysql is needed by some scripts installed by MySQL -PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" - -PATCHES=( - "${WORKDIR}"/mysql-patches -) - -mysql_init_vars() { - : ${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"} - : ${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} - : ${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} - : ${MY_LOGDIR="${EPREFIX}/var/log/mysql"} - MY_DATADIR="${MY_LOCALSTATEDIR}" - - export MY_SHAREDSTATEDIR MY_SYSCONFDIR - export MY_LOCALSTATEDIR MY_LOGDIR - export MY_DATADIR -} - -pkg_pretend() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use server ; then - CHECKREQS_DISK_BUILD="3G" - - if has test ${FEATURES} ; then - CHECKREQS_DISK_BUILD="9G" - fi - - check-reqs_pkg_pretend - fi - fi -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - CHECKREQS_DISK_BUILD="3G" - - if has test ${FEATURES} ; then - CHECKREQS_DISK_BUILD="9G" - - # Bug #213475 - MySQL _will_ object strenuously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if ! has userpriv ${FEATURES} ; then - die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." - fi - - local aio_max_nr=$(sysctl -n fs.aio-max-nr 2>/dev/null) - if [[ -z "${aio_max_nr}" || ${aio_max_nr} -lt 250000 ]] ; then - die "FEATURES=test will require fs.aio-max-nr=250000 at minimum!" - fi - - if use latin1 ; then - # Upstream only supports tests with default charset - die "Testing with USE=latin1 is not supported." - fi - fi - - if use kernel_linux && use numa ; then - linux-info_get_any_version - - local CONFIG_CHECK="~NUMA" - - local WARNING_NUMA="This package expects NUMA support in kernel which this system does not have at the moment;" - WARNING_NUMA+=" Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support" - - check_extra_config - fi - - use server && check-reqs_pkg_setup - fi -} - -src_unpack() { - unpack ${A} - - mv -f "${WORKDIR}/${MY_P}" "${S}" || die -} - -src_prepare() { - # Avoid rpm call which would trigger sandbox, #692368 - sed -i \ - -e 's/MY_RPM rpm/MY_RPM rpmNOTEXISTENT/' \ - CMakeLists.txt || die - - # Remove the centos and rhel selinux policies to support mysqld_safe under SELinux - if [[ -d "${S}/support-files/SELinux" ]] ; then - echo > "${S}/support-files/SELinux/CMakeLists.txt" || die - fi - - # Remove man pages for client-lib tools we don't install - rm \ - man/my_print_defaults.1 \ - man/perror.1 \ - man/zlib_decompress.1 \ - || die - - cmake_src_prepare -} - -src_configure() { - # Bug #114895, bug #110149 - filter-flags "-O" "-O[01]" - - # Code is now requiring C++17 due to https://github.com/mysql/mysql-server/commit/236ab55bedd8c9eacd80766d85edde2a8afacd08 - append-cxxflags -std=c++17 - - # Broken with FORTIFY_SOURCE=3 - # Our toolchain sets F_S=2 by default w/ >= -O2, so we need - # to unset F_S first, then explicitly set 2, to negate any default - # and anything set by the user if they're choosing 3 (or if they've - # modified GCC to set 3). - # - # bug #891259 - if tc-enables-fortify-source ; then - filter-flags -D_FORTIFY_SOURCE=3 - append-cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 - fi - - if has sandbox ${FEATURES} ; then - # bug #823656 - append-cppflags -DGTEST_NO_DEATH_TEST=1 - fi - - local mycmakeargs=( - -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" - -DSYSCONFDIR="${EPREFIX}/etc/mysql" - - -DINSTALL_BINDIR=bin - -DINSTALL_DOCDIR=share/doc/${PF} - -DINSTALL_DOCREADMEDIR=share/doc/${PF} - -DINSTALL_INCLUDEDIR=include/mysql - -DINSTALL_INFODIR=share/info - -DINSTALL_LIBDIR=$(get_libdir) - -DINSTALL_MANDIR=share/man - -DINSTALL_MYSQLSHAREDIR=share/mysql - -DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin - -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" - -DINSTALL_SBINDIR=sbin - -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql" - - -DROUTER_INSTALL_LOGROTATEDIR="${EPREFIX}/etc/logrotate.d" - -DROUTER_INSTALL_DOCDIR="share/doc/${PF}" - - -DCOMPILATION_COMMENT="Gentoo Linux ${PF}" - -DWITH_UNIT_TESTS=$(usex test ON OFF) - - # Using bundled editline to get CTRL+C working - -DWITH_EDITLINE=bundled - -DWITH_ZLIB=system - -DWITH_SSL=system - -DWITH_LIBWRAP=0 - -DENABLED_LOCAL_INFILE=1 - -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DWITH_DEFAULT_COMPILER_OPTIONS=0 - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - - -DWITH_CURL=system - -DWITH_BOOST="${S}/boost" - -DWITH_ROUTER=$(usex router ON OFF) - ) - - if use debug; then - # Debug build type used extensively to add preprocessor definitions - local -x CMAKE_BUILD_TYPE="Debug" - else - # debug hack wrt #497532 - mycmakeargs+=( - -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG' )" - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG' )" - ) - fi - - if tc-is-lto ; then - mycmakeargs+=( -DWITH_LTO=ON ) - else - mycmakeargs+=( -DWITH_LTO=OFF ) - fi - - if use test ; then - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test ) - else - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) - fi - - mycmakeargs+=( -DWITHOUT_CLIENTLIBS=YES ) - - mycmakeargs+=( - -DWITH_ICU=system - -DWITH_LZ4=system - # Our dev-libs/rapidjson doesn't carry necessary fixes for std::regex - -DWITH_RAPIDJSON=bundled - -DWITH_ZSTD=system - ) - - if [[ -n "${MYSQL_DEFAULT_CHARSET}" && -n "${MYSQL_DEFAULT_COLLATION}" ]] ; then - ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" - ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." - ewarn "You MUST file bugs without these variables set." - ewarn "Tests will probably fail!" - - mycmakeargs+=( - -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} - -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} - ) - elif use latin1 ; then - mycmakeargs+=( - -DDEFAULT_CHARSET=latin1 - -DDEFAULT_COLLATION=latin1_swedish_ci - ) - else - mycmakeargs+=( - -DDEFAULT_CHARSET=utf8mb4 - -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci - ) - fi - - if use server ; then - mycmakeargs+=( - -DWITH_EXTRA_CHARSETS=all - -DWITH_DEBUG=$(usex debug) - -DWITH_MECAB=$(usex cjk system OFF) - -DWITH_LIBEVENT=system - # Cannot handle protobuf >23 bug #912797 - -DWITH_PROTOBUF=bundled - -DWITH_NUMA=$(usex numa ON OFF) - ) - - if use jemalloc ; then - mycmakeargs+=( -DWITH_JEMALLOC=ON ) - elif use tcmalloc ; then - mycmakeargs+=( -DWITH_TCMALLOC=ON ) - fi - - if use profiling ; then - # Setting to OFF doesn't work: Once set, profiling options will be added - # to `mysqld --help` output via sql/sys_vars.cc causing - # "main.mysqld--help-notwin" test to fail - mycmakeargs+=( -DENABLED_PROFILING=ON ) - fi - - # Storage engines - mycmakeargs+=( - -DWITH_EXAMPLE_STORAGE_ENGINE=0 - -DWITH_ARCHIVE_STORAGE_ENGINE=1 - -DWITH_BLACKHOLE_STORAGE_ENGINE=1 - -DWITH_CSV_STORAGE_ENGINE=1 - -DWITH_FEDERATED_STORAGE_ENGINE=1 - -DWITH_HEAP_STORAGE_ENGINE=1 - -DWITH_INNOBASE_STORAGE_ENGINE=1 - -DWITH_INNODB_MEMCACHED=0 - -DWITH_MYISAMMRG_STORAGE_ENGINE=1 - -DWITH_MYISAM_STORAGE_ENGINE=1 - ) - else - mycmakeargs+=( - -DWITHOUT_SERVER=1 - -DWITH_SYSTEMD=no - ) - fi - - cmake_src_configure -} - -# Official test instructions: -# ulimit -n 16500 && USE='perl server' FEATURES='test userpriv' \ -# ebuild mysql-X.X.XX.ebuild digest clean test install -src_test() { - _disable_test() { - local rawtestname bug reason - rawtestname="${1}" ; shift - bug="${1}" ; shift - reason="${@}" - - ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})" - echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def" - } - - local TESTDIR="${BUILD_DIR}/mysql-test" - local retstatus_tests - - einfo "Official test instructions:" - einfo "ulimit -n 16500 && USE='perl server' FEATURES='test userpriv' ebuild ..." - - if ! use server ; then - ewarn "Skipping server tests due to minimal build!" - return 0 - fi - - # Ensure that parallel runs don't die - local -x MTR_BUILD_THREAD="$((${RANDOM} % 100))" - - local -x MTR_PARALLEL=${MTR_PARALLEL:-$(makeopts_jobs)} - einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'" - - # Disable unit tests, run them separately with eclass defaults - local -x MTR_UNIT_TESTS=0 - - # Create directories because mysqladmin might run out of order - mkdir -p "${T}"/var-tests{,/log} || die - - # Run mysql tests - pushd "${TESTDIR}" &>/dev/null || die - - touch "${T}/disabled.def" || die - - local -a disabled_tests=( - "auth_sec.atomic_rename_user;103512;Depends on user running test" - "auth_sec.keyring_file_data_qa;0;Won't work with user privileges" - "auth_sec.openssl_without_fips;94718;Known test failure" - - "gis.geometry_class_attri_prop;5452;Known rounding error with latest AMD processors (PS)" - "gis.geometry_property_function_issimple;5452;Known rounding error with latest AMD processors (PS)" - "gis.gis_bugs_crashes;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_buffer;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_centroid;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_distance;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_op_testingfunc_mix;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_operators_intersection;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_utility_function_distance_sphere;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_utility_function_simplify;5452;Known rounding error with latest AMD processors (PS)" - "gis.st_symdifference;5452;Known rounding error with latest AMD processors (PS)" - - "innodb.alter_kill;0;Known test failure -- no upstream bug yet" - - "main.derived_limit;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.explain_tree;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.gis-precise;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.mysql_load_data_local_dir;0;Known test failure -- no upstream bug yet" - "main.select_icp_mrr;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_bugs;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_mat_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_all_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.window_std_var;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.window_std_var_optimized;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.with_recursive;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "perfschema.statement_digest_query_sample;0;Test will fail on slow hardware" - - "rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch;0;Unstable test" - "rpl_gtid.rpl_multi_source_mtr_includes;97844;Unstable test" - "main.partition_datatype;0;Unstable test" - - "sys_vars.myisam_data_pointer_size_func;87935;Test will fail on slow hardware" - - "x.connection;0;Known failure - no upstream bug yet" - "main.slow_log;0;Known failure - no upstream bug yet" - ) - - if ! hash zip 1>/dev/null 2>&1 ; then - # No need to force dep app-arch/zip for one test - disabled_tests+=( - "innodb.discarded_partition_create;0;Requires app-arch/zip" - "innodb.partition_upgrade_create;0;Requires app-arch/zip" - ) - fi - - local test_infos_str test_infos_arr - for test_infos_str in "${disabled_tests[@]}" ; do - IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}" - - if [[ ${#test_infos_arr[@]} != 3 ]] ; then - die "Invalid test data set, not matching format: ${test_infos_str}" - fi - - _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}" - done - unset test_infos_str test_infos_arr - - local -a CMAKE_SKIP_TESTS=( - # timing test, can be unreliable - "routertest_harness_net_ts_timer" - - # Could not get local host address: Name or service not known(errno: -2) - "routertest_component_bootstrap" - "routertest_component_bootstrap_account" - "routertest_component_bootstrap_clusterset" - "routertest_component_config_overwrites" - "routertest_component_rest_api_enable" - "routertest_component_routing" - "routertest_component_sd_notify" - "routertest_component_state_file" - "routertest_integration_routing_direct" - "routertest_integration_routing_reuse" - "routertest_integration_routing_sharing" - "routertest_integration_routing_sharing_constrained_pools" - "routertest_integration_routing_sharing_restart" - - # FIXME: suffers from broken DEATH_TESTS's - "routertest_router_certificate_generator" - - # TODO: ??? - "pfs_host-oom" - "pfs_user-oom" - "pfs" - ) - - # Try to increase file limits to increase test coverage - if ! ulimit -n 16500 1>/dev/null 2>&1 ; then - # Upper limit comes from parts.partition_* tests - ewarn "For maximum test coverage, please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager." - - if ! ulimit -n 4162 1>/dev/null 2>&1 ; then - # Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)' - ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager." - - if ! ulimit -n 3000 1>/dev/null 2>&1 ; then - ewarn "For minimum test coverage, please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager." - else - einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 4162 (medium test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 16500 (best test coverage)." - fi - - # run mysql-test tests - # Enable force restart to ensure success when tests don't cleanup sufficiently. - # Anything touching gtid_executed is negatively affected if you have unlucky ordering - nonfatal edo perl mysql-test-run.pl \ - --force --force-restart \ - --vardir="${T}/var-tests" --tmpdir="${T}/tmp-tests" \ - --skip-test=tokudb --skip-test-list="${T}/disabled.def" \ - --retry-failure=0 - retstatus_tests=$? - - popd &>/dev/null || die - - # Cleanup is important for these testcases. - pkill -9 -f "${S}/ndb" 2>/dev/null - pkill -9 -f "${S}/sql" 2>/dev/null - - local failures="" - [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests" - - cmake_src_test - - [[ -z "${failures}" ]] || die "Test failures: ${failures}" - einfo "Tests successfully completed" -} - -src_install() { - cmake_src_install - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Convenience links - einfo "Making Convenience links for mysqlcheck multi-call binary" - dosym "mysqlcheck" "/usr/bin/mysqlanalyze" - dosym "mysqlcheck" "/usr/bin/mysqlrepair" - dosym "mysqlcheck" "/usr/bin/mysqloptimize" - - # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir - if [[ -d "${ED}/usr/data" ]] ; then - rm -Rf "${ED}/usr/data" || die - fi - - # Unless they explicitly specific USE=test, then do not install the - # testsuite. It DOES have a use to be installed, esp. when you want to do a - # validation of your database configuration after tuning it. - if ! use test ; then - rm -rf "${ED}/${MY_SHAREDSTATEDIR#${EPREFIX}}/mysql-test" - fi - - # Configuration stuff - einfo "Building default configuration ..." - insinto "${MY_SYSCONFDIR#${EPREFIX}}" - [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf - cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die - eprefixify "${TMPDIR}/my.cnf" - doins "${TMPDIR}/my.cnf" - insinto "${MY_SYSCONFDIR#${EPREFIX}}/mysql.d" - cp "${FILESDIR}/my.cnf-8.0.distro-client" "${TMPDIR}/50-distro-client.cnf" || die - eprefixify "${TMPDIR}/50-distro-client.cnf" - doins "${TMPDIR}/50-distro-client.cnf" - - mycnf_src="my.cnf-8.0.distro-server" - sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ - "${FILESDIR}/${mycnf_src}" \ - > "${TMPDIR}/my.cnf.ok" || die - - if use prefix ; then - sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ - "${TMPDIR}/my.cnf.ok" || die - fi - - if use latin1 ; then - sed -i \ - -e "/character-set/s|utf8mb4|latin1|g" \ - "${TMPDIR}/my.cnf.ok" || die - fi - - eprefixify "${TMPDIR}/my.cnf.ok" - - newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf - - #Remove mytop if perl is not selected - [[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop" - - if use router ; then - rm -rf \ - "${ED}/usr/LICENSE.router" \ - "${ED}/usr/README.router" \ - "${ED}/usr/run" \ - "${ED}/usr/var" \ - || die - fi - - # Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them. - find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die -} - -pkg_postinst() { - # Make sure the vars are correctly initialized - mysql_init_vars - - # Create log directory securely if it does not exist - # NOTE: $MY_LOGDIR contains $EPREFIX by default - [[ -d "${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${MY_LOGDIR}" - - # Note about configuration change - einfo - elog "This version of ${PN} reorganizes the configuration from a single my.cnf" - elog "to several files in /etc/mysql/mysql.d." - elog "Please backup any changes you made to /etc/mysql/my.cnf" - elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension." - elog "You may have as many files as needed and they are read alphabetically." - elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." - einfo - - if [[ -z "${REPLACING_VERSIONS}" ]] ; then - einfo - elog "You might want to run:" - elog " \"emerge --config =${CATEGORY}/${PF}\"" - elog "if this is a new install." - einfo - else - einfo - elog "Upgrade process for ${PN}-8.x has changed. Please read" - elog "https://dev.mysql.com/doc/refman/8.0/en/upgrade-binary-package.html" - einfo - fi -} - -pkg_config() { - _getoptval() { - local section="$1" - local flag="--${2}=" - local extra_options="${3}" - local cmd=( - "${my_print_defaults_binary}" - "${extra_options}" - "${section}" - ) - local results=( $(eval "${cmd[@]}" 2>/dev/null | sed -n "/^${flag}/s,${flag},,gp") ) - - if [[ ${#results[@]} -gt 0 ]] ; then - # When option is set multiple times only return last value - echo "${results[-1]}" - fi - } - - _mktemp_dry() { - # emktemp has no --dry-run option - local template="${1}" - - if [[ -z "${template}" ]] ; then - if [[ -z "${T}" ]] ; then - template="/tmp/XXXXXXX" - else - template="${T}/XXXXXXX" - fi - fi - - local template_wo_X=${template//X/} - local n_X - let n_X=${#template}-${#template_wo_X} - if [[ ${n_X} -lt 3 ]] ; then - echo "${FUNCNAME[0]}: too few X's in template ‘${template}’" >&2 - return - fi - - local attempts=0 - local character tmpfile - while [[ true ]] ; do - let attempts=attempts+1 - - new_file= - while read -n1 character ; do - if [[ "${character}" == "X" ]] ; then - tmpfile+="${RANDOM:0:1}" - else - tmpfile+="${character}" - fi - done < <(echo -n "${template}") - - if [[ ! -f "${tmpfile}" ]] - then - echo "${tmpfile}" - return - fi - - if [[ ${attempts} -ge 100 ]] ; then - echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2 - return - fi - done - } - - local mysqld_binary="${EROOT}/usr/sbin/mysqld" - if [[ ! -x "${mysqld_binary}" ]] ; then - die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysql_binary="${EROOT}/usr/bin/mysql" - if [[ ! -x "${mysql_binary}" ]] ; then - die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" - if [[ ! -x "${my_print_defaults_binary}" ]] ; then - die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" - fi - - if [[ -z "${MYSQL_USER}" ]] ; then - MYSQL_USER=mysql - if use prefix ; then - MYSQL_USER=$(id -u -n 2>/dev/null) - if [[ -z "${MYSQL_USER}" ]] ; then - die "Failed to determine current username!" - fi - fi - fi - - if [[ -z "${MYSQL_GROUP}" ]] ; then - MYSQL_GROUP=mysql - if use prefix ; then - MYSQL_GROUP=$(id -g -n 2>/dev/null) - if [[ -z "${MYSQL_GROUP}" ]] ; then - die "Failed to determine current user groupname!" - fi - fi - fi - - # my_print_defaults needs to read stuff in $HOME/.my.cnf - local -x HOME="${EROOT}/root" - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Read currently set data directory - MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - - # Bug #213475 - MySQL _will_ object strenously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if [[ -z "${MY_DATADIR}" ]] ; then - die "Sorry, unable to find MY_DATADIR!" - elif [[ -d "${MY_DATADIR}/mysql" ]] ; then - ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!" - ewarn "Please rename or delete its content if you wish to initialize a new data directory." - die "${PN} data directory at '${MY_DATADIR}' looks already initialized!" - fi - - MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_TMPDIR=${MYSQL_TMPDIR%/} - # These are dir+prefix - MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} - MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} - - # Create missing directories. - # Always check if mysql user can write to directory even if we just - # created directory because a parent directory might be not - # accessible for that user. - PID_DIR="${EROOT}/run/mysqld" - if [[ ! -d "${PID_DIR}" ]] ; then - einfo "Creating ${PN} PID directory '${PID_DIR}' ..." - install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \ - || die "Failed to create PID directory '${PID_DIR}'!" - fi - - local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_pid_dir_testfile}" ]] \ - && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_pid_dir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!" - else - rm "${_pid_dir_testfile}" || die - unset _pid_dir_testfile - fi - - if [[ ! -d "${MY_DATADIR}" ]] ; then - einfo "Creating ${PN} data directory '${MY_DATADIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \ - || die "Failed to create ${PN} data directory '${MY_DATADIR}'!" - fi - - local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_datadir_testfile}" ]] \ - && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_datadir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!" - else - rm "${_my_datadir_testfile}" || die - unset _my_datadir_testfile - fi - - if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then - einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \ - || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!" - fi - - if [[ -z "${MYSQL_TMPDIR}" ]] ; then - MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")" - [[ -z "${MYSQL_TMPDIR}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!" - - mkdir "${MYSQL_TMPDIR}" || die - chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die - fi - - # Now we need to test MYSQL_TMPDIR... - local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_tmpdir_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_tmpdir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!" - else - rm "${_my_tmpdir_testfile}" || die - unset _my_tmpdir_testfile - fi - - if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${MYSQL_LOG_BIN}" ]] ; then - einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \ - || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'" - fi - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_logbin_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_logbin_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!" - else - rm "${_my_logbin_testfile}" || die - unset _my_logbin_testfile - fi - fi - - if [[ -n "${MYSQL_RELAY_LOG}" && ! -d "${MYSQL_RELAY_LOG}" ]] ; then - einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \ - || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_relaylog_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_relaylog_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!" - else - rm "${_my_relaylog_testfile}" || die - unset _my_relaylog_testfile - fi - fi - - local mysql_install_log="$(_mktemp_dry "${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log")" - if [[ -z "${mysql_install_log}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysql_install_log}" || die - chown ${MYSQL_USER} "${mysql_install_log}" || die - fi - - local mysqld_logfile="$(_mktemp_dry "${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log")" - if [[ -z "${mysqld_logfile}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysqld_logfile}" || die - chown ${MYSQL_USER} "${mysqld_logfile}" || die - fi - - echo "" - einfo "Detected settings:" - einfo "==================" - einfo "MySQL User:\t\t\t\t${MYSQL_USER}" - einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}" - einfo "MySQL DATA directory:\t\t${MY_DATADIR}" - einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}" - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}" - fi - - einfo "PID DIR:\t\t\t\t${PID_DIR}" - einfo "Install db log:\t\t\t${mysql_install_log}" - einfo "Install server log:\t\t\t${mysqld_logfile}" - - local -a config_files - - local config_file="${EROOT}/etc/mysql/mysql.d/50-distro-client.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Client configuration '${config_file}' not found; Skipping configuration of default authentication plugin for client ..." - fi - - config_file="${EROOT}/etc/mysql/mysql.d/50-distro-server.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Server configuration '${config_file}' not found; Skipping configuration of default authentication plugin for mysqld ..." - fi - - if [[ ${#config_files[@]} -gt 0 ]] ; then - if [[ -z "${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" ]] ; then - local user_answer - - echo - einfo "Please select default authentication plugin (enter number or plugin name):" - einfo "1) caching_sha2_password [MySQL 8.0 default]" - einfo "2) mysql_native_password [MySQL 5.7 default]" - einfo - einfo "For details see:" - einfo "https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password" - read -p " >" user_answer - echo - - case "${user_answer}" in - 1|caching_sha2_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=caching_sha2_password - ;; - 2|mysql_native_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password - ;; - '') - die "No authentication plugin selected!" - ;; - *) - die "Authentication plugin '${user_answer}' is unknown/unsupported!" - ;; - esac - - echo "Selected authentication plugin: ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" >> "${mysql_install_log}" - - unset user_answer - fi - - local cfg_option cfg_option_tabs cfg_section - for config_file in "${config_files[@]}" ; do - cfg_option="default-authentication-plugin" - cfg_section="mysqld" - cfg_option_tabs="\t\t" - if [[ "${config_file}" == *client.cnf ]] ; then - cfg_option="default-auth" - cfg_section="client" - cfg_option_tabs="\t\t\t\t" - fi - - if grep -qE "^(loose-)?${cfg_option}\b.*=" "${config_file}" 2>/dev/null ; then - einfo "Ensuring that ${cfg_option} is set to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "s/^\(loose-\)\?${cfg_option}\b.*=.*/loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}/" \ - "${config_file}" || die "Failed to change ${cfg_option} in '${config_file}'!" - else - einfo "Setting ${cfg_option} to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "/^\[${cfg_section}\]$/a loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" \ - "${config_file}" || die "Failed to add ${cfg_option} to '${config_file}'!" - fi - done - unset cfg_option cfg_option_tabs cfg_section - fi - unset config_files config_file - - echo - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local tmp_mysqld_password_source= - - for tmp_mysqld_password_source in mysql client ; do - einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" - if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then - if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then - ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" - MYSQL_ROOT_PASSWORD= - continue - fi - - einfo "Found password in '${tmp_mysqld_password_source}' section!" - break - fi - done - - # Sometimes --show is required to display passwords in some implementations of my_print_defaults - if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" - fi - - unset tmp_mysqld_password_source - fi - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local pwd1="a" - local pwd2="b" - - echo - einfo "No password for mysql 'root' user was specified via environment" - einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config" - einfo "file like '${HOME}/.my.cnf'." - einfo "To continue please provide a password for the mysql 'root' user" - einfo "now on console:" - ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!" - read -rsp " >" pwd1 ; echo - - einfo "Retype the password" - read -rsp " >" pwd2 ; echo - - if [[ "x$pwd1" != "x$pwd2" ]] ; then - die "Passwords are not the same!" - fi - - MYSQL_ROOT_PASSWORD="${pwd1}" - unset pwd1 pwd2 - - echo - fi - - local -a mysqld_options - - # Fix bug 446200. Don't reference host my.cnf, needs to come first, - # see http://bugs.mysql.com/bug.php?id=31312 - use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" ) - - # Figure out which options we need to disable to do the setup - local helpfile="${TMPDIR}/mysqld-help" - "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null - - local opt optexp optfull - for opt in host-cache name-resolve networking slave-start \ - federated ssl log-bin relay-log slow-query-log external-locking \ - log-slave-updates \ - ; do - optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" - grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" ) - done - - # Prepare timezones, see - # https://dev.mysql.com/doc/mysql/en/time-zone-support.html - local tz_sql="$(_mktemp_dry "${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql")" - [[ -z "${tz_sql}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql' failed!" - - echo "USE mysql;" >"${tz_sql}" - "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null - if [[ $? -ne 0 ]] ; then - die "mysql_tzinfo_to_sql failed!" - fi - - # --initialize-insecure will not set root password - # --initialize would set a random one in the log which we don't need as we set it ourselves - local cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--initialize-insecure" - "--init-file='${tz_sql}'" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - "--log-error='${mysql_install_log}'" - "--user=${MYSQL_USER}" - ) - - einfo "Initializing ${PN} data directory: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1 - - if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql.ibd" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2 - die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!" - fi - - rm "${tz_sql}" || die - - local x=${RANDOM} - local socket="${EROOT}${PID_DIR}/mysqld${x}.sock" - local pidfile="${EROOT}${PID_DIR}/mysqld${x}.pid" - unset x - - cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - --max_allowed_packet=8M - --net_buffer_length=16K - "--socket='${socket}'" - "--pid-file='${pidfile}'" - "--log-error='${mysqld_logfile}'" - "--user=${MYSQL_USER}" - ) - - einfo "Starting mysqld to finalize initialization: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 & - - echo -n "Waiting for mysqld to accept connections " - local maxtry=15 - while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - if [[ -S "${socket}" ]] ; then - # Even with a socket we don't know if mysqld will abort - # start due to an error so just wait a little bit more... - maxtry=5 - while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - fi - - echo - - if [[ ! -S "${socket}" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2 - die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!" - fi - - local mysql_logfile="${TMPDIR}/set_root_pw.log" - touch "${mysql_logfile}" || die - - ebegin "Setting root password" - # Do this from memory, as we don't want clear text passwords in temp files - local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'" - cmd=( - "${mysql_binary}" - --no-defaults - "--socket='${socket}'" - -hlocalhost - "-e \"${sql}\"" - ) - eval "${cmd[@]}" >"${mysql_logfile}" 2>&1 - local rc=$? - eend ${rc} - - if [[ ${rc} -ne 0 ]] ; then - # Poor man's solution which tries to avoid having password - # in log. NOTE: sed can fail if user didn't follow advice - # and included character which will require escaping... - sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null - - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}" - die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!" - fi - - # Stop the server - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - echo -n "Stopping the server " - pkill -F "${pidfile}" &>/dev/null - - maxtry=10 - while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - echo - - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - # We somehow failed to stop server. - # However, not a fatal error. Just warn the user. - ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!" - fi - fi - - einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!" -} diff --git a/dev-db/mysql/mysql-8.0.36.ebuild b/dev-db/mysql/mysql-8.0.36.ebuild deleted file mode 100644 index 0c85a6c2b3cd..000000000000 --- a/dev-db/mysql/mysql-8.0.36.ebuild +++ /dev/null @@ -1,1271 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit check-reqs cmake edo flag-o-matic linux-info multiprocessing prefix - -MY_PV="${PV//_pre*}" -MY_P="${PN}-${MY_PV}" - -# Patch version -PATCH_SET=( https://github.com/parona-source/mysql-server/releases/download/mysql-8.0.36-patches-01/mysql-8.0.36-patches-01.tar.xz ) - -DESCRIPTION="A fast, multi-threaded, multi-user SQL database server" -HOMEPAGE="https://www.mysql.com/" -SRC_URI="https://cdn.mysql.com/Downloads/MySQL-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz" -SRC_URI+=" https://cdn.mysql.com/archives/mysql-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz" -SRC_URI+=" https://downloads.mysql.com/archives/MySQL-$(ver_cut 1-2)/${PN}-boost-${MY_PV}.tar.gz" -SRC_URI+=" ${PATCH_SET[@]}" -# Shorten the path because the socket path length must be shorter than 107 chars -# and we will run a mysql server during test phase -S="${WORKDIR}/mysql" - -LICENSE="GPL-2" -SLOT="8.0" -# -ppc for bug #761715 -KEYWORDS="amd64 ~arm ~arm64 ~hppa ~mips -ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" -IUSE="cjk cracklib debug jemalloc latin1 numa +perl profiling router selinux +server tcmalloc test" -RESTRICT="!test? ( test )" - -REQUIRED_USE="?? ( tcmalloc jemalloc ) - cjk? ( server ) - jemalloc? ( server ) - numa? ( server ) - profiling? ( server ) - router? ( server ) - tcmalloc? ( server )" - -# Be warned, *DEPEND are version-dependent -# These are used for both runtime and compiletime -COMMON_DEPEND=" - >=app-arch/lz4-1.9.4:= - >=app-arch/zstd-1.2.0:= - >=dev-libs/openssl-1.0.0:= - sys-libs/ncurses:= - >=sys-libs/zlib-1.2.13:= - server? ( - dev-libs/icu:= - dev-libs/libevent:=[ssl,threads(+)] - net-libs/libtirpc:= - cjk? ( app-text/mecab:= ) - jemalloc? ( dev-libs/jemalloc:= ) - kernel_linux? ( - dev-libs/libaio:= - sys-process/procps - ) - numa? ( sys-process/numactl ) - tcmalloc? ( dev-util/google-perftools:= ) - ) -" - -# https://bugs.gentoo.org/623962 -# tests set TZ for tests leading to failures on musl if sys-libs/timezone-data isnt installed -DEPEND=" - ${COMMON_DEPEND} - app-alternatives/yacc - server? ( net-libs/rpcsvc-proto ) - test? ( - acct-group/mysql acct-user/mysql - dev-perl/Expect - dev-perl/JSON - sys-libs/timezone-data - ) -" -RDEPEND=" - ${COMMON_DEPEND} - !dev-db/mariadb - !dev-db/mariadb-galera - !dev-db/percona-server - !dev-db/mysql-cluster - !dev-db/mysql:0 - !dev-db/mysql:5.7 - selinux? ( sec-policy/selinux-mysql ) - !prefix? ( - acct-group/mysql acct-user/mysql - dev-db/mysql-init-scripts - ) -" -# For other stuff to bring us in -# dev-perl/DBD-mysql is needed by some scripts installed by MySQL -PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" - -PATCHES=( - "${WORKDIR}"/mysql-patches - # Needed due to bundled boost-1.77, this fix is included in boost-1.81 - "${FILESDIR}"/mysql-8.0.36-boost-clang-fix.patch -) - -mysql_init_vars() { - : ${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"} - : ${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} - : ${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} - : ${MY_LOGDIR="${EPREFIX}/var/log/mysql"} - MY_DATADIR="${MY_LOCALSTATEDIR}" - - export MY_SHAREDSTATEDIR MY_SYSCONFDIR - export MY_LOCALSTATEDIR MY_LOGDIR - export MY_DATADIR -} - -pkg_pretend() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use server ; then - CHECKREQS_DISK_BUILD="3G" - - if has test ${FEATURES} ; then - CHECKREQS_DISK_BUILD="10G" - - if use elibc_musl; then - # <parona@protonmail.com> i've seen it take 17GB on musl with FEATURES="test" USE="perl server" - CHECKREQS_DISK_BUILD="18G" - fi - fi - - check-reqs_pkg_pretend - fi - fi -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - CHECKREQS_DISK_BUILD="3G" - - if has test ${FEATURES} ; then - CHECKREQS_DISK_BUILD="10G" - - if use elibc_musl; then - # <parona@protonmail.com> i've seen it take 17GB on musl with FEATURES="test" USE="perl server" - CHECKREQS_DISK_BUILD="18G" - fi - - # Bug #213475 - MySQL _will_ object strenuously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if ! has userpriv ${FEATURES} ; then - die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." - fi - - local aio_max_nr=$(sysctl -n fs.aio-max-nr 2>/dev/null) - if [[ -z "${aio_max_nr}" || ${aio_max_nr} -lt 250000 ]] ; then - die "FEATURES=test will require fs.aio-max-nr=250000 at minimum!" - fi - - if use latin1 ; then - # Upstream only supports tests with default charset - die "Testing with USE=latin1 is not supported." - fi - fi - - if use kernel_linux && use numa ; then - linux-info_get_any_version - - local CONFIG_CHECK="~NUMA" - - local WARNING_NUMA="This package expects NUMA support in kernel which this system does not have at the moment;" - WARNING_NUMA+=" Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support" - - check_extra_config - fi - - use server && check-reqs_pkg_setup - fi -} - -src_unpack() { - unpack ${A} - - mv -f "${WORKDIR}/${MY_P}" "${S}" || die -} - -src_prepare() { - # Avoid rpm call which would trigger sandbox, #692368 - sed -i \ - -e 's/MY_RPM rpm/MY_RPM rpmNOTEXISTENT/' \ - CMakeLists.txt || die - - # Remove the centos and rhel selinux policies to support mysqld_safe under SELinux - if [[ -d "${S}/support-files/SELinux" ]] ; then - echo > "${S}/support-files/SELinux/CMakeLists.txt" || die - fi - - # Remove man pages for client-lib tools we don't install - rm \ - man/my_print_defaults.1 \ - man/perror.1 \ - man/zlib_decompress.1 \ - || die - - cmake_src_prepare -} - -src_configure() { - # Bug #114895, bug #110149 - filter-flags "-O" "-O[01]" - - # Code is now requiring C++17 due to https://github.com/mysql/mysql-server/commit/236ab55bedd8c9eacd80766d85edde2a8afacd08 - append-cxxflags -std=c++17 - - if has sandbox ${FEATURES} ; then - # bug #823656 - append-cppflags -DGTEST_NO_DEATH_TEST=1 - fi - - local mycmakeargs=( - -Wno-dev # less noise - - -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" - -DSYSCONFDIR="${EPREFIX}/etc/mysql" - - -DINSTALL_BINDIR=bin - -DINSTALL_DOCDIR=share/doc/${PF} - -DINSTALL_DOCREADMEDIR=share/doc/${PF} - -DINSTALL_INCLUDEDIR=include/mysql - -DINSTALL_INFODIR=share/info - -DINSTALL_LIBDIR=$(get_libdir) - -DINSTALL_MANDIR=share/man - -DINSTALL_MYSQLSHAREDIR=share/mysql - -DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin - -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" - -DINSTALL_SBINDIR=sbin - -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql" - - -DROUTER_INSTALL_LOGROTATEDIR="${EPREFIX}/etc/logrotate.d" - -DROUTER_INSTALL_DOCDIR="share/doc/${PF}" - - -DCOMPILATION_COMMENT="Gentoo Linux ${PF}" - -DWITH_UNIT_TESTS=$(usex test ON OFF) - - # Enables -Werror - -DMYSQL_MAINTAINER_MODE=OFF - - # Causes issues on musl bug #922808 - -DWITH_BUILD_ID=OFF - - # Using bundled editline to get CTRL+C working - -DWITH_EDITLINE=bundled - -DWITH_ZLIB=system - -DWITH_SSL=system - -DWITH_LIBWRAP=0 - -DENABLED_LOCAL_INFILE=1 - -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" - -DWITH_DEFAULT_COMPILER_OPTIONS=0 - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - - -DWITH_CURL=system - -DWITH_BOOST="${S}/boost" - -DWITH_ROUTER=$(usex router ON OFF) - ) - - if use debug; then - # Debug build type used extensively to add preprocessor definitions - local -x CMAKE_BUILD_TYPE="Debug" - else - # debug hack wrt #497532 - mycmakeargs+=( - -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG' )" - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG' )" - ) - fi - - if tc-is-lto ; then - mycmakeargs+=( -DWITH_LTO=ON ) - else - mycmakeargs+=( -DWITH_LTO=OFF ) - fi - - if use test ; then - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test ) - else - mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) - fi - - mycmakeargs+=( -DWITHOUT_CLIENTLIBS=YES ) - - mycmakeargs+=( - -DWITH_ICU=system - -DWITH_LZ4=system - # Our dev-libs/rapidjson doesn't carry necessary fixes for std::regex - -DWITH_RAPIDJSON=bundled - -DWITH_ZSTD=system - ) - - if [[ -n "${MYSQL_DEFAULT_CHARSET}" && -n "${MYSQL_DEFAULT_COLLATION}" ]] ; then - ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" - ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." - ewarn "You MUST file bugs without these variables set." - ewarn "Tests will probably fail!" - - mycmakeargs+=( - -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} - -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} - ) - elif use latin1 ; then - mycmakeargs+=( - -DDEFAULT_CHARSET=latin1 - -DDEFAULT_COLLATION=latin1_swedish_ci - ) - else - mycmakeargs+=( - -DDEFAULT_CHARSET=utf8mb4 - -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci - ) - fi - - if use server ; then - mycmakeargs+=( - -DWITH_EXTRA_CHARSETS=all - -DWITH_DEBUG=$(usex debug) - -DWITH_MECAB=$(usex cjk system OFF) - -DWITH_LIBEVENT=system - # Cannot handle protobuf >23 bug #912797 - -DWITH_PROTOBUF=bundled - -DWITH_NUMA=$(usex numa ON OFF) - ) - - if use jemalloc ; then - mycmakeargs+=( -DWITH_JEMALLOC=ON ) - elif use tcmalloc ; then - mycmakeargs+=( -DWITH_TCMALLOC=ON ) - fi - - if use profiling ; then - # Setting to OFF doesn't work: Once set, profiling options will be added - # to `mysqld --help` output via sql/sys_vars.cc causing - # "main.mysqld--help-notwin" test to fail - mycmakeargs+=( -DENABLED_PROFILING=ON ) - fi - - # Storage engines - mycmakeargs+=( - -DWITH_EXAMPLE_STORAGE_ENGINE=0 - -DWITH_ARCHIVE_STORAGE_ENGINE=1 - -DWITH_BLACKHOLE_STORAGE_ENGINE=1 - -DWITH_CSV_STORAGE_ENGINE=1 - -DWITH_FEDERATED_STORAGE_ENGINE=1 - -DWITH_HEAP_STORAGE_ENGINE=1 - -DWITH_INNOBASE_STORAGE_ENGINE=1 - -DWITH_INNODB_MEMCACHED=0 - -DWITH_MYISAMMRG_STORAGE_ENGINE=1 - -DWITH_MYISAM_STORAGE_ENGINE=1 - ) - else - mycmakeargs+=( - -DWITHOUT_SERVER=1 - -DWITH_SYSTEMD=no - ) - fi - - cmake_src_configure -} - -# Official test instructions: -# ulimit -n 16500 && USE='perl server' FEATURES='test userpriv' \ -# ebuild mysql-X.X.XX.ebuild digest clean test install -src_test() { - _disable_test() { - local rawtestname bug reason - rawtestname="${1}" ; shift - bug="${1}" ; shift - reason="${@}" - - ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})" - echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def" - } - - local TESTDIR="${BUILD_DIR}/mysql-test" - local retstatus_tests - - einfo "Official test instructions:" - einfo "ulimit -n 16500 && USE='perl server' FEATURES='test userpriv' ebuild ..." - - if ! use server ; then - ewarn "Skipping server tests due to minimal build!" - return 0 - fi - - # Ensure that parallel runs don't die - local -x MTR_BUILD_THREAD="$((${RANDOM} % 100))" - - local -x MTR_PARALLEL=${MTR_PARALLEL:-$(makeopts_jobs)} - einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'" - - # Disable unit tests, run them separately with eclass defaults - local -x MTR_UNIT_TESTS=0 - - # Increase test timeouts - # bug #923649 - # https://github.com/gentoo/gentoo/pull/35002#issuecomment-1926101030 - local -x MTR_SUITE_TIMEOUT=$(( 60 * 40 )) # minutes - local -x MTR_TESTCASE_TIMEOUT=60 # minutes - - # Include config for tests, this is for scenarios where mysql wasn't installed previously or if the - # configuration was from an older version. - sed \ - -e "s/@GENTOO_PORTAGE_EPREFIX@/${EPREFIX}/" \ - -e "s/@DATADIR@/${MY_DATADIR}/" \ - "${FILESDIR}"/my.cnf-8.0.distro-client \ - "${FILESDIR}"/my.cnf-8.0.distro-server \ - > "${T}"/my.cnf || die - local -X PATH_CONFIG_FILE="${T}/my.cnf" - - # Create directories because mysqladmin might run out of order - mkdir -p "${T}"/var-tests{,/log} || die - - # Run mysql tests - pushd "${TESTDIR}" &>/dev/null || die - - touch "${T}/disabled.def" || die - - local -a disabled_tests=( - "auth_sec.atomic_rename_user;103512;Depends on user running test" - "auth_sec.keyring_file_data_qa;0;Won't work with user privileges" - "auth_sec.openssl_without_fips;94718;Known test failure" - - "gis.geometry_class_attri_prop;5452;Known rounding error with latest AMD processors (PS)" - "gis.geometry_property_function_issimple;5452;Known rounding error with latest AMD processors (PS)" - "gis.gis_bugs_crashes;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_buffer;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_centroid;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_analysis_functions_distance;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_op_testingfunc_mix;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_operators_intersection;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_utility_function_distance_sphere;5452;Known rounding error with latest AMD processors (PS)" - "gis.spatial_utility_function_simplify;5452;Known rounding error with latest AMD processors (PS)" - "gis.st_symdifference;5452;Known rounding error with latest AMD processors (PS)" - - "innodb.alter_kill;0;Known test failure -- no upstream bug yet" - - "main.derived_limit;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.explain_tree;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.gis-precise;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.mysql_load_data_local_dir;0;Known test failure -- no upstream bug yet" - "main.select_icp_mrr;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_bugs;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_dupsweed_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_firstmatch_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_mat_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.subquery_sj_all_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.window_std_var;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.window_std_var_optimized;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "main.with_recursive;0;Known rounding error with latest AMD processors -- no upstream bug yet" - "perfschema.statement_digest_query_sample;0;Test will fail on slow hardware" - - "rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch;0;Unstable test" - "rpl_gtid.rpl_multi_source_mtr_includes;97844;Unstable test" - "main.partition_datatype;0;Unstable test" - - "sys_vars.myisam_data_pointer_size_func;87935;Test will fail on slow hardware" - - "x.connection;0;Known failure - no upstream bug yet" - "main.slow_log;0;Known failure - no upstream bug yet" - - "sys_vars.build_id_basic;0;Requires -DWITH_BUILD_ID=ON" - ) - - if ! hash zip 1>/dev/null 2>&1 ; then - # No need to force dep app-arch/zip for one test - disabled_tests+=( - "innodb.discarded_partition_create;0;Requires app-arch/zip" - "innodb.partition_upgrade_create;0;Requires app-arch/zip" - ) - fi - - if has_version ">=dev-libs/openssl-3.2" ; then - # https://bugs.mysql.com/bug.php?id=113258 - disabled_tests+=( - "rpl.rpl_tlsv13;0;CCM8 ciphers have a lower security level with OpenSSL 3.2" - "auth_sec.wl15800_ciphers_tlsv13;0;CCM8 ciphers have a lower security level with OpenSSL 3.2" - ) - fi - - if use debug; then - disabled_tests+=( - "innodb.dblwr_unencrypt;0;Known test failure -- no upstream bug yet" - ) - fi - - local test_infos_str test_infos_arr - for test_infos_str in "${disabled_tests[@]}" ; do - IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}" - - if [[ ${#test_infos_arr[@]} != 3 ]] ; then - die "Invalid test data set, not matching format: ${test_infos_str}" - fi - - _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}" - done - unset test_infos_str test_infos_arr - - local -a CMAKE_SKIP_TESTS=( - # timing test, can be unreliable - "routertest_harness_net_ts_timer" - - # Could not get local host address: Name or service not known(errno: -2) - "routertest_component_bootstrap" - "routertest_component_bootstrap_account" - "routertest_component_bootstrap_clusterset" - "routertest_component_config_overwrites" - "routertest_component_rest_api_enable" - "routertest_component_routing" - "routertest_component_sd_notify" - "routertest_component_state_file" - "routertest_integration_routing_direct" - "routertest_integration_routing_reuse" - "routertest_integration_routing_sharing" - "routertest_integration_routing_sharing_constrained_pools" - "routertest_integration_routing_sharing_restart" - - # TODO: ??? - "pfs_host-oom" - "pfs_user-oom" - "pfs" - ) - - if use debug; then - CMAKE_SKIP_TESTS+=( - # binary_log::transaction::compression::Payload_event_buffer_istream::~Payload_event_buffer_istream(): Assertion `!m_outstanding_error' failed. - "payload_event_buffer_istream" - ) - fi - - # Try to increase file limits to increase test coverage - if ! ulimit -n 16500 1>/dev/null 2>&1 ; then - # Upper limit comes from parts.partition_* tests - ewarn "For maximum test coverage, please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager." - - if ! ulimit -n 4162 1>/dev/null 2>&1 ; then - # Medium limit comes from '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)' - ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager." - - if ! ulimit -n 3000 1>/dev/null 2>&1 ; then - ewarn "For minimum test coverage, please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager." - else - einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 4162 (medium test coverage)." - fi - else - einfo "Will run test suite with open file limit set to 16500 (best test coverage)." - fi - - # run mysql-test tests - # Enable force restart to ensure success when tests don't cleanup sufficiently. - # Anything touching gtid_executed is negatively affected if you have unlucky ordering - nonfatal edo perl mysql-test-run.pl \ - --force --force-restart \ - --vardir="${T}/var-tests" --tmpdir="${T}/tmp-tests" \ - --skip-test=tokudb --skip-test-list="${T}/disabled.def" \ - --retry-failure=0 --max-test-fail=0 - retstatus_tests=$? - - popd &>/dev/null || die - - # Cleanup is important for these testcases. - pkill -9 -f "${S}/ndb" 2>/dev/null - pkill -9 -f "${S}/sql" 2>/dev/null - - local failures="" - [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests" - - cmake_src_test - - [[ -z "${failures}" ]] || die "Test failures: ${failures}" - einfo "Tests successfully completed" -} - -src_install() { - cmake_src_install - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Convenience links - einfo "Making Convenience links for mysqlcheck multi-call binary" - dosym "mysqlcheck" "/usr/bin/mysqlanalyze" - dosym "mysqlcheck" "/usr/bin/mysqlrepair" - dosym "mysqlcheck" "/usr/bin/mysqloptimize" - - # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir - if [[ -d "${ED}/usr/data" ]] ; then - rm -Rf "${ED}/usr/data" || die - fi - - # Unless they explicitly specific USE=test, then do not install the - # testsuite. It DOES have a use to be installed, esp. when you want to do a - # validation of your database configuration after tuning it. - if ! use test ; then - rm -rf "${ED}/${MY_SHAREDSTATEDIR#${EPREFIX}}/mysql-test" - fi - - # Configuration stuff - einfo "Building default configuration ..." - insinto "${MY_SYSCONFDIR#${EPREFIX}}" - [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf - cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die - eprefixify "${TMPDIR}/my.cnf" - doins "${TMPDIR}/my.cnf" - insinto "${MY_SYSCONFDIR#${EPREFIX}}/mysql.d" - cp "${FILESDIR}/my.cnf-8.0.distro-client" "${TMPDIR}/50-distro-client.cnf" || die - eprefixify "${TMPDIR}/50-distro-client.cnf" - doins "${TMPDIR}/50-distro-client.cnf" - - mycnf_src="my.cnf-8.0.distro-server" - sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ - "${FILESDIR}/${mycnf_src}" \ - > "${TMPDIR}/my.cnf.ok" || die - - if use prefix ; then - sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ - "${TMPDIR}/my.cnf.ok" || die - fi - - if use latin1 ; then - sed -i \ - -e "/character-set/s|utf8mb4|latin1|g" \ - "${TMPDIR}/my.cnf.ok" || die - fi - - eprefixify "${TMPDIR}/my.cnf.ok" - - newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf - - #Remove mytop if perl is not selected - [[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop" - - if use router ; then - rm -rf \ - "${ED}/usr/LICENSE.router" \ - "${ED}/usr/README.router" \ - "${ED}/usr/run" \ - "${ED}/usr/var" \ - || die - fi - - # Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them. - find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die -} - -pkg_postinst() { - # Make sure the vars are correctly initialized - mysql_init_vars - - # Create log directory securely if it does not exist - # NOTE: $MY_LOGDIR contains $EPREFIX by default - [[ -d "${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${MY_LOGDIR}" - - # Note about configuration change - einfo - elog "This version of ${PN} reorganizes the configuration from a single my.cnf" - elog "to several files in /etc/mysql/mysql.d." - elog "Please backup any changes you made to /etc/mysql/my.cnf" - elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension." - elog "You may have as many files as needed and they are read alphabetically." - elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." - einfo - - if [[ -z "${REPLACING_VERSIONS}" ]] ; then - einfo - elog "You might want to run:" - elog " \"emerge --config =${CATEGORY}/${PF}\"" - elog "if this is a new install." - einfo - else - einfo - elog "Upgrade process for ${PN}-8.x has changed. Please read" - elog "https://dev.mysql.com/doc/refman/8.0/en/upgrade-binary-package.html" - einfo - fi -} - -pkg_config() { - _getoptval() { - local section="$1" - local flag="--${2}=" - local extra_options="${3}" - local cmd=( - "${my_print_defaults_binary}" - "${extra_options}" - "${section}" - ) - local results=( $(eval "${cmd[@]}" 2>/dev/null | sed -n "/^${flag}/s,${flag},,gp") ) - - if [[ ${#results[@]} -gt 0 ]] ; then - # When option is set multiple times only return last value - echo "${results[-1]}" - fi - } - - _mktemp_dry() { - # emktemp has no --dry-run option - local template="${1}" - - if [[ -z "${template}" ]] ; then - if [[ -z "${T}" ]] ; then - template="/tmp/XXXXXXX" - else - template="${T}/XXXXXXX" - fi - fi - - local template_wo_X=${template//X/} - local n_X - let n_X=${#template}-${#template_wo_X} - if [[ ${n_X} -lt 3 ]] ; then - echo "${FUNCNAME[0]}: too few X's in template ‘${template}’" >&2 - return - fi - - local attempts=0 - local character tmpfile - while [[ true ]] ; do - let attempts=attempts+1 - - new_file= - while read -n1 character ; do - if [[ "${character}" == "X" ]] ; then - tmpfile+="${RANDOM:0:1}" - else - tmpfile+="${character}" - fi - done < <(echo -n "${template}") - - if [[ ! -f "${tmpfile}" ]] - then - echo "${tmpfile}" - return - fi - - if [[ ${attempts} -ge 100 ]] ; then - echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2 - return - fi - done - } - - local mysqld_binary="${EROOT}/usr/sbin/mysqld" - if [[ ! -x "${mysqld_binary}" ]] ; then - die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local mysql_binary="${EROOT}/usr/bin/mysql" - if [[ ! -x "${mysql_binary}" ]] ; then - die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" - fi - - local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" - if [[ ! -x "${my_print_defaults_binary}" ]] ; then - die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" - fi - - if [[ -z "${MYSQL_USER}" ]] ; then - MYSQL_USER=mysql - if use prefix ; then - MYSQL_USER=$(id -u -n 2>/dev/null) - if [[ -z "${MYSQL_USER}" ]] ; then - die "Failed to determine current username!" - fi - fi - fi - - if [[ -z "${MYSQL_GROUP}" ]] ; then - MYSQL_GROUP=mysql - if use prefix ; then - MYSQL_GROUP=$(id -g -n 2>/dev/null) - if [[ -z "${MYSQL_GROUP}" ]] ; then - die "Failed to determine current user groupname!" - fi - fi - fi - - # my_print_defaults needs to read stuff in $HOME/.my.cnf - local -x HOME="${EROOT}/root" - - # Make sure the vars are correctly initialized - mysql_init_vars - - # Read currently set data directory - MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - - # Bug #213475 - MySQL _will_ object strenously if your machine is named - # localhost. Also causes weird failures. - [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" - - if [[ -z "${MY_DATADIR}" ]] ; then - die "Sorry, unable to find MY_DATADIR!" - elif [[ -d "${MY_DATADIR}/mysql" ]] ; then - ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!" - ewarn "Please rename or delete its content if you wish to initialize a new data directory." - die "${PN} data directory at '${MY_DATADIR}' looks already initialized!" - fi - - MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_TMPDIR=${MYSQL_TMPDIR%/} - # These are dir+prefix - MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} - MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" - MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} - - # Create missing directories. - # Always check if mysql user can write to directory even if we just - # created directory because a parent directory might be not - # accessible for that user. - PID_DIR="${EROOT}/run/mysqld" - if [[ ! -d "${PID_DIR}" ]] ; then - einfo "Creating ${PN} PID directory '${PID_DIR}' ..." - install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \ - || die "Failed to create PID directory '${PID_DIR}'!" - fi - - local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_pid_dir_testfile}" ]] \ - && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_pid_dir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!" - else - rm "${_pid_dir_testfile}" || die - unset _pid_dir_testfile - fi - - if [[ ! -d "${MY_DATADIR}" ]] ; then - einfo "Creating ${PN} data directory '${MY_DATADIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \ - || die "Failed to create ${PN} data directory '${MY_DATADIR}'!" - fi - - local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_datadir_testfile}" ]] \ - && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_datadir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!" - else - rm "${_my_datadir_testfile}" || die - unset _my_datadir_testfile - fi - - if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then - einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \ - || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!" - fi - - if [[ -z "${MYSQL_TMPDIR}" ]] ; then - MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")" - [[ -z "${MYSQL_TMPDIR}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!" - - mkdir "${MYSQL_TMPDIR}" || die - chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die - fi - - # Now we need to test MYSQL_TMPDIR... - local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_tmpdir_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_tmpdir_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!" - else - rm "${_my_tmpdir_testfile}" || die - unset _my_tmpdir_testfile - fi - - if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${MYSQL_LOG_BIN}" ]] ; then - einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \ - || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'" - fi - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_logbin_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_logbin_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!" - else - rm "${_my_logbin_testfile}" || die - unset _my_logbin_testfile - fi - fi - - if [[ -n "${MYSQL_RELAY_LOG}" && ! -d "${MYSQL_RELAY_LOG}" ]] ; then - einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..." - install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \ - || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")" - [[ -z "${_my_relaylog_testfile}" ]] \ - && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!" - - if use prefix ; then - touch "${_my_relaylog_testfile}" &>/dev/null - else - su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null - fi - - if [[ $? -ne 0 ]] ; then - die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!" - else - rm "${_my_relaylog_testfile}" || die - unset _my_relaylog_testfile - fi - fi - - local mysql_install_log="$(_mktemp_dry "${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log")" - if [[ -z "${mysql_install_log}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysql_install_log}" || die - chown ${MYSQL_USER} "${mysql_install_log}" || die - fi - - local mysqld_logfile="$(_mktemp_dry "${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log")" - if [[ -z "${mysqld_logfile}" ]] ; then - die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log' failed!" - else - # make sure file is writable for MYSQL_USER... - touch "${mysqld_logfile}" || die - chown ${MYSQL_USER} "${mysqld_logfile}" || die - fi - - echo "" - einfo "Detected settings:" - einfo "==================" - einfo "MySQL User:\t\t\t\t${MYSQL_USER}" - einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}" - einfo "MySQL DATA directory:\t\t${MY_DATADIR}" - einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}" - - if [[ -n "${MYSQL_LOG_BIN}" ]] ; then - einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}" - fi - - if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then - einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}" - fi - - einfo "PID DIR:\t\t\t\t${PID_DIR}" - einfo "Install db log:\t\t\t${mysql_install_log}" - einfo "Install server log:\t\t\t${mysqld_logfile}" - - local -a config_files - - local config_file="${EROOT}/etc/mysql/mysql.d/50-distro-client.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Client configuration '${config_file}' not found; Skipping configuration of default authentication plugin for client ..." - fi - - config_file="${EROOT}/etc/mysql/mysql.d/50-distro-server.cnf" - if [[ -f "${config_file}" ]] ; then - config_files+=( "${config_file}" ) - else - ewarn "Server configuration '${config_file}' not found; Skipping configuration of default authentication plugin for mysqld ..." - fi - - if [[ ${#config_files[@]} -gt 0 ]] ; then - if [[ -z "${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" ]] ; then - local user_answer - - echo - einfo "Please select default authentication plugin (enter number or plugin name):" - einfo "1) caching_sha2_password [MySQL 8.0 default]" - einfo "2) mysql_native_password [MySQL 5.7 default]" - einfo - einfo "For details see:" - einfo "https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password" - read -p " >" user_answer - echo - - case "${user_answer}" in - 1|caching_sha2_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=caching_sha2_password - ;; - 2|mysql_native_password) - MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password - ;; - '') - die "No authentication plugin selected!" - ;; - *) - die "Authentication plugin '${user_answer}' is unknown/unsupported!" - ;; - esac - - echo "Selected authentication plugin: ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" >> "${mysql_install_log}" - - unset user_answer - fi - - local cfg_option cfg_option_tabs cfg_section - for config_file in "${config_files[@]}" ; do - cfg_option="default-authentication-plugin" - cfg_section="mysqld" - cfg_option_tabs="\t\t" - if [[ "${config_file}" == *client.cnf ]] ; then - cfg_option="default-auth" - cfg_section="client" - cfg_option_tabs="\t\t\t\t" - fi - - if grep -qE "^(loose-)?${cfg_option}\b.*=" "${config_file}" 2>/dev/null ; then - einfo "Ensuring that ${cfg_option} is set to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "s/^\(loose-\)\?${cfg_option}\b.*=.*/loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}/" \ - "${config_file}" || die "Failed to change ${cfg_option} in '${config_file}'!" - else - einfo "Setting ${cfg_option} to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..." - sed -i \ - -e "/^\[${cfg_section}\]$/a loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" \ - "${config_file}" || die "Failed to add ${cfg_option} to '${config_file}'!" - fi - done - unset cfg_option cfg_option_tabs cfg_section - fi - unset config_files config_file - - echo - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local tmp_mysqld_password_source= - - for tmp_mysqld_password_source in mysql client ; do - einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" - if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then - if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then - ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" - MYSQL_ROOT_PASSWORD= - continue - fi - - einfo "Found password in '${tmp_mysqld_password_source}' section!" - break - fi - done - - # Sometimes --show is required to display passwords in some implementations of my_print_defaults - if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then - MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" - fi - - unset tmp_mysqld_password_source - fi - - if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then - local pwd1="a" - local pwd2="b" - - echo - einfo "No password for mysql 'root' user was specified via environment" - einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config" - einfo "file like '${HOME}/.my.cnf'." - einfo "To continue please provide a password for the mysql 'root' user" - einfo "now on console:" - ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!" - read -rsp " >" pwd1 ; echo - - einfo "Retype the password" - read -rsp " >" pwd2 ; echo - - if [[ "x$pwd1" != "x$pwd2" ]] ; then - die "Passwords are not the same!" - fi - - MYSQL_ROOT_PASSWORD="${pwd1}" - unset pwd1 pwd2 - - echo - fi - - local -a mysqld_options - - # Fix bug 446200. Don't reference host my.cnf, needs to come first, - # see http://bugs.mysql.com/bug.php?id=31312 - use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" ) - - # Figure out which options we need to disable to do the setup - local helpfile="${TMPDIR}/mysqld-help" - "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null - - local opt optexp optfull - for opt in host-cache name-resolve networking slave-start \ - federated ssl log-bin relay-log slow-query-log external-locking \ - log-slave-updates \ - ; do - optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" - grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" ) - done - - # Prepare timezones, see - # https://dev.mysql.com/doc/mysql/en/time-zone-support.html - local tz_sql="$(_mktemp_dry "${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql")" - [[ -z "${tz_sql}" ]] \ - && die "_mktemp_dry() for '${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql' failed!" - - echo "USE mysql;" >"${tz_sql}" - "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null - if [[ $? -ne 0 ]] ; then - die "mysql_tzinfo_to_sql failed!" - fi - - # --initialize-insecure will not set root password - # --initialize would set a random one in the log which we don't need as we set it ourselves - local cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--initialize-insecure" - "--init-file='${tz_sql}'" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - "--log-error='${mysql_install_log}'" - "--user=${MYSQL_USER}" - ) - - einfo "Initializing ${PN} data directory: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1 - - if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql.ibd" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2 - die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!" - fi - - rm "${tz_sql}" || die - - local x=${RANDOM} - local socket="${EROOT}${PID_DIR}/mysqld${x}.sock" - local pidfile="${EROOT}${PID_DIR}/mysqld${x}.pid" - unset x - - cmd=( - "${mysqld_binary}" - "${mysqld_options[@]}" - "--basedir='${EROOT}/usr'" - "--datadir='${MY_DATADIR}'" - "--tmpdir='${MYSQL_TMPDIR}'" - --max_allowed_packet=8M - --net_buffer_length=16K - "--socket='${socket}'" - "--pid-file='${pidfile}'" - "--log-error='${mysqld_logfile}'" - "--user=${MYSQL_USER}" - ) - - einfo "Starting mysqld to finalize initialization: ${cmd[@]}" - eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 & - - echo -n "Waiting for mysqld to accept connections " - local maxtry=15 - while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - if [[ -S "${socket}" ]] ; then - # Even with a socket we don't know if mysqld will abort - # start due to an error so just wait a little bit more... - maxtry=5 - while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - fi - - echo - - if [[ ! -S "${socket}" ]] ; then - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2 - die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!" - fi - - local mysql_logfile="${TMPDIR}/set_root_pw.log" - touch "${mysql_logfile}" || die - - ebegin "Setting root password" - # Do this from memory, as we don't want clear text passwords in temp files - local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'" - cmd=( - "${mysql_binary}" - --no-defaults - "--socket='${socket}'" - -hlocalhost - "-e \"${sql}\"" - ) - eval "${cmd[@]}" >"${mysql_logfile}" 2>&1 - local rc=$? - eend ${rc} - - if [[ ${rc} -ne 0 ]] ; then - # Poor man's solution which tries to avoid having password - # in log. NOTE: sed can fail if user didn't follow advice - # and included character which will require escaping... - sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null - - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}" - die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!" - fi - - # Stop the server - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - echo -n "Stopping the server " - pkill -F "${pidfile}" &>/dev/null - - maxtry=10 - while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do - maxtry=$((${maxtry}-1)) - echo -n "." - sleep 1 - done - - echo - - if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then - # We somehow failed to stop server. - # However, not a fatal error. Just warn the user. - ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!" - fi - fi - - einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!" -} diff --git a/dev-db/mysql/mysql-8.0.37.ebuild b/dev-db/mysql/mysql-8.0.37.ebuild index 7cfb7a41bb10..e96f1f6700c5 100644 --- a/dev-db/mysql/mysql-8.0.37.ebuild +++ b/dev-db/mysql/mysql-8.0.37.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -24,7 +24,7 @@ S="${WORKDIR}/mysql" LICENSE="GPL-2" SLOT="8.0" # -ppc for bug #761715 -KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~mips -ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +KEYWORDS="amd64 arm arm64 ~hppa ~mips -ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" IUSE="cjk cracklib debug jemalloc latin1 numa +perl profiling router selinux +server tcmalloc test" RESTRICT="!test? ( test )" diff --git a/dev-db/sqlitebrowser/Manifest b/dev-db/sqlitebrowser/Manifest index ba1a6c2c7301..a05b013ae44c 100644 --- a/dev-db/sqlitebrowser/Manifest +++ b/dev-db/sqlitebrowser/Manifest @@ -1,7 +1,5 @@ AUX sqlitebrowser-3.13.1-missing-include.patch 657 BLAKE2B 2ac7b01ee6f55e8ad3859369128782d7ff685585f40e572f8ff99c57da5e459e3b0a6daf649997c8e17ce2ba68343f350a2f6c96bb4e015a69f4185e6b1848f1 SHA512 851c751130ff7f63a74d9b8518ea1576f0fa8b00330fe7cb4c271a8a3f350b24f5de8a46147b0a13836df966ca9f600e75d3fdadc9591219c34a3e965d27eb79 -DIST sqlitebrowser-3.13.0.tar.gz 4901507 BLAKE2B 4430944fb6f02a3e33aa6d3e5720faa8e43351314a0c21803fe8bed6d2241ca92830de7be33deb18294f0cad808c96d6c913bd9ddcd64d41a34db32349d44d88 SHA512 6261043cee7bc5c525b162e0b5d1ac38d380228ffd752e086fecb49c7f50b463a993a6128547d99addb0480ba71e4f6dd3a0c1e412a692ae86b0b183b7379610 DIST sqlitebrowser-3.13.1.tar.gz 4923092 BLAKE2B 894790cc30b802b4aab19a8e7834aef1bf68b027bcd66b63901269d6d44b706ce5ddca1ae4ca4743d14f9a8d2a5cc6005711b6ee25cef068c55e0b01c56f8b5c SHA512 7482094823293a216e4df20105d1351a23fcc706fd9e64bca58cd1c6a46dcf639a945f919613f1a9550d0a15e60a4c2827ee5eee4f89a7b11046d8eefbf375ee -EBUILD sqlitebrowser-3.13.0.ebuild 1902 BLAKE2B daab9e0b566e3fee7e1188ab8266a7ad961874a39f8265c3b82fc0ba193ad3748a2f7239a10e65a3b1613a4ec92d0224cad58762216f7861e257b821500ea387 SHA512 fca418cc6dd2544d97c3c9b3bd1fbb54106f26b6e2a30505bfec37410273cd86ca7ec23e93ed5a552fa1bb3c1b12988567dcbb382881ce270cb2a51d18885196 EBUILD sqlitebrowser-3.13.1.ebuild 1734 BLAKE2B a628022850b5713829fc91acaab3bc37c9a34533e9f08e98c8f8f31ad902ea6106ec9d0d952d5d02ee873b6f2f063579c41a3fc2f1d56dfde80d3b5787aa4743 SHA512 2af2a22aabdb964dfcfb49665e674a456b939eb9dcc5a825b6f67cdd4c29b24134a7f5ca29bafa822427823b6346f87b97738a229ad708ff3b4f3c7a0857e800 EBUILD sqlitebrowser-9999.ebuild 1682 BLAKE2B 8ff3453dc827f8f28cab66a28186188cb2952854fd5bac3cc71a98be8ecdbb0ace7606f169d47bb7534660dde82e16d04aa9089e2f57e2e30b68b966f08c3c8f SHA512 b915e698b86cfbc20623c56c6a4dad0104b0f87bf14e5c8c64ed22442ae14731c00cd2d456a088c2d07137c9a756e71fd95c51fe6e3457567b1e6d5e4c345291 MISC metadata.xml 1796 BLAKE2B 988ec79d4d043ecbf8802aa3d761868479fc0a398a00035c387aa4b362e2c6c59afbbd04d648d2084aa0d9d35972336cd312c4b596e663e5142ce72671e70a55 SHA512 6b0e05517590c7c56cabc1bfecfafed155be78ccff4d159fd810b3c8e6555559c45fba3ea3bdf0aef73d1c1a1d8fcabc7005c2e7dbb3b6377d14505c819355d7 diff --git a/dev-db/sqlitebrowser/sqlitebrowser-3.13.0.ebuild b/dev-db/sqlitebrowser/sqlitebrowser-3.13.0.ebuild deleted file mode 100644 index 294a79b3f045..000000000000 --- a/dev-db/sqlitebrowser/sqlitebrowser-3.13.0.ebuild +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake flag-o-matic xdg - -DESCRIPTION="A light GUI editor for SQLite databases" -HOMEPAGE="https://sqlitebrowser.org/" - -if [[ "${PV}" = *9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/sqlitebrowser/sqlitebrowser.git" -else - SRC_URI="https://github.com/sqlitebrowser/sqlitebrowser/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="amd64 x86" -fi - -LICENSE="GPL-3+ MPL-2.0" -SLOT="0" -IUSE="sqlcipher test" -RESTRICT="!test? ( test )" - -DEPEND=" - app-editors/qhexedit2 - dev-db/sqlite:3 - dev-libs/double-conversion:= - dev-libs/icu:= - dev-libs/libpcre2:= - dev-libs/openssl:= - dev-libs/qcustomplot - >=dev-qt/qtconcurrent-5.15.9:5 - >=dev-qt/qtcore-5.15.9:5 - >=dev-qt/qtgui-5.15.9:5 - >=dev-qt/qtnetwork-5.15.9:5[ssl] - >=dev-qt/qtprintsupport-5.15.9:5 - >=dev-qt/qtwidgets-5.15.9:5 - >=dev-qt/qtxml-5.15.9:5 - media-gfx/graphite2 - media-libs/freetype:2 - media-libs/harfbuzz:= - media-libs/libglvnd - media-libs/libpng:= - sys-libs/zlib:= - x11-libs/libX11 - x11-libs/libXau - x11-libs/libxcb:= - x11-libs/libXdmcp - >=x11-libs/qscintilla-2.8.10:=[qt5(+)] - sqlcipher? ( dev-db/sqlcipher ) -" - -BDEPEND=" - >=dev-qt/linguist-tools-5.15.9:5 - test? ( >=dev-qt/qttest-5.15.9:5 ) -" - -RDEPEND="${DEPEND}" - -DOCS=( - images/ - BUILDING.md - CHANGELOG.md - README.md - SECURITY.md -) - -src_prepare() { - cmake_src_prepare - - if ! use test; then - sed -i CMakeLists.txt \ - -e "/find_package/ s/ Test//" \ - -e "/set/ s/ Qt5::Test//" \ - || die "Cannot remove Qt Test from CMake dependencies" - fi -} - -src_configure() { - local mycmakeargs=( - -DENABLE_TESTING=$(usex test) - -DFORCE_INTERNAL_QSCINTILLA=OFF - -DFORCE_INTERNAL_QCUSTOMPLOT=OFF - -DFORCE_INTERNAL_QHEXEDIT=OFF - -Dsqlcipher=$(usex sqlcipher) - ) - - # https://bugs.gentoo.org/855254 - append-flags -fno-strict-aliasing - filter-lto - - cmake_src_configure -} |