# Buildsheet autogenerated by ravenadm tool -- Do not edit. NAMEBASE= mysql80 VERSION= 8.0.36 KEYWORDS= databases VARIANTS= standard SDESC[standard]= Multithreaded SQL database (server) HOMEPAGE= https://www.mysql.com/ CONTACT= nobody DOWNLOAD_GROUPS= main SITES[main]= MYSQL/MySQL-8.0 DISTFILE[1]= mysql-boost-8.0.36.tar.gz:main DF_INDEX= 1 SPKGS[standard]= complete server client dev man OPTIONS_AVAILABLE= ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE PERFSCHEMA PERFORMANCE OPTIONS_STANDARD= ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE PERFSCHEMA PERFORMANCE OPTGROUP_UNLIMITED= STORAGE OPTDESCR[STORAGE]= Storage engines statically compiled into server OPTGROUP[STORAGE]= ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE PERFSCHEMA OPT_ON[all]= PERFORMANCE BUILD_DEPENDS= libedit:single:standard protobuf321:dev:standard icu:dev:standard libevent:dev:standard BUILDRUN_DEPENDS= libevent:primary:standard protobuf321:primary:standard icu:primary:standard B_DEPS[linux]= patchelf:primary:standard EXRUN[client]= libedit:single:standard zlib:primary:standard zstd:primary:standard openssl11:primary:standard USERS= mysql GROUPS= mysql USERGROUP_SPKG= server USES= cpe bison cmake perl:run shebangfix zstd lz4 execinfo ssl:openssl11 pkgconfig c++:server,client cclibs:server,client DISTNAME= mysql-8.0.36 LICENSE= GPLv2:server CUSTOM1:server LICENSE_TERMS= server:{{WRKDIR}}/TERMS LICENSE_NAME= CUSTOM1:"MySQL Router License" LICENSE_FILE= GPLv2:{{WRKSRC}}/README CUSTOM1:{{WRKSRC}}/router/LICENSE.router LICENSE_AWK= TERMS:"^\/\*$$" LICENSE_SOURCE= TERMS:{{WRKSRC}}/include/mysql.h LICENSE_SCHEME= multi INFO= client:mysql CMAKE_BUILD_TYPE= Release CPE_PRODUCT= mysql CPE_VENDOR= oracle FPC_EQUIVALENT= databases/mysql80-server INFO_SUBDIR= . SHEBANG_FILES= scripts/*.pl INSTALL_REQ_TOOLCHAIN= yes PLIST_SUB= MY_DBDIR=/var/db/mysql MY_SECDIR=/var/db/mysql_secure MY_TMPDIR=/var/db/mysql_tmpdir RPCGEN= RC_SUBR= mysql-server:server SUB_FILES= my.cnf.sample SUB_LIST= MY_DBDIR=/var/db/mysql MY_SECDIR=/var/db/mysql_secure MY_TMPDIR=/var/db/mysql_tmpdir CFLAGS= -Wno-deprecated-declarations CXXFLAGS= -DNDEBUG CMAKE_ARGS= -DINSTALL_PKGCONFIGDIR="{{LOCALBASE}}/lib/pkgconfig" -DINSTALL_DOCDIR="share/doc/mysql" -DINSTALL_DOCREADMEDIR="share/doc/mysql" -DINSTALL_INCLUDEDIR="include/mysql" -DINSTALL_INFODIR="share/info" -DINSTALL_LIBDIR="lib/mysql" -DINSTALL_MANDIR="share/man" -DINSTALL_MYSQLDATADIR="/var/db/mysql" -DINSTALL_MYSQLKEYRINGDIR="etc/mysql/keyring" -DINSTALL_MYSQLSHAREDIR="share/mysql" -DINSTALL_MYSQLTESTDIR="share/mysql/tests" -DINSTALL_PLUGINDIR="lib/mysql/plugin" -DINSTALL_SBINDIR="libexec" -DINSTALL_SECURE_FILE_PRIVDIR="/var/db/mysql_secure" -DINSTALL_SHAREDIR="share" -DINSTALL_SUPPORTFILESDIR="share/mysql" -DRPATH_OPTION_PC=" -Wl,-rpath,{{PREFIX}}/lib/mysql" -DMYSQL_KEYRINGDIR="etc/mysql/keyring" -DWITH_BOOST="{{WRKSRC}}/boost" -DWITH_EDITLINE=system -DWITH_LIBEVENT=system -DWITH_PROTOBUF=system -DWITH_LZ4=system -DWITH_ZLIB=bundled -DWITH_ZSTD=system -DWITH_ICU=system -DWITH_SSL={{OPENSSLBASE}} -DINSTALL_MYSQLTESTDIR=0 -DWITH_UNIT_TESTS:BOOL=OFF [PERFSCHEMA].DESCRIPTION= Provide "Performance Schema Storage" engine [PERFSCHEMA].CMAKE_ARGS_OFF= -DWITHOUT_PERFSCHEMA_STORAGE_ENGINE=1 [PERFSCHEMA].CMAKE_ARGS_ON= -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 [EXAMPLE].DESCRIPTION= Provide "Example Storage" engine [EXAMPLE].CMAKE_ARGS_OFF= -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 [EXAMPLE].CMAKE_ARGS_ON= -DWITH_EXAMPLE_STORAGE_ENGINE=1 [BLACKHOLE].DESCRIPTION= Provide "Blackhole Storage" engine [BLACKHOLE].CMAKE_ARGS_OFF= -DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1 [BLACKHOLE].CMAKE_ARGS_ON= -DWITH_BLACKHOLE_STORAGE_ENGINE=1 [PERFORMANCE].DESCRIPTION= Enable "Performance Schema" (High RAM usage) [PERFORMANCE].SUB_LIST_OFF= PERFSCHEMRC="--skip-performance-schema" [PERFORMANCE].SUB_LIST_ON= PERFSCHEMRC="" [ARCHIVE].DESCRIPTION= Provide "Archive Storage" engine [ARCHIVE].CMAKE_ARGS_OFF= -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 [ARCHIVE].CMAKE_ARGS_ON= -DWITH_ARCHIVE_STORAGE_ENGINE=1 [FEDERATED].DESCRIPTION= Provide "Federated Storage" engine [FEDERATED].CMAKE_ARGS_OFF= -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 [FEDERATED].CMAKE_ARGS_ON= -DWITH_FEDERATED_STORAGE_ENGINE=1 [FEDERATED].SUB_LIST_OFF= FEDER="" [FEDERATED].SUB_LIST_ON= FEDER="--federated" [INNOBASE].DESCRIPTION= Provide "InnoDB Storage" engine [INNOBASE].CMAKE_ARGS_OFF= -DWITHOUT_INNOBASE_STORAGE_ENGINE=1 [INNOBASE].CMAKE_ARGS_ON= -DWITH_INNOBASE_STORAGE_ENGINE=1 post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/etc/mysql/keyring \ ${STAGEDIR}/var/db/mysql_secure \ ${STAGEDIR}/var/db/mysql_tmpdir ${INSTALL_DATA} ${WRKDIR}/my.cnf.sample \ ${STAGEDIR}${ETCDIR}/my.cnf.sample ${MV} ${STAGEDIR}${PREFIX}/share/doc/mysql/sample_mysqlrouter.conf \ ${STAGEDIR}${ETCDIR}/mysqlrouter.conf.sample ${RM} ${STAGEDIR}${MANPREFIX}/man/man1/zlib_decompress.1 \ ${STAGEDIR}${MANPREFIX}/man/man1/lz4_decompress.1 ${RM} ${STAGEDIR}${PREFIX}/*.router ${RMDIR} ${STAGEDIR}${PREFIX}/lib/mysql/plugin/debug ${RMDIR} ${STAGEDIR}${PREFIX}/run ${RM} -r ${STAGEDIR}${PREFIX}/share/doc ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/mysql/lib*.so ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/mysql/plugin/*.so ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libmysql*.so.1 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/mysqld ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/mysqlrouter/*.so # Linux doesn't like -R flags ${SED} -i'' -e 's| -R| -Wl,-rpath,|g' \ ${STAGEDIR}${PREFIX}/bin/mysql_config list=$$(cd ${STAGEDIR}${PREFIX}/bin && ${LS} * | ${AWK} \ '{ if ($$1 != "mysql_config" && $$1 != "mysqld_mult" && \ $$1 != "mysqld_safe" && $$1 != "mysqldumpslow" && \ $$1 != "mysqld_multi") print}'); \ (cd ${STAGEDIR}${PREFIX}/bin && ${STRIP_CMD} $$list) pre-configure: ${REINPLACE_CMD} -e 's|@LOCALBASE@|${LOCALBASE}|' \ -e 's|@OPENSSLLIB@|${OPENSSLLIB}|g' \ ${WRKSRC}/scripts/CMakeLists.txt ${RM} ${WRKSRC}/cmake/os/FreeBSD.cmake # current_path not supported by DragonFly ${REINPLACE_CMD} -e '/mock_server/d' \ ${WRKSRC}/router/src/CMakeLists.txt post-extract: ${RM} -rv ${WRKSRC}/sql/sql_hints.yy.cc ${WRKSRC}/sql/sql_hints.yy.h ${CP} ${FILESDIR}/ffsll.cc ${WRKSRC}/sql/ [FILE:294:descriptions/desc.server] MySQL is a very fast, multi-threaded, multi-user and robust SQL (Structured Query Language) database server. MySQL, the most popular Open Source SQL database management system, is developed, distributed, and supported by Oracle Corporation. This package contains the MySQL server components. [FILE:150:descriptions/desc.client] MySQL is a very fast, multi-threaded, multi-user and robust SQL (Structured Query Language) database server. This package contains the MySQL client. [FILE:104:distinfo] 429c5f69f3722e31807e74119d157a023277af210bfee513443cae60ebd2a86d 438154682 mysql-boost-8.0.36.tar.gz [FILE:6148:manifests/plist.server] @sample etc/mysql/my.cnf.sample @sample etc/mysql/mysqlrouter.conf.sample %%ONLY-LINUX%%lib/mysql/plugin/auth_socket.so %%RPCGEN%%lib/mysql/plugin/group_replication.so bin/ comp_err ibd2sdi innochecksum my_print_defaults myisam_ftdump myisamchk myisamlog myisampack mysql_keyring_encryption_test mysql_migrate_keyring mysql_secure_installation mysql_tzinfo_to_sql mysql_upgrade mysqld_multi mysqld_safe mysqldumpslow mysqlrouter mysqlrouter_keyring mysqlrouter_passwd mysqlrouter_plugin_info mysqltest mysqlxtest perror zlib_decompress etc/logrotate.d/mysqlrouter-log-rotate lib/ libmysqlharness.so.1 libmysqlharness_stdx.so.1 libmysqlharness_tls.so.1 libmysqlrouter.so.1 libmysqlrouter_connection_pool.so.1 libmysqlrouter_destination_status.so.1 libmysqlrouter_http.so.1 libmysqlrouter_http_auth_backend.so.1 libmysqlrouter_http_auth_realm.so.1 libmysqlrouter_io_component.so.1 libmysqlrouter_metadata_cache.so.1 libmysqlrouter_mysqlxmessages.so.1 libmysqlrouter_routing.so.1 lib/mysql/plugin/ adt_null.so auth.so auth_test_plugin.so component_audit_api_message_emit.so component_example_component1.so component_example_component2.so component_example_component3.so component_keyring_file.so component_log_filter_dragnet.so component_log_sink_json.so component_log_sink_syseventlog.so component_log_sink_test.so component_mysqlbackup.so component_mysqlx_global_reset.so component_pfs_example.so component_pfs_example_component_population.so component_query_attributes.so component_reference_cache.so component_test_audit_api_message.so component_test_backup_lock_service.so component_test_component_deinit.so component_test_host_application_signal.so component_test_mysql_command_services.so component_test_mysql_current_thread_reader.so component_test_mysql_runtime_error.so component_test_mysql_system_variable_set.so component_test_mysql_thd_store_service.so component_test_pfs_notification.so component_test_pfs_resource_group.so component_test_sensitive_system_variables.so component_test_server_telemetry_traces.so component_test_status_var_reader.so component_test_status_var_service.so component_test_status_var_service_int.so component_test_status_var_service_reg_only.so component_test_status_var_service_str.so component_test_status_var_service_unreg_only.so component_test_string_service.so component_test_string_service_charset.so component_test_string_service_long.so component_test_sys_var_service.so component_test_sys_var_service_int.so component_test_sys_var_service_same.so component_test_sys_var_service_str.so component_test_system_variable_source.so component_test_table_access.so component_test_udf_registration.so component_test_udf_services.so component_udf_reg_3_func.so component_udf_reg_avg_func.so component_udf_reg_int_func.so component_udf_reg_int_same_func.so component_udf_reg_only_3_func.so component_udf_reg_real_func.so component_udf_unreg_3_func.so component_udf_unreg_int_func.so component_udf_unreg_real_func.so component_validate_password.so conflicting_variables.so connection_control.so daemon_example.ini ddl_rewriter.so ha_mock.so keyring_file.so keyring_udf.so libdaemon_example.so libtest_framework.so libtest_services.so libtest_services_threaded.so libtest_session_attach.so libtest_session_detach.so libtest_session_in_thd.so libtest_session_info.so libtest_sql_2_sessions.so libtest_sql_all_col_types.so libtest_sql_cmds_1.so libtest_sql_commit.so libtest_sql_complex.so libtest_sql_errors.so libtest_sql_lock.so libtest_sql_processlist.so libtest_sql_replication.so libtest_sql_reset_connection.so libtest_sql_shutdown.so libtest_sql_sleep_is_connected.so libtest_sql_sqlmode.so libtest_sql_stmt.so libtest_sql_stored_procedures_functions.so libtest_sql_views_triggers.so libtest_x_sessions_deinit.so libtest_x_sessions_init.so locking_service.so mypluglib.so mysql_clone.so mysql_no_login.so pfs_example_plugin_employee.so qa_auth_client.so qa_auth_interface.so qa_auth_server.so replication_observers_example_plugin.so rewrite_example.so rewriter.so semisync_master.so semisync_replica.so semisync_slave.so semisync_source.so test_security_context.so test_services_command_services.so test_services_host_application_signal.so test_services_plugin_registry.so test_udf_services.so udf_example.so validate_password.so version_token.so lib/mysqlrouter/ connection_pool.so destination_status.so http_auth_backend.so http_auth_realm.so http_server.so io.so keepalive.so metadata_cache.so rest_api.so rest_connection_pool.so rest_metadata_cache.so rest_router.so rest_routing.so router_openssl.so router_protobuf.so routing.so libexec/mysqld share/mysql/ dictionary.txt install_rewriter.sql messages_to_clients.txt messages_to_error_log.txt mysql-log-rotate mysql.server mysqld_multi.server uninstall_rewriter.sql share/mysql/bulgarian/errmsg.sys share/mysql/charsets/ Index.xml README armscii8.xml ascii.xml cp1250.xml cp1251.xml cp1256.xml cp1257.xml cp850.xml cp852.xml cp866.xml dec8.xml geostd8.xml greek.xml hebrew.xml hp8.xml keybcs2.xml koi8r.xml koi8u.xml latin1.xml latin2.xml latin5.xml latin7.xml macce.xml macroman.xml swe7.xml share/mysql/czech/errmsg.sys share/mysql/danish/errmsg.sys share/mysql/dutch/errmsg.sys share/mysql/english/errmsg.sys share/mysql/estonian/errmsg.sys share/mysql/french/errmsg.sys share/mysql/german/errmsg.sys share/mysql/greek/errmsg.sys share/mysql/hungarian/errmsg.sys share/mysql/italian/errmsg.sys share/mysql/japanese/errmsg.sys share/mysql/korean/errmsg.sys share/mysql/norwegian/errmsg.sys share/mysql/norwegian-ny/errmsg.sys share/mysql/polish/errmsg.sys share/mysql/portuguese/errmsg.sys share/mysql/romanian/errmsg.sys share/mysql/russian/errmsg.sys share/mysql/serbian/errmsg.sys share/mysql/slovak/errmsg.sys share/mysql/spanish/errmsg.sys share/mysql/swedish/errmsg.sys share/mysql/ukrainian/errmsg.sys @dir var/lib/mysqlrouter @dir(mysql,mysql,0750) %%MY_SECDIR%% @dir(mysql,mysql,0750) %%MY_TMPDIR%% @dir(mysql,mysql,0750) etc/mysql/keyring [FILE:193:manifests/plist.client] bin/ mysql mysql_config mysql_config_editor mysql_ssl_rsa_setup mysqladmin mysqlbinlog mysqlcheck mysqldump mysqlimport mysqlpump mysqlshow mysqlslap lib/mysql/libmysqlclient.so.21 [FILE:406:manifests/plist.dev] include/mysql/ errmsg.h field_types.h my_command.h my_compress.h my_list.h mysql.h mysql_com.h mysql_time.h mysql_version.h mysqld_error.h mysqlx_ername.h mysqlx_error.h mysqlx_version.h include/mysql/mysql/ client_plugin.h plugin_auth_common.h udf_registration_types.h lib/mysql/ libmysqlclient.a libmysqlclient.so libmysqlservices.a lib/pkgconfig/mysqlclient.pc share/aclocal/mysql.m4 [FILE:656:manifests/plist.man] share/man/man1/ comp_err.1.gz ibd2sdi.1.gz innochecksum.1.gz my_print_defaults.1.gz myisam_ftdump.1.gz myisamchk.1.gz myisamlog.1.gz myisampack.1.gz mysql.1.gz mysql.server.1.gz mysql_config.1.gz mysql_config_editor.1.gz mysql_secure_installation.1.gz mysql_ssl_rsa_setup.1.gz mysql_tzinfo_to_sql.1.gz mysql_upgrade.1.gz mysqladmin.1.gz mysqlbinlog.1.gz mysqlcheck.1.gz mysqld_multi.1.gz mysqld_safe.1.gz mysqldump.1.gz mysqldumpslow.1.gz mysqlimport.1.gz mysqlman.1.gz mysqlpump.1.gz mysqlrouter.1.gz mysqlrouter_passwd.1.gz mysqlrouter_plugin_info.1.gz mysqlshow.1.gz mysqlslap.1.gz perror.1.gz share/man/man8/mysqld.8.gz [FILE:919:patches/patch-CMakeLists.txt] --- CMakeLists.txt.orig 2023-10-12 11:45:01 UTC +++ CMakeLists.txt @@ -2211,7 +2211,6 @@ ADD_SUBDIRECTORY(share) ADD_SUBDIRECTORY(libservices) IF(NOT WITHOUT_SERVER) - ADD_SUBDIRECTORY(testclients) ADD_SUBDIRECTORY(sql) ENDIF() @@ -2279,8 +2278,6 @@ ENDIF() ADD_SUBDIRECTORY(scripts) IF(NOT WITHOUT_SERVER) - ADD_SUBDIRECTORY(mysql-test) - ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess) ADD_SUBDIRECTORY(support-files) IF(WITH_INTERNAL) ADD_SUBDIRECTORY(internal) @@ -2466,6 +2463,7 @@ ENDIF() # # RPM installs documentation directly from the source tree # +IF(FALSE) IF(NOT INSTALL_LAYOUT MATCHES "RPM") INSTALL(FILES README @@ -2492,6 +2490,7 @@ IF(NOT INSTALL_LAYOUT MATCHES "RPM") PATTERN "README.build" EXCLUDE ) ENDIF() +ENDIF() # Now that we're done with all ADD_SUBDIRECTORY and thus all feature tests, # we can safely enable ASan on Clang/Win32 if needed. [FILE:848:patches/patch-cmake_install__layout.cmake] --- cmake/install_layout.cmake.orig 2023-10-12 11:45:01 UTC +++ cmake/install_layout.cmake @@ -375,19 +375,15 @@ SET(ROUTER_INSTALL_LOGDIR_STANDALONE SET(ROUTER_INSTALL_RUNTIMEDIR_STANDALONE "run") SET(ROUTER_INSTALL_BINDIR_STANDALONE "bin") -IF(LINUX) - SET(ROUTER_INSTALL_LIBDIR_STANDALONE "lib/mysqlrouter/private") -ELSE() SET(ROUTER_INSTALL_LIBDIR_STANDALONE "lib") -ENDIF() IF(WIN32) SET(ROUTER_INSTALL_PLUGINDIR_STANDALONE "lib") ELSE() SET(ROUTER_INSTALL_PLUGINDIR_STANDALONE "lib/mysqlrouter") ENDIF() -SET(ROUTER_INSTALL_LOGROTATEDIR_STANDALONE ".") +SET(ROUTER_INSTALL_LOGROTATEDIR_STANDALONE "etc/logrotate.d") SET(ROUTER_INSTALL_LOGROTATEFILE_STANDALONE "mysqlrouter-log-rotate") -SET(ROUTER_INSTALL_DOCDIR_STANDALONE "docs") +SET(ROUTER_INSTALL_DOCDIR_STANDALONE "share/doc/mysql") # # TARGZ layout [FILE:595:patches/patch-cmake_plugin.cmake] --- cmake/plugin.cmake.orig 2023-10-12 11:45:01 UTC +++ cmake/plugin.cmake @@ -273,15 +273,6 @@ MACRO(MYSQL_ADD_PLUGIN plugin_arg) # For testing purposes, we need # <...>/lib/plugin/debug/authentication_ldap_sasl_client.so - IF(ARG_CLIENT_ONLY) - INSTALL_DEBUG_TARGET(${target} - DESTINATION ${INSTALL_PLUGINDIR}/debug - COMPONENT Test) - ELSE() - INSTALL_DEBUG_TARGET(${target} - DESTINATION ${INSTALL_PLUGINDIR}/debug - COMPONENT ${INSTALL_COMPONENT}) - ENDIF() ENDIF() ELSE() IF(WITHOUT_${plugin}) [FILE:464:patches/patch-cmake_ssl.cmake] --- cmake/ssl.cmake.orig 2023-10-12 11:45:01 UTC +++ cmake/ssl.cmake @@ -499,7 +499,7 @@ ENDMACRO(MYSQL_CHECK_SSL) # or INSTALL_LIBDIR (Mac) # or INSTALL_PRIV_LIBDIR (Linux) MACRO(MYSQL_CHECK_SSL_DLLS) - IF (WITH_SSL_PATH AND (APPLE OR WIN32 OR LINUX_STANDALONE OR LINUX_RPM)) + IF (WITH_SSL_PATH AND (APPLE OR WIN32)) MESSAGE(STATUS "WITH_SSL_PATH ${WITH_SSL_PATH}") IF(LINUX) GET_FILENAME_COMPONENT(CRYPTO_EXT "${CRYPTO_LIBRARY}" EXT) [FILE:303:patches/patch-config.h.cmake] --- config.h.cmake.orig 2023-10-12 11:45:01 UTC +++ config.h.cmake @@ -79,6 +79,7 @@ #cmakedefine HAVE_FDATASYNC 1 #cmakedefine HAVE_DECL_FDATASYNC 1 #cmakedefine HAVE_FEDISABLEEXCEPT 1 +#cmakedefine HAVE_FFSLL 1 #cmakedefine HAVE_FSYNC 1 #cmakedefine HAVE_GETHRTIME 1 #cmakedefine HAVE_GETPASS 1 [FILE:2287:patches/patch-configure.cmake] * check for EVFILT_USER, if missing disable kqueue (necessary on NetBSD 9.x) --- configure.cmake.orig 2023-10-12 11:45:01 UTC +++ configure.cmake @@ -182,11 +182,6 @@ ENDIF() # INCLUDE (CheckIncludeFiles) -IF(FREEBSD) - # On FreeBSD some includes, e.g. sasl/sasl.h, is in /usr/local/include - LIST(APPEND CMAKE_REQUIRED_INCLUDES "/usr/local/include") -ENDIF() - CHECK_INCLUDE_FILES (alloca.h HAVE_ALLOCA_H) CHECK_INCLUDE_FILES (arpa/inet.h HAVE_ARPA_INET_H) CHECK_INCLUDE_FILES (dlfcn.h HAVE_DLFCN_H) @@ -240,6 +235,7 @@ CHECK_FUNCTION_EXISTS (fcntl HAVE_FCNTL) CHECK_FUNCTION_EXISTS (fdatasync HAVE_FDATASYNC) CHECK_SYMBOL_EXISTS(fdatasync "unistd.h" HAVE_DECL_FDATASYNC) CHECK_FUNCTION_EXISTS (fedisableexcept HAVE_FEDISABLEEXCEPT) +CHECK_FUNCTION_EXISTS (ffsll HAVE_FFSLL) CHECK_FUNCTION_EXISTS (fsync HAVE_FSYNC) CHECK_FUNCTION_EXISTS (gethrtime HAVE_GETHRTIME) CHECK_FUNCTION_EXISTS (getpass HAVE_GETPASS) @@ -300,6 +296,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 +329,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() @@ -563,6 +568,7 @@ int main(int ac, char **av) HAVE_SYS_GETTID) # Check for pthread_getthreadid_np() +set(CMAKE_REQUIRED_LIBRARIES pthread) CHECK_C_SOURCE_COMPILES(" #include int main(int ac, char **av) @@ -571,6 +577,7 @@ int main(int ac, char **av) return (tid != 0 ? 0 : 1); }" HAVE_PTHREAD_GETTHREADID_NP) +set(CMAKE_REQUIRED_LIBRARIES "") # Check for pthread_threadid_np() CHECK_C_SOURCE_COMPILES(" [FILE:427:patches/patch-include_my__compare.h] --- include/my_compare.h.orig 2023-10-12 11:45:01 UTC +++ include/my_compare.h @@ -49,7 +49,7 @@ But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and HA_MAX_KEY_LENGTH. */ -#define HA_MAX_KEY_LENGTH 1000 /* Max length in bytes */ +#define HA_MAX_KEY_LENGTH 4000 /* Max length in bytes */ #define HA_MAX_KEY_SEG 16 /* Max segments for key */ #define HA_MAX_POSSIBLE_KEY_BUFF (HA_MAX_KEY_LENGTH + 24 + 6 + 6) [FILE:1042:patches/patch-include_my__thread__os__id.h] --- include/my_thread_os_id.h.orig 2023-10-12 11:45:01 UTC +++ include/my_thread_os_id.h @@ -36,6 +36,10 @@ #include #endif +#ifdef __NetBSD__ +#include +#endif + #ifdef HAVE_PTHREAD_GETTHREADID_NP #include /* pthread_getthreadid_np() */ #endif /* HAVE_PTHREAD_GETTHREADID_NP */ @@ -83,17 +87,25 @@ static inline my_thread_os_id_t my_threa /* FreeBSD 10.2 */ return pthread_getthreadid_np(); #else +#ifdef __NetBSD__ + return (int)_lwp_self(); +#else #ifdef HAVE_INTEGER_PTHREAD_SELF +# ifdef __DragonFly__ + return syscall(SYS_lwp_gettid); +# else /* Unknown platform, fallback. */ return pthread_self(); +# endif /* __DragonFly__ */ #else /* Feature not available. */ return 0; #endif /* HAVE_INTEGER_PTHREAD_SELF */ +#endif /* __NetBSD__ */ #endif /* HAVE_PTHREAD_GETTHREADID_NP */ #endif /* _WIN32 */ #endif /* HAVE_SYS_GETTID */ -#endif /* HAVE_SYS_THREAD_SELFID */ +#endif /* HAVE_PTHREAD_THREADID_NP */ } #endif /* MY_THREAD_OS_ID_INCLUDED */ [FILE:480:patches/patch-include_myisam.h] --- include/myisam.h.orig 2023-10-12 11:45:01 UTC +++ include/myisam.h @@ -60,7 +60,7 @@ The following defines can be increased if necessary. But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and MI_MAX_KEY_LENGTH. */ -#define MI_MAX_KEY_LENGTH 1000 /* Max length in bytes */ +#define MI_MAX_KEY_LENGTH 4000 /* Max length in bytes */ #define MI_MAX_KEY_SEG 16 /* Max segments for key */ #define MI_MAX_KEY_BUFF (MI_MAX_KEY_LENGTH + MI_MAX_KEY_SEG * 6 + 8 + 8) [FILE:353:patches/patch-include_tables__contained__in.h] --- include/tables_contained_in.h.orig 2023-10-12 11:45:01 UTC +++ include/tables_contained_in.h @@ -26,9 +26,14 @@ #include +#include "my_config.h" #include "my_inttypes.h" #include "sql/sql_optimizer.h" +#ifndef HAVE_FFSLL +int ffsll(longlong); +#endif + #ifdef _MSC_VER #include #pragma intrinsic(_BitScanForward64) [FILE:695:patches/patch-include_violite.h] $NetBSD: patch-include_violite.h,v 1.1 2022/11/27 22:12:25 nia Exp $ pthread_t on NetBSD is a pointer to a struct. To account for the C++ type system we need to use an actual NULL pointer rather than an incompatible integer type. --- include/violite.h.orig 2023-10-12 11:45:01 UTC +++ include/violite.h @@ -343,7 +343,11 @@ struct Vio { It is initialized to 0 here, meaning don't attempt to send a signal, to keep non-server code unaffected. */ +#ifdef __NetBSD__ + std::optional thread_id = nullptr; +#else std::optional thread_id = 0; +#endif sigset_t signal_mask; // Signal mask /* Flag to indicate whether we are in poll or shutdown. [FILE:1049:patches/patch-libmysql_CMakeLists.txt] --- libmysql/CMakeLists.txt.orig 2023-10-12 11:45:01 UTC +++ libmysql/CMakeLists.txt @@ -253,7 +253,7 @@ IF(WIN32) SET(HAVE_WIN32_DNS_SRV 1 PARENT_SCOPE) SET(HAVE_DNS_SRV 1) MESSAGE(STATUS "Found Win32 DNS SRV APIs") -ELSEIF(FREEBSD) +ELSEIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD|DragonFly|NetBSD|MidnightBSD") SET(HAVE_DNS_SRV 1) SET(HAVE_UNIX_DNS_SRV 1 PARENT_SCOPE) MESSAGE(STATUS "BSD built in DNS SRV APIs") @@ -281,7 +281,6 @@ IF(WIN32) ENDIF() # LDAP authentication SASL client plug-in -ADD_SUBDIRECTORY(authentication_ldap) # FIDO authentication client plugin ADD_SUBDIRECTORY(authentication_fido) @@ -331,10 +330,6 @@ ENDIF() IF(UNIX) SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}") - IF(NOT FREEBSD AND NOT APPLE) - STRING_APPEND(OS_SHARED_LIB_VERSION - ".${SHARED_LIB_MINOR_VERSION}.${SHARED_LIB_PATCH_VERSION}") - ENDIF() # Name of shared library is libmysqlclient on Unix SET(UNIX_OUTPUT_NAME OUTPUT_NAME mysqlclient) SET(UNIX_VERSION VERSION "${OS_SHARED_LIB_VERSION}") [FILE:297:patches/patch-libmysql_dns__srv.cc] --- libmysql/dns_srv.cc.orig 2023-10-12 11:45:01 UTC +++ libmysql/dns_srv.cc @@ -31,7 +31,7 @@ #ifdef HAVE_UNIX_DNS_SRV -#ifdef __FreeBSD__ +#if defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __MidnightBSD__ #include #endif #include [FILE:2034:patches/patch-mysys_kqueue__timers.cc] $NetBSD: patch-mysys_kqueue__timers.cc,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ * support pre NetBSD 10 __intptr_t udata type * Fix for systems whcich do not define EVFILT_USER --- mysys/kqueue_timers.cc.orig 2023-10-12 11:45:01 UTC +++ mysys/kqueue_timers.cc @@ -40,6 +40,18 @@ #include "mysys_err.h" #include "mysys_priv.h" /* key_thread_timer_notifier */ +#ifdef __NetBSD__ +#include +#if __NetBSD_Version__ < 999001400 +#define KEVENT_UDATA_TYPE_CAST (__intptr_t) +#else +#define KEVENT_UDATA_TYPE_CAST +#endif +#else +#define KEVENT_UDATA_TYPE_CAST +#endif + + /* Kernel event queue file descriptor. */ static int kq_fd = -1; @@ -69,10 +81,12 @@ static void *timer_notify_thread_func(vo } if (kev.filter == EVFILT_TIMER) { - timer = static_cast(kev.udata); + timer = static_cast((void *)kev.udata); assert(timer->id == kev.ident); timer->notify_function(timer); +#ifdef EVFILT_USER } else if (kev.filter == EVFILT_USER) +#endif break; } @@ -91,7 +105,9 @@ static void *timer_notify_thread_func(vo static int start_helper_thread(void) { struct kevent kev; +#ifdef EVFILT_USER EV_SET(&kev, 0, EVFILT_USER, EV_ADD, 0, 0, 0); +#endif if (kevent(kq_fd, &kev, 1, NULL, 0, NULL) < 0) { my_message_local(ERROR_LEVEL, EE_FAILED_TO_CREATE_TIMER, errno); @@ -134,7 +150,9 @@ int my_timer_initialize(void) { void my_timer_deinitialize(void) { struct kevent kev; +#ifdef EVFILT_USER EV_SET(&kev, 0, EVFILT_USER, 0, NOTE_TRIGGER, 0, 0); +#endif if (kevent(kq_fd, &kev, 1, NULL, 0, NULL) < 0) my_message_local(ERROR_LEVEL, @@ -165,7 +183,7 @@ int my_timer_create(my_timer_t *timer) { int my_timer_set(my_timer_t *timer, unsigned long time) { struct kevent kev; - EV_SET(&kev, timer->id, EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, time, timer); + EV_SET(&kev, timer->id, EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, time,KEVENT_UDATA_TYPE_CAST timer); return kevent(kq_fd, &kev, 1, NULL, 0, NULL); } [FILE:1962:patches/patch-mysys_my__default.cc] --- mysys/my_default.cc.orig 2023-10-12 11:45:01 UTC +++ mysys/my_default.cc @@ -204,7 +204,7 @@ bool no_defaults = false; /* Which directories are searched for options (and in which order) */ -#define MAX_DEFAULT_DIRS 6 +#define MAX_DEFAULT_DIRS 7 #define DEFAULT_DIRS_SIZE (MAX_DEFAULT_DIRS + 1) /* Terminate with NULL */ static const char **default_directories = nullptr; @@ -922,6 +922,14 @@ static int search_default_file_with_ext( return 1; /* Ignore wrong files */ } + if (strstr(name, "/etc") == name) + { + fprintf(stderr, + "error: Config file %s in invalid location, please move to or merge with /usr/local%s\n", + name,name); + goto err; + } + while (true) { auto fileline = mysql_file_getline(buff, sizeof(buff), fp, is_login_file); char *linebuff = fileline.get(); @@ -1311,7 +1319,8 @@ void my_print_default_files(const char * end[(strlen(end) - 1)] = ' '; else strxmov(end, conf_file, *ext, " ", NullS); - fputs(name, stdout); + if (strstr(name, "/etc") != name) + fputs(name, stdout); } } } @@ -1651,13 +1660,8 @@ static const char **init_default_directo #else - errors += add_directory(alloc, "/etc/", dirs); - errors += add_directory(alloc, "/etc/mysql/", dirs); - -#if defined(DEFAULT_SYSCONFDIR) - if (DEFAULT_SYSCONFDIR[0]) - errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs); -#endif /* DEFAULT_SYSCONFDIR */ + errors += add_directory(alloc, "/usr/local/etc/", dirs); + errors += add_directory(alloc, "/usr/local/etc/mysql/", dirs); #endif @@ -1723,7 +1727,7 @@ int check_file_permissions(const char *f #if !defined(_WIN32) MY_STAT stat_info; - if (!my_stat(file_name, &stat_info, flags)) return 1; + if (!my_stat(file_name, &stat_info, flags)) return 0; /* Ignore .mylogin.cnf file if not exclusively readable/writable by current user. [FILE:435:patches/patch-plugin_password__validation_validate__password.cc] --- plugin/password_validation/validate_password.cc.orig 2023-10-12 11:45:01 UTC +++ plugin/password_validation/validate_password.cc @@ -25,6 +25,8 @@ #include #include #include +/* solve clash between libc++ bitset::test() and test macro from my_global.h */ +#undef test #include #include #include [FILE:317:patches/patch-plugin_x_src_interface_ssl__session__options.h] --- plugin/x/src/interface/ssl_session_options.h.orig 2023-10-12 11:45:01 UTC +++ plugin/x/src/interface/ssl_session_options.h @@ -25,6 +25,7 @@ #ifndef PLUGIN_X_SRC_INTERFACE_SSL_SESSION_OPTIONS_H_ #define PLUGIN_X_SRC_INTERFACE_SSL_SESSION_OPTIONS_H_ +#include #include #include [FILE:381:patches/patch-router_cmake_set__rpath.cmake] --- router/cmake/set_rpath.cmake.orig 2023-10-12 11:45:01 UTC +++ router/cmake/set_rpath.cmake @@ -27,8 +27,7 @@ ELSE() ENDIF() SET(CMAKE_INSTALL_RPATH) -IF(INSTALL_LAYOUT STREQUAL "STANDALONE" - OR INSTALL_LAYOUT STREQUAL "SVR4") +IF(FALSE) # rpath for lib/mysqlrouter/ plugins that want to find lib/ IF(LINUX) SET(RPATH_PLUGIN_TO_LIB "${RPATH_ORIGIN}/private") [FILE:395:patches/patch-router_src_harness_include_mysql_harness_net__ts_impl_netif.h] --- router/src/harness/include/mysql/harness/net_ts/impl/netif.h.orig 2023-10-12 11:45:01 UTC +++ router/src/harness/include/mysql/harness/net_ts/impl/netif.h @@ -32,6 +32,8 @@ #include #if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || \ + defined(__DragonFly__) || \ + defined(__NetBSD__) || \ defined(__sun__) #define HAVE_IFADDRS_H #endif [FILE:890:patches/patch-router_src_harness_include_mysql_harness_net__ts_internet.h] --- router/src/harness/include/mysql/harness/net_ts/internet.h.orig 2023-10-12 11:45:01 UTC +++ router/src/harness/include/mysql/harness/net_ts/internet.h @@ -43,6 +43,7 @@ #include // inet_ntop #include // getaddrinfo #include // in_addr_t +#include // u_int32_t #include // in6_addr_t #include // TCP_NODELAY #include // ioctl @@ -598,8 +599,12 @@ class resolver_base { static constexpr flags canonical_name = AI_CANONNAME; static constexpr flags numeric_host = AI_NUMERICHOST; static constexpr flags numeric_service = AI_NUMERICSERV; +#ifdef AI_V4MAPPED static constexpr flags v4_mapped = AI_V4MAPPED; +#endif +#ifdef AI_ALL static constexpr flags all_matching = AI_ALL; +#endif static constexpr flags address_configured = AI_ADDRCONFIG; }; [FILE:773:patches/patch-router_src_harness_include_mysql_harness_net_ts_local.h] $NetBSD: patch-router_src_harness_include_mysql_harness_net_ts_local.h,v 1.1 2021/05/13 15:25:20 jdolecek Exp $ NetBSD has uucred, not sockpeercred. --- router/src/harness/include/mysql/harness/net_ts/local.h.orig 2023-10-12 11:45:01 UTC +++ router/src/harness/include/mysql/harness/net_ts/local.h @@ -44,7 +44,7 @@ #ifdef NET_TS_HAS_UNIX_SOCKET -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__NetBSD__) #include #endif @@ -228,7 +228,7 @@ class cred { #elif defined(__FreeBSD__) || defined(__APPLE__) using value_type = struct xucred; #elif defined(__NetBSD__) - using value_type = struct sockpeercred; + using value_type = struct uucred; #else #error "unsupported OS" #endif [FILE:287:patches/patch-router_src_harness_include_mysql_harness_tty.h] --- router/src/harness/include/mysql/harness/tty.h.orig 2023-10-12 11:45:01 UTC +++ router/src/harness/include/mysql/harness/tty.h @@ -38,6 +38,10 @@ #include #endif +#ifndef TABDLY +#define TABDLY 0 +#endif + class HARNESS_EXPORT Tty { public: using fd_type = int; [FILE:356:patches/patch-router_src_harness_src_stdx_io_file__handle.cc] --- router/src/harness/src/stdx/io/file_handle.cc.orig 2023-10-12 11:45:01 UTC +++ router/src/harness/src/stdx/io/file_handle.cc @@ -285,7 +285,10 @@ file_handle::current_path() const noexce return {path_name}; #else -#error unsupported OS + // don't use this + std::string path_name; + path_name.resize(1025); + return {path_name}; #endif } [FILE:279:patches/patch-router_src_router_include_mysqlrouter_utils.h] --- router/src/router/include/mysqlrouter/utils.h.orig 2023-10-12 11:45:01 UTC +++ router/src/router/include/mysqlrouter/utils.h @@ -32,6 +32,7 @@ #include #include #include +#include #include "my_compiler.h" // MY_ATTRIBUTE [FILE:2924:patches/patch-scripts_CMakeLists.txt] --- scripts/CMakeLists.txt.orig 2023-10-12 11:45:01 UTC +++ scripts/CMakeLists.txt @@ -214,11 +214,7 @@ IF(MY_COMPILER_IS_GNU_OR_CLANG) STRING(REGEX REPLACE "-std=c..[0-9]+" "" CXXFLAGS "${CXXFLAGS}") ENDIF() -IF(FREEBSD) - SET (PERL_PATH "/usr/local/bin/perl") -ELSE() - SET (PERL_PATH "/usr/bin/perl") -ENDIF() + SET (PERL_PATH "@LOCALBASE@/bin/perl") IF(UNIX) # SHELL_PATH, FIND_PROC, CHECK_PID are used by mysqld_safe @@ -237,14 +233,9 @@ IF(UNIX) "ps -p $PID | grep -v mysqld_safe | grep -- $MYSQLD > /dev/null") ENDIF() - IF(NOT FIND_PROC) - # BSD style - EXECUTE_PROCESS(COMMAND ps -uaxww - OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result) - IF(result MATCHES 0) +IF(NOT FIND_PROC AND CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD|MidnightBSD") SET( FIND_PROC "ps -uaxww | grep -v mysqld_safe | grep -- $MYSQLD | grep $PID > /dev/null") - ENDIF() ENDIF() IF(NOT FIND_PROC) @@ -280,7 +271,7 @@ SET(pkglibdir ${prefix}/${INSTALL_LIBDIR SET(pkgplugindir ${prefix}/${INSTALL_PLUGINDIR}) SET(localstatedir ${MYSQL_DATADIR}) -IF(SOLARIS) +IF(TRUE) SET(RPATH_OPTION " -R$pkglibdir") ENDIF() @@ -336,6 +327,8 @@ MACRO(EXTRACT_LINK_LIBRARIES target var) SET(${var} "${${var}}-L${dir} " ) ENDIF() SET(${var} "${${var}}-l${lib} " ) + ELSEIF(lib STREQUAL "-pthread") + SET(${var} "${${var}}-pthread " ) ELSE() SET(${var} "${${var}}-l${lib} " ) ENDIF() @@ -358,21 +351,10 @@ ELSE() GET_TARGET_PROPERTY(LIBMYSQL_OS_OUTPUT_NAME libmysql OUTPUT_NAME) ENDIF() +STRING(REPLACE "-lssl" "-L@OPENSSLLIB@ -Wl,-rpath,@OPENSSLLIB@ -lssl" CLIENT_LIBS "${CLIENT_LIBS}") SET(CONFIG_CLIENT_LIBS "${CLIENT_LIBS}") SET(CONFIG_LIBS_PRIVATE "${CLIENT_LIBS}") SET(CONFIG_REQUIRES_PRIVATE "") -# ssl.cmake should have used pkg-config rather than cmake to locate ssl -IF (WITH_SSL STREQUAL "system") - # We have implemented "system" for other platforms as well, but those - # are non-native packages. - IF(LINUX OR SOLARIS OR FREEBSD) - SET(CONFIG_REQUIRES_PRIVATE "openssl") - STRING(REPLACE "-lssl" "" CONFIG_LIBS_PRIVATE "${CONFIG_LIBS_PRIVATE}") - STRING(REPLACE "-lcrypto" "" CONFIG_LIBS_PRIVATE "${CONFIG_LIBS_PRIVATE}") - STRING(REGEX REPLACE "[ ]+" " " CONFIG_LIBS_PRIVATE - "${CONFIG_LIBS_PRIVATE}") - ENDIF() -ENDIF() MESSAGE(STATUS "CONFIG_CLIENT_LIBS ${CONFIG_CLIENT_LIBS}") MESSAGE(STATUS "CONFIG_LIBS_PRIVATE ${CONFIG_LIBS_PRIVATE}") @@ -438,7 +420,7 @@ ELSE() FOREACH(file ${BIN_SCRIPTS}) IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh - ${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY + ${CMAKE_CURRENT_BINARY_DIR}/${file} @ONLY ) ELSEIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.pl.in) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.pl.in [FILE:828:patches/patch-sql_CMakeLists.txt] --- sql/CMakeLists.txt.orig 2023-10-12 11:45:01 UTC +++ sql/CMakeLists.txt @@ -647,6 +647,10 @@ IF(BUILD_IS_SINGLE_CONFIG) ENDIF() ENDIF() +IF(NOT HAVE_FFSLL) +LIST(APPEND SQL_SHARED_SOURCES ffsll.cc) +ENDIF() + # BISON_TARGET( # [COMPILE_FLAGS ] # [DEFINES_FILE ] @@ -741,10 +745,10 @@ ENDIF() IF(LINUX) LIST(APPEND SQL_SHARED_SOURCES resourcegroups/platform/thread_attrs_api_linux.cc) -ELSEIF(APPLE) +ELSEIF(APPLE OR CMAKE_SYSTEM_NAME MATCHES "(DragonFly|NetBSD)") LIST(APPEND SQL_SHARED_SOURCES resourcegroups/platform/thread_attrs_api_apple.cc) -ELSEIF(FREEBSD) +ELSEIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD|MidnightBSD") LIST(APPEND SQL_SHARED_SOURCES resourcegroups/platform/thread_attrs_api_freebsd.cc) ELSEIF(SOLARIS) [FILE:450:patches/patch-sql_resourcegroups_platform_thread__attrs__api__apple.cc] --- sql/resourcegroups/platform/thread_attrs_api_apple.cc.orig 2023-10-12 11:45:01 UTC +++ sql/resourcegroups/platform/thread_attrs_api_apple.cc @@ -85,7 +85,11 @@ bool set_thread_priority(int, my_thread_ uint32_t num_vcpus_using_affinity() { return 0; } uint32_t num_vcpus_using_config() { +#ifdef __APPLE__ int name[2] = {CTL_HW, HW_AVAILCPU}; +#else + int name[2] = {CTL_HW, HW_NCPU}; +#endif int ncpu; size_t size = sizeof(ncpu); [FILE:1992:patches/patch-sql_sys__vars.cc] --- sql/sys_vars.cc.orig 2023-10-12 11:45:01 UTC +++ sql/sys_vars.cc @@ -2330,7 +2330,7 @@ static Sys_var_ulong Sys_interactive_tim "The number of seconds the server waits for activity on an interactive " "connection before closing it", SESSION_VAR(net_interactive_timeout), CMD_LINE(REQUIRED_ARG), - VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1)); + VALID_RANGE(1, INT_MAX32 / 1000), DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1)); static Sys_var_ulong Sys_join_buffer_size( "join_buffer_size", "The size of the buffer that is used for full joins", @@ -3212,7 +3212,7 @@ static Sys_var_ulong Sys_net_read_timeou "Number of seconds to wait for more data from a connection before " "aborting the read", SESSION_VAR(net_read_timeout), CMD_LINE(REQUIRED_ARG), - VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_READ_TIMEOUT), BLOCK_SIZE(1), + VALID_RANGE(1, INT_MAX32 / 1000), DEFAULT(NET_READ_TIMEOUT), BLOCK_SIZE(1), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(nullptr), ON_UPDATE(fix_net_read_timeout)); @@ -3233,7 +3233,7 @@ static Sys_var_ulong Sys_net_write_timeo "Number of seconds to wait for a block to be written to a connection " "before aborting the write", SESSION_VAR(net_write_timeout), CMD_LINE(REQUIRED_ARG), - VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_WRITE_TIMEOUT), BLOCK_SIZE(1), + VALID_RANGE(1, INT_MAX32 / 1000), DEFAULT(NET_WRITE_TIMEOUT), BLOCK_SIZE(1), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(nullptr), ON_UPDATE(fix_net_write_timeout)); @@ -5318,7 +5318,7 @@ static Sys_var_ulong Sys_net_wait_timeou "The number of seconds the server waits for activity on a " "connection before closing it", SESSION_VAR(net_wait_timeout), CMD_LINE(REQUIRED_ARG), - VALID_RANGE(1, IF_WIN(INT_MAX32 / 1000, LONG_TIMEOUT)), + VALID_RANGE(1, INT_MAX32 / 1000), DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1)); static Sys_var_plugin Sys_default_storage_engine( [FILE:448:patches/patch-storage_innobase_include_detail_ut_large__page__alloc-linux.h] --- storage/innobase/include/detail/ut/large_page_alloc-linux.h.orig 2023-10-12 11:45:01 UTC +++ storage/innobase/include/detail/ut/large_page_alloc-linux.h @@ -34,6 +34,10 @@ this program; if not, write to the Free #include #include +#ifndef MAP_HUGETLB +#define MAP_HUGETLB 0 +#endif + #include "mysqld_error.h" #include "storage/innobase/include/detail/ut/helper.h" #include "storage/innobase/include/ut0log.h" [FILE:450:patches/patch-storage_innobase_include_srv0mon.h] --- storage/innobase/include/srv0mon.h.orig 2023-10-12 11:45:01 UTC +++ storage/innobase/include/srv0mon.h @@ -40,6 +40,10 @@ Foundation, Inc., 51 Franklin St, Fifth /* Required for FreeBSD so that INT64_MAX is defined. */ #define __STDC_LIMIT_MACROS #endif /* __STDC_LIMIT_MACROS */ +#ifdef __DragonFly__ +/* The hack above doen't work for dragonfly, stdint.h already imported */ +#include +#endif #include [FILE:482:patches/patch-storage_myisam_mi__dynrec.cc] --- storage/myisam/mi_dynrec.cc.orig 2023-10-12 11:45:01 UTC +++ storage/myisam/mi_dynrec.cc @@ -92,6 +92,9 @@ bool mi_dynmap_file(MI_INFO *info, my_of mapping. When swap space is not reserved one might get SIGSEGV upon a write if no physical memory is available. */ +#ifndef MAP_NORESERVE +#define MAP_NORESERVE 0 +#endif info->s->file_map = (uchar *)my_mmap( nullptr, (size_t)size, info->s->mode == O_RDONLY ? PROT_READ : PROT_READ | PROT_WRITE, [FILE:411:patches/patch-vio_viosocket.cc] * define ppoll on older NetBSD that only has pollts --- vio/viosocket.cc.orig 2023-10-12 11:45:01 UTC +++ vio/viosocket.cc @@ -70,6 +70,13 @@ #include "mysql/psi/mysql_socket.h" +#ifdef __NetBSD__ +#include +#if !__NetBSD_Prereq__(9,99,71) +#define ppoll pollts +#endif +#endif + int vio_errno(Vio *vio [[maybe_unused]]) { /* These transport types are not Winsock based. */ #ifdef _WIN32 [FILE:364:files/ffsll.cc] /* * Public domain version of ffsll by Niclas Rosenvik * used here for platforms that miss a system ffsll. */ #include int ffsll(long long int v) { size_t llbits = sizeof(long long int) * 8; long long unsigned int comp_mask = 1; for (size_t i=0; i < llbits; ++i) { if (v & comp_mask) { return (i+1); } comp_mask <<= 1; } return 0; } [FILE:2182:files/my.cnf.sample.in] [client] port = 3306 socket = /tmp/mysql.sock [mysql] prompt = \u@\h [\d]>\_ no_auto_rehash [mysqld] user = mysql port = 3306 socket = /tmp/mysql.sock bind-address = 127.0.0.1 basedir = %%PREFIX%% datadir = %%MY_DBDIR%% tmpdir = %%MY_TMPDIR%% slave-load-tmpdir = %%MY_TMPDIR%% secure-file-priv = %%MY_SECDIR%% log-bin = mysql-bin log-output = TABLE master-info-repository = TABLE relay-log-info-repository = TABLE relay-log-recovery = 1 slow-query-log = 1 server-id = 1 sync_binlog = 1 sync_relay_log = 1 binlog_cache_size = 16M expire_logs_days = 30 default_password_lifetime = 0 enforce-gtid-consistency = 1 gtid-mode = ON safe-user-create = 1 lower_case_table_names = 1 explicit-defaults-for-timestamp = 1 myisam-recover-options = BACKUP,FORCE open_files_limit = 32768 table_open_cache = 16384 table_definition_cache = 8192 net_retry_count = 16384 key_buffer_size = 256M max_allowed_packet = 64M query_cache_type = 0 query_cache_size = 0 long_query_time = 0.5 innodb_buffer_pool_size = 1G innodb_data_home_dir = %%MY_DBDIR%% innodb_log_group_home_dir = %%MY_DBDIR%% innodb_data_file_path = ibdata1:128M:autoextend innodb_temp_data_file_path = ibtmp1:128M:autoextend innodb_flush_method = O_DIRECT innodb_log_file_size = 256M innodb_log_buffer_size = 16M innodb_write_io_threads = 8 innodb_read_io_threads = 8 innodb_autoinc_lock_mode = 2 skip-symbolic-links [mysqldump] max_allowed_packet = 256M quote_names quick [FILE:2478:files/mysql-server.in] #!/bin/sh # # PROVIDE: mysql # REQUIRE: LOGIN # KEYWORD: shutdown # # Add the following line to /etc/rc.conf to enable mysql: # mysql_enable (bool): Set to "NO" by default. # Set it to "YES" to enable MySQL. # mysql_limits (bool): Set to "NO" by default. # Set it to yes to run `limits -e -U mysql` # just before mysql starts. # mysql_dbdir (str): Default to "%%MY_DBDIR%%" # Base database directory. # mysql_confdir (str): Default to "%%ETCDIR%%" # Base configuration directory. # mysql_optfile (str): Server-specific option file. # Set it in the rc.conf or default behaviour of # `mysqld_safe` itself, will be picking # ${mysql_confdir}/my.cnf if it exists. # mysql_pidfile (str): Custum PID file path and name. # Default to "${mysql_dbdir}/${hostname}.pid". # mysql_args (str): Custom additional arguments to be passed # to mysqld_safe (default empty). # . /etc/rc.subr name="mysql" rcvar=mysql_enable load_rc_config $name : ${mysql_enable="NO"} : ${mysql_limits="NO"} : ${mysql_dbdir="%%MY_DBDIR%%"} : ${mysql_confdir="%%ETCDIR%%"} if [ -f "${mysql_confdir}/my.cnf" ]; then : ${mysql_optfile="${mysql_confdir}/my.cnf"} elif [ -f "${mysql_dbdir}/my.cnf" ]; then : ${mysql_optfile="${mysql_dbdir}/my.cnf"} fi if [ ! -z "${mysql_optfile}" ]; then mysql_extra="--defaults-extra-file=${mysql_optfile}" fi mysql_user="mysql" mysql_limits_args="-e -U ${mysql_user}" : ${hostname:=`/bin/hostname`} pidfile=${mysql_pidfile:-"${mysql_dbdir}/${hostname}.pid"} command="/usr/sbin/daemon" command_args="-c -f %%PREFIX%%/bin/mysqld_safe ${mysql_extra} --basedir=%%PREFIX%% --datadir=${mysql_dbdir} --pid-file=${pidfile} --user=${mysql_user} ${mysql_args} %%FEDER%% %%PERFSCHEMRC%%" procname="%%PREFIX%%/libexec/mysqld" start_precmd="${name}_prestart" start_postcmd="${name}_poststart" mysql_install_db="%%PREFIX%%/bin/mysql_install_db" mysql_install_db_args="${mysql_extra} --basedir=%%PREFIX%% --datadir=${mysql_dbdir} --mysqld-file=${procname} --user=${mysql_user}" mysql_create_auth_tables() { eval $mysql_install_db $mysql_install_db_args >/dev/null 2>/dev/null } mysql_prestart() { if [ ! -d "${mysql_dbdir}/mysql/." ]; then mysql_create_auth_tables || return 1 fi if checkyesno mysql_limits; then eval `/usr/bin/limits ${mysql_limits_args}` 2>/dev/null else return 0 fi } mysql_poststart() { local timeout=15 while [ ! -f "${pidfile}" -a ${timeout} -gt 0 ]; do timeout=$(( timeout - 1 )) sleep 1 done return 0 } run_rc_command "$1" [FILE:576:files/pkg-message-server.in] ***************************************************************************** Remember to run mysql_upgrade the first time you start the MySQL server after an upgrade from an earlier version. Initial password for first time use of MySQL is saved in $HOME/.mysql_secret ie. when you want to use "mysql -u root -p" first you should see password in /root/.mysql_secret MySQL57 has a default %%ETCDIR%%/my.cnf, remember to replace it wit your own or set `mysql_optfile="$YOUR_CNF_FILE` in rc.conf. ***************************************************************************** [FILE:28:files/special.mk] ETCDIR= ${PREFIX}/etc/mysql