Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(436)

Side by Side Diff: buildbot/buildbot_run.py

Issue 1454433002: Python 3 compatibility Base URL: https://chromium.googlesource.com/external/gyp.git@master
Patch Set: Rebase with master (4ec6c4e3a94bd04a6da2858163d40b2429b8aad1) Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « PRESUBMIT.py ('k') | gyptest.py » ('j') | pylib/gyp/MSVSNew.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 Google Inc. All rights reserved. 2 # Copyright (c) 2012 Google Inc. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Argument-less script to select what to run on the buildbots.""" 6 """Argument-less script to select what to run on the buildbots."""
7 7
8 from __future__ import print_function
9
8 import os 10 import os
9 import shutil 11 import shutil
10 import subprocess 12 import subprocess
11 import sys 13 import sys
12 14
13 15
14 BUILDBOT_DIR = os.path.dirname(os.path.abspath(__file__)) 16 BUILDBOT_DIR = os.path.dirname(os.path.abspath(__file__))
15 TRUNK_DIR = os.path.dirname(BUILDBOT_DIR) 17 TRUNK_DIR = os.path.dirname(BUILDBOT_DIR)
16 ROOT_DIR = os.path.dirname(TRUNK_DIR) 18 ROOT_DIR = os.path.dirname(TRUNK_DIR)
17 CMAKE_DIR = os.path.join(ROOT_DIR, 'cmake') 19 CMAKE_DIR = os.path.join(ROOT_DIR, 'cmake')
18 CMAKE_BIN_DIR = os.path.join(CMAKE_DIR, 'bin') 20 CMAKE_BIN_DIR = os.path.join(CMAKE_DIR, 'bin')
19 OUT_DIR = os.path.join(TRUNK_DIR, 'out') 21 OUT_DIR = os.path.join(TRUNK_DIR, 'out')
20 22
21 23
22 def CallSubProcess(*args, **kwargs): 24 def CallSubProcess(*args, **kwargs):
23 """Wrapper around subprocess.call which treats errors as build exceptions.""" 25 """Wrapper around subprocess.call which treats errors as build exceptions."""
24 with open(os.devnull) as devnull_fd: 26 with open(os.devnull) as devnull_fd:
25 retcode = subprocess.call(stdin=devnull_fd, *args, **kwargs) 27 retcode = subprocess.call(stdin=devnull_fd, *args, **kwargs)
26 if retcode != 0: 28 if retcode != 0:
27 print '@@@STEP_EXCEPTION@@@' 29 print('@@@STEP_EXCEPTION@@@')
28 sys.exit(1) 30 sys.exit(1)
29 31
30 32
31 def PrepareCmake(): 33 def PrepareCmake():
32 """Build CMake 2.8.8 since the version in Precise is 2.8.7.""" 34 """Build CMake 2.8.8 since the version in Precise is 2.8.7."""
33 if os.environ['BUILDBOT_CLOBBER'] == '1': 35 if os.environ['BUILDBOT_CLOBBER'] == '1':
34 print '@@@BUILD_STEP Clobber CMake checkout@@@' 36 print('@@@BUILD_STEP Clobber CMake checkout@@@')
35 shutil.rmtree(CMAKE_DIR) 37 shutil.rmtree(CMAKE_DIR)
36 38
37 # We always build CMake 2.8.8, so no need to do anything 39 # We always build CMake 2.8.8, so no need to do anything
38 # if the directory already exists. 40 # if the directory already exists.
39 if os.path.isdir(CMAKE_DIR): 41 if os.path.isdir(CMAKE_DIR):
40 return 42 return
41 43
42 print '@@@BUILD_STEP Initialize CMake checkout@@@' 44 print('@@@BUILD_STEP Initialize CMake checkout@@@')
43 os.mkdir(CMAKE_DIR) 45 os.mkdir(CMAKE_DIR)
44 46
45 print '@@@BUILD_STEP Sync CMake@@@' 47 print('@@@BUILD_STEP Sync CMake@@@')
46 CallSubProcess( 48 CallSubProcess(
47 ['git', 'clone', 49 ['git', 'clone',
48 '--depth', '1', 50 '--depth', '1',
49 '--single-branch', 51 '--single-branch',
50 '--branch', 'v2.8.8', 52 '--branch', 'v2.8.8',
51 '--', 53 '--',
52 'git://cmake.org/cmake.git', 54 'git://cmake.org/cmake.git',
53 CMAKE_DIR], 55 CMAKE_DIR],
54 cwd=CMAKE_DIR) 56 cwd=CMAKE_DIR)
55 57
56 print '@@@BUILD_STEP Build CMake@@@' 58 print('@@@BUILD_STEP Build CMake@@@')
57 CallSubProcess( 59 CallSubProcess(
58 ['/bin/bash', 'bootstrap', '--prefix=%s' % CMAKE_DIR], 60 ['/bin/bash', 'bootstrap', '--prefix=%s' % CMAKE_DIR],
59 cwd=CMAKE_DIR) 61 cwd=CMAKE_DIR)
60 62
61 CallSubProcess( ['make', 'cmake'], cwd=CMAKE_DIR) 63 CallSubProcess( ['make', 'cmake'], cwd=CMAKE_DIR)
62 64
63 65
64 def GypTestFormat(title, format=None, msvs_version=None, tests=[]): 66 def GypTestFormat(title, format=None, msvs_version=None, tests=[]):
65 """Run the gyp tests for a given format, emitting annotator tags. 67 """Run the gyp tests for a given format, emitting annotator tags.
66 68
67 See annotator docs at: 69 See annotator docs at:
68 https://sites.google.com/a/chromium.org/dev/developers/testing/chromium-buil d-infrastructure/buildbot-annotations 70 https://sites.google.com/a/chromium.org/dev/developers/testing/chromium-buil d-infrastructure/buildbot-annotations
69 Args: 71 Args:
70 format: gyp format to test. 72 format: gyp format to test.
71 Returns: 73 Returns:
72 0 for sucesss, 1 for failure. 74 0 for sucesss, 1 for failure.
73 """ 75 """
74 if not format: 76 if not format:
75 format = title 77 format = title
76 78
77 print '@@@BUILD_STEP ' + title + '@@@' 79 print('@@@BUILD_STEP ' + title + '@@@')
78 sys.stdout.flush() 80 sys.stdout.flush()
79 env = os.environ.copy() 81 env = os.environ.copy()
80 if msvs_version: 82 if msvs_version:
81 env['GYP_MSVS_VERSION'] = msvs_version 83 env['GYP_MSVS_VERSION'] = msvs_version
82 command = ' '.join( 84 command = ' '.join(
83 [sys.executable, 'gyp/gyptest.py', 85 [sys.executable, 'gyp/gyptest.py',
84 '--all', 86 '--all',
85 '--passed', 87 '--passed',
86 '--format', format, 88 '--format', format,
87 '--path', CMAKE_BIN_DIR, 89 '--path', CMAKE_BIN_DIR,
88 '--chdir', 'gyp'] + tests) 90 '--chdir', 'gyp'] + tests)
89 retcode = subprocess.call(command, cwd=ROOT_DIR, env=env, shell=True) 91 retcode = subprocess.call(command, cwd=ROOT_DIR, env=env, shell=True)
90 if retcode: 92 if retcode:
91 # Emit failure tag, and keep going. 93 # Emit failure tag, and keep going.
92 print '@@@STEP_FAILURE@@@' 94 print('@@@STEP_FAILURE@@@')
93 return 1 95 return 1
94 return 0 96 return 0
95 97
96 98
97 def GypBuild(): 99 def GypBuild():
98 # Dump out/ directory. 100 # Dump out/ directory.
99 print '@@@BUILD_STEP cleanup@@@' 101 print('@@@BUILD_STEP cleanup@@@')
100 print 'Removing %s...' % OUT_DIR 102 print('Removing %s...' % OUT_DIR)
101 shutil.rmtree(OUT_DIR, ignore_errors=True) 103 shutil.rmtree(OUT_DIR, ignore_errors=True)
102 print 'Done.' 104 print('Done.')
103 105
104 retcode = 0 106 retcode = 0
105 if sys.platform.startswith('linux'): 107 if sys.platform.startswith('linux'):
106 retcode += GypTestFormat('ninja') 108 retcode += GypTestFormat('ninja')
107 retcode += GypTestFormat('make') 109 retcode += GypTestFormat('make')
108 PrepareCmake() 110 PrepareCmake()
109 retcode += GypTestFormat('cmake') 111 retcode += GypTestFormat('cmake')
110 elif sys.platform == 'darwin': 112 elif sys.platform == 'darwin':
111 retcode += GypTestFormat('ninja') 113 retcode += GypTestFormat('ninja')
112 retcode += GypTestFormat('xcode') 114 retcode += GypTestFormat('xcode')
113 retcode += GypTestFormat('make') 115 retcode += GypTestFormat('make')
114 elif sys.platform == 'win32': 116 elif sys.platform == 'win32':
115 retcode += GypTestFormat('ninja') 117 retcode += GypTestFormat('ninja')
116 if os.environ['BUILDBOT_BUILDERNAME'] == 'gyp-win64': 118 if os.environ['BUILDBOT_BUILDERNAME'] == 'gyp-win64':
117 retcode += GypTestFormat('msvs-ninja-2013', format='msvs-ninja', 119 retcode += GypTestFormat('msvs-ninja-2013', format='msvs-ninja',
118 msvs_version='2013', 120 msvs_version='2013',
119 tests=[ 121 tests=[
120 r'test\generator-output\gyptest-actions.py', 122 r'test\generator-output\gyptest-actions.py',
121 r'test\generator-output\gyptest-relocate.py', 123 r'test\generator-output\gyptest-relocate.py',
122 r'test\generator-output\gyptest-rules.py']) 124 r'test\generator-output\gyptest-rules.py'])
123 retcode += GypTestFormat('msvs-2013', format='msvs', msvs_version='2013') 125 retcode += GypTestFormat('msvs-2013', format='msvs', msvs_version='2013')
124 else: 126 else:
125 raise Exception('Unknown platform') 127 raise Exception('Unknown platform')
126 if retcode: 128 if retcode:
127 # TODO(bradnelson): once the annotator supports a postscript (section for 129 # TODO(bradnelson): once the annotator supports a postscript (section for
128 # after the build proper that could be used for cumulative failures), 130 # after the build proper that could be used for cumulative failures),
129 # use that instead of this. This isolates the final return value so 131 # use that instead of this. This isolates the final return value so
130 # that it isn't misattributed to the last stage. 132 # that it isn't misattributed to the last stage.
131 print '@@@BUILD_STEP failures@@@' 133 print('@@@BUILD_STEP failures@@@')
132 sys.exit(retcode) 134 sys.exit(retcode)
133 135
134 136
135 if __name__ == '__main__': 137 if __name__ == '__main__':
136 GypBuild() 138 GypBuild()
OLDNEW
« no previous file with comments | « PRESUBMIT.py ('k') | gyptest.py » ('j') | pylib/gyp/MSVSNew.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698