#!/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. # Load common constants. This should be the first executable line. # The path to common.sh should be relative to your script's location. . "$(dirname "$0")/common.sh" # 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=$(dirname "$0") 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}" cp "${script_dir}/generate_test_report.py" \ "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 "$@"