#!/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
