summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'eclass/postgresql.eclass')
-rw-r--r--eclass/postgresql.eclass91
1 files changed, 91 insertions, 0 deletions
diff --git a/eclass/postgresql.eclass b/eclass/postgresql.eclass
new file mode 100644
index 0000000..6ae0e27
--- /dev/null
+++ b/eclass/postgresql.eclass
@@ -0,0 +1,91 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+#
+# Original Author: root
+# Purpose: To handle the postgresql selection related tasks.
+#
+
+inherit versionator
+ECLASS="postgresql"
+INHERITED="$INHERITED $ECLASS"
+
+# Usage: postgresql_version_in_range [version[ min_version[ max_version]]]
+# Returns $?=0 if in range
+postgresql_version_in_range() {
+ local v="$1" min="$2" max="$3"
+ if [[ ! -z "$min" ]] ; then
+ version_compare "$min" "$v"
+ [[ "$?" = "3" ]] && return 1
+ fi
+ if [[ ! -z "$max" ]] ; then
+ version_compare "$max" "$v"
+ [[ "$?" = "1" ]] && return 2
+ fi
+ return 0
+}
+
+# Usage: postgresql_get_versions_range [ min_version[ max_version]]
+postgresql_get_versions_range() {
+ local min="$1" max="$2"
+ for s in /usr/lib/eselect-postgresql/slots/* ; do
+ [[ -d "$s" ]] || continue
+ local v="$(basename $s)"
+ postgresql_version_in_range "$v" "$min" "$max" || continue
+ echo "$v"
+ done
+}
+# Usage: postgresql_get_sorted_versions [ min_version[ max_version]]
+postgresql_get_sorted_versions() {
+ version_sort $(postgresql_get_versions_range "$1" "$2")
+}
+
+# Usage: postgresql_find_version [min_version[ max_version[ strategy]]]
+# min_version - minimum supported version (empty string if any)
+# max_version - maximum supported version (empty string if any)
+# strategy - best, worst (that is, if eselected version isn't in range)
+# (best is default)
+# Returns selected version string
+postgresql_find_version() {
+ local min="$1" max="$2" strategy="$3"
+ local eselected="$(eselect postgresql show)"
+ if [[ "$eselected" != "(none)" ]] ; then
+ postgresql_version_in_range "$eselected" "$min" "$max" && { echo "$eselected" ; return 0; }
+ fi
+ local vers=( $(postgresql_get_sorted_versions "$min" "$max") )
+ case "$strategy" in
+ worst)
+ echo "${vers[0]}"
+ ;;
+ *)
+ echo "${vers[${#vers[@]}-1]}"
+ ;;
+ esac
+}
+
+# Usage: postgresql_get_bindir [min_version[ max_version[ strategy]]]
+# See postgresql_find_version
+# Returns path to binaries
+postgresql_get_bindir() {
+ local ver="$(postgresql_find_version "$1" "$2" "$3")"
+ (. /usr/lib/eselect-postgresql/slots/$ver/libs ; echo $postgres_bindir )
+}
+
+# Usage: postgresql_get_pgconfig [min_version[ max_version[ strategy]]]
+# See postgresql_find_version
+# Returns path to pg_config
+postgresql_get_pgconfig() {
+ echo "$(postgresql_get_bindir "$1" "$2" "$3")/pg_config"
+}
+
+# Usage: postgresql_get_bindir_for_slot slot
+# Returns path to binaries for exact slot
+postgresql_get_bindir_for_slot() {
+ (. /usr/lib/eselect-postgresql/slots/$1/libs ; echo $postgres_bindir)
+}
+# Usage: postgresql_get_pgconfig_for_slot slot
+# Returns path to pg_config for exact slot
+postgresql_get_pgconfig_for_slot() {
+ echo "$(. /usr/lib/eselect-postgresql/slots/$1/libs ; echo $postgres_bindir)/pg_config"
+}