1PORTNAME?= mysql 2PORTVERSION= 8.4.5 3PORTREVISION?= 1 4CATEGORIES= databases 5MASTER_SITES= MYSQL/MySQL-8.4 6PKGNAMESUFFIX?= 84-server 7 8MAINTAINER= ports@MidnightBSD.org 9COMMENT?= Multithreaded SQL database (server) 10WWW= https://www.mysql.com/ 11 12LICENSE= gpl2 13 14# MySQL8.2+ supports only 64-bit platforms 15NOT_FOR_ARCHS= armv6 armv7 i386 powerpc 16 17BROKEN_MidnightBSD_3.2= Needs newer C++20 support for std:ranges 18 19USES= bison:build cmake:noninja cpe groff:run libedit localbase llvm:build,run \ 20 ncurses perl5 pkgconfig shebangfix ssl compiler:c++20-lang 21 22WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}${DISTVERSIONSUFFIX} 23 24SLAVEDIRS= databases/mysql84-client 25 26CPE_VENDOR= oracle 27 28USE_CXXSTD= c++20 29USE_PERL5= run 30 31MY_DBDIR= /var/db/mysql 32MY_SECDIR= /var/db/mysql_secure 33MY_TMPDIR= /var/db/mysql_tmpdir 34 35LIB_DEPENDS+= libcurl.so:ftp/curl \ 36 libevent.so:devel/libevent \ 37 libicutu.so:devel/icu \ 38 liblz4.so:archivers/liblz4 \ 39 libhidapi.so:comms/hidapi \ 40 libfido2.so:security/libfido2 \ 41 ${LIB_DEPENDS_${ARCH}} 42LIB_DEPENDS_aarch64= libunwind.so:devel/libunwind 43LIB_DEPENDS_amd64= libunwind.so:devel/libunwind 44LIB_DEPENDS_powerpc64= libunwind.so:devel/libunwind 45LIB_DEPENDS_powerpc64le= libunwind.so:devel/libunwind 46 47BUILD_DEPENDS= liblz4>0:archivers/liblz4 \ 48 ${BUILD_DEPENDS_${ARCH}} 49BUILD_DEPENDS_aarch64= libunwind>0:devel/libunwind 50BUILD_DEPENDS_amd64= libunwind>0:devel/libunwind 51BUILD_DEPENDS_powerpc64= libunwind>0:devel/libunwind 52BUILD_DEPENDS_powerpc64le= libunwind>0:devel/libunwind 53 54CMAKE_BUILD_TYPE= Release 55CFLAGS+= -fPIC 56CFLAGS_aarch64?= -march=armv8-a+crc+crypto 57 58CMAKE_ARGS+= -DINSTALL_LAYOUT=FREEBSD \ 59 -DINSTALL_LDCONFIGDIR="${LOCALBASE}/libdata/ldconfig" \ 60 -DINSTALL_PKGCONFIGDIR="${LOCALBASE}/libdata/pkgconfig" \ 61 -DINSTALL_DOCDIR="share/doc/mysql" \ 62 -DINSTALL_DOCREADMEDIR="share/doc/mysql" \ 63 -DINSTALL_INCLUDEDIR="include/mysql" \ 64 -DINSTALL_INFODIR="${INFO_PATH}" \ 65 -DINSTALL_LIBDIR="lib/mysql" \ 66 -DINSTALL_PRIV_LIBDIR="lib/mysql/private" \ 67 -DINSTALL_MANDIR="share/man" \ 68 -DINSTALL_MYSQLDATADIR="${MY_DBDIR}" \ 69 -DINSTALL_MYSQLKEYRINGDIR="etc/mysql/keyring" \ 70 -DINSTALL_MYSQLSHAREDIR="share/mysql" \ 71 -DINSTALL_MYSQLTESTDIR="" \ 72 -DINSTALL_PLUGINDIR="lib/mysql/plugin" \ 73 -DINSTALL_SBINDIR="libexec" \ 74 -DINSTALL_SCRIPTDIR="bin" \ 75 -DINSTALL_SECURE_FILE_PRIVDIR="${MY_SECDIR}" \ 76 -DINSTALL_SHAREDIR="share" \ 77 -DINSTALL_SUPPORTFILESDIR="share/mysql" \ 78 -DWITH_BOOST="${WRKSRC}/boost" \ 79 -DWITH_SYSTEM_LIBS=1 \ 80 -DWITH_EDITLINE=system \ 81 -DWITH_LIBEVENT=system \ 82 -DWITH_LZ4=system \ 83 -DWITH_ICU=system \ 84 -DWITH_CURL=system \ 85 -DWITH_ZSTD=bundled \ 86 -DWITH_PROTOBUF=bundled \ 87 -DWITH_SSL=system \ 88 -DWITH_ZLIB=system \ 89 -DWITH_LZ4=system 90 91CMAKE_ARGS+= -DWITHOUT_MROONGA_STORAGE_ENGINE=1 \ 92 -DWITHOUT_ROCKSDB_STORAGE_ENGINE=1 \ 93 -DWITHOUT_TOKUDB_STORAGE_ENGINE=1 \ 94 -DWITHOUT_NDB_STORAGE_ENGINE=1 95 96SHEBANG_FILES= scripts/*.pl* scripts/*.sh 97 98.ifdef USE_MYSQL 99IGNORE= you have `USE_MYSQL' variable defined either in environment or in make(1) arguments, please undefine and try again 100.endif 101 102SUB_LIST= MY_DBDIR=${MY_DBDIR} \ 103 MY_SECDIR=${MY_SECDIR} \ 104 MY_TMPDIR=${MY_TMPDIR} 105 106PLIST_SUB= MY_DBDIR=${MY_DBDIR} \ 107 MY_SECDIR=${MY_SECDIR} \ 108 MY_TMPDIR=${MY_TMPDIR} 109 110# MySQL-Server part 111.if !defined(CLIENT_ONLY) 112USES+= mysql:84 113 114CONFLICTS_INSTALL= mysql*-server \ 115 mysqlwsrep*-server \ 116 mariadb*-server \ 117 percona*-server 118 119USE_RC_SUBR= mysql-server 120 121SUB_FILES= my.cnf.sample pkg-message 122 123USERS= mysql 124GROUPS= mysql 125 126USE_LDCONFIG+= ${PREFIX}/lib/mysql/plugin 127 128MMAN1= ibd2sdi.1 innochecksum.1 my_print_defaults.1 myisam_ftdump.1 myisamchk.1 \ 129 myisamlog.1 myisampack.1 mysql_secure_installation.1 mysql_ssl_rsa_setup.1 \ 130 mysql_tzinfo_to_sql.1 mysql_upgrade.1 mysql.server.1 mysqldumpslow.1 mysqld_multi.1 \ 131 mysqld_safe.1 mysqlrouter_passwd.1 mysqlrouter_plugin_info.1 mysqlrouter.1 132MMAN8= mysqld.8 133 134CMAKE_ARGS+= -DWITHOUT_CLIENTLIBS="ON" 135# Disable unit tests, it fails on !amd64 and <13.0 due to c++17 rules 136CMAKE_ARGS+= -DWITH_UNIT_TESTS="OFF" 137 138OPTIONS_GROUP= STORAGE 139OPTIONS_GROUP_STORAGE= ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE PARTITION PERFSCHEMA 140OPTIONS_SUB= YES 141STORAGE_DESC= Permissible "Storage Engines" (to compile statically into the server) 142ARCHIVE_DESC= Compile "Archive Storage" statically in server 143BLACKHOLE_DESC= Compile "Blackhole Storage" statically in server 144EXAMPLE_DESC= Compile "Example Storage" statically in server 145FEDERATED_DESC= Compile "Federated Storage" statically in server 146INNOBASE_DESC= Compile "InnoDB Storage" statically in server 147PARTITION_DESC= Compile "Partitioning support Storage" statically in server 148PERFSCHEMA_DESC= Compile "Performance Schema Storage" statically in server 149 150ARCHIVE_CMAKE_ON= -DWITH_ARCHIVE_STORAGE_ENGINE=1 151BLACKHOLE_CMAKE_ON= -DWITH_BLACKHOLE_STORAGE_ENGINE=1 152EXAMPLE_CMAKE_ON= -DWITH_EXAMPLE_STORAGE_ENGINE=1 153FEDERATED_CMAKE_ON= -DWITH_FEDERATED_STORAGE_ENGINE=1 154INNOBASE_CMAKE_ON= -DWITH_INNOBASE_STORAGE_ENGINE=1 155PARTITION_CMAKE_ON= -DWITH_PARTITION_STORAGE_ENGINE=1 156PERFSCHEMA_CMAKE_ON= -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 157 158OPTIONS_GROUP+= FEATURES 159OPTIONS_GROUP_FEATURES= PERFSCHM 160FEATURES_DESC= Default features knobs 161PERFSCHM_DESC= Enable "Performance Schema" by default (High RAM usage) 162OPTIONS_DEFAULT+= PERFSCHM 163 164PERFSCHM_SUB_LIST+= PERFSCHEMRC="" 165# todo, likely broken, see 166# https://dev.mysql.com/doc/refman/8.4/en/source-configuration-options.html 167PERFSCHM_SUB_LIST_OFF+= PERFSCHEMRC="--skip-performance-schema" 168FEDERATED_SUB_LIST+= FEDER="--federated" 169FEDERATED_SUB_LIST_OFF+= FEDER="" 170.endif 171 172.include <bsd.mport.options.mk> 173 174CXXFLAGS+= -malign-double 175 176.include <bsd.port.pre.mk> 177 178post-extract: 179 @${RM} -rv ${WRKSRC}/sql/sql_hints.yy.cc ${WRKSRC}/sql/sql_hints.yy.h 180 181.if !defined(CLIENT_ONLY) 182post-install: 183 ${MKDIR} ${ETCDIR} 184 ${INSTALL_DATA} ${WRKDIR}/my.cnf.sample ${ETCDIR}/my.cnf.sample 185 ${MKDIR} ${ETCDIR}/keyring 186 ${MKDIR} ${MY_SECDIR} 187 ${MKDIR} ${MY_TMPDIR} 188.endif 189 190.include <bsd.port.post.mk> 191