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

# Load common constants.  This should be the first executable line.
# The path to common.sh should be relative to your script's location.
. "$(dirname "$0")/common.sh"

# 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
