From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 84D8F158094 for ; Fri, 15 Jul 2022 07:10:18 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C7CC1E1006; Fri, 15 Jul 2022 07:10:17 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id A92E1E1006 for ; Fri, 15 Jul 2022 07:10:17 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 94CAF34129F for ; Fri, 15 Jul 2022 07:10:16 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id E7633448 for ; Fri, 15 Jul 2022 07:10:14 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1657869007.0f7808b289d1eb16cef25c2de6411cc580b97c5c.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/mysql-connector-c/files/, dev-db/mysql-connector-c/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-db/mysql-connector-c/files/mysql-connector-c-8.0.27-res_n.patch dev-db/mysql-connector-c/mysql-connector-c-8.0.27-r1.ebuild X-VCS-Directories: dev-db/mysql-connector-c/ dev-db/mysql-connector-c/files/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 0f7808b289d1eb16cef25c2de6411cc580b97c5c X-VCS-Branch: master Date: Fri, 15 Jul 2022 07:10:14 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: a2608068-21d0-411e-86fb-d6eadffb87b6 X-Archives-Hash: aacda2255052742eedcaf913a9bd855f commit: 0f7808b289d1eb16cef25c2de6411cc580b97c5c Author: brahmajit das gmail com> AuthorDate: Fri Jul 15 05:52:59 2022 +0000 Commit: Sam James gentoo org> CommitDate: Fri Jul 15 07:10:07 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0f7808b2 dev-db/mysql-connector-c: Use res_n* functions only on GLIBC The issue occurs because the package tries to use the res_n* functions (specifically res_ninit, res_nsearch and res_nclose) from resolv.h which do not exist when using musl. So we are falling back to non-thread-safe functions from resolv.h Closes: https://bugs.gentoo.org/761352 Signed-off-by: brahmajit das gmail.com> Closes: https://github.com/gentoo/gentoo/pull/26353 Signed-off-by: Sam James gentoo.org> .../files/mysql-connector-c-8.0.27-res_n.patch | 49 ++++++++ .../mysql-connector-c-8.0.27-r1.ebuild | 123 +++++++++++++++++++++ 2 files changed, 172 insertions(+) diff --git a/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.27-res_n.patch b/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.27-res_n.patch new file mode 100644 index 000000000000..34961b8ad9e2 --- /dev/null +++ b/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.27-res_n.patch @@ -0,0 +1,49 @@ +# Musl doesn't have res_n* functions so we are falling back to the not +# thread safe ones. Patch made with help from developer Fabian Groffen +# . +# +# Closes: https://bugs.gentoo.org/761352 +# See also: https://github.com/mysql/mysql-server/pull/385 +# See also: https://bugs.mysql.com/bug.php?id=106034 +--- a/libmysql/CMakeLists.txt ++++ b/libmysql/CMakeLists.txt +@@ -423,6 +423,19 @@ IF(HAS_WARN_FLAG) + ) + ENDIF() + ++check_symbol_exists(res_ninit "resolv.h" HAVE_RES_NINIT_FUNCTION) ++check_symbol_exists(res_nsearch "resolv.h" HAVE_RES_NSEARCH_FUNCTION) ++check_symbol_exists(res_nclose "resolv.h" HAVE_RES_NCLOSE_FUNCTION) ++IF (HAVE_RES_NINIT_FUNCTION) ++ add_compile_definitions(HAVE_RES_NINIT) ++ENDIF(HAVE_RES_NINIT_FUNCTION) ++IF (HAVE_RES_NSEARCH_FUNCTION) ++ add_compile_definitions(HAVE_RES_NSEARCH) ++ENDIF(HAVE_RES_NSEARCH_FUNCTION) ++IF (HAVE_RES_NCLOSE_FUNCTION) ++ add_compile_definitions(HAVE_RES_NCLOSE) ++ENDIF(HAVE_RES_NCLOSE_FUNCTION) ++ + # Verify that libmysql_api_test runs OK + ADD_CUSTOM_COMMAND(TARGET libmysql_api_test POST_BUILD + COMMAND libmysql_api_test +--- a/libmysql/dns_srv.cc ++++ b/libmysql/dns_srv.cc +@@ -37,6 +37,17 @@ + #include + #include + ++/* we don't have anything else but the non-thread-safe variants */ ++#if !defined(HAVE_RES_NINIT) ++#define res_ninit(X) (void)X ++#endif ++#if !defined(HAVE_RES_NSEARCH) ++#define res_nsearch(X,D,I,S,B,L) res_search(D,I,S,B,L) ++#endif ++#if !defined(HAVE_RES_NCLOSE) ++#define res_nclose(X) (void)X ++#endif ++ + // POSIX version + + static bool get_dns_srv(Dns_srv_data &data, const char *dnsname, int &error) { diff --git a/dev-db/mysql-connector-c/mysql-connector-c-8.0.27-r1.ebuild b/dev-db/mysql-connector-c/mysql-connector-c-8.0.27-r1.ebuild new file mode 100644 index 000000000000..7058ba6c50ed --- /dev/null +++ b/dev-db/mysql-connector-c/mysql-connector-c-8.0.27-r1.ebuild @@ -0,0 +1,123 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +CMAKE_ECLASS=cmake +inherit cmake-multilib flag-o-matic + +# wrap the config script +MULTILIB_CHOST_TOOLS=( /usr/bin/mysql_config ) + +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 ~ia64 ~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-0_p131:=[${MULTILIB_USEDEP}] + app-arch/zstd:=[${MULTILIB_USEDEP}] + sys-libs/zlib:=[${MULTILIB_USEDEP}] + ldap? ( dev-libs/cyrus-sasl:=[${MULTILIB_USEDEP}] ) + dev-libs/openssl:0=[${MULTILIB_USEDEP}] +" +DEPEND="${RDEPEND}" + +# Avoid file collisions, #692580 +RDEPEND+=" ! 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() { + CMAKE_BUILD_TYPE="RelWithDebInfo" + + # 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" + -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 + ) + + cmake_src_configure +} + +multilib_src_install_all() { + 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 +}