OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
| 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. |
| 6 |
3 import errno | 7 import errno |
4 import optparse | 8 import optparse |
5 import os | 9 import os |
6 import shutil | 10 import shutil |
7 import subprocess | 11 import subprocess |
| 12 import sys |
8 | 13 |
9 from cbuildbot_config import config | 14 from cbuildbot_config import config |
10 | 15 |
11 # Utility functions | 16 # Utility functions |
12 | 17 |
13 def RunCommand(cmd, error_ok=False, error_message=None, exit_code=False, | 18 def RunCommand(cmd, error_ok=False, error_message=None, exit_code=False, |
14 redirect_stdout=False, redirect_stderr=False, cwd=None, | 19 redirect_stdout=False, redirect_stderr=False, cwd=None, |
15 input=None): | 20 input=None): |
16 # Useful for debugging: | 21 # Print out the command before running. |
17 # print >>sys.stderr, "RunCommand:", ' '.join(cmd) | 22 print >>sys.stderr, "CBUILDBOT -- RunCommand:", ' '.join(cmd) |
18 if redirect_stdout: | 23 if redirect_stdout: |
19 stdout = subprocess.PIPE | 24 stdout = subprocess.PIPE |
20 else: | 25 else: |
21 stdout = None | 26 stdout = None |
22 if redirect_stderr: | 27 if redirect_stderr: |
23 stderr = subprocess.PIPE | 28 stderr = subprocess.PIPE |
24 else: | 29 else: |
25 stderr = None | 30 stderr = None |
26 if input: | 31 if input: |
27 stdin = subprocess.PIPE | 32 stdin = subprocess.PIPE |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 buildconfig = {} | 102 buildconfig = {} |
98 if config.has_key(config_name): | 103 if config.has_key(config_name): |
99 buildconfig = config[config_name] | 104 buildconfig = config[config_name] |
100 for key in default.iterkeys(): | 105 for key in default.iterkeys(): |
101 if not buildconfig.has_key(key): | 106 if not buildconfig.has_key(key): |
102 buildconfig[key] = default[key] | 107 buildconfig[key] = default[key] |
103 return buildconfig | 108 return buildconfig |
104 | 109 |
105 def main(): | 110 def main(): |
106 # Parse options | 111 # Parse options |
107 parser = optparse.OptionParser() | 112 usage = "usage: %prog [options] cbuildbot_config" |
| 113 parser = optparse.OptionParser(usage=usage) |
108 parser.add_option('-r', '--buildroot', | 114 parser.add_option('-r', '--buildroot', |
109 help='root directory where build occurs', default=".") | 115 help='root directory where build occurs', default=".") |
110 parser.add_option('-n', '--buildnumber', | 116 parser.add_option('-n', '--buildnumber', |
111 help='build number', type='int', default=0) | 117 help='build number', type='int', default=0) |
112 (options, args) = parser.parse_args() | 118 (options, args) = parser.parse_args() |
113 | 119 |
114 buildroot = options.buildroot | 120 buildroot = options.buildroot |
115 buildconfig = _GetConfig(args[0]) | 121 if len(args) == 1: |
116 | 122 buildconfig = _GetConfig(args[0]) |
| 123 else: |
| 124 print >>sys.stderr, "Missing configuration description" |
| 125 parser.print_usage() |
| 126 sys.exit(1) |
117 try: | 127 try: |
118 if not os.path.isdir(buildroot): | 128 if not os.path.isdir(buildroot): |
119 _FullCheckout(buildroot) | 129 _FullCheckout(buildroot) |
120 else: | 130 else: |
121 _IncrementalCheckout(buildroot) | 131 _IncrementalCheckout(buildroot) |
122 chroot_path = os.path.join(buildroot, 'chroot') | 132 chroot_path = os.path.join(buildroot, 'chroot') |
123 if not os.path.isdir(chroot_path): | 133 if not os.path.isdir(chroot_path): |
124 _MakeChroot(buildroot) | 134 _MakeChroot(buildroot) |
125 boardpath = os.path.join(chroot_path, 'build', buildconfig['board']) | 135 boardpath = os.path.join(chroot_path, 'build', buildconfig['board']) |
126 if not os.path.isdir(boardpath): | 136 if not os.path.isdir(boardpath): |
127 _SetupBoard(buildroot, board=buildconfig['board']) | 137 _SetupBoard(buildroot, board=buildconfig['board']) |
128 if buildconfig['uprev']: | 138 if buildconfig['uprev']: |
129 _UprevPackages(buildroot) | 139 _UprevPackages(buildroot) |
130 _Build(buildroot) | 140 _Build(buildroot) |
131 if buildconfig['uprev']: | 141 if buildconfig['uprev']: |
132 _UprevPush(buildroot) | 142 _UprevPush(buildroot) |
133 _UprevCleanup(buildroot) | 143 _UprevCleanup(buildroot) |
134 except: | 144 except: |
135 # something went wrong, cleanup (being paranoid) for next build | 145 # something went wrong, cleanup (being paranoid) for next build |
136 RunCommand(['sudo', 'rm', '-rf', buildroot]) | 146 RunCommand(['sudo', 'rm', '-rf', buildroot]) |
137 raise | 147 raise |
138 | 148 |
139 if __name__ == '__main__': | 149 if __name__ == '__main__': |
140 main() | 150 main() |
OLD | NEW |