Files
2026-10-04 04:07:15 +00:00

181 lines
5.5 KiB
Makefile

PORTNAME?= mysql
PORTVERSION= 8.4.11
PORTREVISION?= 4
CATEGORIES= databases
MASTER_SITES= MYSQL/MySQL-8.4
PKGNAMESUFFIX?= 84-server
MAINTAINER= joneum@FreeBSD.org
COMMENT?= Multithreaded SQL database (server)
WWW= https://www.mysql.com/
LICENSE= GPLv2
# MySQL8.2+ supports only 64-bit platforms
# Review list after 13.x EoL
NOT_FOR_ARCHS= armv6 armv7 i386 powerpc
USES= bison:build cmake:noninja cpe groff:run libedit localbase \
ncurses perl5 pkgconfig shebangfix ssl compiler:c++20-lang
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}${DISTVERSIONSUFFIX}
SLAVEDIRS= databases/mysql84-client
CPE_PRODUCT?= mysql_server
CPE_VENDOR= oracle
USE_CXXSTD= c++20
USE_PERL5= run
MY_DBDIR= /var/db/mysql
MY_SECDIR= /var/db/mysql_secure
MY_TMPDIR= /var/db/mysql_tmpdir
.if defined(CLIENT_ONLY)
BUILD_DEPENDS+= curl>0:ftp/curl \
icu>0:devel/icu \
liblz4>0:archivers/liblz4
LIB_DEPENDS+= libfido2.so:security/libfido2 \
${LIB_DEPENDS_${ARCH}}
.else
LIB_DEPENDS+= libcurl.so:ftp/curl \
libicutu.so:devel/icu \
liblz4.so:archivers/liblz4 \
${LIB_DEPENDS_${ARCH}}
.endif
LIB_DEPENDS_aarch64= libunwind.so:devel/libunwind
LIB_DEPENDS_amd64= libunwind.so:devel/libunwind
LIB_DEPENDS_powerpc64= libunwind.so:devel/libunwind
LIB_DEPENDS_powerpc64le= libunwind.so:devel/libunwind
CMAKE_BUILD_TYPE= Release
CFLAGS+= -fPIC
CFLAGS_aarch64?= -march=armv8-a+crc+crypto
CMAKE_ARGS+= -DINSTALL_LAYOUT=FREEBSD \
-DINSTALL_LDCONFIGDIR="${LOCALBASE}/libdata/ldconfig" \
-DINSTALL_PKGCONFIGDIR="${LOCALBASE}/libdata/pkgconfig" \
-DINSTALL_DOCDIR="share/doc/mysql" \
-DINSTALL_DOCREADMEDIR="share/doc/mysql" \
-DINSTALL_INCLUDEDIR="include/mysql" \
-DINSTALL_INFODIR="${INFO_PATH}" \
-DINSTALL_LIBDIR="lib/mysql" \
-DINSTALL_PRIV_LIBDIR="lib/mysql/private" \
-DINSTALL_MANDIR="share/man" \
-DINSTALL_MYSQLDATADIR="${MY_DBDIR}" \
-DINSTALL_MYSQLKEYRINGDIR="etc/mysql/keyring" \
-DINSTALL_MYSQLSHAREDIR="share/mysql" \
-DINSTALL_MYSQLTESTDIR="" \
-DINSTALL_PLUGINDIR="lib/mysql/plugin" \
-DINSTALL_SBINDIR="libexec" \
-DINSTALL_SCRIPTDIR="bin" \
-DINSTALL_SECURE_FILE_PRIVDIR="${MY_SECDIR}" \
-DINSTALL_SHAREDIR="share" \
-DINSTALL_SUPPORTFILESDIR="share/mysql" \
-DWITH_BOOST="${WRKSRC}/boost" \
-DWITH_SYSTEM_LIBS=1 \
-DWITH_EDITLINE=system \
-DWITH_LZ4=system \
-DWITH_ICU=system \
-DWITH_CURL=system \
-DWITH_ZSTD=bundled \
-DWITH_PROTOBUF=bundled \
-DWITH_SSL=system \
-DWITH_ZLIB=system
SHEBANG_FILES= scripts/*.pl* scripts/*.sh
.ifdef USE_MYSQL
IGNORE= you have `USE_MYSQL' variable defined either in environment or in make(1) arguments, please undefine and try again
.endif
SUB_LIST= MY_DBDIR=${MY_DBDIR} \
MY_SECDIR=${MY_SECDIR} \
MY_TMPDIR=${MY_TMPDIR}
PLIST_SUB= MY_DBDIR=${MY_DBDIR} \
MY_SECDIR=${MY_SECDIR} \
MY_TMPDIR=${MY_TMPDIR}
# MySQL-Server part
.if !defined(CLIENT_ONLY)
USES+= mysql:84
CONFLICTS_INSTALL= mysql*-server \
mysqlwsrep*-server \
mariadb*-server \
percona*-server
USE_RC_SUBR= mysql-server mysqlrouter
SUB_FILES= my.cnf.sample mysqlrouter.conf.sample pkg-message
USERS= mysql mysqlrouter
GROUPS= mysql mysqlrouter
USE_LDCONFIG+= ${PREFIX}/lib/mysql/plugin
CMAKE_ARGS+= -DWITHOUT_CLIENTLIBS="ON"
# Disable unit tests, it fails on !amd64 and <13.0 due to c++17 rules
CMAKE_ARGS+= -DWITH_UNIT_TESTS="OFF"
OPTIONS_GROUP= STORAGE
OPTIONS_GROUP_STORAGE= ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE PARTITION PERFSCHEMA
OPTIONS_SUB= YES
STORAGE_DESC= Permissible "Storage Engines" (to compile statically into the server)
ARCHIVE_DESC= Compile "Archive Storage" statically in server
BLACKHOLE_DESC= Compile "Blackhole Storage" statically in server
EXAMPLE_DESC= Compile "Example Storage" statically in server
FEDERATED_DESC= Compile "Federated Storage" statically in server
INNOBASE_DESC= Compile "InnoDB Storage" statically in server
PARTITION_DESC= Compile "Partitioning support Storage" statically in server
PERFSCHEMA_DESC= Compile "Performance Schema Storage" statically in server
ARCHIVE_CMAKE_ON= -DWITH_ARCHIVE_STORAGE_ENGINE=1
BLACKHOLE_CMAKE_ON= -DWITH_BLACKHOLE_STORAGE_ENGINE=1
EXAMPLE_CMAKE_ON= -DWITH_EXAMPLE_STORAGE_ENGINE=1
FEDERATED_CMAKE_ON= -DWITH_FEDERATED_STORAGE_ENGINE=1
INNOBASE_CMAKE_ON= -DWITH_INNOBASE_STORAGE_ENGINE=1
PARTITION_CMAKE_ON= -DWITH_PARTITION_STORAGE_ENGINE=1
PERFSCHEMA_CMAKE_ON= -DWITH_PERFSCHEMA_STORAGE_ENGINE=1
OPTIONS_GROUP+= FEATURES
OPTIONS_GROUP_FEATURES= PERFSCHM
FEATURES_DESC= Default features knobs
PERFSCHM_DESC= Enable "Performance Schema" by default (High RAM usage)
OPTIONS_DEFAULT+= PERFSCHM
PERFSCHM_SUB_LIST+= PERFSCHEMRC=""
# todo, likely broken, see
# https://dev.mysql.com/doc/refman/8.4/en/source-configuration-options.html
PERFSCHM_SUB_LIST_OFF+= PERFSCHEMRC="--skip-performance-schema"
FEDERATED_SUB_LIST+= FEDER="--federated"
FEDERATED_SUB_LIST_OFF+= FEDER=""
.endif
.include <bsd.port.options.mk>
CXXFLAGS+= -malign-double
.include <bsd.port.pre.mk>
post-extract:
@${RM} -rv ${WRKSRC}/sql/sql_hints.yy.cc ${WRKSRC}/sql/sql_hints.yy.h
.if !defined(CLIENT_ONLY)
post-install:
${MKDIR} ${STAGEDIR}${ETCDIR}
${INSTALL_DATA} ${WRKDIR}/my.cnf.sample ${STAGEDIR}${ETCDIR}/my.cnf.sample
${MKDIR} ${STAGEDIR}${PREFIX}/etc/mysqlrouter
${INSTALL_DATA} ${WRKDIR}/mysqlrouter.conf.sample \
${STAGEDIR}${PREFIX}/etc/mysqlrouter/mysqlrouter.conf.sample
${MKDIR} ${STAGEDIR}${ETCDIR}/keyring
${MKDIR} ${STAGEDIR}${MY_SECDIR}
${MKDIR} ${STAGEDIR}${MY_TMPDIR}
${MKDIR} ${STAGEDIR}${DOCSDIR}
${MV} ${STAGEDIR}${PREFIX}/LICENSE.router ${STAGEDIR}${PREFIX}/README.router ${STAGEDIR}${DOCSDIR}
.endif
.include <bsd.port.post.mk>