aboutsummaryrefslogtreecommitdiff
path: root/deprecated/automation/clients/helper/crosstool.py
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/automation/clients/helper/crosstool.py')
-rw-r--r--deprecated/automation/clients/helper/crosstool.py168
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')