[Midnightbsd-cvs] mports [18205] trunk/Mk/extensions/bdb.mk: cleanup bdb extension.
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Tue Mar 17 21:53:53 EDT 2015
Revision: 18205
http://svnweb.midnightbsd.org/mports/?rev=18205
Author: laffer1
Date: 2015-03-17 21:53:52 -0400 (Tue, 17 Mar 2015)
Log Message:
-----------
cleanup bdb extension. prepare for the future
Modified Paths:
--------------
trunk/Mk/extensions/bdb.mk
Modified: trunk/Mk/extensions/bdb.mk
===================================================================
--- trunk/Mk/extensions/bdb.mk 2015-03-18 00:54:35 UTC (rev 18204)
+++ trunk/Mk/extensions/bdb.mk 2015-03-18 01:53:52 UTC (rev 18205)
@@ -41,18 +41,27 @@
# BDB_VER - Detected Berkeley DB version.
-_DB_PORTS= 48 5 48+ 5+
-# Dependence lines for different db versions
-db48_DEPENDS= db-4.8.0:${PORTSDIR}/databases/db48
-db5_DEPENDS= db-5.3:${PORTSDIR}/databases/db5
+.include "${PORTSDIR}/Mk/components/default-versions.mk"
+
+_USE_BDB_save:=${USE_BDB}
+_WITH_BDB_VER_save:=${WITH_BDB_VER}
+
+_DB_PORTS= 48 5 6
+_DB_DEFAULTS= 48 5 # does not include 6 due to different licensing
+# but user can re-add it through WITH_BDB6_PERMITTED
+. if defined(WITH_BDB6_PERMITTED)
+_DB_DEFAULTS+= 6
+. endif
+
+# Dependency lines for different db versions
+db48_DEPENDS= libdb-4.8.so:${PORTSDIR}/databases/db48
+db5_DEPENDS= libdb-5.3.so:${PORTSDIR}/databases/db5
+db6_DEPENDS= libdb-6.1.so:${PORTSDIR}/databases/db6
# Detect db versions by finding some files
db48_FIND= ${LOCALBASE}/include/db48/db.h
db5_FIND= ${LOCALBASE}/include/db5/db.h
+db6_FIND= ${LOCALBASE}/include/db6/db.h
-# For specifying [3, 40, 41, ..]+
-_DB_48P= 48 ${_DB_5P}
-_DB_5P= 5
-
# Override the global WITH_BDB_VER with the
# port specific <UNIQUENAME>_WITH_BDB_VER
.if defined(${UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER)
@@ -59,124 +68,157 @@
WITH_BDB_VER= ${${UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER}
.endif
+# Override USE_BDB with global WITH_BDB_VER
.if defined(WITH_BDB_VER)
-. if ${WITH_BDB_VER} == 4
-USE_BDB= 48
-. elif ${WITH_BDB_VER} != 1
+. if ${WITH_BDB_VER} != 1
USE_BDB= ${WITH_BDB_VER}
. endif
.endif
-_WANT_BDB_VER= ${USE_BDB}
-# Assume the default bdb version as 48
-.if ${USE_BDB:tl} == "yes"
-_WANT_BDB_VER= 48+
+# Override USE_BDB with maintainer's WANT_BDB_VER
+.if defined(WANT_BDB_VER)
+USE_BDB= ${WANT_BDB_VER}
.endif
-# Detect bdb version
-_BDB_VER= no
-_BDB_IGNORE= no
+# Compatiblity hack:
+# upgrade older plussed versions to 48+
+_BDB_OLDPLUSVERS=4+ 40+ 41+ 42+ 43+ 44+ 45+ 46+ 47+
+.for i in ${USE_BDB}
+. if ${_BDB_OLDPLUSVERS:M${i}}
+USE_BDB:= 48+
+. endif
+.endfor
-# Override the user defined WITH_BDB_VER with the WANT_BDB_VER
-.if defined(WANT_BDB_VER)
+.if ${USE_BDB} == yes
+USE_BDB:= 48+
+.endif
+
+# 1. detect installed versions
+_INST_BDB_VER=
.for bdb in ${_DB_PORTS}
-.if ${WANT_BDB_VER} == "${bdb}" && ${_BDB_VER} == "no"
-_BDB_VER= ${WANT_BDB_VER}
-.endif
+. if exists(${db${bdb}_FIND})
+_INST_BDB_VER+=${bdb}
+. endif
.endfor
-USE_BDB= ${WANT_BDB_VER}
+
+# 2. parse supported versions:
+# 2a. build list from USE_BDB
+_SUPP_BDB_VER=
+_USE_BDB:=${USE_BDB:C,\+$,,:C/(.)(.)$/\1.\2/}
+.if !empty(USE_BDB:M*+)
+. for bdb in ${_DB_PORTS:C/(.)(.)$/\1.\2/}
+. if ${_USE_BDB} <= ${bdb}
+_SUPP_BDB_VER+=${bdb:C/\.//}
+. endif
+. endfor
.else
-.for bdb in ${_DB_PORTS}
-.if ${_WANT_BDB_VER} == "${bdb}" && ${_BDB_VER} == "no"
-_MATCHED_DB_VER:= ${bdb:S/+//}
-. if ${_MATCHED_DB_VER} == "${bdb}"
-# USE_BDB is exactly specified
-_BDB_VER= ${bdb}
+_SUPP_BDB_VER=${USE_BDB}
+.endif
+# 2b. expand INVALID_BDB_VER if given with "+":
+.if !empty(INVALID_BDB_VER:M*+)
+_INV_BDB:=${INVALID_BDB_VER:C,\+$,,:C/(.)(.)$/\1.\2/}
+_INV_BDB_VER:=
+. for bdb in ${_DB_PORTS:C/(.)(.)$/\1.\2/}
+. if ${_INV_BDB} <= ${bdb}
+_INV_BDB_VER+=${bdb:C/\.//}
+. endif
+. endfor
.else
-# USE_BDB is specified as VER+
-. for dbx in ${_DB_${_MATCHED_DB_VER}P}
-. if exists(${db${dbx}_FIND}) && !defined(PACKAGE_BUILDING)
-_BRKDB= no
-# Skip versions we are incompatible with
-. if defined(INVALID_BDB_VER)
-_CHK_BDB:= ${dbx}
-. for BRKDB in ${INVALID_BDB_VER}
-. if ${_CHK_BDB} == "${BRKDB}"
-_BRKDB= yes
-. endif
-. endfor
-. endif
-. if ${_BRKDB} == no
-. if defined(WITH_BDB_HIGHEST)
-# Use the highest version of Berkeley DB found
-_BDB_VER= ${dbx}
-. elif ${_BDB_VER} == no
-# Use the first Berkeley DB found
-_BDB_VER= ${dbx}
-. endif
-. endif
-. endif
-. endfor
-. if ${_BDB_VER} == "no"
-# No existing db4 version is detected in system
-_BDB_VER= ${_MATCHED_DB_VER}
-. endif
-. endif
+_INV_BDB_VER:=${INVALID_BDB_VER}
.endif
+# 2c. strip versions from INVALID_BDB_VER out of _SUPP_BDB_VER
+.for unsupp in ${_INV_BDB_VER}
+_SUPP_BDB_VER:=${_SUPP_BDB_VER:N${unsupp}}
.endfor
+
+# 3a. calculate intersection in _INST_BDB_VER to see if there
+# is a usable installed version
+.for i in ${_INST_BDB_VER}
+. if empty(_SUPP_BDB_VER:M${i})
+_INST_BDB_VER:= ${_INST_BDB_VER:N${i}}
+. endif
+.endfor
+_ELIGIBLE_BDB_VER:=${_INST_BDB_VER}
+
+# 3b. if there is no usable version installed, check defaults
+.if empty(_INST_BDB_VER)
+_DFLT_BDB_VER:=${_DB_DEFAULTS}
+# make sure we use a reasonable version for package builds
+_WITH_BDB_HIGHEST=yes
+. for i in ${_DFLT_BDB_VER}
+. if empty(_SUPP_BDB_VER:M${i})
+_DFLT_BDB_VER:= ${_DFLT_BDB_VER:N${i}}
+. endif
+. endfor
+_ELIGIBLE_BDB_VER:=${_DFLT_BDB_VER}
.endif
-# USE_BDB is specified incorrectly, so mark this as IGNORE
-.if ${_BDB_VER} == "no"
-IGNORE= cannot install: unknown bdb version: ${USE_BDB}
+# 4. elect a version
+_BDB_VER=
+.for i in ${_ELIGIBLE_BDB_VER}
+. if !empty(WITH_BDB_HIGHEST) || !empty(_WITH_BDB_HIGHEST) || empty(${_BDB_VER})
+_BDB_VER:=${i}
+. endif
+.endfor
+
+# 5. catch errors or set variables
+.if empty(_BDB_VER)
+IGNORE= cannot install: no eligible BerkeleyDB version. Requested: ${USE_BDB}, incompatible: ${_INV_BDB_VER}. Try: make debug-bdb
.else
-# Now check if we can use it
-. if defined(INVALID_BDB_VER)
-. for VER in ${INVALID_BDB_VER}
-_CHK_PLUS:= ${VER:S/+//}
-# INVALID_BDB_VER is specified as VER+
-. if ${_CHK_PLUS} != "${VER}"
-. if ${_BDB_VER} == "${_CHK_PLUS}"
-_BDB_IGNORE= yes
-. else
-. for VER_P in ${_DB_${_CHK_PLUS}P}
-. if ${_BDB_VER} == "${VER_P}"
-_BDB_IGNORE= yes
-. endif
-. endfor
-. endif
-. elif ${_BDB_VER} == "${VER}"
-_BDB_IGNORE= yes
-. endif
-. endfor
-. endif
-. if ${_BDB_IGNORE} == "yes"
-IGNORE= cannot install: does not work with bdb version: ${_BDB_VER} (${INVALID_BDB_VER} not supported)
+. if defined(BDB_BUILD_DEPENDS)
+BUILD_DEPENDS+= ${db${_BDB_VER}_FIND}:${db${_BDB_VER}_DEPENDS:C/^libdb.*://}
. else
-# Now add the dependancy on Berkeley DB ${_BDB_VER) version
-.if defined(BDB_BUILD_DEPENDS)
-BUILD_DEPENDS+= ${db${_BDB_VER}_FIND}:${db${_BDB_VER}_DEPENDS:C/^db.*://}
-.else
LIB_DEPENDS+= ${db${_BDB_VER}_DEPENDS}
-.endif
-. if ${_BDB_VER} == 48
+. endif
+. if ${_BDB_VER} == 48
BDB_LIB_NAME= db-4.8
BDB_LIB_CXX_NAME= db_cxx-4.8
BDB_LIB_DIR= ${LOCALBASE}/lib/db48
-. elif ${_BDB_VER} == 5
+. elif ${_BDB_VER} == 5
BDB_LIB_NAME= db-5.3
BDB_LIB_CXX_NAME= db_cxx-5.3
BDB_LIB_DIR= ${LOCALBASE}/lib/db5
-. endif
+. elif ${_BDB_VER} == 6
+BDB_LIB_NAME= db-6.1
+BDB_LIB_CXX_NAME= db_cxx-6.1
+BDB_LIB_DIR= ${LOCALBASE}/lib/db6
+. endif
BDB_LIB_NAME?= db${_BDB_VER}
BDB_LIB_CXX_NAME?= db${_BDB_VER}_cxx
BDB_INCLUDE_DIR?= ${LOCALBASE}/include/db${_BDB_VER}
BDB_LIB_DIR?= ${LOCALBASE}/lib
-. endif
-BDB_VER= ${_BDB_VER}
.endif
+BDB_VER= ${_BDB_VER}
-# Obsolete variables
+debug-bdb:
+ @${ECHO_CMD} "--INPUTS----------------------------------------------------"
+ @${ECHO_CMD} "${UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER: ${${UNIQUENAME:tu:S,-,_,}_WITH_BDB_VER}"
+ @${ECHO_CMD} "WITH_BDB_VER: ${_WITH_BDB_VER_save}"
+ @${ECHO_CMD} "WANT_BDB_VER: ${WANT_BDB_VER}"
+ @${ECHO_CMD} "BDB_BUILD_DEPENDS: ${BDB_BUILD_DEPENDS}"
+ @${ECHO_CMD} "USE_BDB (original): ${_USE_BDB_save}"
+ @${ECHO_CMD} "WITH_BDB_HIGHEST (original): ${WITH_BDB_HIGHEST}"
+ @${ECHO_CMD} "--PROCESSING------------------------------------------------"
+ @${ECHO_CMD} "supported versions: ${_SUPP_BDB_VER}"
+ @${ECHO_CMD} "invalid versions: ${_INV_BDB_VER}"
+ @${ECHO_CMD} "installed versions: ${_INST_BDB_VER}"
+ @${ECHO_CMD} "eligible versions: ${_ELIGIBLE_BDB_VER}"
+ @${ECHO_CMD} "USE_BDB (effective): ${USE_BDB}"
+ @${ECHO_CMD} "WITH_BDB_HIGHEST (override): ${_WITH_BDB_HIGHEST}"
+ @${ECHO_CMD} "--OUTPUTS---------------------------------------------------"
+ @${ECHO_CMD} "IGNORE=${IGNORE}"
+ @${ECHO_CMD} "BDB_VER=${BDB_VER}"
+ @${ECHO_CMD} "BDB_INCLUDE_DIR=${BDB_INCLUDE_DIR}"
+ @${ECHO_CMD} "BDB_LIB_NAME=${BDB_LIB_NAME}"
+ @${ECHO_CMD} "BDB_LIB_CXX_NAME=${BDB_LIB_CXX_NAME}"
+ @${ECHO_CMD} "BDB_LIB_DIR=${BDB_LIB_DIR}"
+ @${ECHO_CMD} "BUILD_DEPENDS=${BUILD_DEPENDS:M*/databases/db*}"
+ @${ECHO_CMD} "LIB_DEPENDS=${LIB_DEPENDS:M*/databases/db*}"
+ @${ECHO_CMD} "------------------------------------------------------------"
+
+# Obsolete variables - ports can define these to want users about
+# variables that may be in /etc/make.conf but that are no longer
+# effective:
.if defined(OBSOLETE_BDB_VAR)
. for var in ${OBSOLETE_BDB_VAR}
. if defined(${var})
@@ -193,5 +235,4 @@
. endif
.endif
-
.endif #defined(_POSTMKINCLUDED) && !defined(Bdb_Post_Include)
More information about the Midnightbsd-cvs
mailing list