| Index: chromeos-base/autotest/autotest-0.0.1.ebuild | 
| diff --git a/chromeos-base/autotest/autotest-0.0.1.ebuild b/chromeos-base/autotest/autotest-0.0.1.ebuild | 
| index 4afaa648fd160d6e4eb120013a32ee30e526a9f5..77257a4d87257ff3b35cecd46dc259e9f95028ad 100644 | 
| --- a/chromeos-base/autotest/autotest-0.0.1.ebuild | 
| +++ b/chromeos-base/autotest/autotest-0.0.1.ebuild | 
| @@ -24,8 +24,13 @@ RDEPEND=" | 
| DEPEND=" | 
| ${RDEPEND}" | 
|  | 
| +export PORTAGE_QUIET=1 | 
| + | 
| +# Ensure the configures run by autotest pick up the right config.site | 
| +export CONFIG_SITE=/usr/share/config.site | 
| + | 
| # Create python package init files for top level test case dirs. | 
| -function touchInitPy() { | 
| +function touch_init_py() { | 
| local dirs=${1} | 
| for base_dir in $dirs | 
| do | 
| @@ -38,23 +43,17 @@ function touchInitPy() { | 
| done | 
| } | 
|  | 
| -src_unpack() { | 
| -	local third_party="${CHROMEOS_ROOT}/src/third_party" | 
| -	elog "Using third_party: $third_party" | 
| -	mkdir -p "${S}" | 
| -	cp -fpru ${third_party}/autotest/files/{client,conmux,server,tko,utils,global_config.ini,shadow_config.ini} ${S} || die | 
| +function setup_ssh() { | 
| +	eval $(ssh-agent) > /dev/null | 
| +	ssh-add \ | 
| +		${CHROMEOS_ROOT}/src/scripts/mod_for_test_scripts/ssh_keys/testing_rsa | 
| } | 
|  | 
| -src_configure() { | 
| -	cd ${S} | 
| -	touchInitPy client/tests client/site_tests | 
| -	touch __init__.py | 
| -	# Cleanup checked-in binaries that don't support the target architecture | 
| -	[[ ${E_MACHINE} == "" ]] && return 0; | 
| -	rm -fv $( scanelf -RmyBF%a . | grep -v -e ^${E_MACHINE} ) | 
| +function teardown_ssh() { | 
| +	ssh-agent -k > /dev/null | 
| } | 
|  | 
| -src_compile() { | 
| +function setup_cross_toolchain() { | 
| if tc-is-cross-compiler ; then | 
| tc-getCC | 
| tc-getCXX | 
| @@ -66,16 +65,36 @@ src_compile() { | 
| export PKG_CONFIG_PATH="${ROOT}/usr/lib/pkgconfig/" | 
| export CCFLAGS="$CFLAGS" | 
| fi | 
| +} | 
| + | 
| +function copy_src() { | 
| +	local dst=$1 | 
| +	local autotest_files="${CHROMEOS_ROOT}/src/third_party/autotest/files" | 
| +	mkdir -p "${dst}" | 
| +	cp -fpru "${autotest_files}"/{client,conmux,server,tko,utils} ${dst} || die | 
| +	cp -fpru "${autotest_files}"/{global_config.ini,shadow_config.ini} ${dst} \ | 
| +		|| die | 
| +} | 
| + | 
| +src_configure() { | 
| +	copy_src "${S}" | 
| +	cd "${S}" | 
| +	touch_init_py client/tests client/site_tests | 
| +	touch __init__.py | 
| +	# Cleanup checked-in binaries that don't support the target architecture | 
| +	[[ ${E_MACHINE} == "" ]] && return 0; | 
| +	rm -fv $( scanelf -RmyBF%a . | grep -v -e ^${E_MACHINE} ) | 
| +} | 
|  | 
| -	# Ensure the configures run by autotest pick up the right config.site | 
| -	export CONFIG_SITE=/usr/share/config.site | 
| +src_compile() { | 
| +	setup_cross_toolchain | 
|  | 
| # Do not use sudo, it'll unset all your environment | 
| LOGNAME=${SUDO_USER} \ | 
| -          client/bin/autotest_client --quiet --client_test_setup=${TEST_LIST} \ | 
| -          || ! use buildcheck || die "Tests failed to build." | 
| -        # Cleanup some temp files after compiling | 
| -        find . -name '*.[ado]' -delete | 
| +		client/bin/autotest_client --quiet --client_test_setup=${TEST_LIST} \ | 
| +		|| ! use buildcheck || die "Tests failed to build." | 
| +	# Cleanup some temp files after compiling | 
| +	find . -name '*.[ado]' -delete | 
| } | 
|  | 
| src_install() { | 
| @@ -84,7 +103,27 @@ src_install() { | 
| } | 
|  | 
| pkg_postinst() { | 
| -  chown -R ${SUDO_UID}:${SUDO_GID} "${SYSROOT}/usr/local/autotest" | 
| -  chmod -R 755 "${SYSROOT}/usr/local/autotest" | 
| +	chown -R ${SUDO_UID}:${SUDO_GID} "${SYSROOT}/usr/local/autotest" | 
| +	chmod -R 755 "${SYSROOT}/usr/local/autotest" | 
| +} | 
| + | 
| +# Define a directory which will not be cleaned by portage automatically. So we | 
| +# could achieve incremental build between two autoserv runs. | 
| +BUILD_STAGE=${PORTAGE_BUILDDIR}/staging | 
| + | 
| +src_test() { | 
| +	local third_party="${CHROMEOS_ROOT}/src/third_party" | 
| +	copy_src "${BUILD_STAGE}" | 
| + | 
| +	setup_ssh | 
| +	cd "${BUILD_STAGE}" | 
| + | 
| +	setup_cross_toolchain | 
| + | 
| +	local timestamp=$(date +%Y-%m-%d-%H.%M.%S) | 
| +	# Do not use sudo, it'll unset all your environment | 
| +	LOGNAME=${SUDO_USER} ./server/autoserv -r /tmp/results.${timestamp} \ | 
| +		${AUTOSERV_ARGS} | 
| +	teardown_ssh | 
| } | 
|  | 
|  |