# Copyright (c) 2011 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.

# Shell function library for functions specific to creating test
# images from dev images.  This file also contains additional
# functions and initialization shared between build_image and
# mod_image_for_test.sh.
#

# Emerges chromeos-test onto the image.
emerge_chromeos_test() {
  # Determine the root dir for test packages.
  local root_dev_dir="${root_fs_dir}/usr/local"

  emerge_to_image --root="${root_fs_dir}" chromeos-test-root
  emerge_to_image --root="${root_dev_dir}" virtual/target-os-test
}

# Converts a dev image into a test or factory test image
# Takes as an arg the name of the image to be created.
mod_image_for_test () {
  local image_name="$1"

  trap "check_full_disk ; unmount_image ; delete_prompt" EXIT
  mount_image "${BUILD_DIR}/${image_name}" "${root_fs_dir}" "${stateful_fs_dir}"

  emerge_chromeos_test

  local mod_test_script="${SCRIPTS_DIR}/mod_for_test_scripts/test_setup.sh"
  # Run test setup script to modify the image
  sudo -E GCLIENT_ROOT="${GCLIENT_ROOT}" ROOT_FS_DIR="${root_fs_dir}" \
    STATEFUL_DIR="${stateful_fs_dir}" ARCH="${ARCH}" \
    BOARD_ROOT="${BOARD_ROOT}" BUILD_DIR="${BUILD_DIR}" \
    "${mod_test_script}"

  # Run depmod to recalculate the kernel module dependencies.
  run_depmod "${BOARD_ROOT}" "${root_fs_dir}"

  # Re-run ldconfig to fix /etc/ld.so.cache.
  run_ldconfig "${root_fs_dir}"

  restore_fs_contexts "${BOARD_ROOT}" "${root_fs_dir}" "${stateful_fs_dir}"

  # Move DLC images to the /var/cache directory. The dlc-images directory will
  # hold DLC(s) that dlcservice will leverage for testing/provisioning.
  build_dlc --sysroot="${BOARD_ROOT}" \
    --install-root-dir="${root_fs_dir}/var/cache/dlc-images" \
    --preload --rootfs="${root_fs_dir}" --board="${BOARD}"

  unmount_image
  trap - EXIT

  if [[ ${skip_kernelblock_install} -ne 1 ]]; then
    # Now make it bootable with the flags from build_image.
    if should_build_image ${image_name}; then
      "${SCRIPTS_DIR}/bin/cros_make_image_bootable" "${BUILD_DIR}" \
         ${image_name} --force_developer_mode
    fi
  fi

  if type board_test_setup &>/dev/null; then
    board_test_setup "${BUILD_DIR}/${image_name}"
  fi
}
