forked from boot2docker/boot2docker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate.sh
executable file
·141 lines (121 loc) · 3.5 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/usr/bin/env bash
set -Eeuo pipefail
# TODO http://distro.ibiblio.org/tinycorelinux/latest-x86_64
major='10.x'
version='10.1' # TODO auto-detect latest
# 9.x doesn't seem to use ".../archive/X.Y.Z/..." in the same way as 8.x :(
packages=(
# needed for "tce-load.patch"
squashfs-tools.tcz
# required for Docker, deps on "xyz-KERNEL.tcz"
#iptables.tcz
# fixed via tce-load patch instead (more sustainable)
)
mirrors=(
http://distro.ibiblio.org/tinycorelinux
http://repo.tinycorelinux.net
)
# https://www.kernel.org/
kernelBase='4.14'
# 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"'"/'
)
archPackages=()
archPackagesMd5s=()
declare -A seen=()
set -- "${packages[@]}"
while [ "$#" -gt 0 ]; do
package="$1"; shift
[ -z "${seen[$package]:-}" ] || continue
seen[$package]=1
packageMd5="$(fetch "$arch/tcz/$package.md5.txt")"
packageMd5="${packageMd5%% *}"
archPackages+=( "$package" )
archPackagesMd5s+=(
'TCL_PACKAGE_MD5__'"$(echo "$package" | sed -r 's/[^a-zA-Z0-9]+/_/g')"'="'"$packageMd5"'"'
)
if packageDeps="$(
fetch "$arch/tcz/$package.dep" \
| grep -vE -- '-KERNEL'
)"; then
set -- $packageDeps "$@"
fi
done
seds+=(
-e 's!^ENV TCL_PACKAGES.*!ENV TCL_PACKAGES="'"${archPackages[*]}"'" '"${archPackagesMd5s[*]}"'!'
)
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