This also includes the following cleanups:
  - Drop support for undocumented banned EAPIs.
  - Properly document functions for manpage generation.
  - Make syntax errors fatal.
  - Support cross-compiling.
  - Allow db_findver to accept zero arguments for consistency.
  - Use modern Gentoo bash conventions.

Signed-off-by: David Michael <fedora....@gmail.com>
---
 eclass/db-use.eclass | 159 ++++++++++++++++---------------------------
 1 file changed, 58 insertions(+), 101 deletions(-)

diff --git a/eclass/db-use.eclass b/eclass/db-use.eclass
index d23b08d1999..1df07a8a7ac 100644
--- a/eclass/db-use.eclass
+++ b/eclass/db-use.eclass
@@ -1,129 +1,86 @@
 # Copyright 1999-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
-# This is a common location for functions that aid the use of sys-libs/db
-#
 
 # @ECLASS: db-use.eclass
 # @MAINTAINER:
 # maintainer-nee...@gentoo.org
 # @AUTHOR:
 # Paul de Vrieze <pau...@gentoo.org>
-# @SUPPORTED_EAPIS: 5 6 7
-# @BLURB: This is a common location for functions that aid the use of 
sys-libs/db
+# @SUPPORTED_EAPIS: 5 6 7 8
+# @BLURB: functions that aid the use of sys-libs/db
 # @DESCRIPTION:
-# This eclass is designed to provide helpful functions for depending on
-# sys-libs/db.
+# This eclass provides helpful functions for depending on sys-libs/db.
 
-# multilib is used for get_libname in all EAPI
-case "${EAPI:-0}" in
-       0|1|2|3|4|5|6) inherit eapi7-ver multilib ;;
-       *) inherit multilib ;;
+case ${EAPI} in
+       5|6|7|8) ;;
+       *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
 esac
 
