Add mysql80-client and mysql80-server to pkgsrc wip

Add mysql 8.0.19 to pkgsrc wip, this is version 8 of the mysql suite
maintained by oracle.
This work is done so that pkgsrc someday might have a more modern mysql
implementaion.
Changes from earlier versions: to many to mention.
This commit is contained in:
Niclas Rosenvik 2020-01-25 20:12:29 +00:00
parent 5f9c0ddd64
commit ee44be292a
51 changed files with 21310 additions and 0 deletions

14
mysql80-client/DESCR Normal file
View File

@ -0,0 +1,14 @@
MySQL is a SQL (Structured Query Language) database server. SQL is the most
popular database language in the world. MySQL is a client-server implementation
that consists of a server daemon `mysqld' and many different client
programs/libraries.
The main goals of MySQL are speed and robustness.
The base upon which MySQL is built is a set of routines that have been used in
a highly demanding production environment for many years. While MySQL is still
in development it already offers a rich and highly useful function set.
The official way to pronounce 'MySQL' is 'My Ess Que Ell' (Not MY-SEQUEL).
This package contains the MySQL client programs and libraries.

15
mysql80-client/Makefile Normal file
View File

@ -0,0 +1,15 @@
# $NetBSD: Makefile,v 1.27 2019/10/14 20:19:29 adam Exp $
PKGNAME= ${DISTNAME:S/-/-client-/}
COMMENT= MySQL 8, a free SQL database (client)
CONFLICTS= mysql3-client-[0-9]*
.include "Makefile.common"
CMAKE_ARGS+= -DWITHOUT_SERVER=ON
UNWRAP_FILES+= scripts/mysql_config
INFO_FILES= yes
INSTALL_DIRS+= client include libmysql man scripts testclients
.include "../../mk/bsd.pkg.mk"

View File

@ -0,0 +1,137 @@
# $NetBSD: Makefile.common,v 1.21 2019/10/14 20:19:29 adam Exp $
#
# used by wip/mysql80-client/Makefile
# used by wip/mysql80-server/Makefile
DISTNAME= mysql-8.0.19
CATEGORIES= databases
MASTER_SITES= ${MASTER_SITE_MYSQL:=MySQL-8.0/}
MAINTAINER?= pkgsrc-users@NetBSD.org
HOMEPAGE= https://www.mysql.com/
LICENSE= gnu-gpl-v2
DISTINFO_FILE?= ${.CURDIR}/../../wip/mysql80-client/distinfo
PATCHDIR?= ${.CURDIR}/../../wip/mysql80-client/patches
USE_CMAKE= yes
USE_LANGUAGES= c c++
USE_TOOLS+= bash bison gmake perl:run
USE_GCC_RUNTIME= yes
USE_BUILTIN.libevent= no
.include "../../mk/bsd.prefs.mk"
.include "options.mk"
# MYSQL_USER username of the database administrator
# MYSQL_GROUP group of the database administrator
# MYSQL_DATADIR home directory (location of the databases)
# MYSQL_PIDFILE process ID file
# MYSQL_CHARSET default character set
# MYSQL_EXTRA_CHARSET additional character set to be compiled in
MYSQL_USER?= mysql
MYSQL_GROUP?= mysql
MYSQL_DATADIR?= ${VARBASE}/mysql
MYSQL_PIDFILE?= ${MYSQL_DATADIR}/${HOST}.pid
MYSQL_CHARSET?= latin1
MYSQL_COLLATION?= latin1_swedish_ci
MYSQL_EXTRA_CHARSET?= all
PKG_USERS_VARS+= MYSQL_USER
PKG_GROUPS_VARS+= MYSQL_GROUP
CONFIG_SHELL= ${TOOLS_PATH.bash}
CFLAGS.IRIX+= -DIRIX5
BUILD_DEFS+= VARBASE
# paths
CMAKE_ARGS+= -DINSTALL_DOCDIR="share/doc/mysql"
CMAKE_ARGS+= -DINSTALL_DOCREADMEDIR="share/doc/mysql"
CMAKE_ARGS+= -DINSTALL_INCLUDEDIR="include/mysql"
CMAKE_ARGS+= -DINSTALL_INFODIR="info"
CMAKE_ARGS+= -DINSTALL_MANDIR="${PKGMANDIR}"
CMAKE_ARGS+= -DINSTALL_MYSQLSHAREDIR="share/mysql"
CMAKE_ARGS+= -DINSTALL_MYSQLTESTDIR="share/mysql/test"
CMAKE_ARGS+= -DINSTALL_PLUGINDIR="lib/mysql/plugin"
CMAKE_ARGS+= -DINSTALL_SBINDIR="sbin"
CMAKE_ARGS+= -DINSTALL_SUPPORTFILESDIR="share/mysql"
CMAKE_ARGS+= -DMYSQL_DATADIR=${MYSQL_DATADIR}
CMAKE_ARGS+= -DCMAKE_BUILD_TYPE=Release
CMAKE_ARGS+= -DWITH_BOOST="system"
CMAKE_ARGS+= -DWITH_ICU="system"
CMAKE_ARGS+= -DWITH_LIBEVENT="system"
CMAKE_ARGS+= -DWITH_LZ4="system"
CMAKE_ARGS+= -DWITH_RAPIDJSON="bundled"
CMAKE_ARGS+= -DWITH_SSL="system"
CMAKE_ARGS+= -DWITH_ZLIB="system"
CMAKE_ARGS+= -DWITH_ZSTD="system"
CMAKE_ARGS+= -DDEFAULT_CHARSET=${MYSQL_CHARSET}
CMAKE_ARGS+= -DDEFAULT_COLLATION=${MYSQL_COLLATION}
CMAKE_ARGS+= -DWITH_EXTRA_CHARSETS=${MYSQL_EXTRA_CHARSET}
CMAKE_ARGS+= -DWITH_UNIT_TESTS=OFF
CMAKE_ARGS+= -DFORCE_INSOURCE_BUILD=1
# we need atomic builtins
.if ${OPSYS} == "NetBSD" && ${MACHINE_ARCH} == "i386"
GNU_ARCH.i386= i586
CFLAGS+= -march=i586
.endif
CPPFLAGS+= -Dunix
CFLAGS+= -DUSE_OLD_FUNCTIONS # 3.23.x compat
#CFLAGS+= -D__STDC_FORMAT_MACROS=1 # always defined too late
.if ${OPSYS} != "Interix"
CFLAGS+= -fPIC -DPIC
CXXFLAGS+= -fPIC -DPIC
.endif
CMAKE_ARGS.SunOS+= -DFORCE_UNSUPPORTED_COMPILER=YES
# Force HAVE_CURSES_H on Solaris since the configure script is broken
# and does not properly detect this, breaking the build later on. Also
# explicitly disable epoll support as it is Linux-specific.
CMAKE_ARGS.SunOS+= -DHAVE_SYS_EPOLL_H=NO
CFLAGS.SunOS+= -DHAVE_CURSES_H
CXXFLAGS.SunOS+= -DHAVE_CURSES_H
.include "../../mk/pthread.buildlink3.mk"
.if defined(PTHREAD_TYPE) && (${PTHREAD_TYPE} == "pth")
CFLAGS+= -DSIGNALS_DONT_BREAK_READ
CXXFLAGS+= -DSIGNALS_DONT_BREAK_READ
.endif
LDFLAGS+= ${COMPILER_RPATH_FLAG}${PREFIX}/lib/mysql
SUBST_CLASSES+= scr
SUBST_STAGE.scr= pre-configure
SUBST_FILES.scr= scripts/mysqld_safe.sh
SUBST_FILES.scr+= support-files/mysql.server.sh
SUBST_SED.scr= -e "s,chown,${CHOWN},g"
SUBST_SED.scr+= -e "s,/bin/sh,${RCD_SCRIPTS_SHELL},g"
SUBST_SED.scr+= -e "s,@SHELL_PATH@,${RCD_SCRIPTS_SHELL},g"
SUBST_MESSAGE.scr= Fixing scripts.
# Don't use the base system "libedit" under NetBSD because MySQL expects
# an incompatible prototype for "rl_completion_entry_function".
.if ${OPSYS} == "NetBSD"
USE_BUILTIN.editline= no
.endif
CMAKE_ARGS+= -DWITH_EDITLINE="system"
.include "../../mk/curses.buildlink3.mk"
.include "../../archivers/lz4/buildlink3.mk"
.include "../../archivers/zstd/buildlink3.mk"
.include "../../devel/boost-libs/buildlink3.mk"
.include "../../devel/editline/buildlink3.mk"
.include "../../devel/libevent/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../security/openssl/buildlink3.mk"
.include "../../textproc/icu/buildlink3.mk"

64
mysql80-client/PLIST Normal file
View File

@ -0,0 +1,64 @@
@comment $NetBSD$
bin/mysql
bin/mysql_client_test
bin/mysql_config
bin/mysql_config_editor
bin/mysql_ssl_rsa_setup
bin/mysqladmin
bin/mysqlbinlog
bin/mysqlcheck
bin/mysqldump
bin/mysqlimport
bin/mysqlpump
bin/mysqlshow
bin/mysqlslap
include/mysql/errmsg.h
include/mysql/field_types.h
include/mysql/my_command.h
include/mysql/my_compress.h
include/mysql/my_list.h
include/mysql/mysql.h
include/mysql/mysql/client_plugin.h
include/mysql/mysql/plugin_auth_common.h
include/mysql/mysql/udf_registration_types.h
include/mysql/mysql_com.h
include/mysql/mysql_time.h
include/mysql/mysql_version.h
include/mysql/mysqld_error.h
lib/libmysqlclient.a
lib/libmysqlclient.so
lib/libmysqlclient.so.21
lib/libmysqlclient.so.21.1.19
lib/pkgconfig/mysqlclient.pc
man/man1/comp_err.1
man/man1/ibd2sdi.1
man/man1/innochecksum.1
man/man1/lz4_decompress.1
man/man1/my_print_defaults.1
man/man1/myisam_ftdump.1
man/man1/myisamchk.1
man/man1/myisamlog.1
man/man1/myisampack.1
man/man1/mysql.1
man/man1/mysql.server.1
man/man1/mysql_config.1
man/man1/mysql_config_editor.1
man/man1/mysql_secure_installation.1
man/man1/mysql_ssl_rsa_setup.1
man/man1/mysql_tzinfo_to_sql.1
man/man1/mysql_upgrade.1
man/man1/mysqladmin.1
man/man1/mysqlbinlog.1
man/man1/mysqlcheck.1
man/man1/mysqld_multi.1
man/man1/mysqld_safe.1
man/man1/mysqldump.1
man/man1/mysqldumpslow.1
man/man1/mysqlimport.1
man/man1/mysqlman.1
man/man1/mysqlpump.1
man/man1/mysqlshow.1
man/man1/mysqlslap.1
man/man1/perror.1
man/man1/zlib_decompress.1
man/man8/mysqld.8

5
mysql80-client/TODO Normal file
View File

@ -0,0 +1,5 @@
fix va_start warnings
fix alloca warnings
is kqueue_timers.cc really working
correctly without EVFILT_USER ?
perhaps implement thread affinity for netbsd and irix

View File

@ -0,0 +1,18 @@
# $NetBSD: buildlink3.mk,v 1.3 2019/02/05 20:19:55 adam Exp $
BUILDLINK_TREE+= mysql-client
.if !defined(MYSQL_CLIENT_BUILDLINK3_MK)
MYSQL_CLIENT_BUILDLINK3_MK:=
BUILDLINK_API_DEPENDS.mysql-client+= mysql-client>=8.0.19<8.1
BUILDLINK_PKGSRCDIR.mysql-client?= ../../wip/mysql80-client
BUILDLINK_INCDIRS.mysql-client?= include/mysql
BUILDLINK_LIBDIRS.mysql-client?= lib
.include "../../devel/libevent/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../security/openssl/buildlink3.mk"
.endif # MYSQL_CLIENT_BUILDLINK3_MK
BUILDLINK_TREE+= -mysql-client

37
mysql80-client/distinfo Normal file
View File

@ -0,0 +1,37 @@
$NetBSD: distinfo,v 1.35 2019/12/06 14:05:11 jperkin Exp $
SHA1 (mysql-8.0.19.tar.gz) = 97fde10d454379e7fe2f16f8e9cd54678130a072
RMD160 (mysql-8.0.19.tar.gz) = 95e609d2180269815796a91abe41b8a22ab41846
SHA512 (mysql-8.0.19.tar.gz) = d76d20461f28848081e8c9c738cb8f38d69de5dd18f92ee6a70f7c556a7ad5b9828dc850293c5a3347321cae0340e150ad95292a3bf867ab4cfe66e5022c5eb9
Size (mysql-8.0.19.tar.gz) = 266717983 bytes
SHA1 (patch-CMakeLists.txt) = 16ca9bcbcaefdc8bd1bc0e8dc89ca7a347d14675
SHA1 (patch-client_CMakeLists.txt) = fc937a1e096c91695231fe98783ca5fb8425f78e
SHA1 (patch-client_mysqladmin.cc) = e3459bd009ef7ac0b7acece6bbcb82777a384db3
SHA1 (patch-cmake_boost.cmake) = 39ac27f5b9ae9c3f115b6b331703eb121e2abfb7
SHA1 (patch-cmake_os_SunOS.cmake) = 15cf67c136c2b6e608d9379290d235d71d6b769e
SHA1 (patch-cmake_readline.cmake) = fb79ed969240ae2984098f72c2d3fb501154902c
SHA1 (patch-config.h.cmake) = 4d5f65f59a3693424e783c4a30ec36819e03e708
SHA1 (patch-configure.cmake) = b219f4f42ecc27b06c4036d28fe0346dbbec1c4a
SHA1 (patch-extra_libedit_chartype.h) = 84d90134a684923df29c04ef0c636d49c17b85bf
SHA1 (patch-extra_libedit_vi.c) = 6bf4f527f59386e09164cd01d676684daa9629eb
SHA1 (patch-include_CMakeLists.txt) = 289c1454d1b7e7fe8566187b3cefc722260993b6
SHA1 (patch-include_my__compare.h) = e6b3146252d1ebf2e2423ed3682621aa68cce6bd
SHA1 (patch-include_my__thread.h) = 176134a238c5c2f983aadb6d1cd620165f4057bb
SHA1 (patch-include_my__thread__os__id.h) = 383923523623d0811915d5d75c523904102dcf43
SHA1 (patch-include_tables__contained__in.h) = c332b10760ef8b7f16b1e94821b79589f525e4e7
SHA1 (patch-libmysql_CMakeLists.txt) = 0ad668d788eedb8248e26cacfb097242308b8cd2
SHA1 (patch-mysys_kqueue__timers.cc) = 511a9a52112d09a067191109caa7220baa42c73e
SHA1 (patch-mysys_stacktrace.cc) = 6792ceaae3c3b0d70bd8b6c848a128d50397e6f4
SHA1 (patch-plugin_group__replication_libmysqlgcs_rpcgen.cmake) = 0a4177ea5ad24bc0469dd2bf196f57943f1686d8
SHA1 (patch-plugin_group__replication_libmysqlgcs_src_bindings_xcom_xcom_xcom__memory.c) = f56bde286a5da53975aacd5227ab3a1be00ddde0
SHA1 (patch-plugin_group__replication_libmysqlgcs_src_bindings_xcom_xcom_xcom__transport.c) = 11805653556a0129e8f064e824087525b5909109
SHA1 (patch-router_CMakeLists.txt) = 9bfd1278c42070ada0606dfff34a66b8b95d0413
SHA1 (patch-router_src_harness_include_mysql_harness_tty.h) = ca883b2ed83b623922b58cf96f896de9847d37cb
SHA1 (patch-scripts_CMakeLists.txt) = e8399d75331795f4ad0c7138d5850eab1bbc34ca
SHA1 (patch-scripts_mysqld_safe.sh) = 0784314227657aa0bc3f4a0b4e21c173a86fa94b
SHA1 (patch-sql_CMakeLists.txt) = c05cdca38e7538ff58ab0ee74bdaebe73f68e1a2
SHA1 (patch-sql_conn__handler_socket__connection.cc) = b414e0d499f51750e1aa6e9dd7b4e7006456a079
SHA1 (patch-sql_resourcegroups_platform_thread__attrs__api__apple.cc) = b82e9f0e41bd380dab33c82705960f3f85985c31
SHA1 (patch-storage_ndb_include_ndb__global.h) = 03adf28cbd965869a0e8ea312ae719d7772e63da
SHA1 (patch-storage_ndb_mcc_frontend_dojo_dojox_mobile_build_build.sh) = a7b6597dce68b848fbfe1d1da3d6d385cf0b7f4e
SHA1 (patch-vio_viosocket.cc) = 0f70ce1167ba2cd6ec22efbcfaaee7de0f0f816e

35
mysql80-client/options.mk Normal file
View File

@ -0,0 +1,35 @@
# $NetBSD: options.mk,v 1.3 2019/02/05 20:19:55 adam Exp $
PKG_OPTIONS_VAR= PKG_OPTIONS.mysql8
# ndb-cluster does not configure with cmake
PKG_SUPPORTED_OPTIONS+= ndb-cluster
PKG_SUPPORTED_OPTIONS+= memcached
.include "../../mk/bsd.options.mk"
# Enable InnoDB Memcached support
PLIST_VARS+= memcached
.if !empty(PKG_OPTIONS:Mmemcached)
PLIST.memcached= yes
CMAKE_ARGS+= -DWITH_INNODB_MEMCACHED=ON
CMAKE_ARGS+= -DWITH_BUNDLED_MEMCACHED=ON
.else
CMAKE_ARGS+= -DWITH_INNODB_MEMCACHED=OFF
.endif
# Enable Sphinx SE support
# http://sphinxsearch.com/docs/current.html#sphinxse-overview
#PLIST_VARS+= sphinx
#.if !empty(PKG_OPTIONS:Msphinx) || make(distinfo) || make(makesum) || make(mdi)
#SPHINX_VER= 2.2.11
#DISTFILES= ${DEFAULT_DISTFILES} sphinx-${SPHINX_VER}-release${EXTRACT_SUFX}
#SITES.sphinx-2.2.11-release.tar.gz= http://sphinxsearch.com/files/
#. if !empty(PKGPATH:Mdatabases/mysql56-server)
#MESSAGE_SRC= ${PKGDIR}/MESSAGE ${PKGDIR}/MESSAGE.sphinx
#. endif
#PLIST.sphinx= yes
#post-extract:
# ${CP} -R ${WRKDIR}/sphinx-${SPHINX_VER}-release/mysqlse ${WRKSRC}/storage/sphinx
#.endif

View File

@ -0,0 +1,31 @@
$NetBSD: patch-CMakeLists.txt,v 1.2 2019/01/20 18:22:10 maya Exp $
Split configuration between mysql-client and mysql-server.
--- CMakeLists.txt.orig 2019-12-09 19:53:17.000000000 +0000
+++ CMakeLists.txt
@@ -1329,8 +1329,9 @@ ADD_SUBDIRECTORY(utilities)
ADD_SUBDIRECTORY(share)
ADD_SUBDIRECTORY(libservices)
-IF(NOT WITHOUT_SERVER)
+IF(WITHOUT_SERVER)
ADD_SUBDIRECTORY(testclients)
+ELSE()
ADD_SUBDIRECTORY(sql)
ENDIF()
@@ -1382,11 +1383,9 @@ IF(ENABLE_GCOV)
INCLUDE(fastcov)
ENDIF()
-IF(UNIX)
+IF(WITHOUT_SERVER)
ADD_SUBDIRECTORY(man)
-ENDIF()
-
-IF(NOT WITHOUT_SERVER)
+ELSE()
ADD_SUBDIRECTORY(packaging/rpm-common)
ADD_SUBDIRECTORY(packaging/rpm-oel)
ADD_SUBDIRECTORY(packaging/rpm-fedora)

View File

@ -0,0 +1,60 @@
$NetBSD: patch-client_CMakeLists.txt,v 1.3 2019/10/14 20:19:29 adam Exp $
Split configuration between mysql-client and mysql-server.
--- client/CMakeLists.txt.orig 2019-12-09 19:53:17.000000000 +0000
+++ client/CMakeLists.txt
@@ -28,6 +28,7 @@ DISABLE_MISSING_PROFILE_WARNING()
## Subdirectory with common client code.
ADD_SUBDIRECTORY(base)
## Subdirectory for mysqlpump code.
+IF(WITHOUT_SERVER)
ADD_SUBDIRECTORY(dump)
MYSQL_ADD_EXECUTABLE(mysql
@@ -38,6 +39,7 @@ MYSQL_ADD_EXECUTABLE(mysql
readline.cc
LINK_LIBRARIES mysqlclient client_base ${EDITLINE_LIBRARY}
)
+ENDIF()
IF(NOT WITHOUT_SERVER)
MYSQL_ADD_EXECUTABLE(mysql_upgrade
@@ -53,6 +55,7 @@ IF(SOLARIS_SPARC AND CMAKE_BUILD_TYPE_UP
)
ENDIF()
+IF(NOT WITHOUT_SERVER)
MYSQL_ADD_EXECUTABLE(mysqltest
mysqltest.cc
mysqltest/error_names.cc
@@ -68,6 +71,7 @@ MYSQL_ADD_EXECUTABLE(mysqltest
ENABLE_EXPORTS
LINK_LIBRARIES mysqlclient
)
+ELSE()
MYSQL_ADD_EXECUTABLE(mysqlcheck
check/mysqlcheck.cc
check/mysqlcheck_core.cc
@@ -123,17 +127,20 @@ MYSQL_ADD_EXECUTABLE(mysql_config_editor
mysql_config_editor.cc
LINK_LIBRARIES mysqlclient
)
+ENDIF()
+IF(NOT WITHOUT_SERVER)
MYSQL_ADD_EXECUTABLE(mysql_secure_installation
mysql_secure_installation.cc
LINK_LIBRARIES mysqlclient
)
+ELSE()
MYSQL_ADD_EXECUTABLE(mysql_ssl_rsa_setup
logger.cc
mysql_ssl_rsa_setup.cc
path.cc
LINK_LIBRARIES mysys
)
-
+ENDIF()
# "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/".
IF(WIN32)
MYSQL_ADD_EXECUTABLE(echo echo.cc)

View File

@ -0,0 +1,23 @@
$NetBSD: patch-client_mysqladmin.cc,v 1.1 2016/09/16 06:49:11 adam Exp $
Redefine signals for Irix.
--- client/mysqladmin.cc.orig 2019-12-09 19:53:17.000000000 +0000
+++ client/mysqladmin.cc
@@ -413,8 +413,14 @@ int main(int argc, char *argv[]) {
commands = temp_argv;
if (tty_password) opt_password = get_tty_password(NullS);
- (void)signal(SIGINT, endprog); /* Here if abort */
- (void)signal(SIGTERM, endprog); /* Here if abort */
+#ifdef IRIX5
+#define _MYSQL_END_TYPE (void (*)(...))
+#else
+#define _MYSQL_END_TYPE
+#endif
+
+ (void)signal(SIGINT, _MYSQL_END_TYPE endprog); /* Here if abort */
+ (void)signal(SIGTERM, _MYSQL_END_TYPE endprog); /* Here if abort */
if (opt_bind_addr) mysql_options(&mysql, MYSQL_OPT_BIND, opt_bind_addr);
if (opt_compress) mysql_options(&mysql, MYSQL_OPT_COMPRESS, NullS);

View File

@ -0,0 +1,23 @@
$NetBSD$
Allow newer boost.
--- cmake/boost.cmake.orig 2019-12-09 19:53:17.000000000 +0000
+++ cmake/boost.cmake
@@ -293,16 +293,6 @@ STRING(REGEX REPLACE
MESSAGE(STATUS "BOOST_VERSION_NUMBER is ${BOOST_VERSION_NUMBER}")
-IF(NOT BOOST_MAJOR_VERSION EQUAL 10)
- COULD_NOT_FIND_BOOST()
-ENDIF()
-
-IF(NOT BOOST_MINOR_VERSION EQUAL 70)
- MESSAGE(WARNING "Boost minor version found is ${BOOST_MINOR_VERSION} "
- "we need 70"
- )
- COULD_NOT_FIND_BOOST()
-ENDIF()
MESSAGE(STATUS "BOOST_INCLUDE_DIR ${BOOST_INCLUDE_DIR}")

View File

@ -0,0 +1,22 @@
$NetBSD$
* Do not attempt to detect ISA, it conflicts with wrappers.
--- cmake/os/SunOS.cmake.orig 2019-12-09 19:53:17.000000000 +0000
+++ cmake/os/SunOS.cmake
@@ -32,6 +32,7 @@ ELSE()
SET(SOLARIS_INTEL 1)
ENDIF()
+IF(0)
IF (NOT "${CMAKE_C_FLAGS}${CMAKE_CXX_FLAGS}" MATCHES "-m32|-m64")
IF(NOT FORCE_UNSUPPORTED_COMPILER)
MESSAGE("Adding -m64")
@@ -41,6 +42,7 @@ IF (NOT "${CMAKE_C_FLAGS}${CMAKE_CXX_FLA
STRING_APPEND(CMAKE_CXX_LINK_FLAGS " -m64")
ENDIF()
ENDIF()
+ENDIF()
INCLUDE(CheckTypeSize)
CHECK_TYPE_SIZE("void *" SIZEOF_VOIDP)

View File

@ -0,0 +1,19 @@
$NetBSD: patch-cmake_readline.cmake,v 1.1 2016/09/16 06:49:11 adam Exp $
Fix for pkgsrc editline.
--- cmake/readline.cmake.orig 2016-06-30 06:22:11.000000000 +0000
+++ cmake/readline.cmake
@@ -112,10 +112,10 @@ ENDMACRO()
MACRO (FIND_SYSTEM_EDITLINE)
FIND_PATH(FOUND_EDITLINE_READLINE
- NAMES editline/readline.h
+ NAMES readline/readline.h
)
IF(FOUND_EDITLINE_READLINE)
- SET(EDITLINE_INCLUDE_DIR "${FOUND_EDITLINE_READLINE}/editline")
+ SET(EDITLINE_INCLUDE_DIR "${FOUND_EDITLINE_READLINE}/readline")
ELSE()
# Different path on FreeBSD
FIND_PATH(FOUND_EDIT_READLINE_READLINE

View File

@ -0,0 +1,24 @@
$NetBSD$
* bstring.h is needed for bzero on some platforms.
* check for ffsll and provide a portable version for sytems that
don't have it.
--- config.h.cmake.orig 2019-12-09 19:53:17.000000000 +0000
+++ config.h.cmake
@@ -41,6 +41,7 @@
/* Header files */
#cmakedefine HAVE_ALLOCA_H 1
#cmakedefine HAVE_ARPA_INET_H 1
+#cmakedefine HAVE_BSTRING_H 1
#cmakedefine HAVE_DLFCN_H 1
#cmakedefine HAVE_EXECINFO_H 1
#cmakedefine HAVE_FPU_CONTROL_H 1
@@ -90,6 +91,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_GETNAMEINFO 1

View File

@ -0,0 +1,30 @@
$NetBSD$
* bstring.h is need for bzero on some platforms
* check for ffsll and provide a portable version if not found
--- configure.cmake.orig 2019-12-09 19:53:17.000000000 +0000
+++ configure.cmake
@@ -199,13 +199,9 @@ 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 (bstring.h HAVE_BSTRING_H)
CHECK_INCLUDE_FILES (dlfcn.h HAVE_DLFCN_H)
CHECK_INCLUDE_FILES (endian.h HAVE_ENDIAN_H)
CHECK_INCLUDE_FILES (execinfo.h HAVE_EXECINFO_H)
@@ -269,6 +265,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 (getnameinfo HAVE_GETNAMEINFO)

View File

@ -0,0 +1,16 @@
$NetBSD$
Exclude DragonFly & OpenBSD
--- extra/libedit/chartype.h.orig 2019-12-09 19:53:17.000000000 +0000
+++ extra/libedit/chartype.h
@@ -49,7 +49,8 @@
TODO : Verify if FreeBSD & AIX stores ISO 10646 in wchar_t. */
#if !defined(__NetBSD__) && !defined(__sun) \
&& !(defined(__APPLE__) && defined(__MACH__)) \
- && !defined(__FreeBSD__) && !defined(_AIX)
+ && !defined(__FreeBSD__) && !defined(_AIX) \
+ && !defined(__DragonFly__) && !defined(__OpenBSD__)
#ifndef __STDC_ISO_10646__
/* In many places it is assumed that the first 127 code points are ASCII
* compatible, so ensure wchar_t indeed does ISO 10646 and not some other

View File

@ -0,0 +1,24 @@
$NetBSD$
DragonFly BSD build fix
--- extra/libedit/vi.c.orig 2019-12-09 19:53:17.000000000 +0000
+++ extra/libedit/vi.c
@@ -919,7 +919,7 @@ vi_comment_out(EditLine *el, Int c __att
* NB: posix implies that we should enter insert mode, however
* this is against historical precedent...
*/
-#if defined(__weak_reference) && !defined(__FreeBSD__)
+#if defined(__weak_reference) && !defined(__FreeBSD__) && !defined(__DragonFly__)
__weakref_visible char *my_get_alias_text(const char *)
__weak_reference(get_alias_text);
#endif
@@ -928,7 +928,7 @@ protected el_action_t
vi_alias(EditLine *el __attribute__((__unused__)),
Int c __attribute__((__unused__)))
{
-#if defined(__weak_reference) && !defined(__FreeBSD__)
+#if defined(__weak_reference) && !defined(__FreeBSD__) && !defined(__DragonFly__)
char alias_name[3];
char *alias_text;

View File

@ -0,0 +1,23 @@
$NetBSD: patch-include_CMakeLists.txt,v 1.1 2016/09/16 06:49:11 adam Exp $
Only mysql-client installs includes.
--- include/CMakeLists.txt.orig 2019-12-09 19:53:17.000000000 +0000
+++ include/CMakeLists.txt
@@ -44,6 +44,7 @@ SET(HEADERS_MYSQL_DIR
mysql/udf_registration_types.h
)
+IF(WITHOUT_SERVER)
INSTALL(FILES ${HEADERS}
DESTINATION ${INSTALL_INCLUDEDIR}
COMPONENT Development
@@ -53,7 +54,7 @@ INSTALL(FILES ${HEADERS_MYSQL_DIR}
DESTINATION ${INSTALL_INCLUDEDIR}/mysql
COMPONENT Development
)
-
+ENDIF()
# openssl/applink.c must be built into applications linking with libmysql.dll
IF (WIN32 AND OPENSSL_APPLINK_C)
INSTALL(FILES ${OPENSSL_APPLINK_C}

View File

@ -0,0 +1,15 @@
$NetBSD: patch-include_my__compare.h,v 1.1 2016/09/16 06:49:11 adam Exp $
Adjust HA_MAX_KEY_LENGTH x4.
--- include/my_compare.h.orig 2019-12-09 19:53:17.000000000 +0000
+++ 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)

View File

@ -0,0 +1,18 @@
$NetBSD: patch-include_my__thread.h,v 1.1 2016/09/16 06:49:11 adam Exp $
--- include/my_thread.h.orig 2019-12-09 19:53:17.000000000 +0000
+++ include/my_thread.h
@@ -39,6 +39,13 @@
#include "my_inttypes.h"
#include "my_macros.h"
+/* defines __NetBSD_Version__ */
+#if defined(__NetBSD__)
+#include <sys/param.h>
+#endif
+
+#include <signal.h>
+
#ifndef ETIME
#define ETIME ETIMEDOUT /* For FreeBSD */
#endif

View File

@ -0,0 +1,35 @@
$NetBSD: patch-include_my__thread__os__id.h,v 1.1 2016/09/27 09:01:59 fhajny Exp $
Add support for NetBSD.
--- include/my_thread_os_id.h.orig 2019-12-09 19:53:17.000000000 +0000
+++ include/my_thread_os_id.h
@@ -36,6 +36,10 @@
#include <unistd.h>
#endif
+#ifdef __NetBSD__
+#include <lwp.h>
+#endif
+
#ifdef HAVE_PTHREAD_GETTHREADID_NP
#include <pthread_np.h> /* pthread_getthreadid_np() */
#endif /* HAVE_PTHREAD_GETTHREADID_NP */
@@ -83,6 +87,9 @@ 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
/* Unknown platform, fallback. */
return pthread_self();
@@ -90,6 +97,7 @@ static inline my_thread_os_id_t my_threa
/* Feature not available. */
return 0;
#endif /* HAVE_INTEGER_PTHREAD_SELF */
+#endif /* __NetBSD__ */
#endif /* HAVE_PTHREAD_GETTHREADID_NP */
#endif /* _WIN32 */
#endif /* HAVE_SYS_GETTID */

View File

@ -0,0 +1,24 @@
$NetBSD$
* some systems have ffsll in strings.h
* for systems that don't have ffsll, use the provided version
--- include/tables_contained_in.h.orig 2019-12-09 19:53:17.000000000 +0000
+++ include/tables_contained_in.h
@@ -26,6 +26,16 @@
#include <string.h>
+#include "my_config.h"
+
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+
+#ifndef HAVE_FFSLL
+int ffsll(longlong);
+#endif
+
#include "my_inttypes.h"
#include "sql/sql_optimizer.h"

View File

@ -0,0 +1,70 @@
$NetBSD: patch-libmysql_CMakeLists.txt,v 1.4 2019/10/14 20:19:29 adam Exp $
Do not install libmysqlclient with the server.
Generate versioned lib symlinks on FreeBSD to supress PLIST divergence.
authentication_ldap and libmysql_api_test require libmysqld.
--- libmysql/CMakeLists.txt.orig 2019-12-09 19:53:17.000000000 +0000
+++ libmysql/CMakeLists.txt
@@ -241,13 +241,13 @@ IF(WIN32)
ADD_SUBDIRECTORY(authentication_win)
LIST(APPEND LIBS_TO_MERGE auth_win_client)
ENDIF()
-
-# LDAP authentication SASL client plugin
-MESSAGE(STATUS "Creating LDAP authentication SASL client library.")
-ADD_SUBDIRECTORY(authentication_ldap)
# Merge several convenience libraries into one big mysqlclient
+IF(WITHOUT_SERVER)
MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} COMPONENT Development)
+ELSE()
+MERGE_CONVENIENCE_LIBRARIES(mysqlclient SKIP_INSTALL ${LIBS_TO_MERGE} COMPONENT Development)
+ENDIF()
TARGET_LINK_LIBRARIES(mysqlclient PRIVATE ${LIBS_TO_LINK})
# Visual Studio users need debug static library for debug projects
@@ -283,12 +283,21 @@ ENDIF()
# Merge several convenience libraries into one big mysqlclient
# and link them together into shared library.
+IF(WITHOUT_SERVER)
MERGE_LIBRARIES_SHARED(libmysql ${LIBS_TO_MERGE}
EXPORTS
${CLIENT_API_FUNCTIONS}
${CLIENT_API_FUNCTIONS_UNDOCUMENTED}
${CLIENT_API_NONBLOCKING_FUNCTIONS}
COMPONENT SharedLibraries)
+ELSE()
+MERGE_LIBRARIES_SHARED(libmysql SKIP_INSTALL ${LIBS_TO_MERGE}
+ EXPORTS
+ ${CLIENT_API_FUNCTIONS}
+ ${CLIENT_API_FUNCTIONS_UNDOCUMENTED}
+ ${CLIENT_API_NONBLOCKING_FUNCTIONS}
+ COMPONENT SharedLibraries)
+ENDIF()
TARGET_LINK_LIBRARIES(libmysql PRIVATE ${LIBS_TO_LINK})
IF(WIN32)
@@ -302,7 +311,7 @@ ENDIF()
IF(UNIX)
# libtool compatability
- IF(FREEBSD OR APPLE)
+ IF(APPLE)
SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}")
ELSE()
SET(OS_SHARED_LIB_VERSION
@@ -366,6 +375,7 @@ CONFIGURE_FILE(api_test.c.in ${CMAKE_CUR
# from @CLIENT_API_FUNCTIONS@ are declared by <mysql.h>. It will fail
# to run if not all of these symbols are exported by the library.
#
+IF(NOT WITHOUT_SERVER)
MYSQL_ADD_EXECUTABLE(libmysql_api_test
${CMAKE_CURRENT_BINARY_DIR}/api_test.c
LINK_LIBRARIES libmysql ${LIBRT}
@@ -386,3 +396,4 @@ ADD_CUSTOM_COMMAND(TARGET libmysql_api_t
COMMAND libmysql_api_test
> ${CMAKE_CURRENT_BINARY_DIR}/libmysql_api_test.out
)
+ENDIF()

View File

@ -0,0 +1,72 @@
$NetBSD$
* support pre NetBSD 10 __intptr_t udata type
* Fix for systems whcich do not define EVFILT_USER
--- mysys/kqueue_timers.cc.orig 2019-12-09 19:53:17.000000000 +0000
+++ mysys/kqueue_timers.cc
@@ -40,6 +40,18 @@
#include "mysys_err.h"
#include "mysys_priv.h" /* key_thread_timer_notifier */
+#ifdef __NetBSD__
+#include <sys/param.h>
+#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,11 +81,14 @@ static void *timer_notify_thread_func(vo
}
if (kev.filter == EVFILT_TIMER) {
- timer = static_cast<my_timer_t *>(kev.udata);
+ timer = static_cast<my_timer_t *>((void *)kev.udata);
DBUG_ASSERT(timer->id == kev.ident);
timer->notify_function(timer);
- } else if (kev.filter == EVFILT_USER)
+ }
+#ifdef EVFILT_USER
+ else if (kev.filter == EVFILT_USER)
break;
+#endif
}
close(kq_fd);
@@ -91,7 +106,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 +151,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,
@@ -174,7 +193,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);
}

View File

@ -0,0 +1,15 @@
$NetBSD$
* make sure sigsend is available if used
--- mysys/stacktrace.cc.orig 2019-12-09 19:53:17.000000000 +0000
+++ mysys/stacktrace.cc
@@ -304,7 +304,7 @@ void my_print_stacktrace(const uchar *st
void my_write_core(int sig) {
signal(sig, SIG_DFL);
pthread_kill(my_thread_self(), sig);
-#if defined(P_MYID)
+#if defined(HAVE_SIGSEND) && defined(P_MYID)
/* On Solaris, the above kill is not enough */
sigsend(P_PID, P_MYID, sig);
#endif

View File

@ -0,0 +1,20 @@
$NetBSD$
Don't depend on rpcgen, just use the pre-generated headers
--- plugin/group_replication/libmysqlgcs/rpcgen.cmake.orig 2019-12-09 19:53:17.000000000 +0000
+++ plugin/group_replication/libmysqlgcs/rpcgen.cmake
@@ -71,7 +71,12 @@ FOREACH(X xcom_vp)
SET (x_vanilla_h ${XCOM_BASEDIR}/${X}.h.gen)
SET (x_vanilla_c ${XCOM_BASEDIR}/${X}_xdr.c.gen)
- IF(WIN32)
+ IF(1)
+ IF(RPC_INCLUDE_DIR STREQUAL "/usr/include/tirpc")
+ INCLUDE_DIRECTORIES(SYSTEM /usr/include/tirpc)
+ ADD_DEFINITIONS(-DHAVE_TIRPC)
+ SET(TIRPC_LIBRARY tirpc)
+ ENDIF()
# on windows system's there is no rpcgen, thence copy
# the files in the source directory
ADD_CUSTOM_COMMAND(OUTPUT ${x_gen_h} ${x_gen_c} ${x_tmp_plat_h}

View File

@ -0,0 +1,21 @@
$NetBSD$
workaround netbsd prototype of xdrproc_t being 2 arguments.
--- plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_memory.c.orig 2019-12-09 19:53:17.000000000 +0000
+++ plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_memory.c
@@ -50,7 +50,14 @@ void my_xdr_free(xdrproc_t proc, char *o
is the case). This will keep this code cross-platform
and cross-version compatible.
*/
+#ifdef __NetBSD__
+ /* NetBSD doesn't have variadic xdrproc_t...
+ * see https://bugzilla.redhat.com/show_bug.cgi?is=1128820#c24
+ * for a similar problem */
+ (*proc)(&x, objp);
+#else
(*proc)(&x, objp, 0);
+#endif
}
void xcom_xdr_free(xdrproc_t f, char *p) {

View File

@ -0,0 +1,30 @@
$NetBSD$
workaround netbsd prototype of xdrproc_t being 2 arguments.
--- plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c.orig 2019-12-09 19:53:17.000000000 +0000
+++ plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c
@@ -383,7 +383,11 @@ int apply_xdr(xcom_proto x_proto, void *
if (xdr.x_ops) {
xdr.x_public =
(caddr_t)&x_proto; /* Supply protocol version in user field of xdr */
+#ifdef __NetBSD__
+ s = xdrfunc(&xdr, xdrdata);
+#else
s = xdrfunc(&xdr, xdrdata, 0);
+#endif
}
xdr_destroy(&xdr);
return s;
@@ -595,7 +599,11 @@ static uint64_t xdr_proto_sizeof(xcom_pr
is the case). This will keep this code cross-platform
and cross-version compatible.
*/
+#ifdef __NetBSD__
+ stat = func(&x, data);
+#else
stat = func(&x, data, 0);
+#endif
free(x.x_private);
// x_handy is int type for old XDR
return stat == TRUE ? (uint64_t)x.x_handy : 0;

View File

@ -0,0 +1,16 @@
$NetBSD$
* install license and readme file with the other docs instead of directly in
${PREFIX}
--- router/CMakeLists.txt.orig 2020-01-23 20:52:36.406138412 +0000
+++ router/CMakeLists.txt
@@ -95,7 +95,7 @@ INCLUDE(${CMAKE_SOURCE_DIR}/cmake/rapidj
SET(ROUTER_LICENSE_FILE "${CMAKE_SOURCE_DIR}/router/LICENSE.router")
SET(ROUTER_README_FILE "${CMAKE_SOURCE_DIR}/router/README.router")
-SET(DOC_DESTINATION ".")
+SET(DOC_DESTINATION "share/doc/mysql")
IF(NOT INSTALL_LAYOUT MATCHES "RPM")
INSTALL(FILES
${ROUTER_LICENSE_FILE}

View File

@ -0,0 +1,16 @@
$NetBSD$
* TABDLY is an XSI standard not supported on all platforms (BSD)
--- router/src/harness/include/mysql/harness/tty.h.orig 2019-12-09 19:53:17.000000000 +0000
+++ router/src/harness/include/mysql/harness/tty.h
@@ -201,7 +201,9 @@ class HARNESS_EXPORT Tty {
// not on freebsd
static constexpr const size_t kCarriangeReturnDelayMask = CRDLY;
#endif
+#ifdef TABDLY
static constexpr const size_t kHorizontalTabDelayMask = TABDLY;
+#endif
#ifdef BSDLY
// not on freebsd
static constexpr const size_t kBackspaceDelayMask = BSDLY;

View File

@ -0,0 +1,15 @@
$NetBSD: patch-scripts_CMakeLists.txt,v 1.1 2016/09/16 06:49:11 adam Exp $
Split configuration between mysql-client and mysql-server.
--- scripts/CMakeLists.txt.orig 2019-12-09 19:53:17.000000000 +0000
+++ scripts/CMakeLists.txt
@@ -414,7 +414,7 @@ ELSE()
${CMAKE_CURRENT_BINARY_DIR}/${PKGCONFIG_FILE}
ESCAPE_QUOTES @ONLY)
- IF(INSTALL_PKGCONFIGDIR)
+ IF(INSTALL_PKGCONFIGDIR AND WITHOUT_SERVER)
MESSAGE(STATUS "INSTALL ${PKGCONFIG_FILE} ${INSTALL_PKGCONFIGDIR}")
INSTALL(FILES
${CMAKE_CURRENT_BINARY_DIR}/${PKGCONFIG_FILE}

View File

@ -0,0 +1,13 @@
$NetBSD: patch-scripts_mysqld_safe.sh,v 1.1 2016/09/16 06:49:11 adam Exp $
--- scripts/mysqld_safe.sh.orig 2011-03-31 13:36:18.000000000 +0000
+++ scripts/mysqld_safe.sh
@@ -747,7 +747,7 @@ fi
# Alternatively, you can start mysqld with the "myisam-recover" option. See
# the manual for details.
#
-# echo "Checking tables in $DATADIR"
+# log_notice "Checking tables in $DATADIR"
# $MY_BASEDIR_VERSION/bin/myisamchk --silent --force --fast --medium-check $DATADIR/*/*.MYI
# $MY_BASEDIR_VERSION/bin/isamchk --silent --force $DATADIR/*/*.ISM

View File

@ -0,0 +1,29 @@
$NetBSD$
* use a provided ffsll implementation if the system does not have one
* use noop implementation (apple) for binding threads to a cpu
TODO: netbsd and irix has apis for this, perhaps implement this.
--- sql/CMakeLists.txt.orig 2019-12-09 19:53:17.000000000 +0000
+++ sql/CMakeLists.txt
@@ -567,6 +567,10 @@ SET(SQL_SHARED_SOURCES
${MYSQL_SERVER_SUB_COMPONENT_SOURCES}
)
+IF(NOT HAVE_FFSLL)
+LIST(APPEND SQL_SHARED_SOURCES ffsll.cc)
+ENDIF()
+
# BISON_TARGET(<Name> <YaccInput> <CodeOutput>
# [COMPILE_FLAGS <flags>]
# [DEFINES_FILE <file>]
@@ -663,6 +667,9 @@ ELSEIF(SOLARIS)
ELSEIF(WIN32)
LIST(APPEND SQL_SHARED_SOURCES
resourcegroups/platform/thread_attrs_api_win.cc)
+ELSE()
+ LIST(APPEND SQL_SHARED_SOURCES
+ resourcegroups/platform/thread_attrs_api_apple.cc)
ENDIF()
SET(SQL_SOURCE

View File

@ -0,0 +1,29 @@
$NetBSD: patch-sql_conn__handler_socket__connection.cc,v 1.2 2017/04/11 20:49:15 adam Exp $
--- sql/conn_handler/socket_connection.cc.orig 2019-12-09 19:53:17.000000000 +0000
+++ sql/conn_handler/socket_connection.cc
@@ -950,9 +950,11 @@ bool check_connection_refused_by_tcp_wra
signal(SIGCHLD, SIG_DFL);
request_init(&req, RQ_DAEMON, libwrap_name, RQ_FILE,
mysql_socket_getfd(connect_sock), NULL);
- fromhost(&req);
+ void (*my_fromhost) (void *) = (void (*) (void *)) fromhost;
+ my_fromhost(&req);
- if (!hosts_access(&req)) {
+ int (*my_host_access) (void *) = (int (*) (void *)) host_access;
+ if (!myhosts_access(&req)) {
/*
This may be stupid but refuse() includes an exit(0)
which we surely don't want...
@@ -964,8 +966,9 @@ bool check_connection_refused_by_tcp_wra
This is unproblematic as TCP-wrapper is unix specific,
anyway.
*/
+ char *(*my_eval_client) (void *) = (char *(*) (void *) eval_client;
syslog(LOG_AUTH | LOG_WARNING, "refused connect from %s",
- eval_client(&req));
+ my_eval_client(&req));
#ifdef HAVE_LIBWRAP_PROTOTYPES
// Some distros have patched tcpd.h to have proper prototypes

View File

@ -0,0 +1,47 @@
$NetBSD$
* support getting the cpu count on netbsd, openbsd and irix
--- sql/resourcegroups/platform/thread_attrs_api_apple.cc.orig 2019-12-09 19:53:17.000000000 +0000
+++ sql/resourcegroups/platform/thread_attrs_api_apple.cc
@@ -24,6 +24,10 @@
#include <sys/sysctl.h>
#include <sys/types.h>
+#ifdef IRIX5
+#include <sys/sysmp.h>
+#endif
+
#include "my_dbug.h"
#include "sql/log.h"
@@ -84,8 +88,19 @@ bool set_thread_priority(int, my_thread_
uint32_t num_vcpus_using_affinity() { return 0; }
+
+#ifdef IRIX5
uint32_t num_vcpus_using_config() {
+ return sysmp(MP_NAPROCS);
+}
+#else
+
+uint32_t num_vcpus_using_config() {
+#if (defined(__NetBSD__) || defined(__OpenBSD__))
+ int name[2] = {CTL_HW, HW_NCPUONLINE};
+#else
int name[2] = {CTL_HW, HW_AVAILCPU};
+#endif
int ncpu;
size_t size = sizeof(ncpu);
@@ -93,6 +108,9 @@ uint32_t num_vcpus_using_config() {
return ncpu;
}
+#endif
+
+
bool can_thread_priority_be_set() {
DBUG_ASSERT(0);
return false;

View File

@ -0,0 +1,17 @@
$NetBSD$
* bstring.h is needed for bzero on some platforms
--- storage/ndb/include/ndb_global.h.orig 2020-01-21 17:16:34.989126305 +0000
+++ storage/ndb/include/ndb_global.h
@@ -126,6 +126,10 @@
#include <strings.h>
#endif
+#ifdef HAVE_BSTRING_H
+#include <bstring.h> // defines bzero on some platforms
+#endif
+
#if !defined(bzero) && !defined(HAVE_BZERO)
#define bzero(A,B) memset((A),0,(B))
#endif

View File

@ -0,0 +1,19 @@
$NetBSD: patch-storage_ndb_mcc_frontend_dojo_dojox_mobile_build_build.sh,v 1.1 2016/09/16 06:49:11 adam Exp $
Portability.
--- storage/ndb/mcc/frontend/dojo/dojox/mobile/build/build.sh.orig 2019-12-09 19:53:17.000000000 +0000
+++ storage/ndb/mcc/frontend/dojo/dojox/mobile/build/build.sh
@@ -14,10 +14,10 @@ optimize=closure
profile=mobile
dir=release-mobile-separate
#standalone=standaloneScrollable=true
-if [ "$1" == "single" ]; then
+if [ "$1" = "single" ]; then
profile=mobile-all
fi
-if [ "$1" == "single" ]; then
+if [ "$1" = "single" ]; then
dir=release-mobile-single
fi
shift 1

View File

@ -0,0 +1,17 @@
$NetBSD$
* don't use kqueue on netbsd since it misses EVFILT_USER
--- vio/viosocket.cc.orig 2019-12-09 19:53:17.000000000 +0000
+++ vio/viosocket.cc
@@ -68,6 +68,10 @@
#include "mysql/psi/mysql_socket.h"
+#ifdef __NetBSD__
+#undef HAVE_KQUEUE
+#endif
+
int vio_errno(Vio *vio MY_ATTRIBUTE((unused))) {
/* These transport types are not Winsock based. */
#ifdef _WIN32

16
mysql80-server/DEINSTALL Normal file
View File

@ -0,0 +1,16 @@
# $NetBSD: DEINSTALL,v 1.1 2016/09/16 06:49:12 adam Exp $
case ${STAGE} in
POST-DEINSTALL)
if [ -d @MYSQL_DATADIR@ ]; then
${CAT} << EOF
===========================================================================
If you won't be using ${PKGNAME} any longer, and you don't
wish to preserve your existing databases, then you may remove the
following directory:
@MYSQL_DATADIR@
===========================================================================
EOF
fi
esac

15
mysql80-server/DESCR Normal file
View File

@ -0,0 +1,15 @@
MySQL is a SQL (Structured Query Language) database server. SQL is the most
popular database language in the world. MySQL is a client-server implementation
that consists of a server daemon `mysqld' and many different client
programs/libraries.
The main goals of MySQL are speed and robustness.
The base upon which MySQL is built is a set of routines that have been used in
a highly demanding production environment for many years. While MySQL is still
in development it already offers a rich and highly useful function set.
The official way to pronounce 'MySQL' is 'My Ess Que Ell' (Not MY-SEQUEL).
This package contains the MySQL server programs and libraries including
embedded server (by PKG_OPTION).

