diff options
Diffstat (limited to 'deprecated/build_benchmarks.py')
-rwxr-xr-x | deprecated/build_benchmarks.py | 306 |
1 files changed, 0 insertions, 306 deletions
diff --git a/deprecated/build_benchmarks.py b/deprecated/build_benchmarks.py deleted file mode 100755 index c10c74d1..00000000 --- a/deprecated/build_benchmarks.py +++ /dev/null @@ -1,306 +0,0 @@ -#!/usr/bin/python2 -# -# Copyright 2010 Google Inc. All Rights Reserved. -"""Script to build ChromeOS benchmarks - -Inputs: - chromeos_root - toolchain_root - board - [chromeos/cpu/<benchname> | - chromeos/browser/[pagecycler|sunspider] | - chromeos/startup] - - This script assumes toolchain has already been built in toolchain_root. - - chromeos/cpu/<benchname> - - Execute bench.py script within chroot to build benchmark - - Copy build results to perflab-bin - - chromeos/startup - - Call build_chromeos to build image. - - Copy image to perflab-bin - - chromeos/browser/* - - Call build_chromebrowser to build image with new browser - - Copy image to perflab-bin - -""" - -from __future__ import print_function - -__author__ = 'bjanakiraman@google.com (Bhaskar Janakiraman)' - -import argparse -import os -import sys -import re - -import build_chromeos -from cros_utils import command_executer -from cros_utils import logger - -KNOWN_BENCHMARKS = [ - 'chromeos/startup', 'chromeos/browser/pagecycler', - 'chromeos/browser/sunspider', 'chromeos/browser/v8bench', - 'chromeos/cpu/bikjmp' -] - -# Commands to build CPU benchmarks. - -CPU_BUILDCMD_CLEAN = ('cd /usr/local/toolchain_root/third_party/android_bench/' - 'v2_0/CLOSED_SOURCE/%s; python ../../scripts/bench.py ' - '--toolchain=/usr/bin --action=clean;') - -CPU_BUILDCMD_BUILD = ('cd /usr/local/toolchain_root/third_party/android_bench/' - 'v2_0/CLOSED_SOURCE/%s; python ../../scripts/bench.py ' - '--toolchain=/usr/bin --add_cflags=%s --add_ldflags=%s ' - '--makeopts=%s --action=build') - -# Common initializations -cmd_executer = command_executer.GetCommandExecuter() - - -def Usage(parser, message): - print('ERROR: %s' % message) - parser.print_help() - sys.exit(0) - - -def CreateRunsh(destdir, benchmark): - """Create run.sh script to run benchmark. - - Perflab needs a run.sh that runs the benchmark. - """ - run_cmd = os.path.dirname(os.path.abspath(__file__)) + '/run_benchmarks.py' - contents = '#!/bin/sh\n%s $@ %s\n' % (run_cmd, benchmark) - runshfile = destdir + '/run.sh' - f = open(runshfile, 'w') - f.write(contents) - f.close() - retval = cmd_executer.RunCommand('chmod +x %s' % runshfile) - return retval - - -def CreateBinaryCopy(sourcedir, destdir, copy=None): - """Create links in perflab-bin/destdir/* to sourcedir/*, instead of copies - - Args: - sourcedir: directory from which to copy. - destdir: directory to which to copy. - copy: when none, make soft links to everything under sourcedir, otherwise - copy all to destdir. - TODO: remove this parameter if it's determined that CopyFiles can use - rsync -L. - """ - retval = 0 - # check if sourcedir exists - if not os.path.exists(sourcedir): - logger.GetLogger().LogError('benchmark results %s does not exist.' % - sourcedir) - return 1 - - # Deal with old copies - save off old ones for now. - # Note - if its a link, it doesn't save anything. - if os.path.exists(destdir): - command = 'rm -rf %s.old' % destdir - retval = cmd_executer.RunCommand(command) - if retval != 0: - return retval - command = 'mv %s %s.old' % (destdir, destdir) - retval = cmd_executer.RunCommand(command) - if retval != 0: - return retval - os.makedirs(destdir) - sourcedir = os.path.abspath(sourcedir) - if copy is None: - command = 'ln -s %s/* %s' % (sourcedir, destdir) - else: - command = 'cp -fr %s/* %s' % (sourcedir, destdir) - retval = cmd_executer.RunCommand(command) - return retval - - -def Main(argv): - """Build ChromeOS.""" - # Common initializations - - parser = argparse.ArgumentParser() - parser.add_argument('-c', - '--chromeos_root', - dest='chromeos_root', - help='Target directory for ChromeOS installation.') - parser.add_argument('-t', - '--toolchain_root', - dest='toolchain_root', - help='This is obsolete. Do not use.') - parser.add_argument('-r', - '--third_party', - dest='third_party', - help='The third_party dir containing android ' - 'benchmarks.') - parser.add_argument('-C', - '--clean', - dest='clean', - action='store_true', - default=False, - help='Clean up build.') - parser.add_argument('-B', - '--build', - dest='build', - action='store_true', - default=False, - help='Build benchmark.') - parser.add_argument('-O', - '--only_copy', - dest='only_copy', - action='store_true', - default=False, - help='Only copy to perflab-bin - no builds.') - parser.add_argument('--workdir', - dest='workdir', - default='.', - help='Work directory for perflab outputs.') - parser.add_argument('--clobber_chroot', - dest='clobber_chroot', - action='store_true', - help='Delete the chroot and start fresh', - default=False) - parser.add_argument('--clobber_board', - dest='clobber_board', - action='store_true', - help='Delete the board and start fresh', - default=False) - parser.add_argument('--cflags', - dest='cflags', - default='', - help='CFLAGS for the ChromeOS packages') - parser.add_argument('--cxxflags', - dest='cxxflags', - default='', - help='CXXFLAGS for the ChromeOS packages') - parser.add_argument('--ldflags', - dest='ldflags', - default='', - help='LDFLAGS for the ChromeOS packages') - parser.add_argument('--makeopts', - dest='makeopts', - default='', - help='Make options for the ChromeOS packages') - parser.add_argument('--board', - dest='board', - help='ChromeOS target board, e.g. x86-generic') - # Leftover positional arguments - parser.add_argument('args', nargs='+', help='benchmarks') - - options = parser.parse_args(argv[1:]) - - # validate args - for arg in options.args: - if arg not in KNOWN_BENCHMARKS: - logger.GetLogger().LogFatal('Bad benchmark %s specified' % arg) - - if options.chromeos_root is None: - Usage(parser, '--chromeos_root must be set') - - if options.board is None: - Usage(parser, '--board must be set') - - if options.toolchain_root: - logger.GetLogger().LogWarning('--toolchain_root should not be set') - - options.chromeos_root = os.path.expanduser(options.chromeos_root) - options.workdir = os.path.expanduser(options.workdir) - - retval = 0 - if options.third_party: - third_party = options.third_party - else: - third_party = '%s/../../../third_party' % os.path.dirname(__file__) - third_party = os.path.realpath(third_party) - for arg in options.args: - # CPU benchmarks - if re.match('chromeos/cpu', arg): - comps = re.split('/', arg) - benchname = comps[2] - - tec_options = [] - if third_party: - tec_options.append('--third_party=%s' % third_party) - if options.clean: - retval = cmd_executer.ChrootRunCommand(options.chromeos_root, - CPU_BUILDCMD_CLEAN % benchname, - tec_options=tec_options) - logger.GetLogger().LogErrorIf(retval, - 'clean of benchmark %s failed.' % arg) - if options.build: - retval = cmd_executer.ChrootRunCommand( - options.chromeos_root, - CPU_BUILDCMD_BUILD % (benchname, options.cflags, options.ldflags, - options.makeopts), - tec_options=tec_options) - logger.GetLogger().LogErrorIf(retval, - 'Build of benchmark %s failed.' % arg) - if retval == 0 and (options.build or options.only_copy): - benchdir = ('%s/android_bench/v2_0/CLOSED_SOURCE/%s' % - (third_party, benchname)) - linkdir = '%s/perflab-bin/%s' % (options.workdir, arg) - - # For cpu/*, we need to copy (not symlinks) of all the contents, - # because they are part of the test fixutre. - retval = CreateBinaryCopy(benchdir, linkdir, True) - if retval != 0: - return retval - retval = CreateRunsh(linkdir, arg) - if retval != 0: - return retval - elif re.match('chromeos/startup', arg): - if options.build: - # Clean for chromeos/browser and chromeos/startup is a Nop - # since builds are always from scratch. - build_args = [ - os.path.dirname(os.path.abspath(__file__)) + '/build_chromeos.py', - '--chromeos_root=' + options.chromeos_root, - '--board=' + options.board, '--cflags=' + options.cflags, - '--cxxflags=' + options.cxxflags, '--ldflags=' + options.ldflags, - '--clobber_board' - ] - retval = build_chromeos.Main(build_args) - logger.GetLogger().LogErrorIf(retval, 'Build of ChromeOS failed.') - if retval == 0 and (options.build or options.only_copy): - benchdir = '%s/src/build/images/%s/latest' % (options.chromeos_root, - options.board) - linkdir = '%s/perflab-bin/%s' % (options.workdir, arg) - retval = CreateBinaryCopy(benchdir, linkdir) - if retval != 0: - return retval - CreateRunsh(linkdir, arg) - if retval != 0: - return retval - elif re.match('chromeos/browser', arg): - if options.build: - # For now, re-build os. TBD: Change to call build_browser - build_args = [os.path.dirname(os.path.abspath(__file__)) + - '/build_chrome_browser.py', - '--chromeos_root=' + options.chromeos_root, - '--board=' + options.board, '--cflags=' + options.cflags, - '--cxxflags=' + options.cxxflags, - '--ldflags=' + options.ldflags] - retval = build_chromeos.Main(build_args) - logger.GetLogger().LogErrorIf(retval, 'Build of ChromeOS failed.') - if retval == 0 and (options.build or options.only_copy): - benchdir = '%s/src/build/images/%s/latest' % (options.chromeos_root, - options.board) - linkdir = '%s/perflab-bin/%s' % (options.workdir, arg) - retval = CreateBinaryCopy(benchdir, linkdir) - if retval != 0: - return retval - retval = CreateRunsh(linkdir, arg) - if retval != 0: - return retval - - return 0 - - -if __name__ == '__main__': - sys.exit(Main(sys.argv)) |