1PORTNAME?= mariadb 2PORTVERSION= 10.6.24 3PORTREVISION?= 0 4CATEGORIES= databases 5MASTER_SITES= https://mirror.nodesdirect.com/${SITESDIR}/ \ 6 https://mirror.one.com/${SITESDIR}/ \ 7 https://ftp.nluug.nl/db/${SITESDIR}/ \ 8 https://ftp.icm.edu.pl/pub/unix/database/${SITESDIR}/ \ 9 https://mirror.truenetwork.ru/${SITESDIR}/ \ 10 https://mirrors.aliyun.com/${SITESDIR}/ \ 11 https://ftp.ubuntu-tw.org/mirror/${SITESDIR}/ \ 12 https://mirror.kku.ac.th/${SITESDIR}/ \ 13 https://espejito.fder.edu.uy/${SITESDIR}/ \ 14 https://ftp.osuosl.org/pub/${SITESDIR}/ \ 15 https://downloads.mariadb.org/rest-api/mariadb/${PORTVERSION}/ 16PKGNAMESUFFIX?= 106-server 17 18MAINTAINER= ports@MidnightBSD.org 19COMMENT?= Multithreaded SQL database (server) 20WWW= https://mariadb.org/ 21 22LICENSE= gpl2 23LICENSE_FILE= ${WRKSRC}/COPYING 24 25DEPRECATED= End-of-Life approaching, please switch to 11.8 (or 11.4) 26EXPIRATION_DATE= 2026-06-30 27 28LIB_DEPENDS+= libpcre2-8.so:devel/pcre2 \ 29 libzstd.so:archivers/zstd 30 31# Ugly workaround for MariaDB/CMake library detection 32LDFLAGS+= -L${LOCALBASE}/lib 33 34USES= bison:build cmake:insource compiler:c++11-lib cpe iconv:translit libedit ncurses shebangfix ssl 35 36SUB_FILES= pkg-message 37PKGMESSAGE= ${WRKDIR}/pkg-message 38 39USE_LDCONFIG= ${PREFIX}/lib/mysql 40SHEBANG_FILES= scripts/*.sh \ 41 scripts/*.pl 42SITESDIR= mariadb/mariadb-${PORTVERSION}/source 43DOCSDIR= ${PREFIX}/share/doc/mysql 44 45MARIADB_USER?= mysql 46MARIADB_GROUP?= mysql 47MARIADB_DBDIR?= /var/db/mysql 48MARIADB_RUNDIR?= /var/run/mysql 49MARIADB_SOCK?= mysql.sock 50MARIADB_LOGDIR?= /var/log/mysql 51 52USERS= ${MARIADB_USER} 53GROUPS= ${MARIADB_GROUP} 54 55OPTIONS_SINGLE= GSSAPI 56OPTIONS_SINGLE_GSSAPI= GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE 57OPTIONS_DEFAULT= GSSAPI_BASE 58 59.if ${PKGNAMESUFFIX:M*-server} 60# MySQL-Server options 61OPTIONS_DEFAULT+= CONNECT_EXTRA INNOBASE SPHINX SPIDER WSREP 62OPTIONS_GROUP= COMPRESSION ENGINES GROONGA 63OPTIONS_DEFINE= CONNECT_EXTRA DOCS 64OPTIONS_DEFINE_amd64= WSREP 65OPTIONS_DEFINE_aarch64= WSREP 66OPTIONS_DEFINE_powerpc64le= WSREP 67OPTIONS_DEFINE_powerpc64= WSREP 68OPTIONS_DEFINE_riscv64= WSREP 69OPTIONS_GROUP_COMPRESSION= LZ4 LZO SNAPPY 70OPTIONS_GROUP_ENGINES= COLUMNSTORE INNOBASE MROONGA OQGRAPH ROCKSDB S3 SPHINX SPIDER 71OPTIONS_GROUP_GROONGA= ZMQ MSGPACK 72OPTIONS_EXCLUDE_i386= ROCKSDB 73 74COLUMNSTORE_DESC= Columnar storage egine (BETA) 75CONNECT_EXTRA_DESC= Enable ODBC and XML in CONNECT engine 76COMPRESSION_DESC= Optional page compression 77ENGINES_DESC= Optional MariaDB storage engines 78GROONGA_DESC= Optional Mroonga features 79INNOBASE_DESC= InnoDB default engine 80MROONGA_DESC= Mroonga Full Text Search engine 81MSGPACK_DESC= MsgPack support 82OQGRAPH_DESC= Open Query Graph Computation engine 83ROCKSDB_DESC= RocksDB LSM engine 84S3_DESC= S3 storage engine (Alpha) 85SPHINX_DESC= SphinxSE engine 86SPIDER_DESC= Partitioning and XA-transactions engine 87WSREP_DESC= Build wsrep clustering 88ZMQ_DESC= ZeroMQ support 89.endif 90 91CMAKE_ARGS+= -DCMAKE_PREFIX_PATH=${PREFIX} \ 92 -DINSTALL_DOCDIR="share/doc/mysql" \ 93 -DINSTALL_DOCREADMEDIR="share/doc/mysql" \ 94 -DINSTALL_INFODIR="info" \ 95 -DINSTALL_LIBDIR="lib/mysql" \ 96 -DINSTALL_MANDIR="share/man" \ 97 -DINSTALL_MYSQLDATADIR="${MARIADB_DBDIR}" \ 98 -DINSTALL_MYSQLSHAREDIR="share/mysql" \ 99 -DINSTALL_MYSQLTESTDIR= \ 100 -DINSTALL_PLUGINDIR="lib/mysql/plugin" \ 101 -DINSTALL_SBINDIR="libexec" \ 102 -DINSTALL_SCRIPTDIR="bin" \ 103 -DINSTALL_SQLBENCHDIR= \ 104 -DINSTALL_SUPPORTFILESDIR="share/mysql" \ 105 -DINSTALL_SYSCONFDIR="${ETCDIR}" \ 106 -DINSTALL_SYSCONF2DIR="${ETCDIR}/conf.d" \ 107 -DINSTALL_UNIX_ADDRDIR="${MARIADB_RUNDIR}/${MARIADB_SOCK}" \ 108 -DWITH_PCRE=system \ 109 -DPCRE_LIBRARY_DIRS=${PREFIX}/lib \ 110 -DWITH_SSL="${OPENSSLBASE}" \ 111 -DCURSES_CURSES_LIBRARY="/usr/lib/libcurses.so" \ 112 -DCURSES_FORM_LIBRARY="/usr/lib/libform.so" \ 113 -DCURSES_CURSES_LIBRARY="/usr/lib/libncurses.so" \ 114 -DKRB5_CONFIG="${KRB5CONFIG}" \ 115 -DCURSES_NCURSES_LIBRARY="${NCURSESLIB}/libncurses.so" \ 116 -DCOMPILATION_COMMENT="FreeBSD Ports" \ 117 -DPLUGIN_AUTH_TEST_PLUGIN=NO 118CMAKE_OFF+= CONC_WITH_UNIT_TESTS CONNECT_WITH_MONGO WITH_UNIT_TESTS 119CMAKE_ON+= WITH_LIBWRAP WITHOUT_DOCS 120DISABLED_PLUGINS+= AUTH_TEST_PLUGIN DAEMON_EXAMPLE DIALOG_EXAMPLES \ 121 EXAMPLE EXAMPLE_KEY_MANAGEMENT FTEXAMPLE 122 123DATADIR= ${PREFIX}/share/mysql 124ETCDIR= ${PREFIX}/etc/mysql 125 126CONFLICTS_INSTALL= mariadb10[0-57-9]-${PKGNAMESUFFIX:C/^[0-9]*-//}-* \ 127 mariadb1011-${PKGNAMESUFFIX:C/^[0-9]*-//}-* \ 128 mysql[0-9]*-${PKGNAMESUFFIX:C/^[0-9]*-//}-* \ 129 mysqlwsrep* \ 130 mytop \ 131 percona[0-9]*-${PKGNAMESUFFIX:C/^[0-9]*-//}-* 132 133FASTMTX_CMAKE_BOOL= WITH_FAST_MUTEXES 134GSSAPI_BASE_USES= gssapi 135GSSAPI_HEIMDAL_USES= gssapi:heimdal 136GSSAPI_MIT_USES= gssapi:mit 137GSSAPI_NONE_CMAKE_ON= -DPLUGIN_AUTH_GSSAPI_CLIENT=OFF 138OPTIONS_SUB= yes 139SUB_LIST+= MARIADB_RUNDIR="${MARIADB_RUNDIR}" \ 140 MARIADB_SOCK="${MARIADB_SOCK}" 141 142.if ${PKGNAMESUFFIX:M*-client} 143# MySQL-Client part 144CMAKE_ON+= CONC_WITH_MYSQLCOMPAT WITHOUT_SERVER 145CMAKE_OFF+= WITH_WSREP 146USES+= readline 147USE_LDCONFIG= ${PREFIX}/lib/mysql 148SUB_FILES+= my.cnf.sample client.cnf.sample 149 150.else # ! ${PKGNAMESUFFIX:M*-client} 151# MySQL-Server part 152USES+= mysql:106m 153 154USE_LDCONFIG+= ${PREFIX}/lib/mysql/plugin 155USE_RC_SUBR= mysql-server 156 157CMAKE_ON+= CMAKE_SKIP_BUILD_RPATH WITH_EMBEDDED_SERVER 158CMAKE_OFF+= WITH_CLIENT 159SUB_FILES+= server.cnf.sample 160SUB_LIST+= MARIADB_DBDIR="${MARIADB_DBDIR}" \ 161 MARIADB_LOGDIR="${MARIADB_LOGDIR}" \ 162 MARIADB_USER="${MARIADB_USER}" 163PLIST_SUB+= MARIADB_LOGDIR="${MARIADB_LOGDIR}" \ 164 MARIADB_USER="${MARIADB_USER}" \ 165 MARIADB_GROUP="${MARIADB_GROUP}" 166 167.for ENGINE in ${OPTIONS_GROUP_ENGINES:NINNOBASE} 168${ENGINE}_CMAKE_OFF= -DPLUGIN_${ENGINE}=NO 169${ENGINE}_CMAKE_ON= -DPLUGIN_${ENGINE}=DYNAMIC 170.endfor 171INNOBASE_VARS_OFF= disabled_plugins+=INNOBASE 172COLUMNSTORE_BROKEN= error: __float128 is not supported on this target 173CONNECT_EXTRA_LIB_DEPENDS= libodbc.so:databases/unixODBC 174CONNECT_EXTRA_USE= gnome=libxml2 175CONNECT_EXTRA_USES= gnome 176CONNECT_EXTRA_CMAKE_BOOL= CONNECT_WITH_LIBXML2 CONNECT_WITH_ODBC 177GSSAPI_NONE_VARS= disabled_plugins+=AUTH_GSSAPI 178LZ4_CMAKE_ON= -DGRN_WITH_LZ4=ON -DWITH_INNODB_LZ4=ON -DWITH_ROCKSDB_LZ4=ON 179LZ4_CMAKE_OFF= -DGRN_WITH_LZ4=OFF -DWITH_INNODB_LZ4=OFF -DWITH_ROCKSDB_LZ4=OFF 180LZ4_LIB_DEPENDS= liblz4.so:archivers/liblz4 181LZO_CMAKE_ON= -DWITH_INNODB_LZO=ON 182LZO_CMAKE_OFF= -DWITH_INNODB_LZO=OFF 183LZO_LIB_DEPENDS= liblzo2.so:archivers/lzo2 184MROONGA_IMPLIES= LZ4 185MSGPACK_LIB_DEPENDS= libmsgpackc.so:devel/msgpack-c 186OQGRAPH_LIB_DEPENDS= libboost_system.so:devel/boost-libs \ 187 libJudy.so:devel/judy 188ROCKSDB_USES= python 189ROCKSDB_CMAKE_ON= -DPYTHON_SHEBANG=${PYTHON_CMD} -DWITH_ROCKSDB_zstd=ON 190SNAPPY_CMAKE_ON= -DWITH_INNODB_SNAPPY=ON -DWITH_ROCKSDB_snappy=ON 191SNAPPY_CMAKE_OFF= -DWITH_INNODB_SNAPPY=OFF -DWITH_ROCKSDB_snappy=OFF 192SNAPPY_LIB_DEPENDS= libsnappy.so:archivers/snappy 193WSREP_CMAKE_BOOL= WITH_WSREP 194WSREP_LIB_DEPENDS= libgalera.so:databases/galera26 195WSREP_RUN_DEPENDS= bash:shells/bash \ 196 rsync:net/rsync \ 197 #stunnel:security/stunnel 198WSREP_SHEBANG_FILES= bin/wsrep_sst_rsync 199ZMQ_LIB_DEPENDS= libzmq.so:net/libzmq4 200ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd 201 202.for PLUGIN in ${DISABLED_PLUGINS} 203CMAKE_ARGS+= -DPLUGIN_${PLUGIN}=NO 204.endfor 205 206.endif # ${PKGNAMESUFFIX:M*-client} 207 208.include <bsd.mport.options.mk> 209 210.if ${OPSYS} == FreeBSD 211SUB_LIST+= LEGACY_LIMITS="@comment " MODERN_LIMITS="" 212.else 213SUB_LIST+= LEGACY_LIMITS="" MODERN_LIMITS="@comment " 214.endif 215 216.if ${SSL_DEFAULT} != base && ${PORT_OPTIONS:MGSSAPI_BASE} 217GSSAPI_BASE_IGNORE= GSSAPI_BASE is not compatible with OpenSSL from ports. Use other GSSAPI options or OpenSSL from base system 218.endif 219 220.if ${SSL_DEFAULT:Mlibressl*} 221CFLAGS+= -Wno-incompatible-function-pointer-types 222.endif 223 224.if ${ARCH} != amd64 && ${ARCH} != aarch64 225PLIST_SUB+= WSREP="@comment " 226.endif 227 228post-patch: 229 ${CP} ${WRKSRC}/cmake/os/FreeBSD.cmake \ 230 ${WRKSRC}/cmake/os/MidnightBSD.cmake 231 ${REINPLACE_CMD} -e 's|/usr/bin/perl|/usr/local/bin/perl|g' ${WRKSRC}/scripts/CMakeLists.txt 232 ${REINPLACE_CMD} -e 's|/usr/bin/perl|/usr/local/bin/perl|g' ${WRKSRC}/scripts/*.pl 233 234pre-configure: 235 ${REINPLACE_CMD} 's|\(CHECK_LIBRARY_EXISTS.*\) "" HAVE_|\1 ${LOCALBASE}/lib HAVE_|' \ 236 ${WRKSRC}/cmake/pcre.cmake \ 237 ${WRKSRC}/storage/innobase/*.cmake 238 239post-configure: 240 ${REINPLACE_CMD} -Ee 's|(#define INCLUDE.*)"$$|\1 -I${PREFIX}/include"|' \ 241 -e 's|(#define LIBS .*)"$$|\1 -L${PREFIX}/lib"|' \ 242 ${WRKSRC}/libmariadb/mariadb_config/mariadb_config.c 243 ${REINPLACE_CMD} 's|%%LOCALBASE%%|${PREFIX}|' \ 244 ${WRKSRC}/scripts/mysql_config.sh 245 246pre-install: 247 ${MKDIR} ${FAKE_DESTDIR}${ETCDIR}/conf.d 248 249.if ${PKGNAMESUFFIX:M*-client} 250post-install: 251 ${MKDIR} ${ETCDIR} 252 ${MKDIR} ${ETCDIR}/conf.d 253 ${INSTALL_DATA} ${WRKDIR}/my.cnf.sample ${ETCDIR}/my.cnf.sample 254 ${INSTALL_DATA} ${WRKDIR}/client.cnf.sample \ 255 ${ETCDIR}/conf.d/client.cnf.sample 256 -${RM} -r ${FAKE_DESTDIR}${DATADIR} \ 257 ${FAKE_DESTDIR}${PREFIX}/include/mysql/server \ 258 ${FAKE_DESTDIR}${ETCDIR}/init.d \ 259 ${FAKE_DESTDIR}${PREFIX}/lib/mysql/pkgconfig 260 261post-install-GSSAPI_NONE-off: 262 ${STRIP_CMD} ${FAKE_DESTDIR}${PREFIX}/lib/mysql/plugin/auth_gssapi_client.so 263 264.else # ! ${PKGNAMESUFFIX:M*-client} 265post-install: 266 ${INSTALL_DATA} ${WRKDIR}/server.cnf.sample \ 267 ${ETCDIR}/conf.d/server.cnf.sample 268 ${MV} ${PREFIX}/share/user_map.conf \ 269 ${PREFIX}/etc/mysql/user_map.conf.sample 270 ${MV} ${PREFIX}/share/pam_user_map.so \ 271 ${PREFIX}/lib/mysql/ 272 -${RM} -r ${PREFIX}/share/mysql/policy \ 273 ${PREFIX}/include/mysql/server/private \ 274 ${PREFIX}/lib/mysql/pkgconfig \ 275 ${PREFIX}/libexec/rcmysql \ 276 ${FAKE_DESTDIR}/suite \ 277 ${ETCDIR}/init.d \ 278 ${ETCDIR}/logrotate.d \ 279 ${DOCSDIR}/COPYING 280 ${MKDIR} ${FAKE_DESTDIR}${MARIADB_LOGDIR} 281 ${SED} '/%%/d;/^@comment /d;s/^/@comment /' ${PORTSDIR}/${CATEGORIES:[1]}/${PORTNAME}${PKGNAMESUFFIX:S/-server/-client/}/pkg-plist \ 282 >> ${TMPPLIST} 283 284post-install-MROONGA-on: 285 ${MV} ${FAKE_DESTDIR}${PREFIX}/share/groonga ${FAKE_DESTDIR}${DOCSDIR} 286 -${RM} ${FAKE_DESTDIR}${DOCSDIR}/groonga/COPYING \ 287 ${FAKE_DESTDIR}${DATADIR}/mroonga/COPYING 288 289post-install-SPIDER-on: 290 ${MV} ${FAKE_DESTDIR}${ETCDIR}/conf.d/spider.cnf \ 291 ${FAKE_DESTDIR}${ETCDIR}/conf.d/spider.cnf.sample 292 293post-install-WSREP-on: 294 ${MV} ${FAKE_DESTDIR}${DATADIR}/wsrep.cnf \ 295 ${FAKE_DESTDIR}${ETCDIR}/conf.d/wsrep.cnf.sample 296 297.endif # ${PKGNAMESUFFIX:M*-client} 298 299.include <bsd.port.mk> 300