OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. | 2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 # | 5 # |
6 #@ This script for up/downloading native client toolchains. | 6 #@ This script for up/downloading native client toolchains, etc.. |
| 7 #@ To manually inspect what is on the store servers point your |
| 8 #@ browser at: |
| 9 #@ http://gsdview.appspot.com/nativeclient-archive2/ |
7 | 10 |
8 #set -o xtrace | 11 #set -o xtrace |
9 set -o nounset | 12 set -o nounset |
10 set -o errexit | 13 set -o errexit |
11 | 14 |
12 ###################################################################### | 15 ###################################################################### |
13 # Helper | 16 # Helper |
14 ###################################################################### | 17 ###################################################################### |
15 | 18 |
16 Banner() { | 19 Banner() { |
(...skipping 14 matching lines...) Expand all Loading... |
31 exit -1 | 34 exit -1 |
32 fi | 35 fi |
33 } | 36 } |
34 | 37 |
35 ###################################################################### | 38 ###################################################################### |
36 # Config | 39 # Config |
37 ###################################################################### | 40 ###################################################################### |
38 | 41 |
39 readonly GS_UTIL=${GS_UTIL:-buildbot/gsutil.sh} | 42 readonly GS_UTIL=${GS_UTIL:-buildbot/gsutil.sh} |
40 | 43 |
41 # raw data store url | 44 readonly DIR_ARCHIVE=nativeclient-archive2 |
| 45 readonly DIR_TRYBOT=nativeclient-trybot |
| 46 |
42 readonly URL_PREFIX_RAW=https://commondatastorage.googleapis.com | 47 readonly URL_PREFIX_RAW=https://commondatastorage.googleapis.com |
43 # appengine app that constructs a synthetic directory listing | 48 readonly URL_PREFIX_ARCHIVE="${URL_PREFIX_RAW}/${DIR_ARCHIVE}" |
44 # for the data store | 49 readonly URL_PREFIX_TRYBOT="${URL_PREFIX_RAW}/${DIR_TRYBOT}" |
45 readonly URL_PREFIX_UI=http://gsdview.appspot.com | |
46 readonly BASE_TOOLCHAIN_COMPONENT=nativeclient-archive2/toolchain | |
47 | 50 |
48 readonly BASE_BETWEEN_BOTS_TRY=nativeclient-trybot/between_builders | 51 readonly GS_PREFIX_ARCHIVE="gs://${DIR_ARCHIVE}" |
49 readonly BASE_BETWEEN_BOTS=nativeclient-archive2/between_builders | 52 readonly GS_PREFIX_TRYBOT="gs://${DIR_TRYBOT}" |
50 | 53 |
51 | 54 readonly URL_PREFIX_UI="http://gsdview.appspot.com" |
52 ###################################################################### | 55 ###################################################################### |
53 # UTIL | 56 # UTIL |
54 ###################################################################### | 57 ###################################################################### |
55 GetFileSizeK() { | 58 GetFileSizeK() { |
56 # Note: this is tricky to make work on win/linux/mac | 59 # Note: this is tricky to make work on win/linux/mac |
57 du -k $1 | egrep -o "^[0-9]+" | 60 du -k $1 | egrep -o "^[0-9]+" |
58 } | 61 } |
59 | 62 |
60 | 63 |
61 Upload() { | 64 Upload() { |
62 local size_kb=$(GetFileSizeK $1) | 65 local size_kb=$(GetFileSizeK $1) |
63 echo "uploading: $2 (${size_kb}kB)" | 66 echo "uploading: $2 (${size_kb}kB)" |
64 echo "@@@STEP_LINK@download (${size_kb}kB)@${URL_PREFIX_UI}/$2@@@" | 67 local path=${2:5} |
65 ${GS_UTIL} cp -a public-read $1 gs://$2 | 68 echo "@@@STEP_LINK@download (${size_kb}kB)@${URL_PREFIX_UI}/${path}@@@" |
| 69 ${GS_UTIL} cp -a public-read $1 $2 |
66 } | 70 } |
67 | 71 |
| 72 CheckPath() { |
| 73 if [[ $1 != toolchain/* && |
| 74 $1 != between_builders/* && |
| 75 $1 != canned_nexe/* ]] ; then |
| 76 echo "ERROR: Bad component name: $1" |
| 77 exit -1 |
| 78 fi |
| 79 } |
68 | 80 |
69 UploadToolchainComponent() { | 81 UploadArchive() { |
70 local rev=$1 | 82 local path=$1 |
71 local name=$2 | 83 local tarball=$2 |
72 local tarball=$3 | |
73 | 84 |
74 Upload ${tarball} ${BASE_TOOLCHAIN_COMPONENT}/${rev}/${name} | 85 CheckPath ${path} |
| 86 Upload ${tarball} ${GS_PREFIX_ARCHIVE}/${path} |
| 87 } |
| 88 |
| 89 DownloadArchive() { |
| 90 local path=$1 |
| 91 local tarball=$2 |
| 92 |
| 93 CheckPath ${path} |
| 94 curl -L ${URL_PREFIX_ARCHIVE}/${path} -o ${tarball} |
| 95 } |
| 96 |
| 97 UploadTrybot() { |
| 98 local path=$1 |
| 99 local tarball=$2 |
| 100 |
| 101 CheckPath ${path} |
| 102 Upload ${tarball} ${GS_PREFIX_TRYBOT}/${path} |
| 103 } |
| 104 |
| 105 DownloadTrybot() { |
| 106 local path=$1 |
| 107 local tarball=$2 |
| 108 |
| 109 CheckPath ${path} |
| 110 curl -L ${URL_PREFIX_TRYBOT}/${path} -o ${tarball} |
75 } | 111 } |
76 | 112 |
77 ComputeSha1() { | 113 ComputeSha1() { |
78 # on mac we do not have sha1sum so we fall back to openssl | 114 # on mac we do not have sha1sum so we fall back to openssl |
79 if which sha1sum >/dev/null ; then | 115 if which sha1sum >/dev/null ; then |
80 echo "$(SHA1=$(sha1sum -b $1) ; echo ${SHA1:0:40})" | 116 echo "$(SHA1=$(sha1sum -b $1) ; echo ${SHA1:0:40})" |
81 elif which openssl >/dev/null ; then | 117 elif which openssl >/dev/null ; then |
82 echo "$(SHA1=$(openssl sha1 $1) ; echo ${SHA1/* /})" | 118 echo "$(SHA1=$(openssl sha1 $1) ; echo ${SHA1/* /})" |
83 | 119 |
84 else | 120 else |
85 echo "ERROR: do not know how to compute SHA1" | 121 echo "ERROR: do not know how to compute SHA1" |
86 exit 1 | 122 exit 1 |
87 fi | 123 fi |
88 } | 124 } |
89 | 125 |
90 ###################################################################### | 126 ###################################################################### |
91 # ARM TRUSTED | 127 # ARM TRUSTED |
92 ###################################################################### | 128 ###################################################################### |
93 | 129 |
94 UploadArmTrustedToolchain() { | 130 UploadArmTrustedToolchain() { |
95 local rev=$1 | 131 local rev=$1 |
96 local tarball=$2 | 132 local tarball=$2 |
97 | 133 |
98 UploadToolchainComponent ${rev} naclsdk_linux_arm-trusted.tgz ${tarball} | 134 UploadArchive toolchain/${rev}/naclsdk_linux_arm-trusted.tgz ${tarball} |
99 } | 135 } |
100 | 136 |
101 DownloadArmTrustedToolchain() { | 137 DownloadArmTrustedToolchain() { |
102 local rev=$1 | 138 local rev=$1 |
103 local tarball=$2 | 139 local tarball=$2 |
104 curl -L \ | 140 DownloadArchive toolchain/${rev}/naclsdk_linux_arm-trusted.tgz ${tarball} |
105 ${URL_PREFIX_RAW}/${BASE_TOOLCHAIN_COMPONENT}/${rev}/naclsdk_linux_arm-trus
ted.tgz \ | |
106 -o ${tarball} | |
107 } | 141 } |
108 | 142 |
109 ShowRecentArmTrustedToolchains() { | 143 ShowRecentArmTrustedToolchains() { |
110 local url=gs://${BASE_TOOLCHAIN_COMPONENT}/*/naclsdk_linux_arm-trusted.tgz | 144 local url=${GS_PREFIX_ARCHIVE}/toolchain/*/naclsdk_linux_arm-trusted.tgz |
111 local recent=$(${GS_UTIL} ls ${url} | tail -5) | 145 local recent=$(${GS_UTIL} ls ${url} | tail -5) |
112 for url in ${recent} ; do | 146 for url in ${recent} ; do |
113 if ${GS_UTIL} ls -L "${url}" ; then | 147 if ${GS_UTIL} ls -L "${url}" ; then |
114 echo "=====" | 148 echo "=====" |
115 fi | 149 fi |
116 done | 150 done |
117 } | 151 } |
118 | 152 |
119 ###################################################################### | 153 ###################################################################### |
120 # ARM UN-TRUSTED | 154 # ARM UN-TRUSTED |
121 ###################################################################### | 155 ###################################################################### |
122 | 156 |
123 #@ label should be in : | 157 #@ label should be in : |
124 #@ | 158 #@ |
125 #@ pnacl_linux_x86 | 159 #@ pnacl_linux_x86 |
126 #@ pnacl_mac_x86 | 160 #@ pnacl_mac_x86 |
127 #@ pnacl_win_x86 | 161 #@ pnacl_win_x86 |
128 | 162 |
129 UploadPnaclToolchains() { | 163 UploadPnaclToolchains() { |
130 local rev=$1 | 164 local rev=$1 |
131 local label=$2 | 165 local label=$2 |
132 local tarball=$3 | 166 local tarball=$3 |
133 | 167 |
134 ComputeSha1 ${tarball} > ${tarball}.sha1hash | 168 ComputeSha1 ${tarball} > ${tarball}.sha1hash |
135 UploadToolchainComponent ${rev} naclsdk_${label}.tgz.sha1hash ${tarball}.sha1h
ash | 169 UploadArchive toolchain/${rev}/naclsdk_${label}.tgz.sha1hash ${tarball}.sha1ha
sh |
136 | 170 |
137 # NOTE: only the last link is shown on the waterfall so this should come last | 171 # NOTE: only the last link is shown on the waterfall so this should come last |
138 UploadToolchainComponent ${rev} naclsdk_${label}.tgz ${tarball} | 172 UploadArchive toolchain/${rev}/naclsdk_${label}.tgz ${tarball} |
139 } | 173 } |
140 | 174 |
141 DownloadPnaclToolchains() { | 175 DownloadPnaclToolchains() { |
142 local rev=$1 | 176 local rev=$1 |
143 local label=$2 | 177 local label=$2 |
144 local tarball=$3 | 178 local tarball=$3 |
145 | 179 |
146 curl -L \ | 180 DownloadComponent toolchain/${rev}/naclsdk_${label}.tgz ${tarball} |
147 ${URL_PREFIX_RAW}/${BASE_TOOLCHAIN_COMPONENT}/${rev}/naclsdk_${label}.tgz\ | |
148 -o ${tarball} | |
149 } | 181 } |
150 | 182 |
151 ShowRecentPnaclToolchains() { | 183 ShowRecentPnaclToolchains() { |
152 local label=$1 | 184 local label=$1 |
153 local url="gs://${BASE_TOOLCHAIN_COMPONENT}/*/naclsdk_${label}.tgz" | 185 local url="${GS_PREFIX_ARCHIVE}/toolchain/*/naclsdk_${label}.tgz" |
154 | 186 |
155 local recent=$(${GS_UTIL} ls ${url} | tail -5) | 187 local recent=$(${GS_UTIL} ls ${url} | tail -5) |
156 for url in ${recent} ; do | 188 for url in ${recent} ; do |
157 if ${GS_UTIL} ls -L "${url}" ; then | 189 if ${GS_UTIL} ls -L "${url}" ; then |
158 echo "=====" | 190 echo "=====" |
159 fi | 191 fi |
160 done | 192 done |
161 } | 193 } |
162 | 194 |
163 ###################################################################### | 195 ###################################################################### |
| 196 # Nexes for regression/speed tests |
| 197 ###################################################################### |
| 198 |
| 199 UploadArchivedNexes() { |
| 200 local rev=$1 |
| 201 local label="archived_nexes_$2.tar.bz2" |
| 202 local tarball=$3 |
| 203 |
| 204 # TODO(robertm,bradn): find another place to store this and |
| 205 # negotiate long term storage guarantees |
| 206 UploadArchive canned_nexe/${rev}/${label} ${tarball} |
| 207 } |
| 208 |
| 209 DownloadArchivedNexes() { |
| 210 local rev=$1 |
| 211 local label="archived_nexes_$2.tar.bz2" |
| 212 local tarball=$3 |
| 213 |
| 214 DownloadArchive canned_nexe/${rev}/${label} ${tarball} |
| 215 } |
| 216 |
| 217 ###################################################################### |
164 # Pexes for bitcode stability testing | 218 # Pexes for bitcode stability testing |
165 ###################################################################### | 219 ###################################################################### |
166 | 220 |
167 UploadArchivedPexes() { | 221 UploadArchivedPexes() { |
168 local rev=$1 | 222 local rev=$1 |
169 local label="archived_pexes_$2.tar.bz2" | 223 local label="archived_pexes_$2.tar.bz2" |
170 local tarball=$3 | 224 local tarball=$3 |
171 | 225 |
172 # TODO(robertm,bradn): find another place to store this and | 226 # TODO(robertm,bradn): find another place to store this and |
173 # negotiate long term storage guarantees | 227 # negotiate long term storage guarantees |
174 UploadToolchainComponent ${rev} ${label} ${tarball} | 228 # Note, we store the pexes with the toolchain rev for now |
| 229 UploadArchive toolchain/${rev}/${label} ${tarball} |
175 } | 230 } |
176 | 231 |
177 DownloadArchivedPexes() { | 232 DownloadArchivedPexes() { |
178 local rev=$1 | 233 local rev=$1 |
179 local label="archived_pexes_$2.tar.bz2" | 234 local label="archived_pexes_$2.tar.bz2" |
180 local tarball=$3 | 235 local tarball=$3 |
181 | 236 DownloadArchive toolchain/${rev}/${label} ${tarball} |
182 curl -L ${URL_PREFIX_RAW}/${BASE_TOOLCHAIN_COMPONENT}/${rev}/${label} \ | |
183 -o ${tarball} | |
184 } | 237 } |
185 | 238 |
186 UploadArchivedPexesTranslator() { | 239 UploadArchivedPexesTranslator() { |
187 UploadArchivedPexes $1 "translator" $2 | 240 UploadArchivedPexes $1 "translator" $2 |
188 } | 241 } |
189 | 242 |
190 DownloadArchivedPexesTranslator() { | 243 DownloadArchivedPexesTranslator() { |
191 DownloadArchivedPexes $1 "translator" $2 | 244 DownloadArchivedPexes $1 "translator" $2 |
192 } | 245 } |
193 | 246 |
194 UploadArchivedPexesSpec2k() { | 247 UploadArchivedPexesSpec2k() { |
195 UploadArchivedPexes $1 "spec2k" $2 | 248 UploadArchivedPexes $1 "spec2k" $2 |
196 } | 249 } |
197 | 250 |
198 DownloadArchivedPexesSpec2k() { | 251 DownloadArchivedPexesSpec2k() { |
199 DownloadArchivedPexes $1 "spec2k" $2 | 252 DownloadArchivedPexes $1 "spec2k" $2 |
200 } | 253 } |
201 ###################################################################### | 254 ###################################################################### |
202 # ARM BETWEEN BOTS | 255 # ARM BETWEEN BOTS |
203 ###################################################################### | 256 ###################################################################### |
204 | 257 |
205 UploadArmBinariesForHWBots() { | 258 UploadArmBinariesForHWBots() { |
206 local name=$1 | 259 local name=$1 |
207 local tarball=$2 | 260 local tarball=$2 |
208 Upload ${tarball} ${BASE_BETWEEN_BOTS}/${name}/$(basename ${tarball}) | 261 UploadArchive between_builders/${name}/$(basename ${tarball}) ${tarball} |
209 } | 262 } |
210 | 263 |
211 | 264 |
212 DownloadArmBinariesForHWBots() { | 265 DownloadArmBinariesForHWBots() { |
213 local name=$1 | 266 local name=$1 |
214 local tarball=$2 | 267 local tarball=$2 |
215 curl -L \ | 268 DownloadArchive between_builders/${name}/$(basename ${tarball}) ${tarball} |
216 ${URL_PREFIX_RAW}/${BASE_BETWEEN_BOTS}/${name}/$(basename ${tarball}) \ | |
217 -o ${tarball} | |
218 } | 269 } |
219 | 270 |
220 ###################################################################### | 271 ###################################################################### |
221 # ARM BETWEEN BOTS TRY | 272 # ARM BETWEEN BOTS TRY |
222 ###################################################################### | 273 ###################################################################### |
223 | 274 |
224 UploadArmBinariesForHWBotsTry() { | 275 UploadArmBinariesForHWBotsTry() { |
225 local name=$1 | 276 local name=$1 |
226 local tarball=$2 | 277 local tarball=$2 |
227 Upload ${tarball} ${BASE_BETWEEN_BOTS_TRY}/${name}/$(basename ${tarball}) | 278 UploadTrybot between_builders/${name}/$(basename ${tarball}) ${tarball} |
228 } | 279 } |
229 | 280 |
230 | 281 |
231 DownloadArmBinariesForHWBotsTry() { | 282 DownloadArmBinariesForHWBotsTry() { |
232 local name=$1 | 283 local name=$1 |
233 local tarball=$2 | 284 local tarball=$2 |
234 curl -L \ | 285 DownloadTrybot between_builders/${name}/$(basename ${tarball}) ${tarball} |
235 ${URL_PREFIX_RAW}/${BASE_BETWEEN_BOTS_TRY}/${name}/$(basename ${tarball})\ | |
236 -o ${tarball} | |
237 } | 286 } |
238 | 287 |
239 ###################################################################### | 288 ###################################################################### |
240 # DISPATCH | 289 # DISPATCH |
241 ###################################################################### | 290 ###################################################################### |
242 SanityCheck | 291 SanityCheck |
243 | 292 |
244 if [[ $# -eq 0 ]] ; then | 293 if [[ $# -eq 0 ]] ; then |
245 echo "you must specify a mode on the commandline:" | 294 echo "you must specify a mode on the commandline:" |
246 echo | 295 echo |
247 Usage | 296 Usage |
248 exit -1 | 297 exit -1 |
249 elif [[ "$(type -t $1)" != "function" ]]; then | 298 elif [[ "$(type -t $1)" != "function" ]]; then |
250 echo "ERROR: unknown function '$1'." >&2 | 299 echo "ERROR: unknown function '$1'." >&2 |
251 echo "For help, try:" | 300 echo "For help, try:" |
252 echo " $0 help" | 301 echo " $0 help" |
253 exit 1 | 302 exit 1 |
254 else | 303 else |
255 "$@" | 304 "$@" |
256 fi | 305 fi |
OLD | NEW |