21
mysql80-server/MESSAGE Normal file
View File

@ -0,0 +1,21 @@
===========================================================================
$NetBSD: MESSAGE,v 1.1 2016/09/16 06:49:12 adam Exp $
After the tables are set up and the MySQL server is running,
please remember to set a password for the MySQL root user!
This is done by running both:
${PREFIX}/bin/mysqladmin -u root -p password 'new-password'
${PREFIX}/bin/mysqladmin -h `hostname` -u root -p password 'new-password'
The "Enter password:" prompt is asking for the existing password.
As there is no existing password, just press the Return key.
There is a script distributed with MySQL that can help you lock down
an installation. This script has been installed to
${PREFIX}/bin/mysql_secure_installation.
Please see the manual and the MySQL web site for more instructions.
===========================================================================

View File

@ -0,0 +1,14 @@
===========================================================================
$NetBSD: MESSAGE.sphinx,v 1.1 2016/09/16 06:49:12 adam Exp $
To install the SphinxSE MySQL plugin, log into your MySQL console
and issue the following query:
INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so';
You can verify it has been loaded properly by checking whether
it shows up in the list when list your engines:
SHOW ENGINES;
===========================================================================

87
mysql80-server/Makefile Normal file
View File

@ -0,0 +1,87 @@
# $NetBSD: Makefile,v 1.28 2019/11/02 15:38:02 rillig Exp $
PKGNAME= ${DISTNAME:S/-/-server-/}
COMMENT= MySQL 8, a free SQL database (server)
CONFLICTS= mysql3-server-[0-9]*
.include "../../wip/mysql80-client/Makefile.common"
CMAKE_ARGS+= -DINSTALL_INFODIR=${PKGINFODIR}
CMAKE_ARGS+= -DWITH_PROTOBUF="system"
PLIST_VARS+= ndb auth_socket
.if ${OPSYS} == "Linux"
PLIST.auth_socket= yes
.endif
PTHREAD_OPTS+= require
PKG_GROUPS= ${MYSQL_GROUP}
PKG_USERS= ${MYSQL_USER}:${MYSQL_GROUP}
PKG_GECOS.${MYSQL_USER}= MySQL database administrator
PKG_HOME.${MYSQL_USER}= ${MYSQL_DATADIR}
PKG_SHELL.${MYSQL_USER}= ${SH}
RCD_SCRIPTS= mysqld
SMF_NAME= mysql
SMF_METHODS= ${RCD_SCRIPTS}
FILES_SUBST+= HOSTNAME_CMD=${HOSTNAME_CMD:Q}
FILES_SUBST+= MYSQL_DATADIR=${MYSQL_DATADIR}
FILES_SUBST+= MYSQL_USER=${MYSQL_USER} MYSQL_GROUP=${MYSQL_GROUP}
FILES_SUBST+= MYSQL_PIDFILE=${MYSQL_PIDFILE}
MESSAGE_SUBST+= MYSQL_DATADIR=${MYSQL_DATADIR}
MESSAGE_SUBST+= MYSQL_USER=${MYSQL_USER} MYSQL_GROUP=${MYSQL_GROUP}
BUILD_DEFS+= MYSQL_DATADIR
REPLACE_PERL+= mysql-test/lib/v1/mysql-test-run.pl
REPLACE_PERL+= mysql-test/mysql-stress-test.pl
REPLACE_PERL+= mysql-test/mysql-test-run.pl
REPLACE_PERL+= mysql-test/suite/engines/rr_trx/run_stress_tx_rr.pl
REPLACE_PERL+= mysql-test/suite/funcs_1/lib/DataGen_local.pl
REPLACE_PERL+= mysql-test/suite/funcs_1/lib/DataGen_modify.pl
REPLACE_PERL+= mysql-test/suite/funcs_2/lib/gen_charset_utf8.pl
REPLACE_PERL+= mysql-test/suite/opt_trace/validate_json.pl
REPLACE_PERL+= mysql-test/suite/rpl/extension/bhs.pl
REPLACE_PERL+= mysql-test/suite/rpl/extension/checksum.pl
REPLACE_SH+= mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.sh
REPLACE_SH+= mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.sh
REPLACE_SH+= mysql-test/suite/rpl/t/rpl_misc_functions-slave.sh
REPLACE_SH+= mysql-test/suite/rpl_nogtid/t/rpl_misc_functions-slave.sh
REPLACE_SH+= mysql-test/t/long_tmpdir-master.sh
REPLACE_SH+= mysql-test/t/lowercase_mixed_tmpdir-master.sh
REPLACE_SH+= mysql-test/t/lowercase_mixed_tmpdir_innodb-master.sh
REPLACE_SH+= scripts/mysql_config.sh
SUBST_CLASSES+= perlpath
SUBST_STAGE.perlpath= pre-configure
SUBST_MESSAGE.perlpath= Fixing Perl paths.
SUBST_FILES.perlpath= scripts/mysql_config.pl.in
SUBST_FILES.perlpath+= scripts/mysqld_multi.pl.in
SUBST_FILES.perlpath+= scripts/mysqldumpslow.pl.in
SUBST_SED.perlpath= -e 's,@PERL_PATH@,${PERL5},g'
INSTALLATION_DIRS+= bin
TEST_TARGET= test
.include "../../mk/compiler.mk"
.if !empty(PKGSRC_COMPILER:Msunpro)
CFLAGS+= -D_POSIX_C_SOURCE=199506L -D__EXTENSIONS__
CXXFLAGS+= -D_POSIX_C_SOURCE=199506L -D__EXTENSIONS__
.endif
LDFLAGS+= ${COMPILER_RPATH_FLAG}${PREFIX}/lib/mysqlrouter
post-extract:
cp ${FILESDIR}/ffsll.cc ${WRKSRC}/sql/
.include "../../devel/protobuf/buildlink3.mk"
BUILDLINK_AUTO_DIRS.mysql-client= no
.include "../../wip/mysql80-client/buildlink3.mk"
.include "../../security/tcp_wrappers/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

