commit: fee92181dd7a0948ab35a92faea3311151058ffe Author: Alfred Wingate <parona <AT> protonmail <DOT> com> AuthorDate: Thu Feb 19 10:52:23 2026 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sat Feb 21 20:39:48 2026 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fee92181
dev-db/mysql-connector-c++: add 9.6.0 Signed-off-by: Alfred Wingate <parona <AT> protonmail.com> Part-of: https://codeberg.org/gentoo/gentoo/pulls/94 Merges: https://codeberg.org/gentoo/gentoo/pulls/94 Signed-off-by: Sam James <sam <AT> gentoo.org> dev-db/mysql-connector-c++/Manifest | 1 + .../mysql-connector-c++-9.6.0.ebuild | 185 +++++++++++++++++++++ 2 files changed, 186 insertions(+) diff --git a/dev-db/mysql-connector-c++/Manifest b/dev-db/mysql-connector-c++/Manifest index 66befd7775dc..c66826944e49 100644 --- a/dev-db/mysql-connector-c++/Manifest +++ b/dev-db/mysql-connector-c++/Manifest @@ -1 +1,2 @@ DIST mysql-connector-c++-9.4.0-src.tar.gz 4788987 BLAKE2B 41a6cfbcfcca91b9a244fa30c6f1857ea4574e084bc9d2283bd0f34777acabb5dc30084c401ca7c12213f7d9a6e14d019182df48da86a59f48e32e2444626ea3 SHA512 80fc167c2ac0f6f1a368cb4778c67c3d95d713f8d350169d4a9e733a81bc60b4ed9847d1d6a29d1ca0e01002b0266c1391ef4b59604f5060ff81d62030c233c5 +DIST mysql-connector-c++-9.6.0-src.tar.gz 4789835 BLAKE2B d4991161d524e887b7dff1eacf719f9114657dd4a34df9c2b20882f8eb125ec0d86527464b7f1444fbe4e9f346dd92b49a5a6a48675ed3e426b599628be3c5d3 SHA512 227854759a19d5738ca4a33b128242b166699b0e664652e8f621c084898c84ac0c99daeeb4ee9c68bef2c2bd539f268bfb0f38d8ead590ea0b27919865655442 diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-9.6.0.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-9.6.0.ebuild new file mode 100644 index 000000000000..e6e5dfba2a5b --- /dev/null +++ b/dev-db/mysql-connector-c++/mysql-connector-c++-9.6.0.ebuild @@ -0,0 +1,185 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +URI_DIR="Connector-C++" +DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)" +HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/" +SRC_URI=" + https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz +" +S="${WORKDIR}/${P}-src" + +LICENSE="Artistic GPL-2" +# See ABI_VERSION(s) is version.cmake +SLOT="0/2.10" # ABI_VERSION_MAJOR/JDBC_ABI_VERSION_MAJOR +# -ppc, -sparc for bug #711940 +KEYWORDS="~amd64 ~arm ~arm64 -ppc ~ppc64 -sparc ~x86" +IUSE="+legacy test" + +RESTRICT="!test? ( test )" + +RDEPEND=" + app-arch/lz4:= + app-arch/zstd:= + dev-libs/openssl:= + virtual/zlib:= + legacy? ( + >=dev-db/mysql-connector-c-8.0.27:= + ) +" +DEPEND=" + ${RDEPEND} + test? ( + dev-cpp/gtest + ) +" +BDEPEND=" + test? ( + >=dev-db/mysql-8[server] + ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-8.0.27-mysqlclient_r.patch + "${FILESDIR}"/${PN}-8.0.33-jdbc.patch + "${FILESDIR}"/${PN}-9.2.0-gcc-15-cstdint.patch + "${FILESDIR}"/${PN}-9.2.0-test-iomanip.patch + "${FILESDIR}"/${PN}-9.4.0-hookup-tests.patch + "${FILESDIR}"/${PN}-9.4.0-cmake4.patch +) + +src_prepare() { + cmake_src_prepare + + # ignores MAKEOPTS and runs recursive make -j$(nproc). Clobbers jobs badly + # enough that your system immediately freezes. + # + # https://bugs.gentoo.org/921309 + # https://bugs.mysql.com/bug.php?id=115734 + sed -i 's/prc_cnt AND NOT/FALSE AND NOT/' cdk/cmake/dependency.cmake || die +} + +src_configure() { + # sanity check subslot to kick would be drive by bumpers + local detected_abi + detected_abi="$(awk '$1 ~ "set.*ABI_VERSION_MAJOR" {printf("%s.",$2)}' version.cmake)" + detected_abi="${detected_abi%.}" + if [[ "${SLOT#0/}" != "${detected_abi}" ]]; then + die "Sub slot ${SLOT#0/} doesn't match upstream specified ABI ${detected_abi}." + fi + + local mycmakeargs=( + -DBUNDLE_DEPENDENCIES=OFF + # Cannot handle protobuf >23, bug #912797 + #-DWITH_PROTOBUF=system + -DWITH_LZ4=system + -DWITH_SSL=system + -DWITH_ZLIB=system + -DWITH_ZSTD=system + -DWITH_JDBC=$(usex legacy) + -DWITH_TESTS=$(usex test) + ) + + if use legacy ; then + mycmakeargs+=( + -DMYSQLCLIENT_STATIC_BINDING=0 + -DMYSQLCLIENT_STATIC_LINKING=0 + ) + fi + + cmake_src_configure +} + +# NOTE: Test failures in jdbc may be a sign of issues in mysql-connector-c. +src_test() { + local CMAKE_SKIP_TESTS=( + # Test that configures, builds and install a test project again. It gets caught on the install phase. + Link_test + # Only ipv4 will work as only the ipv4 local address is specified. A future task for someone... + # https://dev.mysql.com/doc/refman/8.4/en/x-plugin-options-system-variables.html#sysvar_mysqlx_bind_address + Sess.ipv6 + # FIXME: + # not ok 15 - preparedstatement::queryAttributes # assertEquals(int) failed in + # /var/tmp/portage/dev-db/mysql-connector-c++-9.2.0/work/mysql-connector-c++-9.2.0-src/jdbc/test/unit/classes/preparedstatement.cpp, + # line #1582 expecting '200' got '0' + jdbc_test_preparedstatement + ) + + local -x MYSQL_HOST="127.0.0.1" + local -x MYSQL_PORT="5555" + local -x MYSQL_USER="$(whoami)" + local -x MYSQL_PASSWORD="insecure" + local -x XPLUGIN_PORT="5556" + + einfo "Creating mysql test instance" + mkdir -p "${T}"/mysql || die + mysqld \ + --no-defaults \ + --initialize-insecure \ + --user root \ + --basedir="${EPREFIX}/usr" \ + --datadir="${T}"/mysql 1>"${T}"/mysqld_install.log || die + + einfo "Starting mysql test instance ..." + mysqld \ + --no-defaults \ + --character-set-server=utf8 \ + --bind-address=${MYSQL_HOST} \ + --port=${MYSQL_PORT} \ + --socket="${T}"/mysqld.sock \ + --mysqlx-bind-address=${MYSQL_HOST} \ + --mysqlx-port=${XPLUGIN_PORT} \ + --mysqlx-socket="${T}"/mysqlx.sock \ + --pid-file="${T}"/mysqld.pid \ + --datadir="${T}"/mysql 1>"${T}"/mysqld.log 2>&1 & + + # wait for it to start + local i + for (( i = 0; i < 10; i++ )); do + [[ -S ${T}/mysqld.sock ]] && break + sleep 1 + done + [[ ! -S ${T}/mysqld.sock ]] && die "mysqld failed to start" + + einfo "Configure mysql test instance ..." + # https://github.com/mysql/mysql-connector-cpp/blob/trunk/jdbc/test/CJUnitTestsPort/README + mysql -u root \ + -e "CREATE USER ${MYSQL_USER} IDENTIFIED BY '${MYSQL_PASSWORD}'; GRANT ALL PRIVILEGES ON *.* TO ${MYSQL_USER} WITH GRANT OPTION;" \ + -S "${T}/mysqld.sock" \ + -h ${MYSQL_HOST} \ + -P ${MYSQL_PORT} || die + mysql -u root \ + -S "${T}/mysqld.sock" \ + -h ${MYSQL_HOST} \ + -P ${MYSQL_PORT} < "${S}"/jdbc/test/CJUnitTestsPort/cts.sql || die + + # Do tests with one job for proper clean up in database tests. + nonfatal cmake_src_test -j1 + local ret=${?} + + einfo "Stopping mysql test instance ..." + pkill -F "${T}"/mysqld.pid || die + # wait for it to stop + local i + for (( i = 0; i < 10; i++ )); do + [[ -S ${T}/mysqld.sock ]] || break + sleep 1 + done + + rm -rf "${T}"/mysql || die + + [[ ${ret} -ne 0 ]] && die +} + +src_install() { + cmake_src_install + einstalldocs + + # cmake package config file appears to be broken in multiple ways + rm "${ED}/usr/mysql-concpp-config.cmake" || die + rm "${ED}/usr/mysql-concpp-config-version.cmake" || die +}
