diff options
-rw-r--r-- | postgres-multi.eclass | 3 | ||||
-rw-r--r-- | postgres.eclass | 25 |
2 files changed, 23 insertions, 5 deletions
diff --git a/postgres-multi.eclass b/postgres-multi.eclass index 5d40a0e..9eb7ca2 100644 --- a/postgres-multi.eclass +++ b/postgres-multi.eclass @@ -105,7 +105,8 @@ postgres-multi_forbest() { postgres-multi_pkg_setup() { local user_slot - for user_slot in "${POSTGRES_COMPAT[@]}"; do + # _POSTGRES_COMPAT is created in postgres.eclass + for user_slot in "${_POSTGRES_COMPAT[@]}"; do use "postgres_targets_postgres${user_slot/\./_}" && \ _POSTGRES_INTERSECT_SLOTS+=( "${user_slot}" ) done diff --git a/postgres.eclass b/postgres.eclass index 13483a9..e5a9b6f 100644 --- a/postgres.eclass +++ b/postgres.eclass @@ -21,6 +21,14 @@ case ${EAPI:-0} in *) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;; esac +# @ECLASS-VARIABLE: _POSTGRES_ALL_VERSIONS +# @INTERNAL +# @DESCRIPTION: +# List of versions to reverse sort POSTGRES_COMPAT slots + +_POSTGRES_ALL_VERSIONS=( 11 10 9.6 9.5 9.4 9.3 9.2 ) + + # @ECLASS-VARIABLE: POSTGRES_COMPAT # @DEFAULT_UNSET @@ -47,15 +55,24 @@ esac # required if the package must build against one of the PostgreSQL slots # declared in POSTGRES_COMPAT. +# @ECLASS-VARIABLE: _POSTGRES_COMPAT +# @INTERNAL +# @DESCRIPTION: +# Copy of POSTGRES_COMPAT, reverse sorted +_POSTGRES_COMPAT=() + + if declare -p POSTGRES_COMPAT &> /dev/null ; then # Reverse sort the given POSTGRES_COMPAT so that the most recent # slot is preferred over an older slot. # -- do we care if dependencies are deterministic by USE flags? - readarray -t POSTGRES_COMPAT < <(printf '%s\n' "${POSTGRES_COMPAT[@]}" | sort -nr) + for i in ${_POSTGRES_ALL_VERSIONS[@]} ; do + has ${i} ${POSTGRES_COMPAT[@]} && _POSTGRES_COMPAT+=( ${i} ) + done POSTGRES_DEP="" POSTGRES_REQ_USE=" || (" - for slot in "${POSTGRES_COMPAT[@]}" ; do + for slot in "${_POSTGRES_COMPAT[@]}" ; do POSTGRES_DEP+=" postgres_targets_postgres${slot/\./_}? ( dev-db/postgresql:${slot}=" declare -p POSTGRES_USEDEP &>/dev/null && \ POSTGRES_DEP+="[${POSTGRES_USEDEP}]" @@ -127,7 +144,7 @@ postgres_pkg_setup() { local compat_slot local best_slot - for compat_slot in "${POSTGRES_COMPAT[@]}"; do + for compat_slot in "${_POSTGRES_COMPAT[@]}"; do if use "postgres_targets_postgres${compat_slot/\./_}"; then best_slot="${compat_slot}" break @@ -136,7 +153,7 @@ postgres_pkg_setup() { if [[ -z "${best_slot}" ]]; then local flags f - for f in "${POSTGRES_COMPAT[@]}"; do + for f in "${_POSTGRES_COMPAT[@]}"; do flags+=" postgres${f/./_}" done |