19788
mysql80-server/PLIST Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
@comment $NetBSD: PLIST.SunOS,v 1.1 2016/09/16 06:49:12 adam Exp $
share/mysql/solaris/postinstall-solaris

View File

@ -0,0 +1,15 @@
# $NetBSD: buildlink3.mk,v 1.1 2016/09/16 06:49:12 adam Exp $
BUILDLINK_TREE+= mysql-server
.if !defined(MYSQL_SERVER_BUILDLINK3_MK)
MYSQL_SERVER_BUILDLINK3_MK:=
BUILDLINK_API_DEPENDS.mysql-server+= mysql-server>=5.7.12
BUILDLINK_ABI_DEPENDS.mysql-server?= mysql-server>=5.7.12
BUILDLINK_PKGSRCDIR.mysql-server?= ../../databases/mysql57-server
BUILDLINK_LIBDIRS.mysql-server?= lib
.endif # MYSQL_SERVER_BUILDLINK3_MK
BUILDLINK_TREE+= -mysql-server

View File

@ -0,0 +1,23 @@
/*
* Public domain version of ffsll by Niclas Rosenvik
* used here for platforms that miss a system ffsll.
*/
#include <sys/types.h>
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;
}

View File

@ -0,0 +1,108 @@
#!@RCD_SCRIPTS_SHELL@
#
# $NetBSD: mysqld.sh,v 1.2 2017/06/24 15:18:42 schmonz Exp $
#
# PROVIDE: mysqld
# REQUIRE: DAEMON LOGIN mountall
# KEYWORD: shutdown
#
# You will need to set some variables in /etc/rc.conf to start MySQL:
#
# mysqld=YES
#
# The following variables are optional:
#
# mysqld_user="mysql" # user to run mysqld as
# mysqld_datadir="/path/to/home" # path to MySQL database directory
# mysqld_pidfile="/path/to/p.pid" # path to MySQL PID file
if [ -f /etc/rc.subr ]; then
. /etc/rc.subr
fi
name="mysqld"
rcvar=${name}
command="@PREFIX@/bin/mysqld_safe"
procname="@PREFIX@/sbin/${name}"
: ${mysqld_user:=@MYSQL_USER@}
: ${mysqld_group:=@MYSQL_GROUP@}
: ${mysqld_datadir:=@MYSQL_DATADIR@}
: ${mysqld_pidfile:=@MYSQL_PIDFILE@}
extra_commands="initdb"
initdb_cmd="mysqld_initdb"
start_precmd="mysqld_precmd"
start_cmd="mysqld_start"
mysqld_precmd()
{
if [ ! -d ${mysqld_datadir}/mysql ]; then
${initdb_cmd}
fi
}
mysqld_initdb()
{
initdb="@PREFIX@/sbin/mysqld"
if [ ! -x ${initdb} ]; then
return 1
fi
if [ -f ${mysqld_datadir}/mysql/host.frm ]; then
@ECHO@ "The MySQL database has already been initialized."
@ECHO@ "Skipping database initialization."
else
@ECHO@ "Initializing MySQL database system tables."
${initdb} --initialize --user=${mysqld_user} \
--datadir=${mysqld_datadir} || return 1
if [ -d ${mysqld_datadir} ]; then
@CHOWN@ -R ${mysqld_user}:${mysqld_group} \
${mysqld_datadir}
fi
fi
}
mysqld_start()
{
for f in $required_files; do
if [ ! -r "$f" ]; then
@ECHO@ 1>&2 "$0: WARNING: $f is not readable"
if [ -z $rc_force ]; then
return 1
fi
fi
done
@ECHO@ "Starting ${name}."
ulimit -n 4096
cd @PREFIX@
@PERL5@ -e 'use POSIX qw(setsid); setsid(); { exec (@ARGV) }' ${command} --user=${mysqld_user} --datadir=${mysqld_datadir} \
--pid-file=${mysqld_pidfile} ${mysqld_flags} \
${thread_flags} \
2>&1 | @PERL5@ -e 'use POSIX qw(setsid); setsid(); { exec (@ARGV) }' @SU@ -m ${mysqld_user} -c 'logger -t nbmysqld_safe' \
&
}
if [ -f /etc/rc.subr -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]; then
load_rc_config $name
pidfile="${mysqld_pidfile}"
run_rc_command "$1"
else
if [ -f /etc/rc.conf ]; then
. /etc/rc.conf
fi
pidfile="${mysqld_pidfile}"
case "$1" in
initdb)
eval ${initdb_cmd}
;;
stop)
if [ -r "${pidfile}" ]; then
@ECHO@ "Stopping ${name}."
kill `@CAT@ ${pidfile}`
fi
;;
*)
eval ${start_precmd}
eval ${start_cmd}
;;
esac
fi

