image_to_usb.sh: This script is deprecated. Replace it with a stub.

BUG=chromium:406132
TEST=Verified with code search that there are no internal callers. Ran
manually and verified that the error message was printed successfully.

Change-Id: I1205af8b009ba9aaa0b5e51b3c55dd3b7293512f
Reviewed-on: https://chromium-review.googlesource.com/213005
Reviewed-by: Gabe Black <gabeblack@chromium.org>
Tested-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
diff --git a/bash_completion b/bash_completion
index 99222c5..28475cd 100644
--- a/bash_completion
+++ b/bash_completion
@@ -267,7 +267,6 @@
   build_autotest.sh \
   build_image \
   build_packages \
-  image_to_usb.sh \
   mod_image_for_test.sh
 complete -o bashdefault -o default -F _board_overlay setup_board
 complete -o bashdefault -o default -o nospace -F _autotest_complete autotest
diff --git a/image_to_usb.sh b/image_to_usb.sh
index d2c5020..a859463 100755
--- a/image_to_usb.sh
+++ b/image_to_usb.sh
@@ -4,394 +4,12 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-# Script to convert the output of build_image.sh to a usb or SD image.
-
 SCRIPT_ROOT=$(dirname $(readlink -f "$0"))
 . "${SCRIPT_ROOT}/common.sh" || exit 1
 
-# Load functions and constants for chromeos-install
-[ -f /usr/share/misc/chromeos-common.sh ] && \
-  INSTALLER_ROOT=/usr/share/misc || \
-  INSTALLER_ROOT=$(dirname "$(readlink -f "$0")")
+error "image_to_usb.sh is deprecated! Use 'cros flash' instead."
+error "See 'cros flash -h' for the usage."
+error "More information is available at:"
+error "http://www.chromium.org/chromium-os/build/cros-flash"
 
