From fed64731c9898b001a8385cf63aac5761e850e26 Mon Sep 17 00:00:00 2001 From: nia Date: Tue, 22 Jun 2021 10:12:36 +0000 Subject: mysql80: Fix build on NetBSD 9.x - Disable kqueue when EVFILT_USER is detected as missing by CMake. - Use Linux procfs when F_GETPATH is missing. - Define ppoll to pollts. --- databases/mysql80-client/distinfo | 9 ++++--- .../mysql80-client/patches/patch-configure.cmake | 28 +++++++++++++++++++--- ...h-router_src_harness_src_stdx_io_file_handle.cc | 25 +++++++++++++++++-- .../mysql80-client/patches/patch-vio_viosocket.cc | 15 ++++++------ 4 files changed, 60 insertions(+), 17 deletions(-) diff --git a/databases/mysql80-client/distinfo b/databases/mysql80-client/distinfo index 5650edebbdd..1a4d7b1ba60 100644 --- a/databases/mysql80-client/distinfo +++ b/databases/mysql80-client/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ +$NetBSD: distinfo,v 1.2 2021/06/22 10:12:36 nia Exp $ SHA1 (mysql-boost-8.0.24.tar.gz) = e640d9851c1721a0550bdca38f03cb8681d61862 RMD160 (mysql-boost-8.0.24.tar.gz) = 2577eb94d5b8651f3520706be9c40c3e924980d4 @@ -11,7 +11,7 @@ SHA1 (patch-cmake_boost.cmake) = 7452d5ef84c63bb0bd34313aa0cedafee5f41618 SHA1 (patch-cmake_os_SunOS.cmake) = 15cf67c136c2b6e608d9379290d235d71d6b769e SHA1 (patch-cmake_readline.cmake) = fb79ed969240ae2984098f72c2d3fb501154902c SHA1 (patch-config.h.cmake) = e6debea316c5bb8338afb693d704007d45b3941f -SHA1 (patch-configure.cmake) = 659b93e5a1eeaf32a2937b8201050d34e83f6b5d +SHA1 (patch-configure.cmake) = b03de49ecb8d6ce58ef24f5dcd8f0a8c95eab592 SHA1 (patch-include_CMakeLists.txt) = 289c1454d1b7e7fe8566187b3cefc722260993b6 SHA1 (patch-include_my__compare.h) = e6b3146252d1ebf2e2423ed3682621aa68cce6bd SHA1 (patch-include_my__thread.h) = 176134a238c5c2f983aadb6d1cd620165f4057bb @@ -25,12 +25,11 @@ SHA1 (patch-router_src_harness_include_mysql_harness_net_ts_impl_netif.h) = 4daf SHA1 (patch-router_src_harness_include_mysql_harness_net_ts_internet.h) = 29e019236423aaa77b71b273d009404e4fbafe73 SHA1 (patch-router_src_harness_include_mysql_harness_net_ts_local.h) = d2149f9840dc8b65a4d9d8332bcd5088b4f9b919 SHA1 (patch-router_src_harness_include_mysql_harness_tty.h) = ca883b2ed83b623922b58cf96f896de9847d37cb -SHA1 (patch-router_src_harness_src_stdx_io_file_handle.cc) = 0004dfb6a65b8774096ad58825ab5fa04858e6bf +SHA1 (patch-router_src_harness_src_stdx_io_file_handle.cc) = 5349b05663179e4ef049cfb1532514e48a3885c9 SHA1 (patch-scripts_CMakeLists.txt) = 15be14619275f0dc39c216901b2cabc6ee517300 SHA1 (patch-scripts_mysqld_safe.sh) = 0784314227657aa0bc3f4a0b4e21c173a86fa94b SHA1 (patch-sql_CMakeLists.txt) = 84af2f2e58a17bde292a665a726489b8f56f4132 SHA1 (patch-sql_conn__handler_socket__connection.cc) = b414e0d499f51750e1aa6e9dd7b4e7006456a079 SHA1 (patch-sql_item_geofunc_relchecks_bgwrap.h) = d20896bfe2391d30aa9e95834c77e7de03377d76 SHA1 (patch-sql_resourcegroups_platform_thread__attrs__api__apple.cc) = e08ed53790ac8b03b38d566fee3a2688ca6065b3 -SHA1 (patch-storage_ndb_include_ndb__global.h) = 03adf28cbd965869a0e8ea312ae719d7772e63da -SHA1 (patch-vio_viosocket.cc) = 76dfaf9c8feb39fc3043cfd83d51a47aa8a8352d +SHA1 (patch-vio_viosocket.cc) = 15dcc0dee88e736a844aacc02e9dbc6beeb915e4 diff --git a/databases/mysql80-client/patches/patch-configure.cmake b/databases/mysql80-client/patches/patch-configure.cmake index 890f803dff8..98b8d686a2a 100644 --- a/databases/mysql80-client/patches/patch-configure.cmake +++ b/databases/mysql80-client/patches/patch-configure.cmake @@ -1,8 +1,7 @@ -$NetBSD: patch-configure.cmake,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ +$NetBSD: patch-configure.cmake,v 1.2 2021/06/22 10:12:37 nia Exp $ * check for ffsll and provide a portable version if not found - -$NetBSD: patch-configure.cmake,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ +* check for EVFILT_USER, if missing disable kqueue (necessary on NetBSD 9.x) --- configure.cmake.orig 2021-03-22 08:44:50.000000000 +0000 +++ configure.cmake @@ -29,3 +28,26 @@ $NetBSD: patch-configure.cmake,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ CHECK_FUNCTION_EXISTS (fsync HAVE_FSYNC) CHECK_FUNCTION_EXISTS (gethrtime HAVE_GETHRTIME) CHECK_FUNCTION_EXISTS (getpass HAVE_GETPASS) +@@ -300,6 +297,7 @@ CHECK_SYMBOL_EXISTS(TIOCGWINSZ "sys/ioct + CHECK_SYMBOL_EXISTS(FIONREAD "sys/ioctl.h" FIONREAD_IN_SYS_IOCTL) + CHECK_SYMBOL_EXISTS(FIONREAD "sys/filio.h" FIONREAD_IN_SYS_FILIO) + CHECK_SYMBOL_EXISTS(MADV_DONTDUMP "sys/mman.h" HAVE_MADV_DONTDUMP) ++CHECK_SYMBOL_EXISTS(EVFILT_USER "sys/event.h" HAVE_EVFILT_USER) + CHECK_CXX_SOURCE_COMPILES( + "#include + #include +@@ -332,6 +330,14 @@ ELSEIF(HAVE_TIMER_CREATE AND HAVE_TIMER_ + SET(HAVE_POSIX_TIMERS 1 CACHE INTERNAL "Have POSIX timer-related functions") + ENDIF() + ++IF (NOT HAVE_EVFILT_USER) ++ SET(HAVE_KQUEUE 0) ++ SET(HAVE_KQUEUE_TIMERS 0) ++ IF(HAVE_TIMER_CREATE AND HAVE_TIMER_SETTIME) ++ SET(HAVE_POSIX_TIMERS 1 CACHE INTERNAL "Have POSIX timer-related functions") ++ ENDIF() ++ENDIF() ++ + IF(NOT HAVE_POSIX_TIMERS AND NOT HAVE_KQUEUE_TIMERS AND NOT WIN32) + MESSAGE(FATAL_ERROR "No mysys timer support detected!") + ENDIF() diff --git a/databases/mysql80-client/patches/patch-router_src_harness_src_stdx_io_file_handle.cc b/databases/mysql80-client/patches/patch-router_src_harness_src_stdx_io_file_handle.cc index 171a7587583..89cbc53d0b5 100644 --- a/databases/mysql80-client/patches/patch-router_src_harness_src_stdx_io_file_handle.cc +++ b/databases/mysql80-client/patches/patch-router_src_harness_src_stdx_io_file_handle.cc @@ -1,4 +1,4 @@ -$NetBSD: patch-router_src_harness_src_stdx_io_file_handle.cc,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ +$NetBSD: patch-router_src_harness_src_stdx_io_file_handle.cc,v 1.2 2021/06/22 10:12:37 nia Exp $ Support for NetBSD - reuses F_GETPATH code originally for macOS. Also use correct constant for the fcntl() code - PATH_MAX, not MAXPATHLEN @@ -14,7 +14,28 @@ use correct constant for the fcntl() code - PATH_MAX, not MAXPATHLEN #endif #include "mysql/harness/stdx/expected.h" -@@ -233,9 +230,9 @@ file_handle::current_path() const noexce +@@ -169,14 +167,15 @@ file_handle::current_path() const noexce + make_error_code(std::errc::bad_file_descriptor)); + } + +-#if defined(__linux__) || defined(__sun) ++#if defined(__linux__) || defined(__sun) || \ ++ (defined(__NetBSD__) && !defined(F_GETPATH)) + const std::string in = +-#if defined(__linux__) +- // /proc/self/fd/ is a symlink to the actual file +- "/proc/self/fd/"s +-#else ++#if defined(__sun) + // /proc//path/ is a symlink to the actual file + "/proc/"s + std::to_string(getpid()) + "/path/"s ++#else ++ // /proc/self/fd/ is a symlink to the actual file ++ "/proc/self/fd/"s + #endif + + std::to_string(handle_); + +@@ -233,9 +232,9 @@ file_handle::current_path() const noexce } return {std::string{path.data(), std::next(path.data(), sz)}}; diff --git a/databases/mysql80-client/patches/patch-vio_viosocket.cc b/databases/mysql80-client/patches/patch-vio_viosocket.cc index b354a390922..3e465f3e96d 100644 --- a/databases/mysql80-client/patches/patch-vio_viosocket.cc +++ b/databases/mysql80-client/patches/patch-vio_viosocket.cc @@ -1,17 +1,18 @@ -$NetBSD: patch-vio_viosocket.cc,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ +$NetBSD: patch-vio_viosocket.cc,v 1.2 2021/06/22 10:12:37 nia Exp $ -* don't use kqueue on older NetBSD which misses EVFILT_USER - -$NetBSD: patch-vio_viosocket.cc,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ +* define ppoll on older NetBSD that only has pollts --- vio/viosocket.cc.orig 2021-03-22 08:44:50.000000000 +0000 +++ vio/viosocket.cc -@@ -70,6 +70,10 @@ +@@ -70,6 +70,13 @@ #include "mysql/psi/mysql_socket.h" -+#if defined(HAVE_QUEUE) && !defined(EVFILT_USER) -+#undef HAVE_KQUEUE ++#ifdef __NetBSD__ ++#include ++#if !__NetBSD_Prereq__(9,99,71) ++#define ppoll pollts ++#endif +#endif + int vio_errno(Vio *vio MY_ATTRIBUTE((unused))) { -- cgit v1.2.3