diff --git a/13/docker-entrypoint.sh b/13/docker-entrypoint.sh index 1d77812477..cd8ce805a4 100755 --- a/13/docker-entrypoint.sh +++ b/13/docker-entrypoint.sh @@ -220,7 +220,7 @@ pg_setup_hba_conf() { echo if [ 'trust' = "$POSTGRES_HOST_AUTH_METHOD" ]; then echo '# warning trust is enabled for all connections' - echo '# see https://www.postgresql.org/docs/13/auth-trust.html' + echo '# see https://www.postgresql.org/docs/12/auth-trust.html' fi echo "host all all all $POSTGRES_HOST_AUTH_METHOD" } >> "$PGDATA/pg_hba.conf" diff --git a/update.sh b/update.sh index f264e0a5a6..4384e0ec97 100755 --- a/update.sh +++ b/update.sh @@ -24,14 +24,39 @@ declare -A alpineVersion=( ) packagesBase='http://apt.postgresql.org/pub/repos/apt/dists/' -declare -A suitePackageList=() suiteArches=() +declare -A suitePackageList=() suiteVersionPackageList=() suiteArches=() +_raw_package_list() { + local suite="$1"; shift + local component="$1"; shift + local arch="$1"; shift + + curl -fsSL "$packagesBase/$suite-pgdg/$component/binary-$arch/Packages.bz2" | bunzip2 +} fetch_suite_package_list() { local suite="$1"; shift - local arch="${1:-amd64}" + local version="$1"; shift + local arch="$1"; shift + # normal (GA) releases end up in the "main" component of upstream's repository if [ -z "${suitePackageList["$suite-$arch"]:+isset}" ]; then - suitePackageList["$suite-$arch"]="$(curl -fsSL "$packagesBase/$suite-pgdg/main/binary-$arch/Packages.bz2" | bunzip2)" + local suiteArchPackageList + suiteArchPackageList="$(_raw_package_list "$suite" 'main' "$arch")" + suitePackageList["$suite-$arch"]="$suiteArchPackageList" fi + + # ... but pre-release versions (betas, etc) end up in the "PG_MAJOR" component (so we need to check both) + if [ -z "${suiteVersionPackageList["$suite-$version-$arch"]:+isset}" ]; then + local versionPackageList + versionPackageList="$(_raw_package_list "$suite" "$version" "$arch")" + suiteVersionPackageList["$suite-$version-$arch"]="$versionPackageList" + fi +} +awk_package_list() { + local suite="$1"; shift + local version="$1"; shift + local arch="$1"; shift + + awk -F ': ' -v version="$version" "$@" <<<"${suitePackageList["$suite-$arch"]}"$'\n'"${suiteVersionPackageList["$suite-$version-$arch"]}" } fetch_suite_arches() { local suite="$1"; shift @@ -48,11 +73,13 @@ for version in "${versions[@]}"; do suite="${tag%%-slim}" majorVersion="${version%%.*}" - fetch_suite_package_list "$suite" 'amd64' - fullVersion="$(awk <<<"${suitePackageList["$suite-amd64"]}" -F ': ' -v version="$version" ' - $1 == "Package" { pkg = $2 } - $1 == "Version" && pkg == "postgresql-" version { print $2; exit } - ')" + fetch_suite_package_list "$suite" "$version" 'amd64' + fullVersion="$( + awk_package_list "$suite" "$version" 'amd64' ' + $1 == "Package" { pkg = $2 } + $1 == "Version" && pkg == "postgresql-" version { print $2; exit } + ' + )" if [ -z "$fullVersion" ]; then echo >&2 "error: missing postgresql-$version package!" exit 1 @@ -61,11 +88,13 @@ for version in "${versions[@]}"; do fetch_suite_arches "$suite" versionArches= for arch in ${suiteArches["$suite"]}; do - fetch_suite_package_list "$suite" "$arch" - archVersion="$(awk <<<"${suitePackageList["$suite-$arch"]}" -F ': ' -v version="$version" ' - $1 == "Package" { pkg = $2 } - $1 == "Version" && pkg == "postgresql-" version { print $2; exit } - ')" + fetch_suite_package_list "$suite" "$version" "$arch" + archVersion="$( + awk_package_list "$suite" "$version" "$arch" ' + $1 == "Package" { pkg = $2 } + $1 == "Version" && pkg == "postgresql-" version { print $2; exit } + ' + )" if [ "$archVersion" = "$fullVersion" ]; then [ -z "$versionArches" ] || versionArches+=' | ' versionArches+="$arch"