| #!/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. |
| |
| # --- 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 --- |
| |
| # Flags |
| DEFINE_string from "" "Directory with build archive (zipname)" |
| DEFINE_string to "" "Directory to receive packaged hwqual" |
| DEFINE_string zipname "image.zip" "Name of zip file to create." |
| DEFINE_string output_tag "chromeos-hwqual" "Name used in tar" |
| |
| TMP=$(mktemp -d "/tmp/image.XXXX") |
| |
| function cleanup() { |
| rm -rf "${TMP}" |
| } |
| |
| function main() { |
| assert_outside_chroot |
| assert_not_root_user |
| |
| # Parse command line |
| FLAGS "$@" || exit 1 |
| eval set -- "${FLAGS_ARGV}" |
| set -e |
| |
| if [[ -z "${FLAGS_from}" ]]; then |
| echo "Please specify --from directory" |
| exit 1 |
| fi |
| |
| FLAGS_from=$(readlink -f "${FLAGS_from}") |
| |
| if [[ -z "${FLAGS_to}" ]]; then |
| FLAGS_to="${FLAGS_from}" |
| fi |
| |
| local script_dir=${SCRIPTS_DIR} |
| |
| script_dir=$(readlink -f "${script_dir}") |
| docgen_dir="autotest/utils/docgen" |
| html_target="${TMP}/autotest/client/site_tests/suite_HWQual/html" |
| |
| trap cleanup EXIT |
| |
| cd "${TMP}" |
| |
| echo "Extracting build artifacts..." |
| unzip "${FLAGS_from}/${FLAGS_zipname}" |
| mkdir -p image |
| mkdir -p "tarball/${FLAGS_output_tag}" |
| |
| echo "Extracting autotest from build artifacts..." |
| tar --bzip2 -xf autotest.tar.bz2 |
| |
| # Create HTML and PDF test documentation for HWQual Tests. |
| # We need doxygen 1.6.1 or later to run CreateDocs.py |
| doxygen_version=$(doxygen --version) |
| if [[ $? -eq 0 ]]; then |
| if [[ "$doxygen_version" > "1.6.0" ]]; then |
| echo "Generating test documentation..." |
| cd "${docgen_dir}" |
| ./CreateDocs.py --docversion ${FLAGS_output_tag} --html ${html_target} |
| make -C latex pdf |
| mv latex/refman.pdf "${html_target}/HWQual.pdf" |
| # Clean up the generated files. |
| rm -rf testsource latex *.log |
| else |
| warn "doxygen is $doxygen_version, should be 1.6.1 or later." |
| fi |
| else |
| warn "doxygen is not installed. Install version 1.6.1 or later." |
| fi |
| |
| cd "${TMP}" |
| |
| mv chromiumos_test_image.bin image/chromiumos_image.bin |
| |
| echo "Formatting rootfs as a USB image..." |
| "${script_dir}/image_to_usb.sh" --from=image \ |
| --to="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 \ |
| "${FLAGS_output_tag}/autotest/client/site_tests/suite_HWQual/html" tarball |
| ln -s autotest/client/site_tests/suite_HWQual/manual \ |
| "tarball/${FLAGS_output_tag}" |
| cp "${script_dir}/mod_for_test_scripts/ssh_keys/testing_rsa" \ |
| "tarball/${FLAGS_output_tag}" |
| 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 "${script_dir}/generate_test_report" \ |
| "tarball/${FLAGS_output_tag}/generate_test_report" |
| # Copy python lib used in generate_test_report. |
| mkdir -p "tarball/${FLAGS_output_tag}/lib" |
| cp "${script_dir}/lib/cros_build_lib.py" \ |
| "tarball/${FLAGS_output_tag}/lib" |
| 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 "$@" |