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
+}

Reply via email to