-. "${INSTALLER_ROOT}/chromeos-common.sh" || exit 1
-
-# Flags
-DEFINE_string board "${DEFAULT_BOARD}" \
-  "board for which the image was built"
-DEFINE_string from "" \
-  "directory containing the image, or image full pathname (empty: latest found)"
-DEFINE_string to "" \
-  "write to a specific disk or image file (empty: auto-detect)"
-DEFINE_string to_product "" \
-  "find target device with product name matching a string (accepts wildcards)"
-DEFINE_boolean yes ${FLAGS_FALSE} \
-  "don't ask questions, just write to the target device specified by --to" \
-  y
-DEFINE_boolean force_copy ${FLAGS_FALSE} \
-  "always rebuild test image"
-DEFINE_boolean force_non_usb ${FLAGS_FALSE} \
-  "force writing even if target device doesn't appear to be a USB/MMC disk"
-DEFINE_boolean factory_install ${FLAGS_FALSE} \
-  "Install the factory install shim"
-DEFINE_boolean factory ${FLAGS_FALSE} \
-  "Install a factory test image"
-DEFINE_boolean copy_kernel ${FLAGS_FALSE} \
-  "copy the kernel to the fourth partition"
-DEFINE_boolean test_image "${FLAGS_FALSE}" \
-  "Install a test image"
-DEFINE_string image_name "" \
-  "image base name (empty: auto-detect)" \
-  i
-DEFINE_boolean install ${FLAGS_FALSE} \
-  "install to the USB/MMC device"
-DEFINE_string arch "" \
-  "architecture for which the image was built (derived from board if empty)"
-
-warn "You are using a deprecated script!"
-warn "Please use 'cros flash' in the future. See 'cros flash -h' for the usage."
-warn "More information is available at:"
-warn "http://www.chromium.org/chromium-os/build/cros-flash"
-
-# Parse command line
-FLAGS "$@" || exit 1
-eval set -- "${FLAGS_ARGV}"
-
-if [ $# -gt 0 ]; then
-  die_notrace "Arguments aren't currently supported in image_to_usb."
-fi
-
-get_disk_info() {
-  # look for a "given" file somewhere in the path upwards from the device
-  local dev=$1
-  local info=$2
-  local dev_path="/sys/block/${dev}/device"
-  while [ -d "${dev_path}" ] && [ "${dev_path}" != "/sys" ]; do
-    if [ -f "${dev_path}/${info}" ]; then
-      cat "${dev_path}/${info}"
-      return
-    fi
-    dev_path=$(readlink -f "${dev_path}/..")
-  done
-  echo '[Unknown]'
-}
-
-# Generates a descriptive string of a removable device. Includes the
-# manufacturer (if non-empty), product and a human-readable size.
-get_disk_string() {
-  local disk="${1##*/}"
-  local manufacturer_string=$(get_disk_info $disk manufacturer)
-  local product_string=$(get_disk_info $disk product)
-  local disk_size=$(sudo fdisk -l /dev/$disk 2>/dev/null | grep Disk |
-                    head -n 1 | cut -d' ' -f3-4 | sed 's/,//g')
-  # I've seen one case where manufacturer only contains spaces, hence the test.
-  if [ -n "${manufacturer_string// }" ]; then
-    echo -n "${manufacturer_string} "
-  fi
-  echo "${product_string}, ${disk_size}"
-}
-
-# Prompt for user confirmation. Default is no, which will gracefully terminate
-# the script.
-are_you_sure() {
-  local sure
-  read -p "Are you sure (y/N)? " sure
-  if [ "${sure}" != "y" ]; then
-    echo "Ok, better safe than sorry."
-    exit
-  fi
-}
-
-
-# Prohibit mutually exclusive factory/install flags.
-if [ ${FLAGS_factory} -eq ${FLAGS_TRUE} -a \
-     ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] ; then
-  die_notrace "Factory test image is incompatible with factory install shim"
-fi
-
-# Allow --from /foo/file.bin
-if [ -f "${FLAGS_from}" ]; then
-  pathname=$(dirname "${FLAGS_from}")
-  filename=$(basename "${FLAGS_from}")
-  FLAGS_image_name="${filename}"
-  FLAGS_from="${pathname}"
-fi
-
-# Require autotest for manucaturing image.
-if [ ${FLAGS_factory} -eq ${FLAGS_TRUE} ] ; then
-  echo "Factory image requires --test_image, setting."
-  FLAGS_test_image=${FLAGS_TRUE}
-fi
-
-# Require test for for factory install shim.
-if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] ; then
-  echo "Factory install shim requires --test_image, setting."
-  FLAGS_test_image=${FLAGS_TRUE}
-fi
-
-
-# Die on any errors.
-switch_to_strict_mode
-
-# No board, no default and no image set then we can't find the image
-if [ -z ${FLAGS_from} ] && [ -z ${FLAGS_board} ] ; then
-  setup_board_warning
-  exit 1
-fi
-
-# No board set during install
-if [ -z "${FLAGS_board}" ] && [ ${FLAGS_install} -eq ${FLAGS_TRUE} ]; then
-  setup_board_warning
-  exit 1
-fi
-
-# Install can only be done from inside the chroot.
-if [ ${FLAGS_install} -eq ${FLAGS_TRUE} ] && [ ${INSIDE_CHROOT} -ne 1 ]; then
-  die_notrace "--install can only be used inside the chroot"
-fi
-
-# We have a board name but no image set.  Use image at default location
-if [ -z "${FLAGS_from}" ]; then
-  FLAGS_from="$($SCRIPT_ROOT/get_latest_image.sh --board=${FLAGS_board})"
-fi
-
-if [ ! -d "${FLAGS_from}" ] ; then
-  die_notrace "Cannot find image directory ${FLAGS_from}"
-fi
-
-# TODO(garnold) This code reinstates the previous default value for --to, which
-# some users relied upon to trigger target device auto-detection. It should be
-# removed once we're sure that all users have adapted to simply not specifying
-# --to. The instructions emitted by build_image were changed accordingly.
-if [ "${FLAGS_to}" == "/dev/sdX" ]; then
-  warn "the use of --to=/dev/sdX is deprecated, just omit --to instead"
-  FLAGS_to=""
-fi
-
-# No target provided, attempt autodetection.
-if [ -z "${FLAGS_to}" ]; then
-  if [ ${FLAGS_yes} -eq ${FLAGS_TRUE} ]; then
-    die_notrace "For your own safety, --yes can only be used with --to"
-  fi
-
-  if [ -z "${FLAGS_to_product}" ]; then
-    echo "No target device specified, autodetecting..."
-  else
-    echo "Looking for target devices matching '${FLAGS_to_product}'..."
-  fi
-
-  # Obtain list of USB and MMC device names.
-  disk_list=( $(list_usb_disks) $(list_mmc_disks) )
-
-  # Build list of descriptive strings for detected devices.
-  unset disk_string_list
-  for disk in "${disk_list[@]}"; do
-    # If --to_product was used, match against provided string.
-    # Note: we intentionally use [[ ... != ... ]] to allow pattern matching on
-    # the product string.
-    if [ -n "${FLAGS_to_product}" ] &&
-       [[ "$(get_disk_info ${disk} product)" != ${FLAGS_to_product} ]]; then
-      continue
-    fi
-
-    disk_string=$(get_disk_string /dev/${disk})
-    disk_string_list=( "${disk_string_list[@]}"
-                       "/dev/${disk}: ${disk_string}" )
-  done
-
-  # If no (matching) devices found, quit.
-  if (( ! ${#disk_string_list[*]} )); then
-    if [ -z "${FLAGS_to_product}" ]; then
-      die_notrace "No USB/MMC devices could be detected"
-    else
-      die_notrace "No matching USB/MMC devices could be detected"
-    fi
-  fi
-
-  # Prompt for selection, or autoselect if only one device was found.
-  if (( ${#disk_string_list[*]} > 1 )); then
-    PS3="Select a target device: "
-    select disk_string in "${disk_string_list[@]}"; do
-      if [ -z "${disk_string}" ]; then
-        die_notrace "Invalid selection"
-      fi
-      break
-    done
-  else
-    disk_string="${disk_string_list}"
-    echo "Found ${disk_string}"
-  fi
-
-  FLAGS_to="${disk_string%%:*}"
-elif [ -n "${FLAGS_to_product}" ]; then
-  die_notrace "Cannot specify both --to and --to_product"
-fi
-
-# Guess ARCH if it's unset
-if [ "${FLAGS_arch}" = "" ]; then
-  if echo "${FLAGS_board}" | grep -qs "x86"; then
-    FLAGS_arch=INTEL
-  else
-    FLAGS_arch=ARM
-  fi
-fi
-
-# Convert args to paths.  Need eval to un-quote the string so that shell
-# chars like ~ are processed; just doing FOO=`readlink -f ${FOO}` won't work.
-FLAGS_from=`eval readlink -f ${FLAGS_from}`
-FLAGS_to=`eval readlink -f ${FLAGS_to}`
-
-# Check whether target device is USB/MMC, and obtain a string descriptor for it.
-unset disk_string
-if [ -b "${FLAGS_to}" -o -c "${FLAGS_to}" ]; then
-  if list_usb_disks | grep -q '^'${FLAGS_to##*/}'$' ||
-     list_mmc_disks | grep -q '^'${FLAGS_to##*/}'$'; then
-    disk_string=$(get_disk_string ${FLAGS_to})
-  elif [ ${FLAGS_force_non_usb} -ne ${FLAGS_TRUE} ]; then
-    # Safeguard against writing to a real non-USB disk or non-SD disk
-    die_notrace "${FLAGS_to} does not appear to be a USB/MMC disk," \
-        "use --force_non_usb to override"
-  fi
-fi
-
-STATEFUL_DIR="${FLAGS_from}/stateful_partition"
-mkdir -p "${STATEFUL_DIR}"
-
-# Figure out which image to use.
-if [ ${FLAGS_factory} -eq ${FLAGS_TRUE} ]; then
-  SRC_IMAGE="${FLAGS_from}/${CHROMEOS_FACTORY_TEST_IMAGE_NAME}"
-elif [ ${FLAGS_test_image} -eq ${FLAGS_TRUE} ]; then
-  SRC_IMAGE="${FLAGS_from}/${CHROMEOS_TEST_IMAGE_NAME}"
-else
-  # Auto-detect and select an image name if none provided.
-  if [ -z "${FLAGS_image_name}" ]; then
-    echo "No image name specified, autodetecting..."
-
-    # Resolve the default image full path (see though symlinks), make sure
-    # it's present.
-    default_image_path=$(readlink -f "${FLAGS_from}/${CHROMEOS_IMAGE_NAME}")
-    if [ ! -f "${default_image_path}" ]; then
-      default_image_path="MISSING"
-    fi
-
-    # The list of candidate image names.
-    image_candidate_list=( "${CHROMEOS_DEVELOPER_IMAGE_NAME}"
-                           "${CHROMEOS_RECOVERY_IMAGE_NAME}"
-                           "${CHROMEOS_TEST_IMAGE_NAME}"
-                           "${CHROMEOS_FACTORY_TEST_IMAGE_NAME}"
-                           "${CHROMEOS_FACTORY_INSTALL_SHIM_NAME}" )
-
-    # Obtain list of available images that can be used.
-    unset image_list
-    is_got_default=0
-    for image_candidate in "${image_candidate_list[@]}"; do
-      image_candidate_path="${FLAGS_from}/${image_candidate}"
-      if [ -f "${image_candidate_path}" ]; then
-        if [ "${image_candidate_path}" == "${default_image_path}" ]; then
-          # This is the default image, list it first.
-          image_list=( "${image_candidate}" "${image_list[@]}" )
-          is_got_default=1
-        else
-          image_list=( "${image_list[@]}" "${image_candidate}" )
-        fi
-      fi
-    done
-
-    # Figure out what to do with the resulting list of images.
-    declare -i num_images=${#image_list[*]}
-    if (( num_images == 0 )); then
-      die_notrace "No candidate images could be detected"
-    elif (( num_images == 1 )) && [ ${is_got_default} == 1 ]; then
-      # Found a single image that is the default image, just select it.
-      image="${image_list[0]}"
-      echo "Found default image ${image}"
-    else
-      # Select one from a list of available images; default to the first.
-      PS3="Select an image [1]: "
-      choose image "${image_list[0]}" "ERROR" "${image_list[@]}"
-      if [ "${image}" == "ERROR" ]; then
-        die_notrace "Invalid selection"
-      fi
-    fi
-
-    FLAGS_image_name="${image}"
-  fi
-
-  # Use the selected image.
-  SRC_IMAGE="${FLAGS_from}/${FLAGS_image_name}"
-fi
-
-# Make sure that the selected image exists.
-if [ ! -f "${SRC_IMAGE}" ]; then
-  die_notrace "Image not found: ${SRC_IMAGE}"
-fi
-
-# Let's do it.
-if [ -b "${FLAGS_to}" -o -c "${FLAGS_to}" ]; then
-  # Output to a block device (i.e., a real USB key / SD card), so need sudo dd
-  if [ ${FLAGS_install} -ne ${FLAGS_TRUE} ]; then
-    echo "Copying image ${SRC_IMAGE} to device ${FLAGS_to}..."
-  else
-    echo "Installing image ${SRC_IMAGE} to device ${FLAGS_to}..."
-  fi
-
-  # Warn if it looks like they supplied a partition as the destination.
-  if echo "${FLAGS_to}" | grep -q '[0-9]$'; then
-    drive=$(echo "${FLAGS_to}" | sed -re 's/[0-9]+$//')
-    if [ -b "${drive}" ]; then
-      warn "${FLAGS_to} looks like a partition; did you mean ${drive}?"
-    fi
-  fi
-
-  # Make sure this is really what the user wants, before nuking the device.
-  if [ ${FLAGS_yes} -ne ${FLAGS_TRUE} ]; then
-    warning_str="this will erase all data on ${FLAGS_to}"
-    if [ -n "${disk_string}" ]; then
-      warning_str="${warning_str}: ${disk_string}"
-    else
-      warning_str="${warning_str}, which does not appear to be a USB/MMC disk!"
-    fi
-    warn "${warning_str}"
-    are_you_sure
-  fi
-
-  mount_list=$(grep ^"${FLAGS_to}" /proc/mounts | awk '{print $1}')
-  if [ -n "${mount_list}" ]; then
-    echo "Attempting to unmount any mounts on the target device..."
-    for i in ${mount_list}; do
-      if ! safe_umount "$i" ; then
-        die_notrace "$i could not be unmounted; aborting."
-      fi
-    done
-  fi
-
-  if [ ${FLAGS_install} -ne ${FLAGS_TRUE} ]; then
-    sudo $(pv_cat_cmd) "${SRC_IMAGE}" |
-      sudo dd of="${FLAGS_to}" bs=4M oflag=sync status=noxfer
-    sync
-  else
-    "/build/${FLAGS_board}/usr/sbin/chromeos-install" \
-      --yes \
-      --skip_src_removable \
-      --skip_dst_removable \
-      --arch="${FLAGS_arch}" \
-      --payload_image="${SRC_IMAGE}" \
-      --dst="${FLAGS_to}" \
-      --skip_postinstall
-  fi
-elif [[ "${FLAGS_to}" == /dev/* ]]; then
-  # Did the user attempt to write to a non-existent block device?
-  die_notrace "Target device ${FLAGS_to} does not exist"
-else
-  # Output to a file, so just make a copy.
-  if [ "${SRC_IMAGE}" != "${FLAGS_to}" ]; then
-    echo "Copying image ${SRC_IMAGE} to file ${FLAGS_to}..."
-    $(pv_cat_cmd) "${SRC_IMAGE}" >"${FLAGS_to}"
-  fi
-
-  info "To copy onto a USB/MMC drive /dev/sdX, use: "
-  info "  sudo dd if=${FLAGS_to} of=/dev/sdX bs=4M oflag=sync"
-fi
-
-command_completed
-echo "Done."
+exit 1
diff --git a/image_to_vm.sh b/image_to_vm.sh
index b7a50a7..22bce4e 100755
--- a/image_to_vm.sh
+++ b/image_to_vm.sh
@@ -30,8 +30,7 @@
 DEFINE_boolean factory_install $FLAGS_FALSE \
     "Modify the image for factory install shim"
 
-# We default to TRUE so the buildbot gets its image. Note this is different
-# behavior from image_to_usb.sh
+# We default to TRUE so the buildbot gets its image.
 DEFINE_boolean force_copy ${FLAGS_FALSE} "Always rebuild test image"
 DEFINE_string format "qemu" \
   "Output format, either qemu, vmware or virtualbox"