Removed
Link Here
|
1 |
# $FreeBSD$ |
2 |
# |
3 |
|
4 |
.if defined(_POSTMKINCLUDED) && !defined(Database_Post_Include) |
5 |
|
6 |
Database_Post_Include= bsd.database.mk |
7 |
Database_Include_MAINTAINER= ports@FreeBSD.org |
8 |
|
9 |
# This file contains some routines to interact with different databases, such |
10 |
# as MySQL and Berkley DB. To include this file, define macro |
11 |
# USE_[DATABASE], for example USE_MYSQL. Defining macro like |
12 |
# USE_[DATABASE]_VER or WANT_[DATABASE]_VER will include this file as well. |
13 |
# |
14 |
## |
15 |
# USE_MYSQL - Add MySQL (client/server/embedded) dependency (default: |
16 |
# client). |
17 |
# If no version is given (by the maintainer via the port or |
18 |
# by the user via defined variable), try to find the |
19 |
# currently installed version. Fall back to default if |
20 |
# necessary (MySQL-5.6 = 56). |
21 |
# DEFAULT_MYSQL_VER |
22 |
# - MySQL default version. Can be overridden within a port. |
23 |
# Default: 56. |
24 |
# WANT_MYSQL_VER |
25 |
# - Maintainer can set an arbitrary version of MySQL to always |
26 |
# build this port with (overrides WITH_MYSQL_VER). |
27 |
# IGNORE_WITH_MYSQL |
28 |
# - This variable can be defined if the ports does not support |
29 |
# one or more versions of MySQL. |
30 |
# WITH_MYSQL_VER |
31 |
# - User defined variable to set MySQL version. |
32 |
# MYSQL_VER |
33 |
# - Detected MySQL version. |
34 |
## |
35 |
# USE_BDB - Add Berkeley DB library dependency. |
36 |
# If no version is given (by the maintainer via the port or |
37 |
# by the user via defined variable), try to find the |
38 |
# currently installed version. Fall back to default if |
39 |
# necessary (db5 if compatible). |
40 |
# This adds a "debug-bdb" make target which will dump the |
41 |
# related data. |
42 |
# INVALID_BDB_VER |
43 |
# - This variable can be defined when the port does not |
44 |
# support one or more versions of Berkeley DB. |
45 |
# WANT_BDB_VER |
46 |
# - Maintainer can set a version of Berkeley DB to always |
47 |
# build this port with (overrides WITH_BDB_VER). |
48 |
# WITH_BDB_VER |
49 |
# - User defined global variable to set Berkeley DB version. |
50 |
# <BDB_UNIQUENAME>_WITH_BDB_VER |
51 |
# - User defined port specific variable to set Berkeley DB |
52 |
# version. |
53 |
# WITH_BDB_HIGHEST |
54 |
# - Use the highest installed version of Berkeley DB. |
55 |
# WITH_BDB6_PERMITTED |
56 |
# - If defined, BerkeleyDB 6 is added to the |
57 |
# default version set, making it eligible even |
58 |
# if not already installed. This is due to its |
59 |
# stricter Affero GNU Public License. |
60 |
# |
61 |
# These variables will then be filled in by this .mk file: |
62 |
# |
63 |
# BDB_LIB_NAME |
64 |
# - This variable is automatically set to the name of the |
65 |
# Berkeley DB library (default: db41). |
66 |
# BDB_LIB_CXX_NAME |
67 |
# - This variable is automatically set to the name of the |
68 |
# Berkeley DB C++ library (default: db41_cxx). |
69 |
# BDB_INCLUDE_DIR |
70 |
# - This variable is automatically set to the location of |
71 |
# the Berkeley DB include directory (default: |
72 |
# ${LOCALBASE}/include/db41). |
73 |
# BDB_LIB_DIR |
74 |
# - This variable is automatically set to the location of |
75 |
# the Berkeley DB library directory. |
76 |
# BDB_VER |
77 |
# - Detected Berkeley DB version. |
78 |
## |
79 |
# USE_SQLITE - Add dependency on SQLite library. Valid values are: |
80 |
# 3 and 2. If version is not specified directly then |
81 |
# SQLite-3 is used (if USE_SQLITE= yes). |
82 |
# SQLITE_VER |
83 |
# - Detected SQLite version. |
84 |
## |
85 |
# USE_FIREBIRD - Add dependency on Firebird library. Valid values are: |
86 |
# 2 and 1. If no version is given by the maintainer (if |
87 |
# USE_FIREBIRD= yes) and the user did not define |
88 |
# WITH_FIREBIRD_VER variable, fall back to default "2". |
89 |
# WITH_FIREBIRD_VER |
90 |
# - User defined variable to set Firebird version. |
91 |
# FIREBIRD_VER |
92 |
# - Detected Firebird version. |
93 |
|
94 |
.include "${PORTSDIR}/Mk/bsd.default-versions.mk" |
95 |
|
96 |
.if defined(DEFAULT_MYSQL_VER) |
97 |
WARNING+= "DEFAULT_MYSQL_VER is defined, consider using DEFAULT_VERSIONS=mysql=${DEFAULT_MYSQL_VER} instead" |
98 |
.endif |
99 |
|
100 |
.if defined(USE_MYSQL) |
101 |
DEFAULT_MYSQL_VER?= ${MYSQL_DEFAULT:S/.//} |
102 |
# MySQL client version currently supported. |
103 |
# When adding a version, please keep the comment in |
104 |
# Mk/bsd.default-versions.mk in sync. |
105 |
MYSQL51_LIBVER= 16 |
106 |
MYSQL55_LIBVER= 18 |
107 |
MYSQL55m_LIBVER= 18 |
108 |
MYSQL55p_LIBVER= 18 |
109 |
MYSQL56_LIBVER= 18 |
110 |
MYSQL56p_LIBVER= 18 |
111 |
MYSQL57_LIBVER= 20 |
112 |
MYSQL100m_LIBVER= 18 |
113 |
MYSQL101m_LIBVER= 18 |
114 |
|
115 |
# Setting/finding MySQL version we want. |
116 |
.if exists(${LOCALBASE}/bin/mysql) |
117 |
_MYSQL!= ${LOCALBASE}/bin/mysql --version | ${SED} -e 's/.*Distrib \([0-9]\{1,2\}\)\.\([0-9]*\).*/\1\2/' |
118 |
_PERCONA!= ${LOCALBASE}/bin/mysql --version | ${GREP} Percona | wc -l |
119 |
_MARIADB!= ${LOCALBASE}/bin/mysql --version | ${GREP} MariaDB | wc -l |
120 |
|
121 |
.if ${_PERCONA} == 1 |
122 |
_MYSQL_VER= ${_MYSQL}p |
123 |
.elif ${_MARIADB} == 1 |
124 |
_MYSQL_VER= ${_MYSQL}m |
125 |
.else |
126 |
_MYSQL_VER= ${_MYSQL} |
127 |
.endif |
128 |
.endif |
129 |
|
130 |
.if defined(WANT_MYSQL_VER) |
131 |
.if defined(WITH_MYSQL_VER) && ${WITH_MYSQL_VER} != ${WANT_MYSQL_VER} |
132 |
IGNORE= cannot install: the port wants mysql${WANT_MYSQL_VER}-client and you try to install mysql${WITH_MYSQL_VER}-client |
133 |
.endif |
134 |
MYSQL_VER= ${WANT_MYSQL_VER} |
135 |
.elif defined(WITH_MYSQL_VER) |
136 |
MYSQL_VER= ${WITH_MYSQL_VER} |
137 |
.else |
138 |
.if defined(_MYSQL_VER) |
139 |
MYSQL_VER= ${_MYSQL_VER} |
140 |
.else |
141 |
MYSQL_VER= ${DEFAULT_MYSQL_VER} |
142 |
.endif |
143 |
.endif # WANT_MYSQL_VER |
144 |
|
145 |
.if defined(_MYSQL_VER) |
146 |
.if ${_MYSQL_VER} != ${MYSQL_VER} |
147 |
IGNORE= cannot install: MySQL versions mismatch: mysql${_MYSQL_VER}-client is installed and wanted version is mysql${MYSQL_VER}-client |
148 |
.endif |
149 |
.endif |
150 |
|
151 |
.if (${MYSQL_VER:C/[0-9]*//} == "m") |
152 |
_MYSQL_FLAVOUR= mariadb |
153 |
.elif (${MYSQL_VER:C/[0-9]*//} == "p") |
154 |
_MYSQL_FLAVOUR= percona |
155 |
.else |
156 |
_MYSQL_FLAVOUR= mysql |
157 |
.endif |
158 |
|
159 |
_MYSQL_CLIENT= databases/${_MYSQL_FLAVOUR}${MYSQL_VER:C/[mp]//}-client |
160 |
_MYSQL_SERVER= databases/${_MYSQL_FLAVOUR}${MYSQL_VER:C/[mp]//}-server |
161 |
|
162 |
# And now we are checking if we can use it |
163 |
.if defined(MYSQL${MYSQL_VER}_LIBVER) |
164 |
.if defined(IGNORE_WITH_MYSQL) |
165 |
. for VER in ${IGNORE_WITH_MYSQL} |
166 |
. if (${MYSQL_VER} == "${VER}") |
167 |
IGNORE= cannot install: does not work with MySQL version ${MYSQL_VER} (MySQL ${IGNORE_WITH_MYSQL} not supported) |
168 |
. endif |
169 |
. endfor |
170 |
.endif # IGNORE_WITH_MYSQL |
171 |
.if (${USE_MYSQL} == "server" || ${USE_MYSQL} == "embedded") |
172 |
RUN_DEPENDS+= ${LOCALBASE}/libexec/mysqld:${_MYSQL_SERVER} |
173 |
.if (${USE_MYSQL} == "embedded") |
174 |
BUILD_DEPENDS+= ${LOCALBASE}/lib/mysql/libmysqld.a:${_MYSQL_SERVER} |
175 |
.endif |
176 |
.else |
177 |
LIB_DEPENDS+= libmysqlclient.so.${MYSQL${MYSQL_VER}_LIBVER}:${_MYSQL_CLIENT} |
178 |
.endif |
179 |
.else |
180 |
IGNORE= cannot install: unknown MySQL version: ${MYSQL_VER} |
181 |
.endif # Check for correct libs |
182 |
.endif # USE_MYSQL |
183 |
|
184 |
.if defined(USE_BDB) |
185 |
# TODO: avoid malformed conditional with invalid USE_BDB/WITH_BDB_VER |
186 |
# check if + works properly from test builds 01h12m23s |
187 |
|
188 |
BDB_UNIQUENAME?= ${PKGNAMEPREFIX}${PORTNAME} |
189 |
|
190 |
_USE_BDB_save:=${USE_BDB} |
191 |
_WITH_BDB_VER_save:=${WITH_BDB_VER} |
192 |
|
193 |
_DB_PORTS= 48 5 6 |
194 |
_DB_DEFAULTS= 48 5 # does not include 6 due to different licensing |
195 |
# but user can re-add it through WITH_BDB6_PERMITTED |
196 |
. if defined(WITH_BDB6_PERMITTED) |
197 |
_DB_DEFAULTS+= 6 |
198 |
. endif |
199 |
|
200 |
# Dependency lines for different db versions |
201 |
db48_DEPENDS= libdb-4.8.so:databases/db48 |
202 |
db5_DEPENDS= libdb-5.3.so:databases/db5 |
203 |
db6_DEPENDS= libdb-6.1.so:databases/db6 |
204 |
# Detect db versions by finding some files |
205 |
db48_FIND= ${LOCALBASE}/include/db48/db.h |
206 |
db5_FIND= ${LOCALBASE}/include/db5/db.h |
207 |
db6_FIND= ${LOCALBASE}/include/db6/db.h |
208 |
|
209 |
# Override the global WITH_BDB_VER with the |
210 |
# port specific <BDB_UNIQUENAME>_WITH_BDB_VER |
211 |
.if defined(${BDB_UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER) |
212 |
WITH_BDB_VER= ${${BDB_UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER} |
213 |
.endif |
214 |
|
215 |
# Override USE_BDB with global WITH_BDB_VER |
216 |
.if defined(WITH_BDB_VER) |
217 |
. if ${WITH_BDB_VER} != 1 |
218 |
USE_BDB= ${WITH_BDB_VER} |
219 |
. endif |
220 |
.endif |
221 |
|
222 |
# Override USE_BDB with maintainer's WANT_BDB_VER |
223 |
.if defined(WANT_BDB_VER) |
224 |
USE_BDB= ${WANT_BDB_VER} |
225 |
.endif |
226 |
|
227 |
# Compatiblity hack: |
228 |
# upgrade older plussed versions to 48+ |
229 |
_BDB_OLDPLUSVERS=4+ 40+ 41+ 42+ 43+ 44+ 45+ 46+ 47+ |
230 |
.for i in ${USE_BDB} |
231 |
. if ${_BDB_OLDPLUSVERS:M${i}} |
232 |
USE_BDB:= 48+ |
233 |
. endif |
234 |
.endfor |
235 |
|
236 |
.if ${USE_BDB} == yes |
237 |
USE_BDB:= 48+ |
238 |
.endif |
239 |
|
240 |
# 1. detect installed versions |
241 |
_INST_BDB_VER= |
242 |
.for bdb in ${_DB_PORTS} |
243 |
. if exists(${db${bdb}_FIND}) |
244 |
_INST_BDB_VER+=${bdb} |
245 |
. endif |
246 |
.endfor |
247 |
|
248 |
# 2. parse supported versions: |
249 |
# 2a. build list from USE_BDB |
250 |
_SUPP_BDB_VER= |
251 |
_USE_BDB:=${USE_BDB:C,\+$,,:C/(.)(.)$/\1.\2/} |
252 |
.if !empty(USE_BDB:M*+) |
253 |
. for bdb in ${_DB_PORTS:C/(.)(.)$/\1.\2/} |
254 |
. if ${_USE_BDB} <= ${bdb} |
255 |
_SUPP_BDB_VER+=${bdb:C/\.//} |
256 |
. endif |
257 |
. endfor |
258 |
.else |
259 |
_SUPP_BDB_VER=${USE_BDB} |
260 |
.endif |
261 |
# 2b. expand INVALID_BDB_VER if given with "+": |
262 |
.if !empty(INVALID_BDB_VER:M*+) |
263 |
_INV_BDB:=${INVALID_BDB_VER:C,\+$,,:C/(.)(.)$/\1.\2/} |
264 |
_INV_BDB_VER:= |
265 |
. for bdb in ${_DB_PORTS:C/(.)(.)$/\1.\2/} |
266 |
. if ${_INV_BDB} <= ${bdb} |
267 |
_INV_BDB_VER+=${bdb:C/\.//} |
268 |
. endif |
269 |
. endfor |
270 |
.else |
271 |
_INV_BDB_VER:=${INVALID_BDB_VER} |
272 |
.endif |
273 |
# 2c. strip versions from INVALID_BDB_VER out of _SUPP_BDB_VER |
274 |
.for unsupp in ${_INV_BDB_VER} |
275 |
_SUPP_BDB_VER:=${_SUPP_BDB_VER:N${unsupp}} |
276 |
.endfor |
277 |
|
278 |
# 3a. calculate intersection in _INST_BDB_VER to see if there |
279 |
# is a usable installed version |
280 |
.for i in ${_INST_BDB_VER} |
281 |
. if empty(_SUPP_BDB_VER:M${i}) |
282 |
_INST_BDB_VER:= ${_INST_BDB_VER:N${i}} |
283 |
. endif |
284 |
.endfor |
285 |
_ELIGIBLE_BDB_VER:=${_INST_BDB_VER} |
286 |
|
287 |
# 3b. if there is no usable version installed, check defaults |
288 |
.if empty(_INST_BDB_VER) |
289 |
_DFLT_BDB_VER:=${_DB_DEFAULTS} |
290 |
# make sure we use a reasonable version for package builds |
291 |
_WITH_BDB_HIGHEST=yes |
292 |
. for i in ${_DFLT_BDB_VER} |
293 |
. if empty(_SUPP_BDB_VER:M${i}) |
294 |
_DFLT_BDB_VER:= ${_DFLT_BDB_VER:N${i}} |
295 |
. endif |
296 |
. endfor |
297 |
_ELIGIBLE_BDB_VER:=${_DFLT_BDB_VER} |
298 |
.endif |
299 |
|
300 |
# 4. elect a version |
301 |
_BDB_VER= |
302 |
.for i in ${_ELIGIBLE_BDB_VER} |
303 |
. if !empty(WITH_BDB_HIGHEST) || !empty(_WITH_BDB_HIGHEST) || empty(${_BDB_VER}) |
304 |
_BDB_VER:=${i} |
305 |
. endif |
306 |
.endfor |
307 |
|
308 |
# 5. catch errors or set variables |
309 |
.if empty(_BDB_VER) |
310 |
IGNORE= cannot install: no eligible BerkeleyDB version. Requested: ${USE_BDB}, incompatible: ${_INV_BDB_VER}. Try: make debug-bdb |
311 |
.else |
312 |
. if defined(BDB_BUILD_DEPENDS) |
313 |
BUILD_DEPENDS+= ${db${_BDB_VER}_FIND}:${db${_BDB_VER}_DEPENDS:C/^libdb.*://} |
314 |
. else |
315 |
LIB_DEPENDS+= ${db${_BDB_VER}_DEPENDS} |
316 |
. endif |
317 |
. if ${_BDB_VER} == 48 |
318 |
BDB_LIB_NAME= db-4.8 |
319 |
BDB_LIB_CXX_NAME= db_cxx-4.8 |
320 |
BDB_LIB_DIR= ${LOCALBASE}/lib/db48 |
321 |
. elif ${_BDB_VER} == 5 |
322 |
BDB_LIB_NAME= db-5.3 |
323 |
BDB_LIB_CXX_NAME= db_cxx-5.3 |
324 |
BDB_LIB_DIR= ${LOCALBASE}/lib/db5 |
325 |
. elif ${_BDB_VER} == 6 |
326 |
BDB_LIB_NAME= db-6.1 |
327 |
BDB_LIB_CXX_NAME= db_cxx-6.1 |
328 |
BDB_LIB_DIR= ${LOCALBASE}/lib/db6 |
329 |
. endif |
330 |
BDB_LIB_NAME?= db${_BDB_VER} |
331 |
BDB_LIB_CXX_NAME?= db${_BDB_VER}_cxx |
332 |
BDB_INCLUDE_DIR?= ${LOCALBASE}/include/db${_BDB_VER} |
333 |
BDB_LIB_DIR?= ${LOCALBASE}/lib |
334 |
.endif |
335 |
BDB_VER= ${_BDB_VER} |
336 |
|
337 |
debug-bdb: |
338 |
@${ECHO_CMD} "--INPUTS----------------------------------------------------" |
339 |
@${ECHO_CMD} "${BDB_UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER: ${${BDB_UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER}" |
340 |
@${ECHO_CMD} "WITH_BDB_VER: ${_WITH_BDB_VER_save}" |
341 |
@${ECHO_CMD} "WANT_BDB_VER: ${WANT_BDB_VER}" |
342 |
@${ECHO_CMD} "BDB_BUILD_DEPENDS: ${BDB_BUILD_DEPENDS}" |
343 |
@${ECHO_CMD} "USE_BDB (original): ${_USE_BDB_save}" |
344 |
@${ECHO_CMD} "WITH_BDB_HIGHEST (original): ${WITH_BDB_HIGHEST}" |
345 |
@${ECHO_CMD} "--PROCESSING------------------------------------------------" |
346 |
@${ECHO_CMD} "supported versions: ${_SUPP_BDB_VER}" |
347 |
@${ECHO_CMD} "invalid versions: ${_INV_BDB_VER}" |
348 |
@${ECHO_CMD} "installed versions: ${_INST_BDB_VER}" |
349 |
@${ECHO_CMD} "eligible versions: ${_ELIGIBLE_BDB_VER}" |
350 |
@${ECHO_CMD} "USE_BDB (effective): ${USE_BDB}" |
351 |
@${ECHO_CMD} "WITH_BDB_HIGHEST (override): ${_WITH_BDB_HIGHEST}" |
352 |
@${ECHO_CMD} "--OUTPUTS---------------------------------------------------" |
353 |
@${ECHO_CMD} "IGNORE=${IGNORE}" |
354 |
@${ECHO_CMD} "BDB_VER=${BDB_VER}" |
355 |
@${ECHO_CMD} "BDB_INCLUDE_DIR=${BDB_INCLUDE_DIR}" |
356 |
@${ECHO_CMD} "BDB_LIB_NAME=${BDB_LIB_NAME}" |
357 |
@${ECHO_CMD} "BDB_LIB_CXX_NAME=${BDB_LIB_CXX_NAME}" |
358 |
@${ECHO_CMD} "BDB_LIB_DIR=${BDB_LIB_DIR}" |
359 |
@${ECHO_CMD} "BUILD_DEPENDS=${BUILD_DEPENDS:M*/databases/db*}" |
360 |
@${ECHO_CMD} "LIB_DEPENDS=${LIB_DEPENDS:M*/databases/db*}" |
361 |
@${ECHO_CMD} "------------------------------------------------------------" |
362 |
|
363 |
# Obsolete variables - ports can define these to want users about |
364 |
# variables that may be in /etc/make.conf but that are no longer |
365 |
# effective: |
366 |
.if defined(OBSOLETE_BDB_VAR) |
367 |
. for var in ${OBSOLETE_BDB_VAR} |
368 |
. if defined(${var}) |
369 |
BAD_VAR+= ${var}, |
370 |
. endif |
371 |
. endfor |
372 |
. if defined(BAD_VAR) |
373 |
_IGNORE_MSG= Obsolete variable(s) ${BAD_VAR} use WITH_BDB_VER or ${BDB_UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER to select Berkeley DB version |
374 |
. if defined(IGNORE) |
375 |
IGNORE+= ${_IGNORE_MSG} |
376 |
. else |
377 |
IGNORE= ${_IGNORE_MSG} |
378 |
. endif |
379 |
. endif |
380 |
.endif |
381 |
|
382 |
.endif # USE_BDB |
383 |
|
384 |
# Handling SQLite dependency |
385 |
.if defined(USE_SQLITE) |
386 |
|
387 |
.if ${USE_SQLITE:tl} == "yes" |
388 |
_SQLITE_VER= 3 |
389 |
.else |
390 |
_SQLITE_VER= ${USE_SQLITE} |
391 |
.endif |
392 |
|
393 |
# USE_SQLITE is specified incorrectly, so mark this as IGNORE |
394 |
.if ${_SQLITE_VER} == "3" |
395 |
LIB_DEPENDS+= libsqlite3.so:databases/sqlite${_SQLITE_VER} |
396 |
SQLITE_VER= ${_SQLITE_VER} |
397 |
.elif ${_SQLITE_VER} == "2" |
398 |
LIB_DEPENDS+= libsqlite.so:databases/sqlite${_SQLITE_VER} |
399 |
SQLITE_VER= ${_SQLITE_VER} |
400 |
.else |
401 |
IGNORE= cannot install: unknown SQLite version: ${_SQLITE_VER} |
402 |
.endif |
403 |
|
404 |
.endif # defined(USE_SQLITE) |
405 |
|
406 |
.if defined(USE_FIREBIRD) |
407 |
|
408 |
.if defined(WITH_FIREBIRD_VER) |
409 |
USE_FIREBIRD= ${WITH_FIREBIRD_VER} |
410 |
.endif |
411 |
|
412 |
.if ${USE_FIREBIRD:tl} == "yes" |
413 |
FIREBIRD_VER= ${FIREBIRD_DEFAULT:S/.//} |
414 |
.else |
415 |
FIREBIRD_VER= ${USE_FIREBIRD} |
416 |
.endif |
417 |
|
418 |
.if ${FIREBIRD_VER} == "25" |
419 |
LIB_DEPENDS+= libfbclient.so:databases/firebird25-client |
420 |
.else |
421 |
IGNORE= cannot install: unknown Firebird version: ${FIREBIRD_VER} |
422 |
.endif |
423 |
|
424 |
.endif # defined(USE_FIREBIRD) |
425 |
|
426 |
.endif # defined(_POSTMKINCLUDED) && !defined(Database_Post_Include) |