commit:     638b7478a001ccde8418c9a2a5d7e253c0df0678
Author:     Aaron W. Swenson <titanofold <AT> gentoo <DOT> org>
AuthorDate: Tue Sep  5 14:15:07 2017 +0000
Commit:     Aaron Swenson <titanofold <AT> gentoo <DOT> org>
CommitDate: Tue Sep  5 14:15:07 2017 +0000
URL:        
https://gitweb.gentoo.org/proj/postgresql/eclass.git/commit/?id=638b7478

Use Simple Sort

Calling external commands during metadata regen is forbidden by PMS
and breaks new secure cache regen.

Use a simple sort instead.

Gentoo-Bug: 629226

 postgres-multi.eclass |  3 ++-
 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
 

Reply via email to