diff options
Diffstat (limited to 'dev-db')
-rw-r--r-- | dev-db/myodbc/Manifest | 23 | ||||
-rw-r--r-- | dev-db/myodbc/files/5.3-cmake-doc-path.patch | 43 | ||||
-rw-r--r-- | dev-db/myodbc/files/5.3-cxxlinkage.patch | 43 | ||||
-rw-r--r-- | dev-db/myodbc/files/5.3-mariadb-buffer_length.patch | 93 | ||||
-rw-r--r-- | dev-db/myodbc/files/5.3-mariadb-dynamic-array.patch | 96 | ||||
-rw-r--r-- | dev-db/myodbc/files/5.3.10-cxxlinkage.patch | 29 | ||||
-rw-r--r-- | dev-db/myodbc/files/odbc.ini.m4 | 1 | ||||
-rw-r--r-- | dev-db/myodbc/files/odbcinst.ini.m4 | 1 | ||||
-rw-r--r-- | dev-db/myodbc/myodbc-5.3.10.ebuild | 145 |
9 files changed, 472 insertions, 2 deletions
diff --git a/dev-db/myodbc/Manifest b/dev-db/myodbc/Manifest index 809ce4d..ca32def 100644 --- a/dev-db/myodbc/Manifest +++ b/dev-db/myodbc/Manifest @@ -1,2 +1,25 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + DIST mysql-connector-odbc-5.2.7-src.tar.gz 606472 SHA256 0ad8fcccb4c41c7100fe02ec0aa87938d33329d23f7b68d1b9031c87750392c9 SHA512 f54ac8a23ade71da85e1335e95eccdccfd68a8687d17a584ced103812bdc5aee8014769a84eaa22724bb2cb23d34c7188c964d3283723defeaef5157a4b3c60f WHIRLPOOL 928808ac5b623ec345c8c1b8495ca1de7f10e65f0d14720e9bee6ab154ccf818ca690745a57fa7fa1c008ba57b24705657398cd9146fbf2e385c178deca0e499 +DIST mysql-connector-odbc-5.3.10-src.tar.gz 2646571 SHA256 e15fe714b0236bdb7adea28a5d14a62511b5657cd83a6be664b45a4ef077fcb5 SHA512 ebe56b95a1690332959a7a37e8ed381b46730fb9f6fbd6522ddc1a6961e4c8cdac59681a957b33abeb6cae12f210278e4063daa59ce952d92acf427bc188e22b WHIRLPOOL e27aa8c51b575972ceb2f82d36ae4146835e1893808d9a5f98c31924fb16ee576880c7ae3393b89beb4f952c5436699d25efb4cd0e0d25b454a31bdfeedea98e DIST mysql-connector-odbc-5.3.4-src.tar.gz 667340 SHA256 a5f7a490f2958f2768d18b8a57f71909f9699a8619c82776b3ad1c02b8abce0d SHA512 1e3a0c06091f6ca34e89f9fc915f34e94b840db8626a93f56d464aff8d1f8a275c4ef494046ac760e8bcf910a05b91e39a8a1842711e4a78adddcc412ff77ec8 WHIRLPOOL 37bbaac3098377c82889cc30a3bd8b088b751e81a0116b87945a0efccd60f5c3a689176ccbaf866f7957404bbb08d08f9a7885ad68448f7a65188da3b33eb9f2 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2 + +iQKTBAEBCAB9FiEEZsLkTtkOMnWOfVXA0feB7/n0o7YFAlp/xCZfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDY2 +QzJFNDRFRDkwRTMyNzU4RTdENTVDMEQxRjc4MUVGRjlGNEEzQjYACgkQ0feB7/n0 +o7axjw/8CvLJt67erbQNFH1HvJ+zWl0U7bNsXZAirgP0Z8qs4tRPLT7QrNI6TaUS +1X31ETYfJ3GlUgvhXnw9UnASJ1DNRMHrRO1GJpOFIAmL+R5ZxKlm6Uvl4EBH3WF6 +rakfNklyx2OPwWqIf/K8IM7QwF+k2uxaXSPKF2lWapEUvxFsjsfcXKqJG4LmT8W1 +23y2RT6rMO2KUhElnM4skCWO2W1nIw8JnZvWfwN8gZnEIR7shv/sPNxaCYjO3EhR +F/XDKoq7H1+Q81/UgxF/47RZZ7GX4yU6ba+kOU/nza/WCN15rGuXZ2HqZeKzcE5l +KRuxNLOJqajdycFksUXHWLonboD0k9UPRJ4qFA2hq1mK3H/fUJQ9NZO8LnR61EO2 +RY052qrGcJ3g1vamH0onqdY5guld9MR3Bh5Gc1kuq6APG6nhaE+rpSTYJ6QYEq7V +m31qFN6Se93j0ED0oDcY77APIVoGRFZMof4X+a9uO/DdwBr2MYG+Sfxnr12xWZmA +ltwxcRjOSBQZbJwmblEl9zyyboivoXqAcrw1rfwBkZsyMgJdvgKs3fSBnUCFSOU+ +ei5DH8vDF9x6Ew6FFGHwpEQd7GULCE8jR+Vc8cyztEGiGHppEX8zhpM4iFgYai5i +Grj19xsQ0wLvQHl/BJ5o8JxMmFryFXpYtmoddEz9xdzd+4KKa0I= +=H5eI +-----END PGP SIGNATURE----- diff --git a/dev-db/myodbc/files/5.3-cmake-doc-path.patch b/dev-db/myodbc/files/5.3-cmake-doc-path.patch new file mode 100644 index 0000000..54f35d4 --- /dev/null +++ b/dev-db/myodbc/files/5.3-cmake-doc-path.patch @@ -0,0 +1,43 @@ +=== modified file 'CMakeLists.txt' +--- a/CMakeLists.txt 2013-03-09 09:51:06 +0000 ++++ b/CMakeLists.txt 2013-03-09 11:05:27 +0000 +@@ -33,6 +33,12 @@ + + INCLUDE(version.cmake) + ++IF(WITH_DOCUMENTATION_INSTALL_PATH) ++ set(DOCUMENTATION_INSTALL_PATH ${WITH_DOCUMENTATION_INSTALL_PATH}) ++ELSE(WITH_DOCUMENTATION_INSTALL_PATH) ++ set(DOCUMENTATION_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/share/doc/myodbc-${CONNECTOR_MAJOR}.${CONNECTOR_MINOR}) ++ENDIF(WITH_DOCUMENTATION_INSTALL_PATH) ++ + #Default is to build both drivers + IF(UNICODE OR NOT ANSI) + MESSAGE(STATUS "Configuring to build Unicode driver") +@@ -329,19 +335,17 @@ + + ELSE(WIN32) + +- INSTALL(FILES ChangeLog DESTINATION .) +- INSTALL(FILES README DESTINATION .) +- INSTALL(FILES README.debug DESTINATION .) +- INSTALL(FILES INSTALL DESTINATION .) ++ INSTALL(FILES ChangeLog DESTINATION ${DOCUMENTATION_INSTALL_PATH}) ++ INSTALL(FILES README DESTINATION ${DOCUMENTATION_INSTALL_PATH}) ++ INSTALL(FILES README.debug DESTINATION ${DOCUMENTATION_INSTALL_PATH}) ++ INSTALL(FILES INSTALL DESTINATION ${DOCUMENTATION_INSTALL_PATH}) + IF(EXISTS "${CMAKE_SOURCE_DIR}/COPYING") +- INSTALL(FILES COPYING DESTINATION .) + ELSE() +- INSTALL(FILES LICENSE.mysql DESTINATION .) + ENDIF() + + ENDIF(WIN32) + +-INSTALL(FILES Licenses_for_Third-Party_Components.txt DESTINATION .) ++INSTALL(FILES Licenses_for_Third-Party_Components.txt DESTINATION ${DOCUMENTATION_INSTALL_PATH}) + + INCLUDE(CPack) + + + diff --git a/dev-db/myodbc/files/5.3-cxxlinkage.patch b/dev-db/myodbc/files/5.3-cxxlinkage.patch new file mode 100644 index 0000000..319262c --- /dev/null +++ b/dev-db/myodbc/files/5.3-cxxlinkage.patch @@ -0,0 +1,43 @@ +diff -aurN a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake +--- a/cmake/FindMySQL.cmake 2016-11-29 07:40:13.000000000 -0500 ++++ b/cmake/FindMySQL.cmake 2017-02-17 13:59:18.115389096 -0500 +@@ -747,7 +747,7 @@ + endif() + + if(NOT MYSQL_CXXFLAGS) +- if(MYSQL_CXX_LINKAGE OR MYSQL_VERSION_ID GREATER 50603) ++ if(MYSQL_CXX_LINKAGE) + _mysql_conf(MYSQL_CXXFLAGS "--cxxflags") + set(MYSQL_CXX_LINKAGE 1) + else() +diff -aurN a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2017-02-17 13:50:43.556006202 -0500 ++++ b/CMakeLists.txt 2017-02-17 13:57:15.745676184 -0500 +@@ -242,10 +242,9 @@ + SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin") + SET(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib") + +-SET(LIB_SUBDIR "lib") +-IF(RPM_BUILD AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|ppc64|ppc64p7|s390x|sparc64)") +- SET(LIB_SUBDIR "lib64") +-ENDIF() ++IF(NOT LIB_SUBDIR) ++ MESSAGE(ERROR "LIB_SUBDIR is not set") ++ENDIF(NOT LIB_SUBDIR) + + MESSAGE(STATUS "Installation library subdir: ${LIB_SUBDIR}") + +diff -aurN a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake +--- a/cmake/FindMySQL.cmake 2017-02-17 14:44:29.532733308 -0500 ++++ b/cmake/FindMySQL.cmake 2017-02-17 14:48:56.756740330 -0500 +@@ -270,8 +270,8 @@ + set(_static_lib_ext ".lib") # Careful, can be import library for DLL + elseif(MYSQLCLIENT_NO_THREADS) + # In 5.1 and below there is a single threaded library +- set(_dynamic_libs "mysqlclient") +- set(_static_libs "libmysqlclient.a") ++ set(_dynamic_libs "${MYSQLCLIENT_LIB_NAME}") ++ set(_static_libs "lib${MYSQLCLIENT_LIB_NAME}.a") + set(_static_lib_ext ".a") + else() + # We try the multithreaded "libmysqlclient_r" first and if not diff --git a/dev-db/myodbc/files/5.3-mariadb-buffer_length.patch b/dev-db/myodbc/files/5.3-mariadb-buffer_length.patch new file mode 100644 index 0000000..1be9cc4 --- /dev/null +++ b/dev-db/myodbc/files/5.3-mariadb-buffer_length.patch @@ -0,0 +1,93 @@ +diff -aurN a/driver/connect.c b/driver/connect.c +--- a/driver/connect.c 2016-11-29 07:40:13.000000000 -0500 ++++ b/driver/connect.c 2017-02-17 16:14:48.116640371 -0500 +@@ -510,11 +510,11 @@ + } + } + +-#if MYSQL_VERSION_ID >= 50709 +- mysql_get_option(mysql, MYSQL_OPT_NET_BUFFER_LENGTH, &dbc->net_buffer_length); ++#if MYSQL_VERSION_ID >= 50709 && !defined(MARIADB_BASE_VERSION) ++ mysql_get_option(mysql, MYSQL_OPT_NET_BUFFER_LENGTH, &dbc->net_buffer_length_value); + #else + // for older versions just use net_buffer_length() macro +- dbc->net_buffer_length = net_buffer_length; ++ dbc->net_buffer_length_value = net_buffer_length; + #endif + return rc; + +diff -aurN a/driver/cursor.c b/driver/cursor.c +--- a/driver/cursor.c 2016-11-29 07:40:13.000000000 -0500 ++++ b/driver/cursor.c 2017-02-17 16:13:19.163299885 -0500 +@@ -1485,7 +1485,7 @@ + We have a limited capacity to shove data across the wire, but + we handle this by sending in multiple calls to exec_stmt_query() + */ +- if (ext_query->length + length >= (SQLULEN) stmt->dbc->net_buffer_length) ++ if (ext_query->length + length >= (SQLULEN) stmt->dbc->net_buffer_length_value) + { + break_insert= TRUE; + break; +diff -aurN a/driver/driver.h b/driver/driver.h +--- a/driver/driver.h 2016-11-29 07:40:13.000000000 -0500 ++++ b/driver/driver.h 2017-02-17 16:10:57.072950723 -0500 +@@ -378,7 +378,7 @@ + int txn_isolation; + uint port; + uint cursor_count; +- ulong net_buffer_length; ++ ulong net_buffer_length_value; + uint commit_flag; + #ifdef THREAD + myodbc_mutex_t lock; +diff -aurN a/driver/info.c b/driver/info.c +--- a/driver/info.c 2016-11-29 07:40:13.000000000 -0500 ++++ b/driver/info.c 2017-02-17 16:12:54.315763441 -0500 +@@ -587,7 +587,7 @@ + MYINFO_SET_USHORT(0); + + case SQL_MAX_STATEMENT_LEN: +- MYINFO_SET_ULONG(dbc->net_buffer_length); ++ MYINFO_SET_ULONG(dbc->net_buffer_length_value); + + case SQL_MAX_TABLE_NAME_LEN: + MYINFO_SET_USHORT(NAME_LEN); +diff -aurN a/driver/connect.c b/driver/connect.c +--- a/driver/connect.c 2017-02-17 16:16:14.609026769 -0500 ++++ b/driver/connect.c 2017-02-17 16:34:29.637592664 -0500 +@@ -179,7 +179,7 @@ + /* Set other connection options */ + + if (ds->allow_big_results || ds->safe) +-#if MYSQL_VERSION_ID >= 50709 ++#if MYSQL_VERSION_ID >= 50709 && !defined(MARIADB_BASE_VERSION) + mysql_options(mysql, MYSQL_OPT_MAX_ALLOWED_PACKET, &max_long); + #else + /* max_allowed_packet is a magical mysql macro. */ +@@ -252,7 +252,7 @@ + ds_get_utf8attr(ds->rsakey, &ds->rsakey8)); + } + +-#if MYSQL_VERSION_ID >= 50710 ++#if MYSQL_VERSION_ID >= 50710 && !defined(MARIADB_BASE_VERSION) + { + char tls_options[128] = { 0 }; + if (!ds->no_tls_1) +@@ -323,7 +323,7 @@ + #endif + + mysql->options.use_ssl = !ds->disable_ssl_default; +-#if MYSQL_VERSION_ID >= 50703 ++#if MYSQL_VERSION_ID >= 50703 && !defined(MARIADB_BASE_VERSION) + { + if (ds->ssl_enforce) + { +@@ -332,7 +332,7 @@ + } + #endif + +-#if MYSQL_VERSION_ID >= 50711 ++#if MYSQL_VERSION_ID >= 50711 && !defined(MARIADB_BASE_VERSION) + if (ds->sslmode) + { + unsigned int mode = 0; diff --git a/dev-db/myodbc/files/5.3-mariadb-dynamic-array.patch b/dev-db/myodbc/files/5.3-mariadb-dynamic-array.patch new file mode 100644 index 0000000..9672061 --- /dev/null +++ b/dev-db/myodbc/files/5.3-mariadb-dynamic-array.patch @@ -0,0 +1,96 @@ +diff -aurN a/driver/catalog_no_i_s.c b/driver/catalog_no_i_s.c +--- a/driver/catalog_no_i_s.c 2016-11-29 07:40:13.000000000 -0500 ++++ b/driver/catalog_no_i_s.c 2017-02-17 14:07:03.979683613 -0500 +@@ -1093,7 +1093,11 @@ + unsigned long *lengths; + SQLRETURN rc= SQL_SUCCESS; + ++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001 ++ myodbc_init_dynamic_array(&records, sizeof(MY_FOREIGN_KEY_FIELD), 0, 0, MYF(0)); ++#else + myodbc_init_dynamic_array(&records, sizeof(MY_FOREIGN_KEY_FIELD), 0, 0); ++#endif + + /* Get the list of tables that match szCatalog and szTable */ + myodbc_mutex_lock(&stmt->dbc->lock); +diff -aurN a/driver/desc.c b/driver/desc.c +--- a/driver/desc.c 2016-11-29 07:40:13.000000000 -0500 ++++ b/driver/desc.c 2017-02-17 14:09:30.139954232 -0500 +@@ -63,13 +63,21 @@ + but in desc_get_rec we manually get a pointer to it. This avoids + having to call set_dynamic after modifying the DESCREC. + */ ++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001 ++ if (myodbc_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0, MYF(0))) ++#else + if (myodbc_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0)) ++#endif + { + x_free((char *)desc); + return NULL; + } + ++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001 ++ if (myodbc_init_dynamic_array(&desc->bookmark, sizeof(DESCREC), 0, 0, MYF(0))) ++#else + if (myodbc_init_dynamic_array(&desc->bookmark, sizeof(DESCREC), 0, 0)) ++#endif + { + delete_dynamic(&desc->records); + x_free((char *)desc); +@@ -997,7 +1005,11 @@ + delete_dynamic(&dest->records); + if (myodbc_init_dynamic_array(&dest->records, sizeof(DESCREC), + src->records.max_element, ++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001 ++ src->records.alloc_increment, MYF(0))) ++#else + src->records.alloc_increment)) ++#endif + { + return set_desc_error(dest, "HY001", + "Memory allocation error", +diff -aurN a/driver/handle.c b/driver/handle.c +--- a/driver/handle.c 2016-11-29 07:40:13.000000000 -0500 ++++ b/driver/handle.c 2017-02-17 14:10:32.078797593 -0500 +@@ -409,7 +409,11 @@ + } + } + ++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001 ++ myodbc_init_dynamic_array(*param_bind, sizeof(MYSQL_BIND), elements, 10, MYF(0)); ++#else + myodbc_init_dynamic_array(*param_bind, sizeof(MYSQL_BIND), elements, 10); ++#endif + memset((*param_bind)->buffer, 0, sizeof(MYSQL_BIND) * + (*param_bind)->max_element); + +diff -aurN a/driver/parse.c b/driver/parse.c +--- a/driver/parse.c 2016-11-29 07:40:13.000000000 -0500 ++++ b/driver/parse.c 2017-02-17 14:12:00.638143846 -0500 +@@ -139,8 +139,13 @@ + + /* TODO: Store offsets rather than ptrs. In this case we will be fine + if work with copy of the originally parsed string */ ++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001 ++ myodbc_init_dynamic_array(&pq->token, sizeof(uint), 20, 10, MYF(0)); ++ myodbc_init_dynamic_array(&pq->param_pos, sizeof(uint), 10, 10, MYF(0)); ++#else + myodbc_init_dynamic_array(&pq->token, sizeof(uint), 20, 10); + myodbc_init_dynamic_array(&pq->param_pos, sizeof(uint), 10, 10); ++#endif + } + + return pq; +diff -aurN a/MYODBC_MYSQL.h b/MYODBC_MYSQL.h +--- a/MYODBC_MYSQL.h 2016-11-29 07:40:13.000000000 -0500 ++++ b/MYODBC_MYSQL.h 2017-02-17 15:04:47.153994839 -0500 +@@ -44,7 +44,7 @@ + #endif + + #ifdef THREAD +-#if MYSQL_VERSION_ID < 50703 ++#if MYSQL_VERSION_ID < 50703 || defined(MARIADB_BASE_VERSION) + #include <my_pthread.h> + #define myodbc_mutex_t pthread_mutex_t + #define myodbc_key_t pthread_key_t diff --git a/dev-db/myodbc/files/5.3.10-cxxlinkage.patch b/dev-db/myodbc/files/5.3.10-cxxlinkage.patch new file mode 100644 index 0000000..796a137 --- /dev/null +++ b/dev-db/myodbc/files/5.3.10-cxxlinkage.patch @@ -0,0 +1,29 @@ +diff -aurN a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake +--- a/cmake/FindMySQL.cmake 2016-11-29 07:40:13.000000000 -0500 ++++ b/cmake/FindMySQL.cmake 2017-02-17 13:59:18.115389096 -0500 +@@ -747,7 +747,7 @@ + endif() + + if(NOT MYSQL_CXXFLAGS) +- if(MYSQL_CXX_LINKAGE OR MYSQL_VERSION_ID GREATER 50603) ++ if(MYSQL_CXX_LINKAGE) + _mysql_conf(MYSQL_CXXFLAGS "--cxxflags") + set(MYSQL_CXX_LINKAGE 1) + else() +diff -aurN a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2018-02-10 21:41:13.161553751 -0500 ++++ b/CMakeLists.txt 2018-02-10 21:45:20.038398824 -0500 +@@ -379,10 +379,9 @@ + SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin") + SET(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib") + +-SET(LIB_SUBDIR "lib") +-IF(RPM_BUILD AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|ppc64|ppc64p7|s390x|sparc64)") +- SET(LIB_SUBDIR "lib64") +-ENDIF() ++IF(NOT LIB_SUBDIR) ++ MESSAGE(ERROR "LIB_SUBDIR is not set") ++ENDIF(NOT LIB_SUBDIR) + + MESSAGE(STATUS "Installation library subdir: ${LIB_SUBDIR}") + diff --git a/dev-db/myodbc/files/odbc.ini.m4 b/dev-db/myodbc/files/odbc.ini.m4 index 8783f4e..4255730 100644 --- a/dev-db/myodbc/files/odbc.ini.m4 +++ b/dev-db/myodbc/files/odbc.ini.m4 @@ -1,4 +1,3 @@ -# $Id$ # vim:ts=4 noexpandtab ft=dosini: # [ODBC Data Sources] diff --git a/dev-db/myodbc/files/odbcinst.ini.m4 b/dev-db/myodbc/files/odbcinst.ini.m4 index 7b3c8fc..744503c 100644 --- a/dev-db/myodbc/files/odbcinst.ini.m4 +++ b/dev-db/myodbc/files/odbcinst.ini.m4 @@ -1,4 +1,3 @@ -# $Id$ # vim:ts=4 noexpandtab ft=dosini: # [__PN__] diff --git a/dev-db/myodbc/myodbc-5.3.10.ebuild b/dev-db/myodbc/myodbc-5.3.10.ebuild new file mode 100644 index 0000000..9fd6b22 --- /dev/null +++ b/dev-db/myodbc/myodbc-5.3.10.ebuild @@ -0,0 +1,145 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +# Build is broken with ninja +CMAKE_MAKEFILE_GENERATOR=emake + +inherit cmake-multilib flag-o-matic versionator + +MAJOR="$(get_version_component_range 1-2 $PV)" +MY_PN="mysql-connector-odbc" +MY_P="${MY_PN}-${PV/_p/r}-src" + +DESCRIPTION="ODBC driver for MySQL" +HOMEPAGE="http://www.mysql.com/products/myodbc/" +SRC_URI="https://dev.mysql.com/get/Downloads/Connector-ODBC/${MAJOR}/${MY_P}.tar.gz" + +LICENSE="GPL-2" +SLOT="${MAJOR}" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="" + +# Does not build with mysql-connector-c +RDEPEND=" + dev-db/unixODBC[${MULTILIB_USEDEP}] + ~virtual/libmysqlclient-18[${MULTILIB_USEDEP}] + abi_x86_32? ( + !app-emulation/emul-linux-x86-db[-abi_x86_32(-)] + ) +" +DEPEND="${RDEPEND}" +S=${WORKDIR}/${MY_P} + +# Careful! +DRIVER_NAME="${PN}-${SLOT}" + +# Patch document path so it doesn't install files to /usr +PATCHES=( + "${FILESDIR}/${MAJOR}-cmake-doc-path.patch" + "${FILESDIR}/5.3.10-cxxlinkage.patch" +# "${FILESDIR}/${MAJOR}-mariadb-dynamic-array.patch" + "${FILESDIR}/5.2.7-my_malloc.patch" +# "${FILESDIR}/${MAJOR}-mariadb-buffer_length.patch" +) + +src_prepare() { + # Fix undefined references due to standards change +# append-cflags -std=gnu89 + + # Remove Tests + sed -i -e "s/ADD_SUBDIRECTORY(test)//" \ + "${S}/CMakeLists.txt" + + # Fix as-needed on the installer binary + echo "TARGET_LINK_LIBRARIES(myodbc-installer odbc)" >> "${S}/installer/CMakeLists.txt" + + cmake-utils_src_prepare +} + +multilib_src_configure() { +# local clientlib +# for clientlib in "mariadb" "perconaclient" "mysqlclient" "notfound" ; do +# [[ -x "${EPREFIX}/usr/$(get_libdir)/lib${clientlib}.so" ]] && break +# done +# [[ "${clientlib}x" == "notfoundx" ]] && \ +# die "Installed client library name could not be determined" + + # MYSQL_CXX_LINKAGE expects "mysql_config --cxxflags" which doesn't exist on MariaDB + mycmakeargs+=( + -DMYSQL_CXX_LINKAGE=0 + -DWITH_UNIXODBC=1 +# -DMYSQLCLIENT_LIB_NAME="${clientlib}" +# -DMYSQLCLIENT_LIB_NAME="mysqlclient" + -DWITH_DOCUMENTATION_INSTALL_PATH=/usr/share/doc/${PF} + -DMYSQL_LIB_DIR="${EPREFIX}/usr/$(get_libdir)" + -DLIB_SUBDIR="$(get_libdir)/${PN}-${MAJOR}" + -DMYSQL_INCLUDE_DIR="$(mysql_config --variable=pkgincludedir)" + -DMYSQLCLIENT_NO_THREADS=ON + -DDISABLE_GUI=ON + # The NUMA and LIBWRAP options are not really used. + # They are just copied from the server code + -DWITH_NUMA=OFF + -DWITH_LIBWRAP=OFF + ) + cmake-utils_src_configure +} + +multilib_src_install_all() { + debug-print-function ${FUNCNAME} "$@" + + dodir /usr/share/${PN}-${SLOT} + for i in odbc.ini odbcinst.ini; do + einfo "Building $i" + sed \ + -e "s,__PN__,${DRIVER_NAME},g" \ + -e "s,__PF__,${MAJOR},g" \ + -e "s,lib/libmyodbc3.so,$(get_libdir)/${PN}-${MAJOR}/libmyodbc${SLOT:0:1}a.so,g" \ + >"${D}"/usr/share/${PN}-${SLOT}/${i} \ + <"${FILESDIR}"/${i}.m4 \ + || die "Failed to build $i" + done; + mv "${D}/usr/bin/myodbc-installer" \ + "${D}/usr/bin/myodbc-installer-${MAJOR}" || die "failed to move slotted binary" +} + +pkg_config() { + + [ "${ROOT}" != "/" ] && \ + die 'Sorry, non-standard ROOT setting is not supported :-(' + + local msg='MySQL ODBC driver' + local drivers=$(/usr/bin/odbcinst -q -d) + + if echo $drivers | grep -vq "^\[${DRIVER_NAME}\]$" ; then + ebegin "Installing ${msg}" + /usr/bin/odbcinst -i -d -f /usr/share/${PN}-${SLOT}/odbcinst.ini + rc=$? + eend $rc + [ $rc -ne 0 ] && die + else + einfo "Skipping already installed ${msg}" + fi + + local sources=$(/usr/bin/odbcinst -q -s) + msg='sample MySQL ODBC DSN' + if echo $sources | grep -vq "^\[${DRIVER_NAME}-test\]$"; then + ebegin "Installing ${msg}" + /usr/bin/odbcinst -i -s -l -f /usr/share/${PN}-${SLOT}/odbc.ini + rc=$? + eend $rc + [ $rc -ne 0 ] && die + else + einfo "Skipping already installed ${msg}" + fi +} + +pkg_postinst() { + + elog "If this is a new install, please run the following command" + elog "to configure the MySQL ODBC drivers and sources:" + elog "emerge --config =${CATEGORY}/${PF}" + elog "Please note that the driver name used to form the DSN now includes the SLOT." + elog "The myodbc-install utility is installed as myodbc-install-${MAJOR}" +} |