| #!/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. |
| |
| # Script to take an archived build result and prepare a hwqual release. |
| |
| SCRIPT_ROOT=$(dirname $(readlink -f "$0")) |
| SRC_DIR=$(realpath "${SCRIPT_ROOT}/../../") |
| SCRIPTS_DIR="${SRC_DIR}/scripts" |
| CHROMITE_DIR=$(realpath "${SRC_DIR}/../chromite") |
| |
| . "${SCRIPTS_DIR}/lib/shflags/shflags" || die "Couldn't find shflags" |
| |
| DEFAULT_PRIVATE_KEY="${SCRIPTS_DIR}/mod_for_test_scripts/ssh_keys/testing_rsa" |
| |
| # Flags |
| DEFINE_string from "" "Directory with autotest tarball" |
| DEFINE_string to "" "Directory to receive packaged hwqual" |
| DEFINE_string output_tag "chromeos-hwqual" "Name used in tar" |
| DEFINE_string image_dir "" "Directory containing test image." |
| DEFINE_string image "chromiumos_test_image.bin" "Name of image file to use." |
| DEFINE_string ssh_private_key "${DEFAULT_PRIVATE_KEY}" \ |
| "Path to the private ssh key to use for testing" |
| |
| TMP=$(mktemp -d "/tmp/image.XXXX") |
| |
| # Detect whether we're inside a chroot or not. |
| if [[ -e /etc/cros_chroot_version ]]; then |
| INSIDE_CHROOT=1 |
| else |
| INSIDE_CHROOT=0 |
| fi |
| |
| cleanup() { |
| rm -rf "${TMP}" |
| } |
| |
| main() { |
| # Assert outside chroot. |
| if [[ ${INSIDE_CHROOT} -ne 0 ]]; then |
| echo "This script must be run outside the chroot" |
| exit 1 |
| fi |
| |
| # Assert not root user. |
| if [[ ${UID:-$(id -u)} == 0 ]]; then |
| echo "This script must be run as a non-root user." |
| exit 1 |
| fi |
| |
| # Parse command line |
| FLAGS "$@" || exit 1 |
| eval set -- "${FLAGS_ARGV}" |
| switch_to_strict_mode |
| |
| if [[ -z "${FLAGS_from}" ]]; then |
| die "Please specify --from directory" |
| fi |
| |
| if [[ -z "${FLAGS_image_dir}" ]]; then |
| die "Please specify --image_dir directory" |
| fi |
| |
| FLAGS_from=$(readlink -f "${FLAGS_from}") |
| |
| if [[ -z "${FLAGS_to}" ]]; then |
| FLAGS_to="${FLAGS_from}" |
| fi |
| |
| local script_dir=${SCRIPT_ROOT} |
| |
| script_dir=$(readlink -f "${script_dir}") |
| |
| trap cleanup EXIT |
| |
| cd "${TMP}" |
| |
| echo "Extracting build artifacts..." |
| mkdir -p "tarball/${FLAGS_output_tag}" |
| |
| if which pbzip2 >/dev/null 2>/dev/null; then |
| TAR_BZIP2="tar --use-compress-program=pbzip2" |
| else |
| TAR_BZIP2="tar --bzip2" |
| fi |
| |
| echo "Extracting autotest from archived autotest tarball..." |
| ${TAR_BZIP2} -xf "${FLAGS_from}/autotest.tar.bz2" |
| |
| cd "${TMP}" |
| |
| echo "Copying image..." |
| cp "${FLAGS_image_dir}/${FLAGS_image}" \ |
| "tarball/${FLAGS_output_tag}/chromeos-hwqual-usb.img" |
| |
| echo "Inserting documentation and autotest to tarball..." |
| ln -s \ |
| "${FLAGS_output_tag}/autotest/client/site_tests/suite_HWQual/README.txt" \ |
| tarball |
| ln -s autotest/client/site_tests/suite_HWQual/manual \ |
| "tarball/${FLAGS_output_tag}" |
| cp $(readlink -f "${FLAGS_ssh_private_key}") \ |
| "tarball/${FLAGS_output_tag}/testing_rsa" |
| chmod 0400 "tarball/${FLAGS_output_tag}/testing_rsa" |
| mv autotest "tarball/${FLAGS_output_tag}" |
| # Copy call_autoserv.py to tarball. |
| cp "${script_dir}/call_autoserv.py" "tarball/${FLAGS_output_tag}/." |
| cp "${SRC_DIR}/third_party/autotest/files/site_utils/generate_test_report" \ |
| "tarball/${FLAGS_output_tag}/generate_test_report" |
| # Copy python lib used in generate_test_report. |
| cp -a "${CHROMITE_DIR}" "tarball/${FLAGS_output_tag}" |
| echo "Creating ${FLAGS_to}/${FLAGS_output_tag}.tar.bz2..." |
| mkdir -p "${FLAGS_to}" |
| cd tarball |
| ${TAR_BZIP2} -cf "${FLAGS_to}/${FLAGS_output_tag}.tar.bz2" . |
| |
| trap - EXIT |
| cleanup |
| |
| echo "Done." |
| cd "${script_dir}" |
| } |
| |
| main "$@" |