#!/bin/sh # print a list of PostgreSQL versions that are supported for the platform this # script runs on. # Note: Newer installed versions than the highest one listed here are always # considered supported, so that backports will not cause an "obsolete" warning. # # /usr/share/postgresql-common/supported-versions decides which PostgreSQL # server versions are supported. This information is used # 1) for notifying users of obsolete versions, suggesting to upgrade # 2) by postgresql-common itself (in debian/rules) to determine the # dependencies of the postgresql meta packages (default version), and to # generate the list of postgresql-server-dev-* packages # postgresql-server-dev-all depends on # 3) by the pg_buildext tool to decide which server versions to build extension # modules for # # The *last* version returned here will be considered the default version, the # remaining lines list other supported versions in an undefined order. # # * PG_SUPPORTED_VERSIONS # * DEB_PG_SUPPORTED_VERSIONS # * ~/.pg_supported_versions # * /etc/postgresql-common/supported_versions # (in that order) can be used to override the defaults. (Tokens separated by # newlines.) # # Recognized tokens: # default: use the appropiate defaults for the current distribution # (as determined by os-release) # debian: use Debian defaults # debian-backports: use Debian Backports defaults # progress-linux: use Progress Linux defaults # ubuntu: use Ubuntu defaults # pgdg: use defaults for apt.postgresql.org # installed: consider all installed versions supported (determined by # postgresql-server-dev-X packages) # X: consider this version supported # # (C) 2005-2016 Martin Pitt # (C) 2012-2023 Christoph Berg set -eu DEFAULT="16" # functions default() { . /etc/os-release case "$ID" in [uU]buntu) ubuntu ;; [dD]ebian) debian ;; progress-linux) progress_linux ;; *) echo "supported-versions: WARNING! Unknown distribution ID in /etc/os-release: $ID" >&2 if echo $ID_LIKE | grep -E '(^| )ubuntu($| )' > /dev/null; then echo "ubuntu found in ID_LIKE, treating as Ubuntu" >&2 ubuntu elif echo $ID_LIKE | grep -E '(^| )debian($| )' > /dev/null; then echo "debian found in ID_LIKE, treating as Debian" >&2 debian else echo "Please submit this as a bug report to your distribution." >&2 /bin/echo -e "$DEFAULT" fi ;; esac } ubuntu() { echo "$DEFAULT" } debian() { echo "$DEFAULT" } debian_backports() { echo "$DEFAULT" } progress_linux() { echo "$DEFAULT" } pgdg() { cat <<-EOF 10 11 12 13 14 15 16 EOF } installed() { dpkg -l 'postgresql-server-dev-[1-9]*' | \ sed -ne 's/^ii *postgresql-server-dev-\([^ ]*\).*/\1/p' | \ sort -V } # main if [ "${PG_SUPPORTED_VERSIONS:-}" ] ; then SUPPORTED_VERSIONS=$(echo "$PG_SUPPORTED_VERSIONS" | xargs -n1) elif [ "${DEB_PG_SUPPORTED_VERSIONS:-}" ] ; then SUPPORTED_VERSIONS=$(echo "$DEB_PG_SUPPORTED_VERSIONS" | xargs -n1) elif [ -f ${HOME:-}/.pg_supported_versions ] ; then SUPPORTED_VERSIONS="$(cat ${HOME:-}/.pg_supported_versions)" elif [ -f ${PGSYSCONFDIR:-/etc/postgresql-common}/supported_versions ] ; then SUPPORTED_VERSIONS="$(cat ${PGSYSCONFDIR:-/etc/postgresql-common}/supported_versions)" else SUPPORTED_VERSIONS="default" fi echo "$SUPPORTED_VERSIONS" | while read version release; do COMMENT="#" case $version in "") ;; $COMMENT*) ;; default) default ;; debian) debian ;; debian-backports) debian_backports ;; progress-linux) progress_linux ;; ubuntu) ubuntu ;; pgdg) # apt.postgresql.org pgdg ;; installed) installed ;; *) /bin/echo -e "$version" ;; esac done exit 0