Chromium Code Reviews| Index: platform_tools/barelinux/bin/arm64_download |
| diff --git a/platform_tools/barelinux/bin/arm64_download b/platform_tools/barelinux/bin/arm64_download |
| index b43873c943e992ec23df1f4cd7a9246ef70f925d..c14b167829593a259effebed76c8357c4f88a952 100755 |
| --- a/platform_tools/barelinux/bin/arm64_download |
| +++ b/platform_tools/barelinux/bin/arm64_download |
| @@ -6,6 +6,8 @@ |
| # found in the LICENSE file. |
| +set -e |
|
epoger
2014/04/15 19:33:06
Note that "set -e" can have its pitfalls. See htt
|
| + |
| usage() { |
| cat >&2 <<EOF |
| arm64_download - this script downloads the Linaro's ARMv8 Aarch64 |
| @@ -20,7 +22,7 @@ background. After the boot is complete, you can SSH into the system |
| at port 8022 via user@localhost. The SSH key will be downloaded into |
| the working directery as well. |
| -Requires gsutil, xz, tar, and gunzip. |
| +Requires gsutil, xz, tar, md5sum, and gunzip. |
| Usage: |
| $0 WORKING_DIRECTORY |
| @@ -31,39 +33,30 @@ EOF |
| return 1 |
| } |
| -try() { |
| - # print an error on nonzero return code |
| - "$@" |
| - local ret=$? |
| - if [ $ret != 0 ] ; then |
| - echo "'$@' failed and returned ${ret}." >&2 |
| - return $ret |
| - fi |
| -} |
| - |
| download_necessary_software_to_dir() ( |
| + echo 'Downloading necessary software.' |
| cd "$1" |
| local location="chromium-skia-gm/arm64env" |
| - try gsutil cp "gs://${location}/md5sum.txt" . || return |
| - if md5sum -c --quiet "md5sum.txt"; then |
| - return 0 |
| + gsutil cp "gs://${location}/md5sum.txt" . 2> /dev/null |
| + if ! md5sum -c --quiet "md5sum.txt"; then |
| + gsutil cp "gs://${location}/*" . |
| fi |
| - try gsutil cp "gs://${location}/*" . || return |
| + echo 'Done.' |
| ) |
| install_compiler() { |
| local working_dir="$1" |
| local toolchain="gcc-linaro-aarch64-linux-gnu-4.8-2013.12_linux" |
| ( |
| - try cd "$working_dir" || return |
| - try test -f "${toolchain}.tar.xz" || return |
| - try xz --decompress --stdout < "${toolchain}.tar.xz" | \ |
| - try tar xf - || return |
| + cd "$working_dir" |
| + test -f "${toolchain}.tar.xz" |
| + xz --decompress --stdout < "${toolchain}.tar.xz" | \ |
| + tar xf - |
| ) |
| local dir="${working_dir}/${toolchain}" |
| - try test -d "$dir" || return |
| - try test -x "${dir}/bin/aarch64-linux-gnu-gcc" || return |
| - try test -x "${dir}/bin/aarch64-linux-gnu-g++" || return |
| + test -d "$dir" |
| + test -x "${dir}/bin/aarch64-linux-gnu-gcc" |
| + test -x "${dir}/bin/aarch64-linux-gnu-g++" |
| } |
| install_runtime() { |
| @@ -75,22 +68,24 @@ install_runtime() { |
| local compressed_foundation_model='FM000-KT-00035-r0p8-52rel06.tgz' |
| local keyfile='CLEAN_AND_CONFIGURED_key' |
| - try cp "${working_dir}/$firmware" "${working_dir}/firmware" || return |
| + echo 'Installing runtime files.' |
| + cp "${working_dir}/$firmware" "${working_dir}/firmware" |
| - try xz --decompress --stdout \ |
| + xz --decompress --stdout \ |
| < "${working_dir}/${compressed_rootfs}" \ |
| - > "${working_dir}/rootfs" || return |
| - try test -f "${working_dir}/rootfs" || return |
| + > "${working_dir}/rootfs" |
| + test -f "${working_dir}/rootfs" |
| ( |
| - try cd "$working_dir" || return |
| - try test -f "$compressed_foundation_model" || return |
| - try gunzip -c "$compressed_foundation_model" | try tar xf - || return |
| - try test -d "Foundation_v8pkg" || return # Assert. |
| + cd "$working_dir" |
| + test -f "$compressed_foundation_model" |
| + gunzip -c "$compressed_foundation_model" | tar xf - |
| + test -d "Foundation_v8pkg" # Assert. |
| ) |
| - try cp "${working_dir}/${keyfile}" "${working_dir}/key" || return |
| + cp "${working_dir}/${keyfile}" "${working_dir}/key" |
| chmod 'go=' "${working_dir}/key" |
| + echo 'Done.' |
| } |
| start_arm64_image() { |
| @@ -100,10 +95,10 @@ start_arm64_image() { |
| local firmware="${working_dir}/firmware" |
| local rootfs="${working_dir}/rootfs" |
| - try test -d "$foundation_dir" || return |
| - try test -x "$foundation" || return |
| - try test -f "$firmware" || return |
| - try test -f "$rootfs" || return |
| + test -d "$foundation_dir" |
| + test -x "$foundation" |
| + test -f "$firmware" |
| + test -f "$rootfs" |
| for PID in $(ps -o 'pid=' -C 'Foundation_v8') ; do |
| kill $PID |
| @@ -118,31 +113,34 @@ start_arm64_image() { |
| --network-nat-subnet="192.168.31.0/24" \ |
| --network-nat-ports="8022=22" \ |
| > /dev/null 2>&1 & |
| + echo 'Waiting for foundation model to boot...' |
| + while ! ssh -i "${working_dir}/key" \ |
| + -o NoHostAuthenticationForLocalhost=yes \ |
| + -p 8022 user@localhost true 2> /dev/null; do |
| + sleep 5 ; |
| + done |
| echo 'Listening to SSH on port 8022.' |
| } |
| arm64_download() { |
| local working_directory="$1" |
| - try mkdir -p "$working_directory" || return |
| - |
| - try download_necessary_software_to_dir "$working_directory" || return |
| + mkdir -p "$working_directory" |
| - try install_compiler "$working_directory" || return |
| + download_necessary_software_to_dir "$working_directory" |
| - try install_runtime "$working_directory" || return |
| + install_compiler "$working_directory" |
| - try start_arm64_image "$working_directory" || return |
| + install_runtime "$working_directory" |
| - try start_arm64_image \ |
| - "$working_directory" \ |
| - || return |
| + start_arm64_image "$working_directory" |
| } |
| for command in gsutil xz tar md5sum gunzip; do |
| - try command -v "$command" > /dev/null || usage || exit |
| + command -v "$command" > /dev/null || usage |
| done |
| if [ -z "$1" ] ; then |
| - usage || exit |
| + usage |
| fi |
| -try arm64_download "$1" |
| + |
| +arm64_download "$1" |