Skip to content

Commit 17c71ae

Browse files
committed
Update architecture detection to be more thorough
1 parent 137fcce commit 17c71ae

File tree

6 files changed

+53
-19
lines changed

6 files changed

+53
-19
lines changed

10/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ RUN set -ex; \
8484
\
8585
dpkgArch="$(dpkg --print-architecture)"; \
8686
case "$dpkgArch" in \
87-
amd64|i386|ppc64el) \
87+
amd64 | i386 | ppc64el) \
8888
# arches officialy built by upstream
8989
echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main $PG_MAJOR" > /etc/apt/sources.list.d/pgdg.list; \
9090
apt-get update; \

11/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ RUN set -ex; \
8484
\
8585
dpkgArch="$(dpkg --print-architecture)"; \
8686
case "$dpkgArch" in \
87-
amd64|i386|ppc64el) \
87+
amd64 | i386 | ppc64el) \
8888
# arches officialy built by upstream
8989
echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main $PG_MAJOR" > /etc/apt/sources.list.d/pgdg.list; \
9090
apt-get update; \

12/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ RUN set -ex; \
8484
\
8585
dpkgArch="$(dpkg --print-architecture)"; \
8686
case "$dpkgArch" in \
87-
amd64|arm64|i386|ppc64el) \
87+
amd64 | i386 | ppc64el) \
8888
# arches officialy built by upstream
8989
echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main $PG_MAJOR" > /etc/apt/sources.list.d/pgdg.list; \
9090
apt-get update; \

9.5/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ RUN set -ex; \
8484
\
8585
dpkgArch="$(dpkg --print-architecture)"; \
8686
case "$dpkgArch" in \
87-
amd64|i386|ppc64el) \
87+
amd64 | i386 | ppc64el) \
8888
# arches officialy built by upstream
8989
echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main $PG_MAJOR" > /etc/apt/sources.list.d/pgdg.list; \
9090
apt-get update; \

9.6/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ RUN set -ex; \
8484
\
8585
dpkgArch="$(dpkg --print-architecture)"; \
8686
case "$dpkgArch" in \
87-
amd64|i386|ppc64el) \
87+
amd64 | i386 | ppc64el) \
8888
# arches officialy built by upstream
8989
echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main $PG_MAJOR" > /etc/apt/sources.list.d/pgdg.list; \
9090
apt-get update; \

update.sh

Lines changed: 48 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,32 +27,65 @@ declare -A alpineVersion=(
2727
)
2828

2929
packagesBase='http://apt.postgresql.org/pub/repos/apt/dists/'
30-
3130
declare -A suitePackageList=() suiteArches=()
31+
fetch_suite_package_list() {
32+
local suite="$1"; shift
33+
local arch="${1:-amd64}"
34+
35+
if [ -z "${suitePackageList["$suite-$arch"]:+isset}" ]; then
36+
suitePackageList["$suite-$arch"]="$(curl -fsSL "$packagesBase/$suite-pgdg/main/binary-$arch/Packages.bz2" | bunzip2)"
37+
fi
38+
}
39+
fetch_suite_arches() {
40+
local suite="$1"; shift
41+
42+
if [ -z "${suiteArches["$suite"]:+isset}" ]; then
43+
local suiteRelease
44+
suiteRelease="$(curl -fsSL "$packagesBase/$suite-pgdg/Release")"
45+
suiteArches["$suite"]="$(gawk <<<"$suiteRelease" -F ':[[:space:]]+' '$1 == "Architectures" { print $2; exit }')"
46+
fi
47+
}
48+
3249
travisEnv=
3350
for version in "${versions[@]}"; do
3451
tag="${debianSuite[$version]:-$defaultDebianSuite}"
3552
suite="${tag%%-slim}"
36-
if [ -z "${suitePackageList["$suite"]:+isset}" ]; then
37-
suitePackageList["$suite"]="$(curl -fsSL "${packagesBase}/${suite}-pgdg/main/binary-amd64/Packages.bz2" | bunzip2)"
38-
fi
39-
if [ -z "${suiteArches["$suite"]:+isset}" ]; then
40-
suiteArches["$suite"]="$(curl -fsSL "${packagesBase}/${suite}-pgdg/Release" | gawk -F ':[[:space:]]+' '$1 == "Architectures" { gsub(/[[:space:]]+/, "|", $2); print $2 }')"
53+
majorVersion="${version%%.*}"
54+
55+
fetch_suite_package_list "$suite" 'amd64'
56+
fullVersion="$(awk <<<"${suitePackageList["$suite-amd64"]}" -F ': ' -v version="$version" '
57+
$1 == "Package" { pkg = $2 }
58+
$1 == "Version" && pkg == "postgresql-" version { print $2; exit }
59+
')"
60+
if [ -z "$fullVersion" ]; then
61+
echo >&2 "error: missing postgresql-$version package!"
62+
exit 1
4163
fi
4264

