diff options
Diffstat (limited to 'dev-db/mysql-connector-c++')
4 files changed, 441 insertions, 0 deletions
diff --git a/dev-db/mysql-connector-c++/Manifest b/dev-db/mysql-connector-c++/Manifest index 8e7d1efe8186..99ad91c7d612 100644 --- a/dev-db/mysql-connector-c++/Manifest +++ b/dev-db/mysql-connector-c++/Manifest @@ -3,3 +3,4 @@ DIST mysql-connector-c++-1.1.12.tar.gz 518615 BLAKE2B 386a4753ca3f03999a49a89507 DIST mysql-connector-c++-1.1.9.tar.gz 508255 BLAKE2B e2cd300946a873a94beab13d9d1cb64ecb5bd9a9a56ef2217b1f7aff1643adc9afc0aa22c2ff1e0f6b8318cd34d12a7fe95f0584c96c212307fa9bd0cb54a2a1 SHA512 ec4d6cb7f21d52e786de3bff951e65ea5ad7391ba097b599d0094d3e8356cf17f700dee618e38e79d7a9e562684a6c51cca95fb8e2e225942766d33f8d0a5646 DIST mysql-connector-c++-8.0.15-src.tar.gz 2210243 BLAKE2B 45e0ffa2134c9df5a7e311963c7f2c58b5d7cfc0eefd80a5dc323bbe34ba60d40c79154f932e19c5f8e18ae45d0b61d304b7b7daba4955f92f830cf20c718931 SHA512 9a217b8f61babe5dac405be19b12d34b22673e779433d880a3aa31ea2e128f93434599a3fe0c1150b3f7b8c4d03f595d545d8cc33342a60561a2f60bff71ef14 DIST mysql-connector-c++-8.0.18-src.tar.gz 3115736 BLAKE2B f28229593d20f4a401a3e9d0e636ee896a90fb7573f06d9b60340540d6c4d577b4f44daa287c7896a03a60d75dec343413cba981e63a22607ce60eb20f4de122 SHA512 f5b202677392bcf5c5bdd4c3433332e57aa20c1a140de81b57ce3ce69709661d572e2466ae022926fc220b20159c90f09f15b5e44f384529103a24fd592de60d +DIST mysql-connector-c++-8.0.19-src.tar.gz 3137484 BLAKE2B 82a2900b0daa00bcfd72d562818ada25fe15901991a896a46ecdd9304e03066c4e7a3804287540559df1c74dbd1b3983b450ab783ee8cb7f0d7ec152f3cdc6b0 SHA512 5987ae31cda3a5db18ceded201ccbe66263b8ab7665ceacf70af6bb6b99130377b40514b96644b0768fd809b36ee02580520923c11c1edecccc75da15d7bb0bd diff --git a/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.19-fix-build.patch b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.19-fix-build.patch new file mode 100644 index 000000000000..b8976199afc5 --- /dev/null +++ b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.19-fix-build.patch @@ -0,0 +1,307 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -475,7 +475,7 @@ set_target_properties(connector PROPERTIES + + + install(TARGETS connector +- CONFIGURATIONS Release RelWithDebInfo ++ CONFIGURATIONS Release RelWithDebInfo Gentoo + ARCHIVE DESTINATION "${INSTALL_LIB_DIR_STATIC}" COMPONENT XDevAPIDev + RUNTIME DESTINATION "${INSTALL_LIB_DIR}" COMPONENT XDevAPIDll + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT XDevAPIDll +--- a/cdk/cmake/DepFindProtobuf.cmake ++++ b/cdk/cmake/DepFindProtobuf.cmake +@@ -48,229 +48,7 @@ if(TARGET Protobuf::pb) + return() + endif() + +-message(STATUS "Setting up Protobuf.") +- +-set(PB_SOURCE_DIR "${PROJECT_SOURCE_DIR}/protobuf") +-set(PB_BINARY_DIR "${PROJECT_BINARY_DIR}/protobuf") +-set(config_stamp "${PB_BINARY_DIR}/config.stamp") +-set(build_stamp "${PB_BINARY_DIR}/build.stamp") +- +- +-# +-# Pick build configuration for the protobuf build. Normally we build using the +-# same build configuration that is used for building CDK (Release/Debug/etc.). +-# But we also support building CDK under non-standard build configuration +-# named 'Static' (this is a dirty trick we use to simplify building our MSIs). +-# Since protobuf does not know 'Static' build configuration, we build protobuf +-# under 'Release' configuration in that case. +-# +-# We need to handle two cases. For some build systems, like Makefiles, +-# the build configuration is specified at cmake time using CMAKE_BUILD_TYPE +-# variable. In that case we also set it during protobuf build configuration. +-# Another case is a multi-configuration build system like MSVC. In this case +-# we use generator expression to pick correct configuration when the build +-# command is invoked below. +-# +- +-set(build_type) +-if(CMAKE_BUILD_TYPE) +- if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]") +- set(set_build_type -DCMAKE_BUILD_TYPE=Release) +- else() +- set(set_build_type -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) +- endif() +-endif() +- +-set(CONFIG_EXPR +- $<$<CONFIG:Static>:Release>$<$<NOT:$<CONFIG:Static>>:$<CONFIG>> +-) +- +-set(set_arch) +-if(CMAKE_GENERATOR_PLATFORM) +- set(set_arch -A ${CMAKE_GENERATOR_PLATFORM}) +-endif() +- +-set(set_toolset) +-if(CMAKE_GENERATOR_TOOLSET) +- set(set_toolset -T ${CMAKE_GENERATOR_TOOLSET}) +-endif() +- +-if(NOT EXISTS "${PB_BINARY_DIR}/exports.cmake") +- +- message("==== Configuring Protobuf build using cmake generator: ${CMAKE_GENERATOR} ${set_arch} ${set_toolset}") +- +- file(REMOVE "${PB_BINARY_DIR}/CMakeCache.txt") +- file(MAKE_DIRECTORY "${PB_BINARY_DIR}") +- +- # Dirty trick to speed up cmake set up time. +- #file( +- # COPY "${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_VERSION}" +- # DESTINATION "${PB_BINARY_DIR}/CMakeFiles" +- #) +- +- execute_process( +- COMMAND ${CMAKE_COMMAND} +- -G "${CMAKE_GENERATOR}" +- ${set_arch} +- ${set_toolset} +- ${set_build_type} +- -DSTATIC_MSVCRT=${STATIC_MSVCRT} +- -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} +- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} +- -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} +- -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} +- -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} +- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} +- -DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL} +- -DCMAKE_STATIC_LINKER_FLAGS=${CMAKE_STATIC_LINKER_FLAGS} +- ${PB_SOURCE_DIR} +- WORKING_DIRECTORY ${PB_BINARY_DIR} +- RESULT_VARIABLE protobuf_config +- ) +- +- if(protobuf_config) +- message(FATAL_ERROR "Could not configure Protobuf build: ${protobuf_config}") +- endif() +- +- message("==== Protobuf build configured.") +- +-endif() +- +- +-include(${PB_BINARY_DIR}/exports.cmake) +- +-# +-# Protobuf library targets imported above (pb_protobuf +-# and pb_protobuf-lite) are local to the directory from which +-# they were imported. This is not good if cdk is used as +-# a sub-project of a parent project, because the parent project +-# must have access to these targets. +-# +-# For that reason below we create global protobuf/protobuf-lite targets +-# and copy their locations from the imported targets. +-# +-# Note: we can't use ALIAS library because it does not work with imported +-# targets +-# +- +-add_library(Protobuf::pb-full STATIC IMPORTED GLOBAL) +-add_library(Protobuf::pb-lite STATIC IMPORTED GLOBAL) +-add_executable(Protobuf::protoc IMPORTED GLOBAL) +- +-set(TGT_protobuf Protobuf::pb-full) +-set(TGT_protobuf-lite Protobuf::pb-lite) +-set(TGT_protoc Protobuf::protoc) +- +-foreach(tgt protobuf protobuf-lite protoc) +- +- #message("processing: ${tgt}") +- +- set(loc_list) +- +- foreach(CONF NOCONFIG DEBUG RELEASE MINSIZEREL RELWITHDEBINFO) +- +- #message("- CONF: ${CONF}") +- +- get_target_property(LOC pb_${tgt} IMPORTED_LOCATION_${CONF}) +- +- if(LOC) +- +- #message("- setting imported location to: ${LOC}") +- list(APPEND loc_list "${LOC}") +- +- set_target_properties(${TGT_${tgt}} PROPERTIES +- IMPORTED_LOCATION_${CONF} "${LOC}" +- ) +- +- set_property(TARGET ${TGT_${tgt}} APPEND PROPERTY +- IMPORTED_CONFIGURATIONS ${CONF} +- ) +- +- endif() +- +- endforeach(CONF) +- +- # +- # To support 'Static' build configuration the targets imported from the +- # Protobuf project need to have IMPORTED_LOCATION_STATIC defined. We use +- # 'Release' locations as Protobuf is built using 'Release' configuration in +- # that case. +- # +- +- get_target_property(LOC ${TGT_${tgt}} IMPORTED_LOCATION_RELEASE) +- set_property(TARGET ${TGT_${tgt}} PROPERTY IMPORTED_LOCATION_STATIC ${LOC}) +- +-endforeach(tgt) +- +- +-#message("Protobuf include path: ${PROTOBUF_INCLUDE_DIR}") +-set(PROTOBUF_INCLUDE_DIR ${PROTOBUF_INCLUDE_DIR} CACHE INTERNAL "") +- +-set_target_properties(Protobuf::pb-lite PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${PROTOBUF_INCLUDE_DIR}" +-) +- +-set_target_properties(Protobuf::pb-full PROPERTIES +- INTERFACE_LINK_LIBRARIES Protobuf::pb-lite +-) +- +-# On UNIX Protobuf uses pthread library +-if(UNIX) +- set_property(TARGET Protobuf::pb-lite APPEND PROPERTY +- INTERFACE_LINK_LIBRARIES pthread +- ) +-endif() +- +-# +-# Note: This is needed to correctly compile headers generated by protobuf +-# with sunpro compiler. +-# +- +-if(SUNPRO) +- set_property(TARGET Protobuf::pb-lite APPEND PROPERTY +- INTERFACE_COMPILE_DEFINITIONS SOLARIS_64BIT_ENABLED +- ) +-endif() +- +-# +-# Try using parallel builds for protobuf. +-# +- +-include(ProcessorCount) +-ProcessorCount(N) +- +-MESSAGE("Processor Count: ${N}") +- +-set(opt_build) +-set(opt_tool) +-if(NOT N EQUAL 0) +- if(NOT CMAKE_VERSION VERSION_LESS 3.12) +- set(opt_build --parallel ${N}) +- elseif(CMAKE_MAKE_PROGRAM MATCHES "make") +- set(opt_tool -j${N}) +- endif() +-endif() +- +-add_custom_command(OUTPUT "${build_stamp}" +- COMMAND ${CMAKE_COMMAND} --build . ${opt_build} --config ${CONFIG_EXPR} -- ${opt_tool} +- COMMAND ${CMAKE_COMMAND} -E touch "${build_stamp}" +- WORKING_DIRECTORY "${PB_BINARY_DIR}" +- COMMENT "Building protobuf" +-) +- +-add_custom_target(build_protobuf +- SOURCES "${build_stamp}" +-) +- +-set_target_properties(build_protobuf PROPERTIES FOLDER "Misc") +- +-add_dependencies(Protobuf::pb-full build_protobuf) +-add_dependencies(Protobuf::pb-lite build_protobuf) +-add_dependencies(Protobuf::protoc build_protobuf) +- +-# TODO: Handle lite/full version +- +- ++find_package(Protobuf REQUIRED) + + # Standard PROTOBUF_GENERATE_CPP modified to our usage + +@@ -299,11 +77,11 @@ function(mysqlx_protobuf_generate_cpp SRCS HDRS) + "${CMAKE_CURRENT_BINARY_DIR}/protobuf/${FIL_WE}.pb.h" + COMMAND ${CMAKE_COMMAND} + -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/protobuf" +- COMMAND Protobuf::protoc ++ COMMAND ${Protobuf_PROTOC_EXECUTABLE} + ARGS --cpp_out "${CMAKE_CURRENT_BINARY_DIR}/protobuf" + -I ${ABS_PATH} ${ABS_FIL} +- --proto_path=${PROJECT_SOURCE_DIR}/protobuf/protobuf-3.6.1/src +- DEPENDS ${ABS_FIL} #${PROTOBUF_PROTOC_EXECUTABLE} ++ --proto_path=${Protobuf_INCLUDE_DIR} ++ DEPENDS ${ABS_FIL} #${Protobuf_PROTOC_EXECUTABLE} + COMMENT "Running C++ protocol buffer compiler on ${FIL}" + VERBATIM + ) +--- a/cdk/core/CMakeLists.txt ++++ b/cdk/core/CMakeLists.txt +@@ -44,7 +44,7 @@ add_library(cdk STATIC ${cdk_sources} ${HEADERS}) + + target_link_libraries(cdk + PUBLIC cdk_mysqlx cdk_parser +- PRIVATE Protobuf::pb-lite # required by codecc.cc ++ PRIVATE protobuf # required by codecc.cc + ) + + add_coverage(cdk) +--- a/cdk/protocol/mysqlx/CMakeLists.txt ++++ b/cdk/protocol/mysqlx/CMakeLists.txt +@@ -126,11 +126,7 @@ target_include_directories(cdk_proto_mysqlx PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} + ) + +-if(use_full_protobuf) +- target_link_libraries(cdk_proto_mysqlx PRIVATE Protobuf::pb-full) +-else() +- target_link_libraries(cdk_proto_mysqlx PRIVATE Protobuf::pb-lite) +-endif() ++target_link_libraries(cdk_proto_mysqlx PRIVATE protobuf) + + target_link_libraries(cdk_proto_mysqlx PRIVATE cdk_foundation) + +--- a/jdbc.cmake ++++ b/jdbc.cmake +@@ -66,7 +66,7 @@ if(MYSQL_CONFIG_EXECUTABLE) + list(APPEND jdbc_cmake_opts -DMYSQL_CONFIG_EXECUTABLE=${MYSQL_CONFIG_EXECUTABLE}) + endif() + +-list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=ON) ++list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=OFF) + + if(CMAKE_BUILD_TYPE) + if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]") +--- a/jdbc/CMakeLists.txt ++++ b/jdbc/CMakeLists.txt +@@ -272,7 +272,7 @@ set_target_properties(connector-jdbc + + + install(TARGETS connector-jdbc +- CONFIGURATIONS Release RelWithDebInfo ++ CONFIGURATIONS Release RelWithDebInfo Gentoo + ARCHIVE DESTINATION "${INSTALL_LIB_DIR_STATIC}" COMPONENT JDBCDev + RUNTIME DESTINATION "${INSTALL_LIB_DIR}" COMPONENT JDBCDll + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT JDBCDll diff --git a/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.19-fix-libressl-support.patch b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.19-fix-libressl-support.patch new file mode 100644 index 000000000000..fc6eb777063e --- /dev/null +++ b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.19-fix-libressl-support.patch @@ -0,0 +1,89 @@ +--- a/cdk/cmake/DepFindSSL.cmake ++++ b/cdk/cmake/DepFindSSL.cmake +@@ -88,7 +88,7 @@ function(main) + + set(OPENSSL_LIB_DIR "${OPENSSL_LIB_DIR}" CACHE INTERNAL "") + +- if(NOT OPENSSL_VERSION_MAJOR EQUAL 1) ++ if(NOT OPENSSL_VERSION_MAJOR VERSION_GREATER_EQUAL 1) + message(SEND_ERROR "OpenSSL version 1.x is required but version ${OPENSSL_VERSION} was found") + else() + message(STATUS "Using OpenSSL version: ${OPENSSL_VERSION}") +@@ -182,42 +182,33 @@ function(find_openssl) + set(OPENSSL_INCLUDE_DIR "${OPENSSL_INCLUDE_DIR}" PARENT_SCOPE) + message("-- found OpenSSL headers at: ${OPENSSL_INCLUDE_DIR}") + +- + # Verify version number. Version information looks like: +- # #define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1a 20 Nov 2018" +- ++ # #define OPENSSL_VERSION_NUMBER 0x1000103fL ++ # Encoded as MNNFFPPS: major minor fix patch status + FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" + OPENSSL_VERSION_NUMBER +- REGEX "#[ ]*define[\t ]+OPENSSL_VERSION_TEXT" ++ REGEX "^#[ ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*" + ) +- +- #message("== OPENSSL_VERSION_NUMBER: ${OPENSSL_VERSION_NUMBER}") + STRING(REGEX REPLACE +- "^.*OPENSSL_VERSION_TEXT[\t ]+\"OpenSSL[\t ]([0-9]+)\\.([0-9]+)\\.([0-9]+)([a-z]*)[\t ].*$" +- "\\1;\\2;\\3;\\4" +- version_list "${OPENSSL_VERSION_NUMBER}" ++ "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1" ++ OPENSSL_VERSION_MAJOR "${OPENSSL_VERSION_NUMBER}" ++ ) ++ STRING(REGEX REPLACE ++ "^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9]([0-9][0-9]).*$" "\\1" ++ OPENSSL_VERSION_MINOR "${OPENSSL_VERSION_NUMBER}" ++ ) ++ STRING(REGEX REPLACE ++ "^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9][0-9][0-9]([0-9][0-9]).*$" "\\1" ++ OPENSSL_VERSION_FIX "${OPENSSL_VERSION_NUMBER}" + ) +- #message("-- OPENSSL_VERSION: ${version_list}") +- +- list(GET version_list 0 OPENSSL_VERSION_MAJOR) +- math(EXPR OPENSSL_VERSION_MAJOR ${OPENSSL_VERSION_MAJOR}) +- +- list(GET version_list 1 OPENSSL_VERSION_MINOR) +- math(EXPR OPENSSL_VERSION_MINOR ${OPENSSL_VERSION_MINOR}) +- +- list(GET version_list 2 OPENSSL_VERSION_FIX) +- math(EXPR OPENSSL_VERSION_FIX ${OPENSSL_VERSION_FIX}) +- +- list(GET version_list 3 OPENSSL_VERSION_PATCH) +- +- + + set(OPENSSL_VERSION +- "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH}" ++ "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}" + PARENT_SCOPE + ) + set(OPENSSL_VERSION_MAJOR ${OPENSSL_VERSION_MAJOR} PARENT_SCOPE) + ++ CHECK_SYMBOL_EXISTS(TLS1_3_VERSION "openssl/tls1.h" HAVE_TLS1_3_VERSION) + + find_library(OPENSSL_LIBRARY + NAMES ssl ssleay32 ssleay32MD libssl +--- a/cdk/foundation/connection_openssl.cc ++++ b/cdk/foundation/connection_openssl.cc +@@ -211,7 +211,7 @@ static void throw_ssl_error(SSL* tls, int err) + case SSL_ERROR_WANT_CONNECT: + case SSL_ERROR_WANT_ACCEPT: + case SSL_ERROR_WANT_X509_LOOKUP: +-# if OPENSSL_VERSION_NUMBER >= 0x10100000L ++# if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + case SSL_ERROR_WANT_ASYNC: + case SSL_ERROR_WANT_ASYNC_JOB: + # endif +@@ -387,7 +387,7 @@ void TLS_helper::setup(SSL_CTX *ctx) + + SSL_CTX_set_cipher_list(ctx, m_cipher_list.c_str()); + +-#if OPENSSL_VERSION_NUMBER>=0x1010100fL ++#if HAVE_TLS1_3_VERSION + + /* + Note: If TLSv1.3 is not enabled, there is no need to restrict diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.19.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.19.ebuild new file mode 100644 index 000000000000..fb1898b6062c --- /dev/null +++ b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.19.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +CMAKE_MAKEFILE_GENERATOR=emake +inherit cmake-utils + +DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)" +HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/" +URI_DIR="Connector-C++" +SRC_URI="https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz" + +LICENSE="Artistic GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="+legacy libressl" + +RDEPEND=" + dev-libs/protobuf:= + legacy? ( + dev-libs/boost:= + >=dev-db/mysql-connector-c-6.1.8:= + ) + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= )" +DEPEND="${RDEPEND}" +S="${WORKDIR}/${P}-src" + +PATCHES=( + "${FILESDIR}"/${PN}-8.0.19-fix-build.patch + "${FILESDIR}"/${PN}-8.0.19-fix-libressl-support.patch +) + +src_configure() { + local mycmakeargs=( + -DWITH_SSL=system + -DWITH_JDBC=$(usex legacy ON OFF) + $(usex legacy '-DMYSQLCLIENT_STATIC_BINDING=0' '') + $(usex legacy '-DMYSQLCLIENT_STATIC_LINKING=0' '') + ) + + cmake-utils_src_configure +} |