View File

@ -0,0 +1,32 @@
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='@SMF_NAME@'>
<service name='@SMF_PREFIX@/@SMF_NAME@' type='service' version='1'>
<create_default_instance enabled='false' />
<single_instance />
<dependency name='fs' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/system/filesystem/local' />
</dependency>
<dependency name='net' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/network/loopback' />
</dependency>
<method_context working_directory='@MYSQL_DATADIR@'>
<method_credential user='@MYSQL_USER@' group='@MYSQL_GROUP@' />
<method_environment>
<envvar name='LD_PRELOAD_32' value='/usr/lib/extendedFILE.so.1' />
</method_environment>
</method_context>
<exec_method name='start' type='method' exec='@PREFIX@/@SMF_METHOD_FILE.mysqld@ start' timeout_seconds='18446744073709551615' />
<exec_method name='stop' type='method' exec='@PREFIX@/@SMF_METHOD_FILE.mysqld@ stop' timeout_seconds='18446744073709551615' />
<stability value='Evolving' />
<template>
<common_name>
<loctext xml:lang='C'>MySQL RDBMS</loctext>
</common_name>
<documentation>
<manpage title='MySQL 8.0' section='1' />
<doc_link name='mysql.com' uri='http://dev.mysql.com/docs' />
</documentation>
</template>
</service>
</service_bundle>

View File

@ -0,0 +1,31 @@
#!@SMF_METHOD_SHELL@
#
# $NetBSD: mysqld.sh,v 1.1 2016/09/16 06:49:12 adam Exp $
#
# Init script for mysqld.
#
. /lib/svc/share/smf_include.sh
PIDFILE="@MYSQL_DATADIR@/mysql.pid"
ulimit -n 10240
case "$1" in
start)
@LOCALBASE@/sbin/mysqld --user=mysql \
--basedir=@LOCALBASE@ \
--datadir=@MYSQL_DATADIR@ \
--pid-file=${PIDFILE} \
--log-error=@VARBASE@/log/mysql/error.log &
;;
stop)
[ -f ${PIDFILE} ] && kill `@HEAD@ -1 ${PIDFILE}`
;;
*)
echo "Usage: $0 {start|stop}" >&2
exit 1
;;
esac
exit $SMF_EXIT_OK