43-
versionList="$(echo "${suitePackageList["$suite"]}"; curl -fsSL "${packagesBase}/${suite}-pgdg/${version}/binary-amd64/Packages.bz2" | bunzip2)"
44-
fullVersion="$(echo "$versionList" | awk -F ': ' '$1 == "Package" { pkg = $2 } $1 == "Version" && pkg == "postgresql-'"$version"'" { print $2; exit }' || true)"
45-
majorVersion="${version%%.*}"
65+
fetch_suite_arches "$suite"
66+
versionArches=
67+
for arch in ${suiteArches["$suite"]}; do
68+
fetch_suite_package_list "$suite" "$arch"
69+
archVersion="$(awk <<<"${suitePackageList["$suite-$arch"]}" -F ': ' -v version="$version" '
70+
$1 == "Package" { pkg = $2 }
71+
$1 == "Version" && pkg == "postgresql-" version { print $2; exit }
72+
')"
73+
if [ "$archVersion" = "$fullVersion" ]; then
74+
[ -z "$versionArches" ] || versionArches+=' | '
75+
versionArches+="$arch"
76+
fi
77+
done
4678

47-
echo "$version: $fullVersion"
79+
echo "$version: $fullVersion ($versionArches)"
4880

4981
cp docker-entrypoint.sh "$version/"
5082
sed -e 's/%%PG_MAJOR%%/'"$version"'/g;' \
5183
-e 's/%%PG_VERSION%%/'"$fullVersion"'/g' \
5284
-e 's/%%DEBIAN_TAG%%/'"$tag"'/g' \
5385
-e 's/%%DEBIAN_SUITE%%/'"$suite"'/g' \
54-
-e 's/%%ARCH_LIST%%/'"${suiteArches["$suite"]}"'/g' \
55-
Dockerfile-debian.template > "$version/Dockerfile"
86+
-e 's/%%ARCH_LIST%%/'"$versionArches"'/g' \
87+
Dockerfile-debian.template \
88+
> "$version/Dockerfile"
5689
if [ "$majorVersion" = '9' ]; then
5790
sed -i -e 's/WALDIR/XLOGDIR/g' \
5891
-e 's/waldir/xlogdir/g' \
@@ -84,7 +117,8 @@ for version in "${versions[@]}"; do
84117
-e 's/%%PG_VERSION%%/'"$srcVersion"'/g' \
85118
-e 's/%%PG_SHA256%%/'"$srcSha256"'/g' \
86119
-e 's/%%ALPINE-VERSION%%/'"${alpineVersion[$version]:-$defaultAlpineVersion}"'/g' \
87-
"Dockerfile-$variant.template" > "$version/$variant/Dockerfile"
120+
"Dockerfile-$variant.template" \
121+
> "$version/$variant/Dockerfile"
88122
if [ "$majorVersion" = '9' ]; then
89123
sed -i -e 's/WALDIR/XLOGDIR/g' \
90124
-e 's/waldir/xlogdir/g' \
@@ -109,4 +143,4 @@ for version in "${versions[@]}"; do
109143
done
110144

111145
travis="$(awk -v 'RS=\n\n' '$1 == "env:" { $0 = "env:'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)"
112-
echo "$travis" > .travis.yml
146+
cat <<<"$travis" > .travis.yml

0 commit comments

Comments
 (0)