[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