Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / native_client / buildbot / file_up_down_load.sh
1 #!/bin/bash
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
4 # found in the LICENSE file.
5 #
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/
10
11 #set -o xtrace
12 set -o nounset
13 set -o errexit
14
15 ######################################################################
16 # Helper
17 ######################################################################
18
19 Banner() {
20   echo "######################################################################"
21   echo $*
22   echo "######################################################################"
23 }
24
25
26 Usage() {
27   egrep "^#@" $0 | cut --bytes=3-
28 }
29
30 SanityCheck() {
31   Banner "Sanity Checks"
32   if [[ $(basename $(pwd)) != "native_client" ]] ; then
33     echo "ERROR: run this script from the native_client/ dir"
34     exit -1
35   fi
36 }
37
38 ######################################################################
39 # Config
40 ######################################################################
41
42 readonly GS_UTIL=${GS_UTIL:-buildbot/gsutil.sh}
43
44 readonly DIR_ARCHIVE=nativeclient-archive2
45 readonly DIR_TRYBOT=nativeclient-trybot
46
47 readonly URL_PREFIX_RAW=https://storage.googleapis.com
48 readonly URL_PREFIX_ARCHIVE="${URL_PREFIX_RAW}/${DIR_ARCHIVE}"
49 readonly URL_PREFIX_TRYBOT="${URL_PREFIX_RAW}/${DIR_TRYBOT}"
50
51 readonly GS_PREFIX_ARCHIVE="gs://${DIR_ARCHIVE}"
52 readonly GS_PREFIX_TRYBOT="gs://${DIR_TRYBOT}"
53
54 readonly URL_PREFIX_UI="http://gsdview.appspot.com"
55 ######################################################################
56 # UTIL
57 ######################################################################
58 GetFileSizeK() {
59   # Note: this is tricky to make work on win/linux/mac
60   du -k $1 | egrep -o "^[0-9]+"
61 }
62
63
64 Upload() {
65   local size_kb=$(GetFileSizeK $1)
66   echo "uploading: $2 (${size_kb}kB)"
67   local path=${2:5}
68   echo "@@@STEP_LINK@download (${size_kb}kB)@${URL_PREFIX_UI}/${path}@@@"
69   ${GS_UTIL} cp -a public-read $1 $2
70 }
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 }
80
81 UploadArchive() {
82   local path=$1
83   local tarball=$2
84
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}
111 }
112
113 ComputeSha1() {
114   # on mac we do not have sha1sum so we fall back to openssl
115   if which sha1sum >/dev/null ; then
116     echo "$(SHA1=$(sha1sum -b $1) ; echo ${SHA1:0:40})"
117   elif which openssl >/dev/null ; then
118     echo "$(SHA1=$(openssl sha1 $1) ; echo ${SHA1/* /})"
119
120   else
121     echo "ERROR: do not know how to compute SHA1"
122     exit 1
123   fi
124 }
125
126 ######################################################################
127 # ARM TRUSTED
128 ######################################################################
129
130 UploadArmTrustedToolchain() {
131   local rev=$1
132   local tarball=$2
133
134   UploadArchive toolchain/${rev}/naclsdk_linux_arm-trusted.tgz ${tarball}
135 }
136
137 DownloadArmTrustedToolchain() {
138   local rev=$1
139   local tarball=$2
140   DownloadArchive toolchain/${rev}/naclsdk_linux_arm-trusted.tgz ${tarball}
141 }
142
143 ShowRecentArmTrustedToolchains() {
144    local url=${GS_PREFIX_ARCHIVE}/toolchain/*/naclsdk_linux_arm-trusted.tgz
145    local recent=$(${GS_UTIL} ls ${url} | tail -5)
146    for url in ${recent} ; do
147      if ${GS_UTIL} ls -L "${url}" ; then
148        echo "====="
149      fi
150    done
151 }
152
153 ######################################################################
154 # ARM UN-TRUSTED
155 ######################################################################
156
157 #@ label should be in :
158 #@
159 #@ pnacl_linux_x86
160 #@ pnacl_mac_x86
161 #@ pnacl_win_x86
162
163 UploadToolchainTarball() {
164   local rev=$1
165   local label=$2
166   local tarball=$3
167
168   ComputeSha1 ${tarball} > ${tarball}.sha1hash
169   UploadArchive toolchain/${rev}/naclsdk_${label}.tgz.sha1hash ${tarball}.sha1hash
170
171   # NOTE: only the last link is shown on the waterfall so this should come last
172   UploadArchive toolchain/${rev}/naclsdk_${label}.tgz ${tarball}
173 }
174
175 DownloadPnaclToolchains() {
176   local rev=$1
177   local label=$2
178   local tarball=$3
179
180   DownloadArchive toolchain/${rev}/naclsdk_${label}.tgz ${tarball}
181 }
182
183 ShowRecentPnaclToolchains() {
184   local label=$1
185   local url="${GS_PREFIX_ARCHIVE}/toolchain/*/naclsdk_${label}.tgz"
186
187   local recent=$(${GS_UTIL} ls ${url} | tail -5)
188   for url in ${recent} ; do
189     if ${GS_UTIL} ls -L "${url}" ; then
190       echo "====="
191     fi
192   done
193 }
194
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 ######################################################################
218 # Pexes for bitcode stability testing
219 ######################################################################
220
221 UploadArchivedPexes() {
222   local rev=$1
223   local label="archived_pexes_$2.tar.bz2"
224   local tarball=$3
225
226   # TODO(robertm,bradn): find another place to store this and
227   #                      negotiate long term storage guarantees
228   # Note, we store the pexes with the toolchain rev for now
229   UploadArchive toolchain/${rev}/${label} ${tarball}
230 }
231
232 DownloadArchivedPexes() {
233   local rev=$1
234   local label="archived_pexes_$2.tar.bz2"
235   local tarball=$3
236   DownloadArchive toolchain/${rev}/${label} ${tarball}
237 }
238
239 UploadArchivedPexesSpec2k() {
240     UploadArchivedPexes $1 "spec2k" $2
241 }
242
243 DownloadArchivedPexesSpec2k() {
244     DownloadArchivedPexes $1 "spec2k" $2
245 }
246 ######################################################################
247 # ARM BETWEEN BOTS
248 ######################################################################
249
250 UploadArmBinariesForHWBots() {
251   local name=$1
252   local tarball=$2
253   UploadArchive between_builders/${name}/$(basename ${tarball}) ${tarball}
254 }
255
256
257 DownloadArmBinariesForHWBots() {
258   local name=$1
259   local tarball=$2
260   DownloadArchive between_builders/${name}/$(basename ${tarball}) ${tarball}
261 }
262
263 ######################################################################
264 # ARM BETWEEN BOTS TRY
265 ######################################################################
266
267 UploadArmBinariesForHWBotsTry() {
268   local name=$1
269   local tarball=$2
270   UploadTrybot between_builders/${name}/$(basename ${tarball}) ${tarball}
271 }
272
273
274 DownloadArmBinariesForHWBotsTry() {
275   local name=$1
276   local tarball=$2
277   DownloadTrybot between_builders/${name}/$(basename ${tarball}) ${tarball}
278 }
279
280 ######################################################################
281 # DISPATCH
282 ######################################################################
283 SanityCheck
284
285 if [[ $# -eq 0 ]] ; then
286   echo "you must specify a mode on the commandline:"
287   echo
288   Usage
289   exit -1
290 elif [[ "$(type -t $1)" != "function" ]]; then
291   echo "ERROR: unknown function '$1'." >&2
292   echo "For help, try:"
293   echo "    $0 help"
294   exit 1
295 else
296   "$@"
297 fi