Index: src/scripts/build_autotest.sh |
diff --git a/src/scripts/build_autotest.sh b/src/scripts/build_autotest.sh |
index 24c8eca15da23f97a8edae22b0343d6c94f2d4a3..b16fb58e7275fdbf7fd3681c45f4fe026461b638 100755 |
--- a/src/scripts/build_autotest.sh |
+++ b/src/scripts/build_autotest.sh |
@@ -4,24 +4,30 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
-# This script makes autotest client tests inside a chroot environment. The idea |
-# is to compile any platform-dependent autotest client tests in the build |
-# environment, since client systems under test lack the proper toolchain. |
+# This script makes autotest client tests inside an Ubuntu chroot |
+# environment. The idea is to compile any platform-dependent autotest |
+# client tests in the build environment, since client systems under |
+# test lack the proper toolchain. |
# |
# The user can later run autotest against an ssh enabled test client system, or |
-# install the compiled client tests directly onto the rootfs image. |
+# install the compiled client tests directly onto the rootfs image, using |
+# mod_image_for_test.sh. |
. "$(dirname "$0")/common.sh" |
-. "$(dirname $0)/autotest_lib.sh" |
+. "$(dirname "$0")/autotest_lib.sh" |
# Script must be run inside the chroot |
assert_inside_chroot |
-DEFAULT_TESTS_LIST="all" |
+DEFAULT_CONTROL=client/site_tests/setup/control |
-DEFINE_string build "${DEFAULT_TESTS_LIST}" \ |
- "a comma seperated list of autotest client tests to be prebuilt." b |
-DEFINE_boolean prompt $FLAGS_TRUE "Prompt user when building all tests" |
+DEFINE_string control "${DEFAULT_CONTROL}" \ |
+ "Setup control file -- path relative to the destination autotest directory" c |
+DEFINE_string board "" \ |
+ "Board name for the target you are building if using portage build system" |
+ |
+DEFINE_string board "" \ |
+ "The board for which you are building autotest" |
# More useful help |
FLAGS_HELP="usage: $0 [flags]" |
@@ -31,38 +37,43 @@ FLAGS "$@" || exit 1 |
eval set -- "${FLAGS_ARGV}" |
set -e |
-check_board |
- |
-# build default pre-compile client tests list. |
-ALL_TESTS="compilebench,dbench,disktest,ltp,unixbench" |
-for SITE_TEST in ../third_party/autotest/files/client/site_tests/* |
-do |
- if [ -d ${SITE_TEST} ] |
- then |
- ALL_TESTS="${ALL_TESTS},${SITE_TEST:48}" |
- fi |
-done |
- |
-if [ ${FLAGS_build} == ${DEFAULT_TESTS_LIST} ] |
-then |
- if [ ${FLAGS_prompt} -eq ${FLAGS_TRUE} ] |
- then |
- echo -n "You want to pre-build all client tests and it may take a long time" |
- echo " to finish. " |
- read -p "Are you sure you want to continue?(N/y)" answer |
- answer=${answer:0:1} |
- if [ "${answer}" != "Y" ] && [ "${answer}" != "y" ] |
- then |
- echo "Use --build to specify tests you like to pre-compile." |
- echo -n "E.g.: ./enter_chroot.sh \"./build_autotest.sh " |
- echo "--build=system_SAT\"" |
- exit 0 |
- fi |
- fi |
- TEST_LIST=${ALL_TESTS} |
-else |
- TEST_LIST=${FLAGS_build} |
+AUTOTEST_SRC="${GCLIENT_ROOT}/src/third_party/autotest/files" |
+# Destination in chroot to install autotest. |
+AUTOTEST_DEST="/usr/local/autotest/${FLAGS_board}" |
+ |
+# If new build system flag passed, use ebuild and exit |
+if [ -n "${FLAGS_board}" ]; then |
+ sudo GCLIENT_ROOT="${GCLIENT_ROOT}" FLAGS_control=${FLAGS_control} \ |
+ "emerge-${FLAGS_board}" -a chromeos-base/autotest |
+ exit 0 |
fi |
-GCLIENT_ROOT="${GCLIENT_ROOT}" TEST_LIST=${TEST_LIST} \ |
-"emerge-${FLAGS_board}" chromeos-base/autotest |
+# Copy a local "installation" of autotest into the chroot, to avoid |
+# polluting the src dir with tmp files, results, etc. |
+update_chroot_autotest "${CHROOT_TRUNK_DIR}/src/third_party/autotest/files" \ |
+ "${AUTOTEST_DEST}" |
+ |
+# Create python package init files for top level test case dirs. |
+function touchInitPy() { |
+ local dirs=${1} |
+ for base_dir in $dirs |
+ do |
+ local sub_dirs="$(find ${base_dir} -maxdepth 1 -type d)" |
+ for sub_dir in ${sub_dirs} |
+ do |
+ touch ${sub_dir}/__init__.py |
+ done |
+ touch ${base_dir}/__init__.py |
+ done |
+} |
+ |
+cd ${AUTOTEST_DEST} |
+touchInitPy client/tests client/site_tests |
+touch __init__.py |
+ |
+# Export GCLIENT_ROOT so that tests have access to the source and build trees |
+export GCLIENT_ROOT |
+ |
+# run the magic test setup script. |
+echo "Building tests using ${FLAGS_control}..." |
+client/bin/autotest ${FLAGS_control} |