#!/bin/sh
# 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.
#
# Force cleans loopback devices from within your chroot environment.  This
# script is to help mitigate losing loopback devices on build_images
# failures.  This script only affects mountpoints and loopback devices
# that were created within this chroot.

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

# Script must be run inside the chroot.
assert_inside_chroot

DEFINE_string output_root "$DEFAULT_BUILD_ROOT/images" \
  "Directory in which to place image result directories (named by version)"
DEFINE_string board "$DEFAULT_BOARD" \
  "The board to build an image for."

OUTPUT_DIR="${FLAGS_output_root}/${FLAGS_board}"

echo "This will unmount any directory under $OUTPUT_DIR:"
read -p "Are you sure (y/N)? " SURE
SURE="${SURE:0:1}" # Get just the first character
if [ "${SURE}" != "y" ]; then
  echo "Ok, better safe than sorry."
  exit 1
fi

sudo umount "$OUTPUT_DIR"/*/* 2> /dev/null
sudo losetup -d /dev/loop* 2> /dev/null
