Page MenuHomeFreeBSD

D4166.diff
No OneTemporary

D4166.diff

Index: Mk/Uses/mysql.mk
===================================================================
--- /dev/null
+++ Mk/Uses/mysql.mk
@@ -0,0 +1,178 @@
+# $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
+MYSQL57_LIBVER= 20
+
+.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 !empty(${MYSQL_VER:M[0-9.]*m})
+MYSQL_FLAVOUR= MariaDB
+.elif !empty(${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
@@ -12,25 +12,7 @@
# 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,90 +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
-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:C/[0-9]*//} == "m")
-_MYSQL_FLAVOUR= mariadb
-.elif (${MYSQL_VER:C/[0-9]*//} == "p")
-_MYSQL_FLAVOUR= percona
-.else
-_MYSQL_FLAVOUR= mysql
-.endif
-
-_MYSQL_CLIENT= databases/${_MYSQL_FLAVOUR}${MYSQL_VER:C/[mp]//}-client
-_MYSQL_SERVER= databases/${_MYSQL_FLAVOUR}${MYSQL_VER:C/[mp]//}-server
-
-# 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

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 28, 6:38 AM (4 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32256176
Default Alt Text
D4166.diff (9 KB)

Event Timeline