blob: e26a3b786ca1edfe3b0f672120d92ae71c4eee1d [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2014 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.
# make_factory_toolkit.sh --board=[board]
#
# This script builds a factory toolkit, which is a self-extracting shellball,
# and can be installed onto a device running test image.
SCRIPT_ROOT=$(dirname "$(readlink -f "$0")")
. "${SCRIPT_ROOT}/common.sh" || exit 1
# Script must be run inside the chroot.
restart_in_chroot_if_needed "$@"
DEFINE_string board "${DEFAULT_BOARD}" \
"The board to build a factory toolkit for."
DEFINE_string output_dir "" "Path to the folder to store the factory toolkit."
DEFINE_string version "" \
"The version tag to be included in the identification string."
cleanup() {
sudo rm -rf "${temp_pack_root}"
}
main() {
# Parse command line.
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
switch_to_strict_mode
trap cleanup EXIT
local default_dir="${CHROOT_TRUNK_DIR}/src/build/images/${FLAGS_board}/latest"
if [[ -n "${FLAGS_output_dir}" ]]; then
local output_dir="${FLAGS_output_dir}"
else
local output_dir="${default_dir}"
fi
cd "${output_dir}"
temp_pack_root="$(mktemp -d toolkit_XXXXXX)"
if [[ ! -d "${temp_pack_root}" ]]; then
die "Failed to create temporary directory."
fi
export INSTALL_MASK="${FACTORY_TEST_INSTALL_MASK}"
emerge-${FLAGS_board} --root="${temp_pack_root}" --nodeps --usepkgonly -v \
chromeos-factory chromeos-factory-board autotest-factory-install
if [[ -n "${FLAGS_version}" ]]; then
local id_str="${FLAGS_board} Factory Toolkit ${FLAGS_version}"
else
local id_str="${FLAGS_board} Factory Toolkit"
fi
local output_toolkit="${output_dir}/install_factory_toolkit.run"
makeself --bzip2 --nox11 "${temp_pack_root}" "${output_toolkit}" "${id_str}" \
usr/local/factory/py/toolkit/installer.py
echo "
Factory toolkit generated at ${output_toolkit}.
To install factory toolkit on a live device running a test image, copy this
to the device and execute it as root.
Alternatively, the factory toolkit can be used to patch a test image. For
more information, run:
${output_toolkit} -- --help
"
}
main "$@"