| #!/bin/bash |
| |
| # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # --- BEGIN COMMON.SH BOILERPLATE --- |
| # Load common CrOS utilities. Inside the chroot this file is installed in |
| # /usr/lib/crosutils. Outside the chroot we find it relative to the script's |
| # location. |
| find_common_sh() { |
| local common_paths=(/usr/lib/crosutils $(dirname "$(readlink -f "$0")")) |
| local path |
| |
| SCRIPT_ROOT= |
| for path in "${common_paths[@]}"; do |
| if [ -r "${path}/common.sh" ]; then |
| SCRIPT_ROOT=${path} |
| break |
| fi |
| done |
| } |
| |
| find_common_sh |
| . "${SCRIPT_ROOT}/common.sh" || (echo "Unable to load common.sh" && exit 1) |
| # --- END COMMON.SH BOILERPLATE --- |
| |
| # Flags |
| DEFINE_string target "x86" \ |
| "The target architecture to test. One of { x86, arm }." |
| DEFINE_string root "" \ |
| "The root file system to check." |
| |
| # Parse command line |
| FLAGS "$@" || exit 1 |
| eval set -- "${FLAGS_ARGV}" |
| |
| # Die on any errors |
| set -e |
| |
| # Check all parts of a pipe |
| set -o pipefail |
| |
| ROOT="$FLAGS_root" |
| if [[ -z "$ROOT" ]]; then |
| echo "Error: --root is required." |
| exit 1 |
| fi |
| if [[ ! -d "$ROOT" ]]; then |
| echo "Error: Root FS does not exist ($ROOT)" |
| exit 1 |
| fi |
| |
| EXITCODE=0 |
| |
| BINARIES="$ROOT/usr/bin/Xorg |
| $ROOT/usr/bin/chromeos-wm |
| $ROOT/boot/vmlinuz |
| $ROOT/sbin/session_manager |
| $ROOT/bin/sed" |
| |
| if [[ $FLAGS_target != arm ]]; then |
| # chrome isn't present on arm |
| BINARIES="$BINARIES |
| $ROOT/opt/google/chrome/chrome" |
| fi |
| |
| for i in $BINARIES; do |
| if ! [[ -f $i ]]; then |
| echo test_image: Cannot find $i |
| EXITCODE=1 |
| fi |
| done |
| |
| LIBS="`sudo find $ROOT -type f -name '*.so*'`" |
| |
| # Check that all .so files, plus the binaries, have the appropriate dependencies |
| if ! "${SCRIPTS_DIR}/check_deps" "$ROOT" $BINARIES $LIBS; then |
| echo test_image: Failed dependency check |
| EXITCODE=1 |
| fi |
| |
| exit $EXITCODE |