blob: ea985713f5ba346444bba7291ff2f2f2691ab200 [file] [log] [blame] [edit]
# Copyright 2016 The ChromiumOS Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: autotest-external-dep.eclass
# @MAINTAINER:
# ChromiumOS Build Team
# @AUTHOR:
# The ChromiumOS Authors <chromium-os-dev@chromium.org>
# @BUGREPORTS:
# Please report bugs via http://crbug.com/new (with label Build)
# @VCSURL: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/HEAD/eclass/@ECLASS@
# @BLURB: Eclass for handling minimal external autotest-dep packages
# @DESCRIPTION:
# Since all autotest dep package requires basic fake test during compile stage,
# each package needs a ${PACKAGE}.py for setup. However, we have many dep
# packages that simply fetches src from external packages and thus don't need
# additional setup. This eclass handles the common jobs that has to be done by
# these autotest-dep ebuilds.
inherit autotest-deponly cros-constants
# @ECLASS-VARIABLE: PACKAGE
# @DESCRIPTION:
# The name of the autotest-dep package being build. MUST be set by the
# inheriting ebuild. If empty, build fails.
autotest-external-dep_src_prepare() {
# Check if PACKAGE is set, abort if not set.
[[ -z "${PACKAGE}" ]] && die "PACKAGE is not set"
# Use customized ${PACKAGE}.py if available, use default otherwise.
if [[ -e "${FILESDIR}/${PACKAGE}.py" ]]; then
cp "${FILESDIR}/${PACKAGE}.py" "${WORKDIR}/${PACKAGE}.py" || die
else
cat << EOF > "${WORKDIR}/${PACKAGE}.py"
import logging
import os
# Setup autotest_lib path by importing common.
import common
from autotest_lib.client.bin import utils
version = 1
def setup(setup_dir):
""" An empty setup function
@param setup_dir: the target directory
"""
logging.info('setup(%s)', setup_dir)
pwd = os.getcwd()
utils.update_version(pwd, True, version, setup, pwd)
EOF
chmod a+x "${WORKDIR}/${PACKAGE}.py"
fi
}
autotest-external-dep_src_compile() {
if [[ ! -e "${AUTOTEST_WORKDIR}/client/deps/${PACKAGE}" ]]; then
mkdir -p "${AUTOTEST_WORKDIR}/client/deps"
ln -s "${WORKDIR}" "${AUTOTEST_WORKDIR}/client/deps/${PACKAGE}" || die
fi
autotest_src_compile
if [[ -e "${ROOT}/${AUTOTEST_BASE}/client/deps/${PACKAGE}/.version" ]]; then
cp "${ROOT}/${AUTOTEST_BASE}/client/deps/${PACKAGE}/.version" "${WORKDIR}/" || die
fi
# Clean up autotest workdir which we don't need in final package.
rm -rf "${AUTOTEST_WORKDIR}"
}
autotest-external-dep_src_install() {
insinto "${AUTOTEST_BASE}"/client/deps/${PACKAGE}
doins -r .
}
EXPORT_FUNCTIONS src_prepare src_compile src_install