Upstream version 10.39.225.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 GS_PREFIX_ARCHIVE="gs://${DIR_ARCHIVE}"
48 readonly GS_PREFIX_TRYBOT="gs://${DIR_TRYBOT}"
49
50 readonly URL_PREFIX_UI="http://gsdview.appspot.com"
51 ######################################################################
52 # UTIL
53 ######################################################################
54 GetFileSizeK() {
55   # Note: this is tricky to make work on win/linux/mac
56   du -k $1 | egrep -o "^[0-9]+"
57 }
58
59
60 Upload() {
61   local size_kb=$(GetFileSizeK $1)
62   echo "uploading: $2 (${size_kb}kB)"
63   local path=${2:5}
64   echo "@@@STEP_LINK@download (${size_kb}kB)@${URL_PREFIX_UI}/${path}@@@"
65   ${GS_UTIL} cp -a public-read $1 $2
66 }
67
68 CheckPath() {
69   if [[ $1 != toolchain/* &&
70        $1 != between_builders/* &&
71        $1 != canned_nexe/* ]] ; then
72       echo "ERROR: Bad component name: $1"
73       exit -1
74   fi
75 }
76
77 UploadArchive() {
78   local path=$1
79   local tarball=$2
80
81   CheckPath ${path}
82   Upload ${tarball} ${GS_PREFIX_ARCHIVE}/${path}
83 }
84
85 DownloadArchive() {
86   local path=$1
87   local tarball=$2
88
89   echo "@@@STEP_LINK@download@${URL_PREFIX_UI}/${path}@@@"
90   ${GS_UTIL} cp ${GS_PREFIX_ARCHIVE}/${path} ${tarball}
91 }
92
93 UploadTrybot() {
94   local path=$1
95   local tarball=$2
96
97   CheckPath ${path}
98   Upload ${tarball} ${GS_PREFIX_TRYBOT}/${path}
99 }
100
101 DownloadTrybot() {
102   local path=$1
103   local tarball=$2
104
105   echo "@@@STEP_LINK@download@${URL_PREFIX_UI}/${path}@@@"
106   ${GS_UTIL} cp ${GS_PREFIX_TRYBOT}/${path} ${tarball}
107 }
108
109 ComputeSha1() {
110   # on mac we do not have sha1sum so we fall back to openssl
111   if which sha1sum >/dev/null ; then
112     echo "$(SHA1=$(sha1sum -b $1) ; echo ${SHA1:0:40})"
113   elif which openssl >/dev/null ; then
114     echo "$(SHA1=$(openssl sha1 $1) ; echo ${SHA1/* /})"
115
116   else
117     echo "ERROR: do not know how to compute SHA1"
118     exit 1
119   fi
120 }
121
122 ######################################################################
123 # ARM TRUSTED
124 ######################################################################
125
126 UploadArmTrustedToolchain() {
127   local rev=$1
128   local tarball=$2
129
130   UploadArchive toolchain/${rev}/naclsdk_linux_arm-trusted.tgz ${tarball}
131 }
132
133 DownloadArmTrustedToolchain() {
134   local rev=$1
135   local tarball=$2
136   DownloadArchive toolchain/${rev}/naclsdk_linux_arm-trusted.tgz ${tarball}
137 }
138
139 ShowRecentArmTrustedToolchains() {
140    local url=${GS_PREFIX_ARCHIVE}/toolchain/*/naclsdk_linux_arm-trusted.tgz
141    local recent=$(${GS_UTIL} ls ${url} | tail -5)
142    for url in ${recent} ; do
143      if ${GS_UTIL} ls -L "${url}" ; then
144        echo "====="
145      fi
146    done
147 }
148
149 ######################################################################
150 # ARM UN-TRUSTED
151 ######################################################################
152
153 #@ label should be in :
154 #@
155 #@ pnacl_linux_x86
156 #@ pnacl_mac_x86
157 #@ pnacl_win_x86
158
159 UploadToolchainTarball() {
160   local rev=$1
161   local label=$2
162   local tarball=$3
163
164   ComputeSha1 ${tarball} > ${tarball}.sha1hash
165   UploadArchive toolchain/${rev}/naclsdk_${label}.tgz.sha1hash ${tarball}.sha1hash
166
167   # NOTE: only the last link is shown on the waterfall so this should come last
168   UploadArchive toolchain/${rev}/naclsdk_${label}.tgz ${tarball}
169 }
170
171 DownloadPnaclToolchains() {
172   local rev=$1
173   local label=$2
174   local tarball=$3
175
176   DownloadArchive toolchain/${rev}/naclsdk_${label}.tgz ${tarball}
177 }
178
179 ShowRecentPnaclToolchains() {
180   local label=$1
181   local url="${GS_PREFIX_ARCHIVE}/toolchain/*/naclsdk_${label}.tgz"
182
183   local recent=$(${GS_UTIL} ls ${url} | tail -5)
184   for url in ${recent} ; do
185     if ${GS_UTIL} ls -L "${url}" ; then
186       echo "====="
187     fi
188   done
189 }
190
191 ######################################################################
192 # Nexes for regression/speed tests
193 ######################################################################
194
195 UploadArchivedNexes() {
196   local rev=$1
197   local label="archived_nexes_$2.tar.bz2"
198   local tarball=$3
199
200   # TODO(robertm,bradn): find another place to store this and
201   #                      negotiate long term storage guarantees
202   UploadArchive canned_nexe/${rev}/${label} ${tarball}
203 }
204
205 DownloadArchivedNexes() {
206   local rev=$1
207   local label="archived_nexes_$2.tar.bz2"
208   local tarball=$3
209
210   DownloadArchive canned_nexe/${rev}/${label} ${tarball}
211 }
212
213 ######################################################################
214 # Pexes for bitcode stability testing
215 ######################################################################
216
217 UploadArchivedPexes() {
218   local rev=$1
219   local label="archived_pexes_$2.tar.bz2"
220   local tarball=$3
221
222   # TODO(robertm,bradn): find another place to store this and
223   #                      negotiate long term storage guarantees
224   # Note, we store the pexes with the toolchain rev for now
225   UploadArchive toolchain/${rev}/${label} ${tarball}
226 }
227
228 DownloadArchivedPexes() {
229   local rev=$1
230   local label="archived_pexes_$2.tar.bz2"
231   local tarball=$3
232   DownloadArchive toolchain/${rev}/${label} ${tarball}
233 }
234
235 UploadArchivedPexesSpec2k() {
236     UploadArchivedPexes $1 "spec2k" $2
237 }
238
239 DownloadArchivedPexesSpec2k() {
240     DownloadArchivedPexes $1 "spec2k" $2
241 }
242 ######################################################################
243 # ARM BETWEEN BOTS
244 ######################################################################
245
246 UploadArmBinariesForHWBots() {
247   local name=$1
248   local tarball=$2
249   UploadArchive between_builders/${name}/$(basename ${tarball}) ${tarball}
250 }
251
252
253 DownloadArmBinariesForHWBots() {
254   local name=$1
255   local tarball=$2
256   DownloadArchive between_builders/${name}/$(basename ${tarball}) ${tarball}
257 }
258
259 ######################################################################
260 # ARM BETWEEN BOTS TRY
261 ######################################################################
262
263 UploadArmBinariesForHWBotsTry() {
264   local name=$1
265   local tarball=$2
266   UploadTrybot between_builders/${name}/$(basename ${tarball}) ${tarball}
267 }
268
269
270 DownloadArmBinariesForHWBotsTry() {
271   local name=$1
272   local tarball=$2
273   DownloadTrybot between_builders/${name}/$(basename ${tarball}) ${tarball}
274 }
275
276 ######################################################################
277 # DISPATCH
278 ######################################################################
279 SanityCheck
280
281 if [[ $# -eq 0 ]] ; then
282   echo "you must specify a mode on the commandline:"
283   echo
284   Usage
285   exit -1
286 elif [[ "$(type -t $1)" != "function" ]]; then
287   echo "ERROR: unknown function '$1'." >&2
288   echo "For help, try:"
289   echo "    $0 help"
290   exit 1
291 else
292   "$@"
293 fi