-#Convert a version to a db slot
+# multilib is used for get_libname
+[[ ${EAPI} == [56] ]] && inherit eapi7-ver
+inherit multilib
+
+# @FUNCTION: db_ver_to_slot
+# @USAGE: <version>
+# @DESCRIPTION:
+# Convert a version to a db slot.
 db_ver_to_slot() {
-       if [ $# -ne 1 ]; then
-               eerror "Function db_ver_to_slot needs one argument" >&2
-               eerror "args given:" >&2
-               for f in $@
-               do
-                       eerror " - \"$@\"" >&2
-               done
-               return 1
-       fi
+       [[ $# -eq 1 ]] || die "${FUNCNAME} needs one argument"
+
        # 5.0.x uses 5.0 as slot value, so this replacement will break it;
        # older sys-libs/db might have been using this but it's no longer
        # the case, so make it work for latest rather than older stuff.
-       # echo -n "${1/.0/}"
-       echo -n "$1"
+       echo "$1"
 }
 
-#Find the version that correspond to the given atom
+# @FUNCTION: db_findver
+# @USAGE: [atom]
+# @DESCRIPTION:
+# Output the best version that corresponds to the given atom.  If no atom is
+# given, sys-libs/db is used by default.
 db_findver() {
-       has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
-       if [ $# -ne 1 ]; then
-               eerror "Function db_findver needs one argument" >&2
-               eerror "args given:" >&2
-               for f in $@
-               do
-                       eerror " - \"$@\"" >&2
-               done
-               return 1
-       fi
+       [[ $# -le 1 ]] || die "${FUNCNAME} needs zero or one arguments"
 
-       PKG="$(best_version $1)"
-       VER="$(ver_cut 1-2 "${PKG/*db-/}")"
-       if [ -d "${EPREFIX}"/usr/include/db$(db_ver_to_slot "$VER") ]; then
-               #einfo "Found db version ${VER}" >&2
-               echo -n "$VER"
-               return 0
-       else
-               return 1
-       fi
+       local pkg=$(best_version "${1:-sys-libs/db}")
+       local ver=$(ver_cut 1-2 "${pkg#*db-}")
+       [[ -d ${ESYSROOT:-${EPREFIX}}/usr/include/db$(db_ver_to_slot "${ver}") 
]] || return 1
+       echo "${ver}"
 }
 
-# Get the include dir for berkeley db.
-# This function has two modes. Without any arguments it will give the best
-# version available. With arguments that form the versions of db packages
-# to test for, it will aim to find the library corresponding to it.
-
+# @FUNCTION: db_includedir
+# @USAGE: [version]...
+# @DESCRIPTION:
+# Output the include directory for berkeley db.  Without any arguments, it will
+# give the best version available.  With a list of versions, it will output the
+# include directory of the first version found.
 db_includedir() {
-       has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
-       if [ $# -eq 0 ]; then
-               VER="$(db_findver sys-libs/db)" || return 1
-               VER="$(db_ver_to_slot "$VER")"
-               echo "include version ${VER}" >&2
-               if [ -d "${EPREFIX}/usr/include/db${VER}" ]; then
-                       echo -n "${EPREFIX}/usr/include/db${VER}"
-                       return 0
-               else
-                       eerror "sys-libs/db package requested, but headers not 
found" >&2
-                       return 1
-               fi
-       else
-               #arguments given
-               for x in $@
-               do
-                       if VER=$(db_findver "=sys-libs/db-${x}*") &&
-                          [ -d "${EPREFIX}/usr/include/db$(db_ver_to_slot 
$VER)" ]; then
-                               echo -n 
"${EPREFIX}/usr/include/db$(db_ver_to_slot $VER)"
-                               return 0
-                       fi
-               done
-               eerror "No suitable db version found"
-               return 1
-       fi
+       local ver
+       for ver in "${@:-}"; do
+               ver=$(db_findver ${ver:+"=sys-libs/db-${ver}*"}) &&
+               ver=$(db_ver_to_slot "${ver}") &&
+               [[ -d ${ESYSROOT:-${EPREFIX}}/usr/include/db${ver} ]] &&
+               echo "${ESYSROOT:-${EPREFIX}}/usr/include/db${ver}" &&
+               return
+       done
+       eerror "No suitable db version found"
+       return 1
 }
 
 
-# Get the library name for berkeley db. Something like "db-4.2" will be the
-# outcome. This function has two modes. Without any arguments it will give
-# the best version available. With arguments that form the versions of db
-# packages to test for, it will aim to find the library corresponding to it.
-
+# @FUNCTION: db_libname
+# @USAGE: [version]...
+# @DESCRIPTION:
+# Output the library name for berkeley db of the form "db-4.2".  Without any
+# arguments, it will give the best version available.  With a list of versions,
+# it will output the library name of the first version found.
 db_libname() {
-       has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
-       if [ $# -eq 0 ]; then
-               VER="$(db_findver sys-libs/db)" || return 1
-               if [ -e 
"${EPREFIX}/usr/$(get_libdir)/libdb-${VER}$(get_libname)" ]; then
-                       echo -n "db-${VER}"
-                       return 0
-               else
-                       eerror "sys-libs/db package requested, but library not 
found" >&2
-                       return 1
-               fi
-       else
-               #arguments given
-               for x in $@
-               do
-                       if VER=$(db_findver "=sys-libs/db-${x}*"); then
-                               if [ -e 
"${EPREFIX}/usr/$(get_libdir)/libdb-${VER}$(get_libname)" ]; then
-                                       echo -n "db-${VER}"
-                                       return 0
-                               fi
-                       fi
-               done
-               eerror "No suitable db version found" >&2
-               return 1
-       fi
+       local ver
+       for ver in "${@:-}"; do
+               ver=$(db_findver ${ver:+"=sys-libs/db-${ver}*"}) &&
+               [[ -e 
${ESYSROOT:-${EPREFIX}}/usr/$(get_libdir)/libdb-${ver}$(get_libname) ]] &&
+               echo "db-${ver}" &&
+               return
+       done
+       eerror "No suitable db version found"
+       return 1
 }
-- 
2.31.1

Reply via email to