Index: Mk/Uses/mysql.mk =================================================================== --- /dev/null +++ Mk/Uses/mysql.mk @@ -0,0 +1,176 @@ +# $FreeBSD$ +# +# Provide support for MySQL/MariaDB/Percona (mysql) +# +# Feature: mysql +# Usage: USES= mysql[:version] +# +# Maintainer can set version required. Minimum and maximum +# versions can be specified; e.g. 5.6-, 5.7+ +# MySQL flavours MariaDB and Percona are identified by the +# m and p version suffixes respectively, eg 10.0m+ +# +# WANT_MYSQL= server[:fetch] +# +# Add MySQL component dependency, using +# WANT_MYSQL= component[:target]. +# For the full list use make -V _USE_MYSQL_DEP +# If no version is given (by the maintainer via the port or +# by the user via defined variable), try to find the +# currently installed version. Fall back to default if +# necessary. +# +# MAINTAINER: brnrd@FreeBSD.org + +.if !defined(_INCLUDE_USES_MYSQL_MK) + +_INCLUDE_USES_MYSQL_MK= yes + +# Variables set by mysql.mk: +# +# MYSQL_VER +# Detected PostgreSQL version. Do *not* use this +# to add dependencies; use WANT_MYSQL as explained above +# + +VALID_MYSQL_VER= 5.5 5.6 5.7 5.5m 10.0m 10.1m 5.5p 5.6p + +# Override non-default LIBVERS like this: +#MYSQL60_LIBVER=19 + +MYSQL_LIBVER= 18 +.for v in ${VALID_MYSQL_VER:S,.,,} +MYSQL$v_LIBVER?= ${MYSQL_LIBVER} +.endfor + +.include "${PORTSDIR}/Mk/bsd.default-versions.mk" + +.for v in ${MYSQL_DEFAULT} +. if ! ${VALID_MYSQL_VER:M$v} +IGNORE= Invalid MYSQL default version ${MYSQL_DEFAULT}; valid versions are ${VALID_MYSQL_VER} +. endif +.endfor + +. for w in WITH DEFAULT +. ifdef $w_MYSQL_VER +WARNING+= "$w_MYSQL_VER is defined, consider using DEFAULT_VERSIONS=mysql=${$w_MYSQL_VER:C,^.,&.,} instead" +MYSQL_DEFAULT?= ${$w_MYSQL_VER:C,^.,&.,} +. endif +. endfor + +. ifdef DEFAULT_MYSYQL_VER && WITH_MYSQL_VER +IGNORE= will not allow setting both DEFAULT_MYSQL_VER and WITH_MYSQL_VER. Use DEFAULT_VERSIONS=mysql=5.6 instead +. endif + +# Setting/finding MySQL version and flavour we want. +MYSQL_CLI?= ${LOCALBASE}/bin/mysql +. if exists(${MYSQL_CLI}) +_MYSQL_CLI_VER!= ${MYSQL_CLI} --version | ${SED} -e 's/.*Distrib \([0-9]\{1,2\}\)\.\([0-9]*\).*/\1.\2/' +_MARIADB!= ${MYSQL_CLI} --version | ${GREP} MariaDB | wc -l +_PERCONA!= ${MYSQL_CLI} --version | ${GREP} Percona | wc -l +. if ${_MARIADB} == 1 +_MYSQL_FLAVOUR= MariaDB +_MYSQL_VER= ${_MYSQL_CLI_VER}m +. elif ${_PERCONA} == 1 +_MYSQL_FLAVOUR= Percona +_MYSQL_VER= ${_MYSQL_CLI_VER}p +. else +_MYSQL_FLAVOUR= MySQL +_MYSQL_VER= ${_MYSQL_CLI_VER} +. endif +. endif + +# Handle the + and - version stuff +. if !empty(mysql_ARGS) +. if ${mysql_ARGS:M*+} +. for version in ${VALID_MYSQL_VER} +. if ${mysql_ARGS:S/+//} <= ${version} +_WANT_MYSQL_VER+=${version} +. endif +. endfor +. elif ${mysql_ARGS:M*-} +. for version in ${VALID_MYSQL_VER} +. if ${mysql_ARGS:S/-//} >= ${version} +_WANT_MYSQL_VER+=${version} +. endif +. endfor +. endif +_WANT_MYSQL_VER?= ${mysql_ARGS} +. endif + +# Try to match default version, otherwise just take the first version +# that matches +. if !empty(_WANT_MYSQL_VER) +. for version in ${_WANT_MYSQL_VER} +. if ${MYSQL_DEFAULT} == ${version} +MYSQL_VER= ${version} +. endif +MYSQL_VER?= ${version} +. endfor +. endif +# Derive MySQL flavour from version +. if ${MYSQL_VER:M[0-9.]*m} +MYSQL_FLAVOUR= MariaDB +. elif ${MYSQL_VER:M[0-9.]*p} +MYSQL_FLAVOUR= Percona +. else +MYSQL_FLAVOUR= MySQL +. endif +# Now we can generate a proper message +. if !empty(_WANT_MYSQL_VER) +. if defined(_MYSQL_VER) && ${_MYSQL_VER} != ${MYSQL_VER} +IGNORE?= cannot install: the port wants ${MYSQL_FLAVOUR}-client version ${_WANT_MYSQL_VER} and you have ${_MYSQL_FLAVOUR} version ${_MYSQL_VER} installed +. endif +. endif + +# OK, so the port is ambivalent, we'll just take what's on the system. +MYSQL_VER?= ${_MYSQL_VER} +MYSQL_FLAVOUR?= ${_MYSQL_FLAVOUR} + +# After all that, we still have found nothing! +. if empty(MYSQL_VER) +MYSQL_VER= ${MYSQL_DEFAULT} +MYSQL_FLAVOUR= MySQL +. endif + +# We don't want to be :S,.,, the whole time when doing port version checks +MYSQL_VER_NODOT= ${MYSQL_VER:S,.,,} + +# And now we are checking if we can use it +. if defined(MYSQL${MYSQL_VER_NODOT}_LIBVER) +# Compat. Please DO NOT use IGNORE_WITH_MYSQL! +. if defined(IGNORE_WITH_MYSQL) +DEV_WARNING+= "Do not set IGNORE_WITH_MYSQL, use the version argument to USES=mysql" +. for ver in ${IGNORE_WITH_MYSQL} +. if (${MYSQL_VER} == ${ver}) +IGNORE?= cannot install: does not work with ${_MYSQL_FLAVOUR:tl}${MYSQL_VER_NODOT:C/[mp//]}-client (${_MYSQL_FLAVOUR} ${IGNORE_WITH_MYSQL} not supported) +. endif +. endfor +. endif # IGNORE_WITH_MYSQL + +MYSQL_CLIENT_PORT=${PORTSDIR}/databases/${MYSQL_FLAVOUR:tl}${MYSQL_VER_NODOT:C/[mp]//}-client +MYSQL_SERVER_PORT=${PORTSDIR}/databases/${MYSQL_FLAVOUR:tl}${MYSQL_VER_NODOT:C/[mp]//}-server + +_USE_MYSQL_DEP= client embedded lib server +. if defined(WANT_MYSQL) +. if ${WANT_MYSQL:Mclient} +RUN_DEPENDS+= ${LOCALBASE}/bin/mysql:${MYSQL_CLIENT_PORT} +. elif ${WANT_MYSQL:Membedded} +BUILD_DEPENDS+= ${LOCALBASE}/lib/mysql/libmysqld.a:${MYSQL_SERVER_PORT} +RUN_DEPENDS+= ${LOCALBASE}/libexec/mysqld:${MYSQL_SERVER_PORT} +. elif ${WANT_MYSQL:Mlib} +LIB_DEPENDS+= libmysqlclient.so.${MYSQL${MYSQL_VER_NODOT}_LIBVER}:${MYSQL_CLIENT_PORT} +. elif ${WANT_MYSQL:Mserver} +RUN_DEPENDS+= ${LOCALBASE}/libexec/mysqld:${MYSQL_SERVER_PORT} +. endif +. else # WANT_MYSQL undefined +LIB_DEPENDS+= libmysqlclient.so.${MYSQL${MYSQL_VER_NODOT}_LIBVER}:${MYSQL_CLIENT_PORT} +. endif + +. else +IGNORE?= cannot install: unknown MySQL version: ${MYSQL_VER} +. endif # Check for correct version +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib + +.endif # !defined(_INCLUDE_USES_MYSQL_MK) Index: Mk/bsd.database.mk =================================================================== --- Mk/bsd.database.mk +++ Mk/bsd.database.mk @@ -7,30 +7,12 @@ Database_Include_MAINTAINER= ports@FreeBSD.org # This file contains some routines to interact with different databases, such -# as MySQL and Berkley DB. To include this file, define macro -# USE_[DATABASE], for example USE_MYSQL. Defining macro like +# as Berkley DB and Firebird. To include this file, define macro +# USE_[DATABASE], for example USE_BDB. Defining macro like # USE_[DATABASE]_VER or WANT_[DATABASE]_VER will include this file as well. # ## -# USE_MYSQL - Add MySQL (client/server/embedded) dependency (default: -# client). -# If no version is given (by the maintainer via the port or -# by the user via defined variable), try to find the -# currently installed version. Fall back to default if -# necessary (MySQL-5.6 = 56). -# DEFAULT_MYSQL_VER -# - MySQL default version. Can be overridden within a port. -# Default: 56. -# WANT_MYSQL_VER -# - Maintainer can set an arbitrary version of MySQL to always -# build this port with (overrides WITH_MYSQL_VER). -# IGNORE_WITH_MYSQL -# - This variable can be defined if the ports does not support -# one or more versions of MySQL. -# WITH_MYSQL_VER -# - User defined variable to set MySQL version. -# MYSQL_VER -# - Detected MySQL version. +# USE_MYSQL - Do not use this-- instead USES=mysql ## # USE_BDB - Add Berkeley DB library dependency. # If no version is given (by the maintainer via the port or @@ -93,100 +75,6 @@ .include "${PORTSDIR}/Mk/bsd.default-versions.mk" -.if defined(DEFAULT_MYSQL_VER) -WARNING+= "DEFAULT_MYSQL_VER is defined, consider using DEFAULT_VERSIONS=mysql=${DEFAULT_MYSQL_VER} instead" -.endif - -.if defined(USE_MYSQL) -DEFAULT_MYSQL_VER?= ${MYSQL_DEFAULT:S/.//} -# MySQL client version currently supported. -MYSQL51_LIBVER= 16 -MYSQL53m_LIBVER= 16 -MYSQL55_LIBVER= 18 -MYSQL55m_LIBVER= 18 -MYSQL55p_LIBVER= 18 -MYSQL56_LIBVER= 18 -MYSQL56p_LIBVER= 18 -MYSQL100m_LIBVER= 18 - -# Setting/finding MySQL version we want. -.if exists(${LOCALBASE}/bin/mysql) -_MYSQL!= ${LOCALBASE}/bin/mysql --version | ${SED} -e 's/.*Distrib \([0-9]\{1,2\}\)\.\([0-9]*\).*/\1\2/' -_PERCONA!= ${LOCALBASE}/bin/mysql --version | ${GREP} Percona | wc -l -_MARIADB!= ${LOCALBASE}/bin/mysql --version | ${GREP} MariaDB | wc -l - -.if ${_PERCONA} == 1 -_MYSQL_VER= ${_MYSQL}p -.elif ${_MARIADB} == 1 -_MYSQL_VER= ${_MYSQL}m -.else -_MYSQL_VER= ${_MYSQL} -.endif -.endif - -.if defined(WANT_MYSQL_VER) -.if defined(WITH_MYSQL_VER) && ${WITH_MYSQL_VER} != ${WANT_MYSQL_VER} -IGNORE= cannot install: the port wants mysql${WANT_MYSQL_VER}-client and you try to install mysql${WITH_MYSQL_VER}-client -.endif -MYSQL_VER= ${WANT_MYSQL_VER} -.elif defined(WITH_MYSQL_VER) -MYSQL_VER= ${WITH_MYSQL_VER} -.else -.if defined(_MYSQL_VER) -MYSQL_VER= ${_MYSQL_VER} -.else -MYSQL_VER= ${DEFAULT_MYSQL_VER} -.endif -.endif # WANT_MYSQL_VER - -.if defined(_MYSQL_VER) -.if ${_MYSQL_VER} != ${MYSQL_VER} -IGNORE= cannot install: MySQL versions mismatch: mysql${_MYSQL_VER}-client is installed and wanted version is mysql${MYSQL_VER}-client -.endif -.endif - -.if (${MYSQL_VER} == "53m") -_MYSQL_CLIENT= databases/mariadb-client -_MYSQL_SERVER= databases/mariadb-server -.elif (${MYSQL_VER} == "55m") -_MYSQL_CLIENT= databases/mariadb55-client -_MYSQL_SERVER= databases/mariadb55-server -.elif (${MYSQL_VER} == "100m") -_MYSQL_CLIENT= databases/mariadb100-client -_MYSQL_SERVER= databases/mariadb100-server -.elif (${MYSQL_VER} == "55p") -_MYSQL_CLIENT= databases/percona55-client -_MYSQL_SERVER= databases/percona55-server -.elif (${MYSQL_VER} == "56p") -_MYSQL_CLIENT= databases/percona56-client -_MYSQL_SERVER= databases/percona56-server -.else -_MYSQL_CLIENT= databases/mysql${MYSQL_VER}-client -_MYSQL_SERVER= databases/mysql${MYSQL_VER}-server -.endif - -# And now we are checking if we can use it -.if defined(MYSQL${MYSQL_VER}_LIBVER) -.if defined(IGNORE_WITH_MYSQL) -. for VER in ${IGNORE_WITH_MYSQL} -. if (${MYSQL_VER} == "${VER}") -IGNORE= cannot install: does not work with MySQL version ${MYSQL_VER} (MySQL ${IGNORE_WITH_MYSQL} not supported) -. endif -. endfor -.endif # IGNORE_WITH_MYSQL -.if (${USE_MYSQL} == "server" || ${USE_MYSQL} == "embedded") -RUN_DEPENDS+= ${LOCALBASE}/libexec/mysqld:${PORTSDIR}/${_MYSQL_SERVER} -.if (${USE_MYSQL} == "embedded") -BUILD_DEPENDS+= ${LOCALBASE}/lib/mysql/libmysqld.a:${PORTSDIR}/${_MYSQL_SERVER} -.endif -.else -LIB_DEPENDS+= libmysqlclient.so.${MYSQL${MYSQL_VER}_LIBVER}:${PORTSDIR}/${_MYSQL_CLIENT} -.endif -.else -IGNORE= cannot install: unknown MySQL version: ${MYSQL_VER} -.endif # Check for correct libs -.endif # USE_MYSQL - .if defined(USE_BDB) # TODO: avoid malformed conditional with invalid USE_BDB/WITH_BDB_VER # check if + works properly from test builds 01h12m23s Index: databases/mariadb55-client/Makefile =================================================================== --- databases/mariadb55-client/Makefile +++ databases/mariadb55-client/Makefile @@ -5,15 +5,17 @@ COMMENT= Multithreaded SQL database (client) +LICENSE+= LGPL21 + MASTERDIR= ${.CURDIR}/../mariadb55-server FILESDIR= ${.CURDIR}/files PATCHDIR= ${.CURDIR}/files PLIST= ${.CURDIR}/pkg-plist -CONFLICTS_INSTALL= mysql*-client-* \ - mariadb1[0-9][0-9]-client-* \ - mariadb5[0-46-9]-client-* \ +CONFLICTS_INSTALL= mariadb5[0-46-9]-client-* \ + mariadb1*-client-* \ + mysql*-client-* \ percona*-client-* CMAKE_ARGS+= -DWITHOUT_SERVER=1 Index: databases/mariadb55-server/Makefile =================================================================== --- databases/mariadb55-server/Makefile +++ databases/mariadb55-server/Makefile @@ -1,7 +1,7 @@ # $FreeBSD$ PORTNAME?= mariadb -PORTVERSION= 5.5.44 +PORTVERSION= 5.5.46 CATEGORIES= databases ipv6 MASTER_SITES= http://ftp.osuosl.org/pub/mariadb/${PORTNAME}-${PORTVERSION}/source/ \ http://mirrors.supportex.net/mariadb/${PORTNAME}-${PORTVERSION}/source/ \ @@ -17,6 +17,8 @@ MAINTAINER= never@nevermind.kiev.ua COMMENT?= Multithreaded SQL database (server) +LICENSE= GPLv2 + SUB_FILES= pkg-message PKGMESSAGE= ${WRKDIR}/pkg-message @@ -55,12 +57,11 @@ .if !defined(CLIENT_ONLY) # MySQL-Server part -USE_MYSQL= yes -WANT_MYSQL_VER= 55m +USES+= mysql:5.5m -CONFLICTS_INSTALL= mysql*-server-* \ - mariadb1[0-9][0-9]-server-* \ - mariadb5[0-46-9]-server-* \ +CONFLICTS_INSTALL= mariadb5[0-46-9]-server-* \ + mariadb1*-server-* \ + mysql*-server-* \ percona*-server-* USE_RC_SUBR= mysql-server Index: databases/mariadb55-server/distinfo =================================================================== --- databases/mariadb55-server/distinfo +++ databases/mariadb55-server/distinfo @@ -1,2 +1,2 @@ -SHA256 (mariadb-5.5.44.tar.gz) = 7d425caf5f1e45de9e5eb72daa98ceb542e7b134a89bd01540b60fe9c5965e8f -SIZE (mariadb-5.5.44.tar.gz) = 45672065 +SHA256 (mariadb-5.5.46.tar.gz) = 45b66b7adc87cad32e553df1d5211e5b6426b78a3bc318a5ccde088bf93e6e10 +SIZE (mariadb-5.5.46.tar.gz) = 45683962 Index: databases/mysql55-server/Makefile =================================================================== --- databases/mysql55-server/Makefile +++ databases/mysql55-server/Makefile @@ -59,8 +59,7 @@ # MySQL-Server part .if !defined(CLIENT_ONLY) -USE_MYSQL= yes -WANT_MYSQL_VER= 55 +USES+= mysql:5.5 CONFLICTS_INSTALL= mysql5[0-46-9]-server-* \ mariadb*-server-* \ Index: databases/mysql56-server/Makefile =================================================================== --- databases/mysql56-server/Makefile +++ databases/mysql56-server/Makefile @@ -40,10 +40,7 @@ # MySQL-Server part .if !defined(CLIENT_ONLY) -USE_MYSQL= yes -WANT_MYSQL_VER= 56 - -USES+= perl5 +USES+= mysql:5.6 perl5 USE_PERL5= run CONFLICTS_INSTALL= mysql5[0-57-9]-server-* \ Index: databases/percona55-server/Makefile =================================================================== --- databases/percona55-server/Makefile +++ databases/percona55-server/Makefile @@ -60,8 +60,7 @@ # MySQL-Server part .if !defined(CLIENT_ONLY) -USE_MYSQL= yes -WANT_MYSQL_VER= 55p +USES+= mysql:5.5p CONFLICTS_INSTALL= mysql*-server-* \ mariadb*-server-* \ Index: databases/percona56-server/Makefile =================================================================== --- databases/percona56-server/Makefile +++ databases/percona56-server/Makefile @@ -60,8 +60,7 @@ # MySQL-Server part .if !defined(CLIENT_ONLY) -USE_MYSQL= yes -WANT_MYSQL_VER= 56p +USES+= mysql:5.6p CONFLICTS_INSTALL= mysql*-server-* \ mariadb*-server-* \