summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/platform_tools/barelinux/bin/arm64_download
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/platform_tools/barelinux/bin/arm64_download')
-rwxr-xr-xchromium/third_party/skia/platform_tools/barelinux/bin/arm64_download150
1 files changed, 150 insertions, 0 deletions
diff --git a/chromium/third_party/skia/platform_tools/barelinux/bin/arm64_download b/chromium/third_party/skia/platform_tools/barelinux/bin/arm64_download
new file mode 100755
index 00000000000..257d464be17
--- /dev/null
+++ b/chromium/third_party/skia/platform_tools/barelinux/bin/arm64_download
@@ -0,0 +1,150 @@
+#!/bin/sh
+
+# Copyright 2014 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+usage() {
+ cat >&2 <<EOF
+arm64_download - this script downloads the Linaro's ARMv8 Aarch64
+toolchain and minimal embedded Linux system as well as ARM's
+foundation model. The required files are mirrored on Google Cloud.
+
+If the files are already located in the working directory, the
+download can be skipped if the checksums match.
+
+The script then starts a emulated Arm64 Linux system in the
+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.
+
+Usage:
+ $0 WORKING_DIRECTORY
+ ssh-add WORKING_DIRECTORY/key
+ ...wait...
+ ssh -p 8022 user@localhost
+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() (
+ 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
+ fi
+ try gsutil cp "gs://${location}/*" . || return
+)
+
+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
+ )
+ 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
+}
+
+install_runtime() {
+ local working_dir="$1"
+
+ local firmware='img-foundation.axf'
+ local rootfs='vexpress64-openembedded_lamp-armv8-gcc-4.8_20131215-557'
+ local compressed_rootfs="${rootfs}.img.CLEAN_AND_CONFIGURED.xz"
+ 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
+
+ try xz --decompress --stdout \
+ < "${working_dir}/${compressed_rootfs}" \
+ > "${working_dir}/rootfs" || return
+ try test -f "${working_dir}/rootfs" || return
+
+ (
+ 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.
+ )
+
+ try cp "${working_dir}/${keyfile}" "${working_dir}/key" || return
+ chmod 'go=' "${working_dir}/key"
+}
+
+start_arm64_image() {
+ local working_dir="$1"
+ local foundation_dir="${working_dir}/Foundation_v8pkg"
+ local foundation="${foundation_dir}/models/Linux64_GCC-4.1/Foundation_v8"
+ 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
+
+ for PID in $(ps -o 'pid=' -C 'Foundation_v8') ; do
+ kill $PID
+ done
+
+ DISPLAY='' nohup \
+ "$foundation" \
+ --image="${firmware}" \
+ --cores=4 \
+ --block-device="${rootfs}" \
+ --network="nat" \
+ --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
+
+ try install_compiler "$working_directory" || return
+
+ try install_runtime "$working_directory" || return
+
+ try start_arm64_image "$working_directory" || return
+}
+
+for command in gsutil xz tar md5sum gunzip; do
+ try command -v "$command" > /dev/null || usage || exit
+done
+
+if [ -z "$1" ] ; then
+ usage || exit
+fi
+try arm64_download "$1"