generic-poky/scripts/oe-build-perf-test

84 lines
2.2 KiB
Plaintext
Raw Normal View History

#!/usr/bin/python3
#
# Build performance test script
#
# Copyright (c) 2016, Intel Corporation.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms and conditions of the GNU General Public License,
# version 2, as published by the Free Software Foundation.
#
# This program is distributed in the hope it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
"""Build performance test script"""
import argparse
import logging
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + '/lib')
import scriptpath
scriptpath.add_oe_lib_path()
from oeqa.buildperf import KernelDropCaches
from oeqa.utils.commands import runCmd
# Set-up logging
LOG_FORMAT = '[%(asctime)s] %(levelname)s: %(message)s'
logging.basicConfig(level=logging.INFO, format=LOG_FORMAT)
log = logging.getLogger()
def pre_run_sanity_check():
"""Sanity check of build environment"""
build_dir = os.environ.get("BUILDDIR")
if not build_dir:
log.error("BUILDDIR not set. Please run the build environmnent setup "
"script.")
return False
if os.getcwd() != build_dir:
log.error("Please run this script under BUILDDIR (%s)", build_dir)
return False
ret = runCmd('which bitbake', ignore_status=True)
if ret.status:
log.error("bitbake command not found")
return False
return True
def parse_args(argv):
"""Parse command line arguments"""
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-D', '--debug', action='store_true',
help='Enable debug level logging')
return parser.parse_args(argv)
def main(argv=None):
"""Script entry point"""
args = parse_args(argv)
if args.debug:
log.setLevel(logging.DEBUG)
if not pre_run_sanity_check():
return 1
# Check our capability to drop caches and ask pass if needed
KernelDropCaches.check()
return 0
if __name__ == '__main__':
sys.exit(main())