flatcar-scripts/archive_hwqual
David James a884512e93 Don't depend on zip files in archive_hwqual (1 of 2).
Right now, archive_hwqual extracts the test image from image.zip.
This dependency between archive_hwqual and the image zipfile is
a bit of a landmine because it's currently undocumented and not
tested by unit tests or the commit queue. Fortunately, we can
remove this dependency, as the test image already lives in the
image dir. This simplification also speeds up the archive stage
by removing unnecessary unzipping.

This CL teaches archive_hwqual to look in the image dir instead
of re-extracting the test image from the image.zip file. This
will allow me to later decouple the image.zip creation from
the creation of the hwqual tarball.

BUG=chromium-os:35331
CQ-DEPEND=CL:35590
TEST=canary remote trybot run.

Change-Id: I5930f06f58a9b63afa9ab3445823ed9fd0c2a2e2
Reviewed-on: https://gerrit.chromium.org/gerrit/35588
Tested-by: David James <davidjames@chromium.org>
Reviewed-by: Chris Sosa <sosa@chromium.org>
Reviewed-by: Ryan Cui <rcui@chromium.org>
Commit-Ready: David James <davidjames@chromium.org>
2012-10-15 14:19:08 -07:00

106 lines
2.9 KiB
Bash
Executable File

#!/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"))
. "${SCRIPT_ROOT}/common.sh" || exit 1
# 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 "${CHROMEOS_TEST_IMAGE_NAME}" "Name of image file to use."
TMP=$(mktemp -d "/tmp/image.XXXX")
cleanup() {
rm -rf "${TMP}"
}
main() {
assert_outside_chroot
assert_not_root_user
# 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=${SCRIPTS_DIR}
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 "Formatting rootfs as a USB image..."
"${script_dir}/image_to_usb.sh" --from="${FLAGS_image_dir}" \
--image="${FLAGS_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 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 "$@"