forked from boot2docker/boot2docker
-
Notifications
You must be signed in to change notification settings - Fork 4
/
update.sh
executable file
·104 lines (90 loc) · 2.68 KB
/
update.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env bash
set -Eeuo pipefail
# TODO http://distro.ibiblio.org/tinycorelinux/latest-x86_64
major='11.x'
version='11.0' # TODO auto-detect latest
# 9.x doesn't seem to use ".../archive/X.Y.Z/..." in the same way as 8.x :(
mirrors=(
http://distro.ibiblio.org/tinycorelinux
http://repo.tinycorelinux.net
)
# https://www.kernel.org/
kernelBase='4.19'
# https://github.com/boot2docker/boot2docker/issues/1398
# https://download.virtualbox.org/virtualbox/
vboxBase='5'
# avoid issues with slow Git HTTP interactions (*cough* sourceforge *cough*)
export GIT_HTTP_LOW_SPEED_LIMIT='100'
export GIT_HTTP_LOW_SPEED_TIME='2'
# ... or servers being down
wget() { command wget --timeout=2 "$@" -o /dev/null; }
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
seds=(
-e 's!^(ENV TCL_MIRRORS).*!\1 '"${mirrors[*]}"'!'
-e 's!^(ENV TCL_MAJOR).*!\1 '"$major"'!'
-e 's!^(ENV TCL_VERSION).*!\1 '"$version"'!'
)
fetch() {
local file
for file; do
local mirror
for mirror in "${mirrors[@]}"; do
if wget -qO- "$mirror/$major/$file"; then
return 0
fi
done
done
return 1
}
arch='x86_64'
rootfs='rootfs64.gz'
rootfsMd5="$(
# 9.x doesn't seem to use ".../archive/X.Y.Z/..." in the same way as 8.x :(
fetch \
"$arch/archive/$version/distribution_files/$rootfs.md5.txt" \
"$arch/release/distribution_files/$rootfs.md5.txt"
)"
rootfsMd5="${rootfsMd5%% *}"
seds+=(
-e 's/^ENV TCL_ROOTFS.*/ENV TCL_ROOTFS="'"$rootfs"'" TCL_ROOTFS_MD5="'"$rootfsMd5"'"/'
)
kernelVersion="$(
wget -qO- 'https://www.kernel.org/releases.json' \
| jq -r --arg base "$kernelBase" '.releases[] | .version | select(startswith($base + "."))'
)"
seds+=(
-e 's!^(ENV LINUX_VERSION).*!\1 '"$kernelVersion"'!'
)
#vboxVersion="$(wget -qO- 'https://download.virtualbox.org/virtualbox/LATEST-STABLE.TXT')"
vboxVersion="$(
wget -qO- 'https://download.virtualbox.org/virtualbox/' \
| grep -oE 'href="[0-9.]+/?"' \
| cut -d'"' -f2 | cut -d/ -f1 \
| grep -E "^$vboxBase[.]" \
| tail -1
)"
vboxSha256="$(
{
wget -qO- "https://download.virtualbox.org/virtualbox/$vboxVersion/SHA256SUMS" \
|| wget -qO- "https://www.virtualbox.org/download/hashes/$vboxVersion/SHA256SUMS"
} | awk '$2 ~ /^[*]?VBoxGuestAdditions_.*[.]iso$/ { print $1 }'
)"
seds+=(
-e 's!^(ENV VBOX_VERSION).*!\1 '"$vboxVersion"'!'
-e 's!^(ENV VBOX_SHA256).*!\1 '"$vboxSha256"'!'
)
# PARALLELS_VERSION: https://github.com/boot2docker/boot2docker/pull/1332#issuecomment-420273330
xenVersion="$(
git ls-remote --tags 'https://github.com/xenserver/xe-guest-utilities.git' \
| cut -d/ -f3 \
| cut -d^ -f1 \
| grep -E '^v[0-9]+' \
| cut -dv -f2- \
| sort -rV \
| head -1
)"
seds+=(
-e 's!^(ENV XEN_VERSION).*!\1 '"$xenVersion"'!'
)
set -x
sed -ri "${seds[@]}" Dockerfile