You've already forked postgres
mirror of
https://github.com/docker-library/postgres.git
synced 2025-07-28 10:42:06 +03:00
Tianon requested changes
- fail on unset vars so that missing suites on new version gives a more useful error - prevent inconsistent bash handling of tilde in `${variable//~/}` - use associative array for suite to packages.gz cache
This commit is contained in:
20
update.sh
20
update.sh
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -eo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
||||||
|
|
||||||
@ -26,27 +26,28 @@ declare -A alpineVersion=(
|
|||||||
[10]='3.6'
|
[10]='3.6'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
packagesBase='http://apt.postgresql.org/pub/repos/apt/dists/'
|
||||||
|
|
||||||
# https://www.mirrorservice.org/sites/ftp.ossp.org/pkg/lib/uuid/?C=M;O=D
|
# https://www.mirrorservice.org/sites/ftp.ossp.org/pkg/lib/uuid/?C=M;O=D
|
||||||
osspUuidVersion='1.6.2'
|
osspUuidVersion='1.6.2'
|
||||||
osspUuidHash='11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0'
|
osspUuidHash='11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0'
|
||||||
|
|
||||||
lastSuite=
|
declare -A suitePackageList
|
||||||
travisEnv=
|
travisEnv=
|
||||||
for version in "${versions[@]}"; do
|
for version in "${versions[@]}"; do
|
||||||
if [ "${debianSuite[$version]}" != "$lastSuite" ]; then
|
suite="${debianSuite[$version]}"
|
||||||
lastSuite="${debianSuite[$version]}"
|
if [ -z "${suitePackageList["$suite"]:+isset}" ]; then
|
||||||
packagesBase='http://apt.postgresql.org/pub/repos/apt/dists/'"${debianSuite[$version]}"'-pgdg'
|
suitePackageList["$suite"]="$(curl -fsSL "${packagesBase}/${suite}-pgdg/main/binary-amd64/Packages.bz2" | bunzip2)"
|
||||||
mainList="$(curl -fsSL "$packagesBase/main/binary-amd64/Packages.bz2" | bunzip2)"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
versionList="$(echo "$mainList"; curl -fsSL "$packagesBase/$version/binary-amd64/Packages.bz2" | bunzip2)"
|
versionList="$(echo "${suitePackageList["$suite"]}"; curl -fsSL "${packagesBase}/${suite}-pgdg/${version}/binary-amd64/Packages.bz2" | bunzip2)"
|
||||||
fullVersion="$(echo "$versionList" | awk -F ': ' '$1 == "Package" { pkg = $2 } $1 == "Version" && pkg == "postgresql-'"$version"'" { print $2; exit }' || true)"
|
fullVersion="$(echo "$versionList" | awk -F ': ' '$1 == "Package" { pkg = $2 } $1 == "Version" && pkg == "postgresql-'"$version"'" { print $2; exit }' || true)"
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
cp docker-entrypoint.sh "$version/"
|
cp docker-entrypoint.sh "$version/"
|
||||||
sed -e 's/%%PG_MAJOR%%/'"$version"'/g;' \
|
sed -e 's/%%PG_MAJOR%%/'"$version"'/g;' \
|
||||||
-e 's/%%PG_VERSION%%/'"$fullVersion"'/g' \
|
-e 's/%%PG_VERSION%%/'"$fullVersion"'/g' \
|
||||||
-e 's/%%DEBIAN_SUITE%%/'"${debianSuite[$version]}"'/g' \
|
-e 's/%%DEBIAN_SUITE%%/'"$suite"'/g' \
|
||||||
Dockerfile-debian.template > "$version/Dockerfile"
|
Dockerfile-debian.template > "$version/Dockerfile"
|
||||||
if [ "$version" = '10' ]; then
|
if [ "$version" = '10' ]; then
|
||||||
# postgresql-contrib-10 package does not exist, but is provided by postgresql-10
|
# postgresql-contrib-10 package does not exist, but is provided by postgresql-10
|
||||||
@ -60,7 +61,8 @@ for version in "${versions[@]}"; do
|
|||||||
# TODO figure out what to do with odd version numbers here, like release candidates
|
# TODO figure out what to do with odd version numbers here, like release candidates
|
||||||
srcVersion="${fullVersion%%-*}"
|
srcVersion="${fullVersion%%-*}"
|
||||||
# change "10~beta1" to "10beta1" for ftp urls
|
# change "10~beta1" to "10beta1" for ftp urls
|
||||||
srcVersion="${srcVersion//\~/}"
|
tilde='~'
|
||||||
|
srcVersion="${srcVersion//$tilde/}"
|
||||||
srcSha256="$(curl -fsSL "https://ftp.postgresql.org/pub/source/v${srcVersion}/postgresql-${srcVersion}.tar.bz2.sha256" | cut -d' ' -f1)"
|
srcSha256="$(curl -fsSL "https://ftp.postgresql.org/pub/source/v${srcVersion}/postgresql-${srcVersion}.tar.bz2.sha256" | cut -d' ' -f1)"
|
||||||
for variant in alpine; do
|
for variant in alpine; do
|
||||||
if [ ! -d "$version/$variant" ]; then
|
if [ ! -d "$version/$variant" ]; then
|
||||||
|
Reference in New Issue
Block a user