OLD | NEW |
| (Empty) |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 from buildbot.changes import svnpoller | |
6 | |
7 from common import chromium_utils | |
8 | |
9 from master import build_utils | |
10 from master import gitiles_poller | |
11 | |
12 import config | |
13 | |
14 def ChromeTreeFileSplitter(path): | |
15 """split_file for the 'src' project in the trunk.""" | |
16 | |
17 # Exclude .DEPS.git from triggering builds on chrome. | |
18 if path == 'src/.DEPS.git': | |
19 return None | |
20 | |
21 # List of projects we are interested in. The project names must exactly | |
22 # match paths in the Subversion repository, relative to the 'path' URL | |
23 # argument. build_utils.SplitPath() will use them as branch names to | |
24 # kick off the Schedulers for different projects. | |
25 projects = ['src'] | |
26 return build_utils.SplitPath(projects, path) | |
27 | |
28 | |
29 class _ChromiumSvnPoller(svnpoller.SVNPoller): | |
30 def __init__(self, svnurl=None, svnbin=None, split_file=None, | |
31 pollinterval=None, revlinktmpl=None, | |
32 *args, **kwargs): | |
33 if svnurl is None: | |
34 svnurl = config.Master.trunk_url | |
35 | |
36 if svnbin is None: | |
37 svnbin = chromium_utils.SVN_BIN | |
38 | |
39 if split_file is None: | |
40 split_file = ChromeTreeFileSplitter | |
41 | |
42 if revlinktmpl is None: | |
43 revlinktmpl = ( | |
44 'http://src.chromium.org/viewvc/chrome?view=rev&revision=%s') | |
45 | |
46 if pollinterval is None: | |
47 pollinterval = 10 | |
48 | |
49 svnpoller.SVNPoller.__init__( | |
50 self, svnurl=svnurl, svnbin=svnbin, split_file=split_file, | |
51 pollinterval=pollinterval, revlinktmpl=revlinktmpl, *args, **kwargs) | |
52 | |
53 | |
54 def ChromiumChangeFilter(commit_json, branch): | |
55 if 'tree_diff' not in commit_json: | |
56 return True | |
57 if (len(commit_json.get('tree_diff', [])) == 1 and | |
58 commit_json['tree_diff'][0]['new_path'] == '.DEPS.git'): | |
59 return False | |
60 return True | |
61 | |
62 | |
63 def ChromiumSvnPoller(svnurl=None, *args, **kwargs): | |
64 cachepath = kwargs.pop('cachepath', None) | |
65 change_filter = kwargs.pop('change_filter', ChromiumChangeFilter) | |
66 pollInterval = kwargs.pop('pollinterval', 10) | |
67 project = kwargs.pop('project', None) | |
68 if svnurl is None: | |
69 svnurl = config.Master.trunk_url | |
70 if svnurl == config.Master.trunk_url and not args and not kwargs: | |
71 poller_kwargs = { | |
72 'repo_url': config.Master.git_server_url + '/chromium/src', | |
73 'branches': ['master'], | |
74 'revlinktmpl': | |
75 'http://src.chromium.org/viewvc/chrome?view=rev&revision=%s', | |
76 'pollInterval': pollInterval, | |
77 'svn_mode': False, | |
78 'change_filter': change_filter, | |
79 } | |
80 if project and project != 'src': | |
81 poller_kwargs['svn_branch'] = 'src' | |
82 return gitiles_poller.GitilesPoller(**poller_kwargs) | |
83 kwargs.update([ | |
84 ('cachepath', cachepath), | |
85 ('pollinterval', pollInterval), | |
86 ('project', project), | |
87 ]) | |
88 return _ChromiumSvnPoller(svnurl, *args, **kwargs) | |
OLD | NEW |