diff options
Diffstat (limited to 'deprecated/automation/clients/helper/crosstool.py')
-rw-r--r-- | deprecated/automation/clients/helper/crosstool.py | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/deprecated/automation/clients/helper/crosstool.py b/deprecated/automation/clients/helper/crosstool.py deleted file mode 100644 index 80154b25..00000000 --- a/deprecated/automation/clients/helper/crosstool.py +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. - -__author__ = 'kbaclawski@google.com (Krystian Baclawski)' - -import os.path -import time - -from automation.clients.helper import jobs -from automation.clients.helper import perforce -from automation.common import command as cmd -from automation.common import job - - -class JobsFactory(object): - - def __init__(self): - self.commands = CommandsFactory() - - def CheckoutCrosstool(self, target): - command = self.commands.CheckoutCrosstool() - new_job = jobs.CreateLinuxJob('CheckoutCrosstool(%s)' % target, command) - checkout_dir_dep = job.FolderDependency(new_job, - CommandsFactory.CHECKOUT_DIR) - manifests_dir_dep = job.FolderDependency( - new_job, os.path.join(self.commands.buildit_path, target), 'manifests') - return new_job, checkout_dir_dep, manifests_dir_dep - - def BuildRelease(self, checkout_dir, target): - command = self.commands.BuildRelease(target) - new_job = jobs.CreateLinuxJob('BuildRelease(%s)' % target, command) - new_job.DependsOnFolder(checkout_dir) - build_tree_dep = job.FolderDependency(new_job, - self.commands.buildit_work_dir_path) - return new_job, build_tree_dep - - def RunTests(self, checkout_dir, build_tree_dir, target, board, component): - command = self.commands.RunTests(target, board, component) - new_job = jobs.CreateLinuxJob('RunTests(%s, %s, %s)' % - (target, component, board), command) - new_job.DependsOnFolder(checkout_dir) - new_job.DependsOnFolder(build_tree_dir) - testrun_dir_dep = job.FolderDependency( - new_job, self.commands.dejagnu_output_path, board) - return new_job, testrun_dir_dep - - def GenerateReport(self, testrun_dirs, manifests_dir, target, boards): - command = self.commands.GenerateReport(boards) - new_job = jobs.CreateLinuxJob('GenerateReport(%s)' % target, command) - new_job.DependsOnFolder(manifests_dir) - for testrun_dir in testrun_dirs: - new_job.DependsOnFolder(testrun_dir) - return new_job - - -class CommandsFactory(object): - CHECKOUT_DIR = 'crosstool-checkout-dir' - - def __init__(self): - self.buildit_path = os.path.join(self.CHECKOUT_DIR, 'gcctools', 'crosstool', - 'v15') - - self.buildit_work_dir = 'buildit-tmp' - self.buildit_work_dir_path = os.path.join('$JOB_TMP', self.buildit_work_dir) - self.dejagnu_output_path = os.path.join(self.buildit_work_dir_path, - 'dejagnu-output') - - paths = { - 'gcctools': [ - 'crosstool/v15/...', 'scripts/...' - ], - 'gcctools/google_vendor_src_branch': [ - 'binutils/binutils-2.21/...', 'gdb/gdb-7.2.x/...', - 'zlib/zlib-1.2.3/...' - ], - 'gcctools/vendor_src': [ - 'gcc/google/gcc-4_6/...' - ] - } - - p4view = perforce.View('depot2', - perforce.PathMapping.ListFromPathDict(paths)) - - self.p4client = perforce.CommandsFactory(self.CHECKOUT_DIR, p4view) - - def CheckoutCrosstool(self): - p4client = self.p4client - - return p4client.SetupAndDo(p4client.Sync(), - p4client.SaveCurrentCLNumber('CLNUM'), - p4client.Remove()) - - def BuildRelease(self, target): - clnum_path = os.path.join('$JOB_TMP', self.CHECKOUT_DIR, 'CLNUM') - - toolchain_root = os.path.join('/google/data/rw/projects/toolchains', target, - 'unstable') - toolchain_path = os.path.join(toolchain_root, '${CLNUM}') - - build_toolchain = cmd.Wrapper( - cmd.Chain( - cmd.MakeDir(toolchain_path), - cmd.Shell('buildit', - '--keep-work-dir', - '--build-type=release', - '--work-dir=%s' % self.buildit_work_dir_path, - '--results-dir=%s' % toolchain_path, - '--force-release=%s' % '${CLNUM}', - target, - path='.')), - cwd=self.buildit_path, - umask='0022', - env={'CLNUM': '$(< %s)' % clnum_path}) - - # remove all but 10 most recent directories - remove_old_toolchains_from_x20 = cmd.Wrapper( - cmd.Pipe( - cmd.Shell('ls', '-1', '-r'), cmd.Shell('sed', '-e', '1,10d'), - cmd.Shell('xargs', 'rm', '-r', '-f')), - cwd=toolchain_root) - - return cmd.Chain(build_toolchain, remove_old_toolchains_from_x20) - - def RunTests(self, target, board, component='gcc'): - dejagnu_flags = ['--outdir=%s' % self.dejagnu_output_path, - '--target_board=%s' % board] - - # Look for {pandaboard,qemu}.exp files in - # //depot/google3/experimental/users/kbaclawski/dejagnu/boards - - site_exp_file = os.path.join('/google/src/head/depot/google3', - 'experimental/users/kbaclawski', - 'dejagnu/site.exp') - - build_dir_path = os.path.join(target, 'rpmbuild/BUILD/crosstool*-0.0', - 'build-%s' % component) - - run_dejagnu = cmd.Wrapper( - cmd.Chain( - cmd.MakeDir(self.dejagnu_output_path), - cmd.Shell('make', - 'check', - '-k', - '-j $(grep -c processor /proc/cpuinfo)', - 'RUNTESTFLAGS="%s"' % ' '.join(dejagnu_flags), - 'DEJAGNU="%s"' % site_exp_file, - ignore_error=True)), - cwd=os.path.join(self.buildit_work_dir_path, build_dir_path), - env={'REMOTE_TMPDIR': 'job-$JOB_ID'}) - - save_results = cmd.Copy(self.dejagnu_output_path, - to_dir='$JOB_TMP/results', - recursive=True) - - return cmd.Chain(run_dejagnu, save_results) - - def GenerateReport(self, boards): - sumfiles = [os.path.join('$JOB_TMP', board, '*.sum') for board in boards] - - return cmd.Wrapper( - cmd.Shell('dejagnu.sh', - 'report', - '-m', - '$JOB_TMP/manifests/*.xfail', - '-o', - '$JOB_TMP/results/report.html', - *sumfiles, - path='.'), - cwd='$HOME/automation/clients/report') |