OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 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 | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 """This module uprevs Chrome for cbuildbot. | 7 """This module uprevs Chrome for cbuildbot. |
8 | 8 |
9 After calling, it prints outs CHROME_VERSION_ATOM=(version atom string). A | 9 After calling, it prints outs CHROME_VERSION_ATOM=(version atom string). A |
10 caller could then use this atom with emerge to build the newly uprevved version | 10 caller could then use this atom with emerge to build the newly uprevved version |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 Returns: | 94 Returns: |
95 Latest version string. | 95 Latest version string. |
96 """ | 96 """ |
97 buildspec_url = 'http://src.chromium.org/svn/releases' | 97 buildspec_url = 'http://src.chromium.org/svn/releases' |
98 svn_ls = RunCommand(['svn', 'ls', buildspec_url], redirect_stdout=True) | 98 svn_ls = RunCommand(['svn', 'ls', buildspec_url], redirect_stdout=True) |
99 sorted_ls = RunCommand(['sort', '--version-sort'], input=svn_ls, | 99 sorted_ls = RunCommand(['sort', '--version-sort'], input=svn_ls, |
100 redirect_stdout=True) | 100 redirect_stdout=True) |
101 if branch: | 101 if branch: |
102 chrome_version_re = re.compile('^%s\.\d+.*' % branch) | 102 chrome_version_re = re.compile('^%s\.\d+.*' % branch) |
103 else: | 103 else: |
104 chrome_version_re = re.compile('^[0-9]\..*') | 104 chrome_version_re = re.compile('^[0-9]+\..*') |
105 for chrome_version in sorted_ls.splitlines(): | 105 for chrome_version in sorted_ls.splitlines(): |
106 if chrome_version_re.match(chrome_version): | 106 if chrome_version_re.match(chrome_version): |
107 current_version = chrome_version | 107 current_version = chrome_version |
108 | 108 |
109 return current_version.rstrip('/') | 109 return current_version.rstrip('/') |
110 | 110 |
111 | 111 |
112 def _GetStickyEBuild(stable_ebuilds): | 112 def _GetStickyEBuild(stable_ebuilds): |
113 """Returns the sticky ebuild.""" | 113 """Returns the sticky ebuild.""" |
114 sticky_ebuilds = [] | 114 sticky_ebuilds = [] |
(...skipping 24 matching lines...) Expand all Loading... |
139 | 139 |
140 def __cmp__(self, other): | 140 def __cmp__(self, other): |
141 """Use ebuild paths for comparison.""" | 141 """Use ebuild paths for comparison.""" |
142 if self.ebuild_path == other.ebuild_path: | 142 if self.ebuild_path == other.ebuild_path: |
143 return 0 | 143 return 0 |
144 elif self.ebuild_path > other.ebuild_path: | 144 elif self.ebuild_path > other.ebuild_path: |
145 return 1 | 145 return 1 |
146 else: | 146 else: |
147 return (-1) | 147 return (-1) |
148 | 148 |
| 149 def __str__(self): |
| 150 return self.ebuild_path |
| 151 |
149 | 152 |
150 def FindChromeCandidates(overlay_dir): | 153 def FindChromeCandidates(overlay_dir): |
151 """Return a tuple of chrome's unstable ebuild and stable ebuilds. | 154 """Return a tuple of chrome's unstable ebuild and stable ebuilds. |
152 | 155 |
153 Args: | 156 Args: |
154 overlay_dir: The path to chrome's portage overlay dir. | 157 overlay_dir: The path to chrome's portage overlay dir. |
155 Returns: | 158 Returns: |
156 Tuple [unstable_ebuild, stable_ebuilds]. | 159 Tuple [unstable_ebuild, stable_ebuilds]. |
157 Raises: | 160 Raises: |
158 Exception: if no unstable ebuild exists for Chrome. | 161 Exception: if no unstable ebuild exists for Chrome. |
159 """ | 162 """ |
160 stable_ebuilds = [] | 163 stable_ebuilds = [] |
161 unstable_ebuilds = [] | 164 unstable_ebuilds = [] |
162 for path in [ | 165 for path in [ |
163 os.path.join(overlay_dir, entry) for entry in os.listdir(overlay_dir)]: | 166 os.path.join(overlay_dir, entry) for entry in os.listdir(overlay_dir)]: |
164 if path.endswith('.ebuild'): | 167 if path.endswith('.ebuild'): |
165 ebuild = ChromeEBuild(path) | 168 ebuild = ChromeEBuild(path) |
166 if not ebuild.chrome_version: | 169 if not ebuild.chrome_version: |
167 Warning('Poorly formatted ebuild found at %s' % path) | 170 Warning('Poorly formatted ebuild found at %s' % path) |
168 else: | 171 else: |
169 if not ebuild.is_stable: | 172 if '9999' in ebuild.version: |
170 unstable_ebuilds.append(ebuild) | 173 unstable_ebuilds.append(ebuild) |
171 else: | 174 else: |
172 stable_ebuilds.append(ebuild) | 175 stable_ebuilds.append(ebuild) |
173 | 176 |
174 # Apply some sanity checks. | 177 # Apply some sanity checks. |
175 if not unstable_ebuilds: | 178 if not unstable_ebuilds: |
176 raise Exception('Missing 9999 ebuild for %s' % overlay_dir) | 179 raise Exception('Missing 9999 ebuild for %s' % overlay_dir) |
177 if not stable_ebuilds: | 180 if not stable_ebuilds: |
178 Warning('Missing stable ebuild for %s' % overlay_dir) | 181 Warning('Missing stable ebuild for %s' % overlay_dir) |
179 | 182 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 unstable_ebuild.ebuild_path, new_ebuild_path, 'CROS_SVN_COMMIT', commit, | 268 unstable_ebuild.ebuild_path, new_ebuild_path, 'CROS_SVN_COMMIT', commit, |
266 make_stable=False) | 269 make_stable=False) |
267 new_ebuild = ChromeEBuild(new_ebuild_path) | 270 new_ebuild = ChromeEBuild(new_ebuild_path) |
268 if stable_candidate and ( | 271 if stable_candidate and ( |
269 stable_candidate.chrome_version == new_ebuild.chrome_version): | 272 stable_candidate.chrome_version == new_ebuild.chrome_version): |
270 if 0 == RunCommand(['diff', '-Bu', stable_candidate.ebuild_path, | 273 if 0 == RunCommand(['diff', '-Bu', stable_candidate.ebuild_path, |
271 new_ebuild_path], | 274 new_ebuild_path], |
272 redirect_stderr=True, | 275 redirect_stderr=True, |
273 redirect_stdout=True, | 276 redirect_stdout=True, |
274 exit_code=True): | 277 exit_code=True): |
| 278 Info('Previous ebuild with same version found and no 9999 changes found.' |
| 279 ' Nothing to do.') |
275 os.unlink(new_ebuild_path) | 280 os.unlink(new_ebuild_path) |
276 return None | 281 return None |
277 | 282 |
278 RunCommand(['git', 'add', new_ebuild_path]) | 283 RunCommand(['git', 'add', new_ebuild_path]) |
279 if stable_candidate and stable_candidate != sticky_ebuild: | 284 if stable_candidate and stable_candidate != sticky_ebuild: |
280 RunCommand(['git', 'rm', stable_candidate.ebuild_path]) | 285 RunCommand(['git', 'rm', stable_candidate.ebuild_path]) |
281 | 286 |
282 cros_mark_as_stable.EBuildStableMarker.CommitChange( | 287 cros_mark_as_stable.EBuildStableMarker.CommitChange( |
283 _GIT_COMMIT_MESSAGE % {'chrome_rev': chrome_rev, | 288 _GIT_COMMIT_MESSAGE % {'chrome_rev': chrome_rev, |
284 'chrome_version': chrome_version}) | 289 'chrome_version': chrome_version}) |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 print 'CHROME_VERSION_ATOM=%s' % chrome_version_atom | 340 print 'CHROME_VERSION_ATOM=%s' % chrome_version_atom |
336 else: | 341 else: |
337 work_branch.Delete() | 342 work_branch.Delete() |
338 except: | 343 except: |
339 work_branch.Delete() | 344 work_branch.Delete() |
340 raise | 345 raise |
341 | 346 |
342 | 347 |
343 if __name__ == '__main__': | 348 if __name__ == '__main__': |
344 main() | 349 main() |
OLD | NEW |