aboutsummaryrefslogtreecommitdiff
path: root/deprecated/build_benchmarks.py
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/build_benchmarks.py')
-rwxr-xr-xdeprecated/build_benchmarks.py306
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))