@@ -27,32 +27,65 @@ declare -A alpineVersion=(
27
27
)
28
28
29
29
packagesBase=' http://apt.postgresql.org/pub/repos/apt/dists/'
30
-
31
30
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
+
32
49
travisEnv=
33
50
for version in " ${versions[@]} " ; do
34
51
tag=" ${debianSuite[$version]:- $defaultDebianSuite } "
35
52
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
41
63
fi
42
64
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
46
78
47
- echo " $version : $fullVersion "
79
+ echo " $version : $fullVersion ( $versionArches ) "
48
80
49
81
cp docker-entrypoint.sh " $version /"
50
82
sed -e ' s/%%PG_MAJOR%%/' " $version " ' /g;' \
51
83
-e ' s/%%PG_VERSION%%/' " $fullVersion " ' /g' \
52
84
-e ' s/%%DEBIAN_TAG%%/' " $tag " ' /g' \
53
85
-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"
56
89
if [ " $majorVersion " = ' 9' ]; then
57
90
sed -i -e ' s/WALDIR/XLOGDIR/g' \
58
91
-e ' s/waldir/xlogdir/g' \
@@ -84,7 +117,8 @@ for version in "${versions[@]}"; do
84
117
-e ' s/%%PG_VERSION%%/' " $srcVersion " ' /g' \
85
118
-e ' s/%%PG_SHA256%%/' " $srcSha256 " ' /g' \
86
119
-e ' s/%%ALPINE-VERSION%%/' " ${alpineVersion[$version]:- $defaultAlpineVersion } " ' /g' \
87
- " Dockerfile-$variant .template" > " $version /$variant /Dockerfile"
120
+ " Dockerfile-$variant .template" \
121
+ > " $version /$variant /Dockerfile"
88
122
if [ " $majorVersion " = ' 9' ]; then
89
123
sed -i -e ' s/WALDIR/XLOGDIR/g' \
90
124
-e ' s/waldir/xlogdir/g' \
@@ -109,4 +143,4 @@ for version in "${versions[@]}"; do
109
143
done
110
144
111
145
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