Skip to content

Commit 8c3f661

Browse files
committed
Adjust "update.sh" to work for 13/pre-release builds again
It turns out we *do* need to check the PG_MAJOR component (not just "main"), and the reason is that it's used for pre-release versions.
1 parent b966594 commit 8c3f661

File tree

2 files changed

+43
-14
lines changed

2 files changed

+43
-14
lines changed

13/docker-entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ pg_setup_hba_conf() {
220220
echo
221221
if [ 'trust' = "$POSTGRES_HOST_AUTH_METHOD" ]; then
222222
echo '# warning trust is enabled for all connections'
223-
echo '# see https://www.postgresql.org/docs/13/auth-trust.html'
223+
echo '# see https://www.postgresql.org/docs/12/auth-trust.html'
224224
fi
225225
echo "host all all all $POSTGRES_HOST_AUTH_METHOD"
226226
} >> "$PGDATA/pg_hba.conf"

update.sh

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,39 @@ declare -A alpineVersion=(
2424
)
2525

2626
packagesBase='http://apt.postgresql.org/pub/repos/apt/dists/'
27-
declare -A suitePackageList=() suiteArches=()
27+
declare -A suitePackageList=() suiteVersionPackageList=() suiteArches=()
28+
_raw_package_list() {
29+
local suite="$1"; shift
30+
local component="$1"; shift
31+
local arch="$1"; shift
32+
33+
curl -fsSL "$packagesBase/$suite-pgdg/$component/binary-$arch/Packages.bz2" | bunzip2
34+
}
2835
fetch_suite_package_list() {
2936
local suite="$1"; shift
30-
local arch="${1:-amd64}"
37+
local version="$1"; shift
38+
local arch="$1"; shift
3139

40+
# normal (GA) releases end up in the "main" component of upstream's repository
3241
if [ -z "${suitePackageList["$suite-$arch"]:+isset}" ]; then
33-
suitePackageList["$suite-$arch"]="$(curl -fsSL "$packagesBase/$suite-pgdg/main/binary-$arch/Packages.bz2" | bunzip2)"
42+
local suiteArchPackageList
43+
suiteArchPackageList="$(_raw_package_list "$suite" 'main' "$arch")"
44+
suitePackageList["$suite-$arch"]="$suiteArchPackageList"
3445
fi
46+
47+
# ... but pre-release versions (betas, etc) end up in the "PG_MAJOR" component (so we need to check both)
48+
if [ -z "${suiteVersionPackageList["$suite-$version-$arch"]:+isset}" ]; then
49+
local versionPackageList
50+
versionPackageList="$(_raw_package_list "$suite" "$version" "$arch")"
51+
suiteVersionPackageList["$suite-$version-$arch"]="$versionPackageList"
52+
fi
53+
}
54+
awk_package_list() {
55+
local suite="$1"; shift
56+
local version="$1"; shift
57+
local arch="$1"; shift
58+
59+
awk -F ': ' -v version="$version" "$@" <<<"${suitePackageList["$suite-$arch"]}"$'\n'"${suiteVersionPackageList["$suite-$version-$arch"]}"
3560
}
3661
fetch_suite_arches() {
3762
local suite="$1"; shift
@@ -48,11 +73,13 @@ for version in "${versions[@]}"; do
4873
suite="${tag%%-slim}"
4974
majorVersion="${version%%.*}"
5075

51-
fetch_suite_package_list "$suite" 'amd64'
52-
fullVersion="$(awk <<<"${suitePackageList["$suite-amd64"]}" -F ': ' -v version="$version" '
53-
$1 == "Package" { pkg = $2 }
54-
$1 == "Version" && pkg == "postgresql-" version { print $2; exit }
55-
')"
76+
fetch_suite_package_list "$suite" "$version" 'amd64'
77+
fullVersion="$(
78+
awk_package_list "$suite" "$version" 'amd64' '
79+
$1 == "Package" { pkg = $2 }
80+
$1 == "Version" && pkg == "postgresql-" version { print $2; exit }
81+
'
82+
)"
5683
if [ -z "$fullVersion" ]; then
5784
echo >&2 "error: missing postgresql-$version package!"
5885
exit 1
@@ -61,11 +88,13 @@ for version in "${versions[@]}"; do
6188
fetch_suite_arches "$suite"
6289
versionArches=
6390
for arch in ${suiteArches["$suite"]}; do
64-
fetch_suite_package_list "$suite" "$arch"
65-
archVersion="$(awk <<<"${suitePackageList["$suite-$arch"]}" -F ': ' -v version="$version" '
66-
$1 == "Package" { pkg = $2 }
67-
$1 == "Version" && pkg == "postgresql-" version { print $2; exit }
68-
')"
91+
fetch_suite_package_list "$suite" "$version" "$arch"
92+
archVersion="$(
93+
awk_package_list "$suite" "$version" "$arch" '
94+
$1 == "Package" { pkg = $2 }
95+
$1 == "Version" && pkg == "postgresql-" version { print $2; exit }
96+
'
97+
)"
6998
if [ "$archVersion" = "$fullVersion" ]; then
7099
[ -z "$versionArches" ] || versionArches+=' | '
71100
versionArches+="$arch"

0 commit comments

Comments
 (0)