2014-11-24 15:31:55 -08:00
|
|
|
#!/bin/bash
|
2016-03-04 15:08:57 -08:00
|
|
|
set -eo pipefail
|
2014-11-24 15:31:55 -08:00
|
|
|
|
2018-07-13 13:56:30 -07:00
|
|
|
defaultSuite='bionic'
|
2015-07-20 15:28:26 -07:00
|
|
|
declare -A suites=(
|
2018-07-13 13:56:30 -07:00
|
|
|
[5.5]='trusty'
|
2015-07-20 15:28:26 -07:00
|
|
|
)
|
2018-07-13 13:56:30 -07:00
|
|
|
defaultXtrabackup='mariadb-backup'
|
2017-07-27 17:21:39 -07:00
|
|
|
declare -A xtrabackups=(
|
|
|
|
[5.5]='percona-xtrabackup'
|
|
|
|
)
|
2018-07-18 13:22:52 -07:00
|
|
|
declare -A dpkgArchToBashbrew=(
|
2018-07-16 16:49:00 -07:00
|
|
|
[amd64]='amd64'
|
|
|
|
[armel]='arm32v5'
|
|
|
|
[armhf]='arm32v7'
|
|
|
|
[arm64]='arm64v8'
|
|
|
|
[i386]='i386'
|
|
|
|
[ppc64el]='ppc64le'
|
|
|
|
[s390x]='s390x'
|
|
|
|
)
|
|
|
|
|
|
|
|
getRemoteVersion() {
|
|
|
|
local version="$1"; shift # 10.3
|
|
|
|
local suite="$1"; shift # bionic
|
|
|
|
local dpkgArch="$1" shift # arm64
|
|
|
|
|
|
|
|
echo "$(
|
|
|
|
curl -fsSL "http://ftp.osuosl.org/pub/mariadb/repo/$version/ubuntu/dists/$suite/main/binary-$dpkgArch/Packages" 2>/dev/null \
|
|
|
|
| tac|tac \
|
2018-08-02 10:24:48 -07:00
|
|
|
| awk -F ': ' '$1 == "Package" { pkg = $2; next } $1 == "Version" && pkg == "mariadb-server-'"$version"'" { print $2; exit }'
|
2018-07-16 16:49:00 -07:00
|
|
|
)"
|
|
|
|
}
|
2015-07-20 15:28:26 -07:00
|
|
|
|
2014-11-24 15:31:55 -08:00
|
|
|
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
|
|
|
|
|
|
|
versions=( "$@" )
|
|
|
|
if [ ${#versions[@]} -eq 0 ]; then
|
|
|
|
versions=( */ )
|
|
|
|
fi
|
|
|
|
versions=( "${versions[@]%/}" )
|
|
|
|
|
2016-03-04 15:08:57 -08:00
|
|
|
travisEnv=
|
2014-11-24 15:31:55 -08:00
|
|
|
for version in "${versions[@]}"; do
|
2015-07-20 15:28:26 -07:00
|
|
|
suite="${suites[$version]:-$defaultSuite}"
|
2018-07-16 16:49:00 -07:00
|
|
|
fullVersion="$(getRemoteVersion "$version" "$suite" 'amd64')"
|
2015-07-20 15:28:26 -07:00
|
|
|
if [ -z "$fullVersion" ]; then
|
|
|
|
echo >&2 "warning: cannot find $version in $suite"
|
|
|
|
continue
|
|
|
|
fi
|
2018-07-13 13:56:30 -07:00
|
|
|
|
2019-03-01 13:15:13 -08:00
|
|
|
mariaVersion="${fullVersion##*:}"
|
|
|
|
mariaVersion="${mariaVersion%%[-+~]*}"
|
|
|
|
|
|
|
|
# "Alpha", "Beta", "Gamma", "RC", "Stable", etc.
|
|
|
|
releaseStatus="$(
|
|
|
|
wget -qO- 'https://downloads.mariadb.org/mariadb/+releases/' \
|
|
|
|
| xargs -d '\n' \
|
|
|
|
| grep -oP '<tr>.+?</tr>' \
|
|
|
|
| grep -P '>\Q'"$mariaVersion"'\E<' \
|
|
|
|
| grep -oP '<td>[^0-9][^<]*</td>' \
|
|
|
|
| sed -r 's!^.*<td>([^0-9][^<]*)</td>.*$!\1!'
|
|
|
|
)"
|
|
|
|
case "$releaseStatus" in
|
|
|
|
Alpha | Beta | Gamma | RC | Stable ) ;; # sanity check
|
|
|
|
*) echo >&2 "error: unexpected 'release status' value for $mariaVersion: $releaseStatus"; exit 1 ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
echo "$version: $mariaVersion ($releaseStatus)"
|
|
|
|
|
2018-07-17 14:19:00 -07:00
|
|
|
arches=
|
2018-07-18 13:22:52 -07:00
|
|
|
sortedArches="$(echo "${!dpkgArchToBashbrew[@]}" | xargs -n1 | sort | xargs)"
|
|
|
|
for arch in $sortedArches; do
|
2018-07-16 16:49:00 -07:00
|
|
|
if ver="$(getRemoteVersion "$version" "$suite" "$arch")" && [ -n "$ver" ]; then
|
2018-07-18 13:22:52 -07:00
|
|
|
arches="$arches ${dpkgArchToBashbrew[$arch]}"
|
2018-07-16 16:49:00 -07:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2018-07-13 13:56:30 -07:00
|
|
|
backup="${xtrabackups[$version]:-$defaultXtrabackup}"
|
2018-07-16 16:49:00 -07:00
|
|
|
|
|
|
|
cp Dockerfile.template "$version/Dockerfile"
|
2018-08-02 10:24:48 -07:00
|
|
|
if [ "$backup" = 'percona-xtrabackup' ]; then
|
2018-07-16 16:49:00 -07:00
|
|
|
gawk -i inplace '
|
|
|
|
{ print }
|
2018-07-18 13:22:52 -07:00
|
|
|
/%%BACKUP_PACKAGE%%/ && c == 0 { c = 1; system("cat Dockerfile-percona-block") }
|
2018-07-16 16:49:00 -07:00
|
|
|
' "$version/Dockerfile"
|
|
|
|
elif [ "$backup" == 'mariadb-backup' ] && [[ "$version" < 10.3 ]]; then
|
|
|
|
# 10.1 and 10.2 have mariadb major version in the package name
|
2018-07-13 13:56:30 -07:00
|
|
|
backup="$backup-$version"
|
|
|
|
fi
|
2018-07-16 16:49:00 -07:00
|
|
|
|
2019-03-01 13:15:13 -08:00
|
|
|
cp docker-entrypoint.sh "$version/"
|
|
|
|
sed -i \
|
|
|
|
-e 's!%%MARIADB_VERSION%%!'"$fullVersion"'!g' \
|
|
|
|
-e 's!%%MARIADB_MAJOR%%!'"$version"'!g' \
|
|
|
|
-e 's!%%MARIADB_RELEASE_STATUS%%!'"$releaseStatus"'!g' \
|
|
|
|
-e 's!%%SUITE%%!'"$suite"'!g' \
|
|
|
|
-e 's!%%BACKUP_PACKAGE%%!'"$backup"'!g' \
|
|
|
|
-e 's!%%ARCHES%%!'"$arches"'!g' \
|
|
|
|
"$version/Dockerfile"
|
|
|
|
|
2016-03-04 15:08:57 -08:00
|
|
|
travisEnv='\n - VERSION='"$version$travisEnv"
|
2014-11-24 15:31:55 -08:00
|
|
|
done
|
2016-03-04 15:08:57 -08:00
|
|
|
|
|
|
|
travis="$(awk -v 'RS=\n\n' '$1 == "env:" { $0 = "env:'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)"
|
|
|
|
echo "$travis" > .travis.yml
|