1PORTNAME?= mysql 2PORTVERSION= 8.0.42 3PORTREVISION?= 1 4CATEGORIES= databases 5MASTER_SITES= MYSQL/MySQL-8.0 6PKGNAMESUFFIX?= 80-server 7DISTNAME= ${PORTNAME}-boost-${PORTVERSION}${DISTVERSIONSUFFIX} 8 9MAINTAINER= ports@MidnightBSD.org 10COMMENT?= Multithreaded SQL database (server) 11WWW= https://www.mysql.com/ 12 13LICENSE= gpl2 14 15WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}${DISTVERSIONSUFFIX} 16 17SLAVEDIRS= databases/mysql80-client 18USES= bison:build cmake:noninja cpe \ 19 groff:both libedit localbase ncurses perl5 pkgconfig shebangfix ssl 20CPE_VENDOR= oracle 21 22USE_CXXSTD= c++17 23USE_PERL5= run 24 25MY_DBDIR= /var/db/mysql 26MY_SECDIR= /var/db/mysql_secure 27MY_TMPDIR= /var/db/mysql_tmpdir 28 29LIB_DEPENDS+= libcurl.so:ftp/curl \ 30 libevent.so:devel/libevent \ 31 libicutu.so:devel/icu \ 32 liblz4.so:archivers/liblz4 \ 33 libfido2.so:security/libfido2 \ 34 libhidapi.so:comms/hidapi \ 35 ${LIB_DEPENDS_${ARCH}} 36LIB_DEPENDS_aarch64= libunwind.so:devel/libunwind 37LIB_DEPENDS_amd64= libunwind.so:devel/libunwind 38LIB_DEPENDS_armv7= libunwind.so:devel/libunwind 39LIB_DEPENDS_i386= libunwind.so:devel/libunwind 40LIB_DEPENDS_powerpc= libunwind.so:devel/libunwind 41LIB_DEPENDS_powerpc64= libunwind.so:devel/libunwind 42LIB_DEPENDS_powerpc64le= libunwind.so:devel/libunwind 43 44BUILD_DEPENDS= liblz4>0:archivers/liblz4 \ 45 ${BUILD_DEPENDS_${ARCH}} 46BUILD_DEPENDS_aarch64= libunwind>0:devel/libunwind 47BUILD_DEPENDS_amd64= libunwind>0:devel/libunwind 48BUILD_DEPENDS_armv7= libunwind>0:devel/libunwind 49BUILD_DEPENDS_i386= libunwind>0:devel/libunwind 50BUILD_DEPENDS_powerpc= 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 -DMYSQL_KEYRINGDIR="${ETCDIR}/keyring" \ 79 -DWITH_BOOST="${WRKSRC}/boost" \ 80 -DWITH_SYSTEM_LIBS=1 \ 81 -DWITH_EDITLINE=system \ 82 -DWITH_LIBEVENT=system \ 83 -DWITH_LZ4=system \ 84 -DWITH_ICU=system \ 85 -DWITH_CURL=system \ 86 -DWITH_ZSTD=bundled \ 87 -DWITH_PROTOBUF=bundled \ 88 -DWITH_SSL=system \ 89 -DWITH_AUTHENTICATION_FIDO=1 \ 90 -DBUILD_BUNDLED_ZLIB=0 \ 91 -DBUILD_BUNDLED_LZ4=0 92 93# The Mroonga, RocksDB, and TokuDB storage engines are disabled. 94# Mroonga is only buildable on little endian archs. 95# RocksDB is only buildable on little endian archs and requires POSIX timers. 96# TokuDB is only buildable on 64-bit little endian archs. 97CMAKE_ARGS+= -DWITHOUT_MROONGA_STORAGE_ENGINE=1 \ 98 -DWITHOUT_ROCKSDB_STORAGE_ENGINE=1 \ 99 -DWITHOUT_TOKUDB_STORAGE_ENGINE=1 100 101SHEBANG_FILES= scripts/*.pl* scripts/*.sh 102 103.ifdef USE_MYSQL 104IGNORE= You have `USE_MYSQL' variable defined either in environment or in make(1) arguments. Please undefine and try again. 105.endif 106 107SUB_LIST= MY_DBDIR=${MY_DBDIR} \ 108 MY_SECDIR=${MY_SECDIR} \ 109 MY_TMPDIR=${MY_TMPDIR} 110 111PLIST_SUB= MY_DBDIR=${MY_DBDIR} \ 112 MY_SECDIR=${MY_SECDIR} \ 113 MY_TMPDIR=${MY_TMPDIR} 114 115# MySQL-Server part 116.if !defined(CLIENT_ONLY) 117USES+= mysql:80 118 119CONFLICTS_INSTALL= mysql*-server \ 120 mysqlwsrep*-server \ 121 mariadb*-server \ 122 percona*-server 123 124USE_RC_SUBR= mysql-server 125 126SUB_FILES= my.cnf.sample pkg-message 127 128USERS= mysql 129GROUPS= mysql 130 131USE_LDCONFIG+= ${PREFIX}/lib/mysql/plugin 132 133MMAN1= ibd2sdi.1 innochecksum.1 my_print_defaults.1 myisam_ftdump.1 myisamchk.1 \ 134 myisamlog.1 myisampack.1 mysql_secure_installation.1 mysql_ssl_rsa_setup.1 \ 135 mysql_tzinfo_to_sql.1 mysql_upgrade.1 mysql.server.1 mysqldumpslow.1 mysqld_multi.1 \ 136 mysqld_safe.1 mysqlrouter_passwd.1 mysqlrouter_plugin_info.1 mysqlrouter.1 137MMAN8= mysqld.8 138 139CMAKE_ARGS+= -DWITH_EMBEDDED_SERVER="ON" 140CMAKE_ARGS+= -DWITHOUT_CLIENTLIBS="ON" 141# Disable unit tests, it fails on !amd64 and <13.0 due to c++17 rules 142CMAKE_ARGS+= -DWITH_UNIT_TESTS="OFF" 143 144OPTIONS_GROUP= STORAGE 145OPTIONS_GROUP_STORAGE= ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE PARTITION PERFSCHEMA 146OPTIONS_SUB= YES 147STORAGE_DESC= Permissible "Storage Engines" (to compile statically into the server) 148ARCHIVE_DESC= Compile "Archive Storage" statically in server 149BLACKHOLE_DESC= Compile "Blackhole Storage" statically in server 150EXAMPLE_DESC= Compile "Example Storage" statically in server 151FEDERATED_DESC= Compile "Federated Storage" statically in server 152INNOBASE_DESC= Compile "InnoDB Storage" statically in server 153PARTITION_DESC= Compile "Partitioning support Storage" statically in server 154PERFSCHEMA_DESC= Compile "Performance Schema Storage" statically in server 155 156ARCHIVE_CMAKE_ON= -DWITH_ARCHIVE_STORAGE_ENGINE=1 157BLACKHOLE_CMAKE_ON= -DWITH_BLACKHOLE_STORAGE_ENGINE=1 158EXAMPLE_CMAKE_ON= -DWITH_EXAMPLE_STORAGE_ENGINE=1 159FEDERATED_CMAKE_ON= -DWITH_FEDERATED_STORAGE_ENGINE=1 160INNOBASE_CMAKE_ON= -DWITH_INNOBASE_STORAGE_ENGINE=1 161PARTITION_CMAKE_ON= -DWITH_PARTITION_STORAGE_ENGINE=1 162PERFSCHEMA_CMAKE_ON= -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 163 164OPTIONS_GROUP+= FEATURES 165OPTIONS_GROUP_FEATURES= PERFSCHM 166FEATURES_DESC= Default features knobs 167PERFSCHM_DESC= Enable "Performance Schema" by default (High RAM usage) 168OPTIONS_DEFAULT+= PERFSCHM 169 170PERFSCHM_SUB_LIST+= PERFSCHEMRC="" 171PERFSCHM_SUB_LIST_OFF+= PERFSCHEMRC="--skip-performance-schema" 172FEDERATED_SUB_LIST+= FEDER="--federated" 173FEDERATED_SUB_LIST_OFF+= FEDER="" 174.endif 175 176.include <bsd.mport.options.mk> 177 178# Since 8.0.20 release innodb engine uses new memory alligned allocator 179# which is broken on i386 due to different size of types and caused a 180# 'static_assert(alignof(T) <= alignof(std::max_align_t))' error 181.if ${ARCH} == i386 182#CMAKE_ARGS+= -DDISABLE_PSI_MEMORY=1 183SSP_UNSAFE= yes 184.endif 185 186.if ${ARCH} == powerpc 187LDFLAGS+= -latomic 188USES+= compiler:gcc-c++11-lib 189.else 190USES+= compiler:c++17-lang 191.endif 192 193.include <bsd.port.pre.mk> 194 195post-extract: 196 @${RM} -rv ${WRKSRC}/sql/sql_hints.yy.cc ${WRKSRC}/sql/sql_hints.yy.h 197 198# XXX MBi alignment issue 199.if ${ARCH} == i386 200EXTRA_PATCHES+= ${FILESDIR}/extra-patch-boost-boost_1_77_0-boost-move-detail-type_traits.hpp 201.endif 202 203.if !defined(CLIENT_ONLY) 204post-install: 205 ${MKDIR} ${ETCDIR} 206 ${INSTALL_DATA} ${WRKDIR}/my.cnf.sample ${ETCDIR}/my.cnf.sample 207 ${MKDIR} ${ETCDIR}/keyring 208 ${MKDIR} ${MY_SECDIR} 209 ${MKDIR} ${MY_TMPDIR} 210.endif 211 212.include <bsd.port.post.mk> 213