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

Side by Side Diff: configs/chromium/slave/run_slave.py

Issue 648353002: Remove Skia's forked buildbot code (Closed) Base URL: https://skia.googlesource.com/buildbot.git@master
Patch Set: Address comment Created 6 years, 2 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 | « configs/chromium/slave/run_slave.bat ('k') | configs/chromium/slave/run_webserver.bat » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """ Initialize the environment variables and start the buildbot slave.
7 """
8
9 import os
10 import subprocess
11 import sys
12
13
14 def remove_all_vars_except(dictionary, keep):
15 """Remove all keys from the specified dictionary except those in !keep|"""
16 for key in set(dictionary.keys()) - set(keep):
17 dictionary.pop(key)
18
19
20 def Reboot():
21 print "Rebooting..."
22 if sys.platform.startswith('win'):
23 subprocess.call(['shutdown', '-r', '-f', '-t', '1'])
24 elif sys.platform in ('darwin', 'posix', 'linux2'):
25 subprocess.call(['sudo', 'shutdown', '-r', 'now'])
26 else:
27 raise NotImplementedError('Implement Reboot function')
28
29
30 def HotPatchSlaveBuilder():
31 """We could override the SlaveBuilder class but it's way simpler to just
32 hotpatch it."""
33 from buildbot.slave.bot import SlaveBuilder
34 old_remote_shutdown = SlaveBuilder.remote_shutdown
35
36 def rebooting_remote_shutdown(self):
37 old_remote_shutdown(self)
38 Reboot()
39
40 SlaveBuilder.remote_shutdown = rebooting_remote_shutdown
41
42
43 def main():
44 # change the current directory to the directory of the script.
45 os.chdir(sys.path[0])
46
47 # Make sure the current python path is absolute.
48 paths = os.environ['PYTHONPATH'].split(os.pathsep)
49 os.environ['PYTHONPATH'] = ''
50 for path in paths:
51 os.environ['PYTHONPATH'] += os.path.abspath(path)
52 os.environ['PYTHONPATH'] += os.pathsep
53
54 # Update the python path.
55 parent_dir = os.path.abspath(os.path.pardir)
56 chromium_buildbot_dir = os.path.join(
57 parent_dir, os.path.pardir, os.path.pardir,
58 'third_party', 'chromium_buildbot')
59 root = os.path.dirname(parent_dir)
60 python_path = [
61 os.path.join(chromium_buildbot_dir, 'site_config'),
62 os.path.join(chromium_buildbot_dir, 'scripts'),
63 os.path.join(chromium_buildbot_dir, 'scripts', 'release'),
64 os.path.join(chromium_buildbot_dir, 'third_party'),
65 os.path.join(parent_dir),
66 '.', # Include the current working directory by default.
67 ]
68 os.environ['PYTHONPATH'] += os.pathsep.join(python_path)
69 print os.environ['PYTHONPATH']
70
71 # Add these in from of the PATH too.
72 new_path = python_path
73 new_path.extend(sys.path)
74 sys.path = new_path
75
76 os.environ['CHROME_HEADLESS'] = '1'
77 os.environ['PAGER'] = 'cat'
78
79 # Platform-specific initialization.
80
81 if sys.platform.startswith('win'):
82 # list of all variables that we want to keep
83 env_var = [
84 'APPDATA',
85 'BUILDBOT_ARCHIVE_FORCE_SSH',
86 'CHROME_HEADLESS',
87 'CHROMIUM_BUILD',
88 'COMSPEC',
89 'COMPUTERNAME',
90 'DXSDK_DIR',
91 'HOMEDRIVE',
92 'HOMEPATH',
93 'LOCALAPPDATA',
94 'NUMBER_OF_PROCESSORS',
95 'OS',
96 'PATH',
97 'PATHEXT',
98 'PROCESSOR_ARCHITECTURE',
99 'PROCESSOR_ARCHITEW6432',
100 'PROGRAMFILES',
101 'PROGRAMW6432',
102 'PYTHONPATH',
103 'SYSTEMDRIVE',
104 'SYSTEMROOT',
105 'TEMP',
106 'TMP',
107 'USERNAME',
108 'USERDOMAIN',
109 'USERPROFILE',
110 'VS100COMNTOOLS',
111 'WINDIR',
112 ]
113
114 remove_all_vars_except(os.environ, env_var)
115
116 # extend the env variables with the chrome-specific settings.
117 depot_tools = os.path.join(chromium_buildbot_dir, '..', 'depot_tools')
118 # Reuse the python executable used to start this script.
119 python = os.path.dirname(sys.executable)
120 system32 = os.path.join(os.environ['SYSTEMROOT'], 'system32')
121 wbem = os.path.join(system32, 'WBEM')
122 slave_path = [depot_tools, python, system32, wbem]
123 # build_internal/tools contains tools we can't redistribute.
124 tools = os.path.join(chromium_buildbot_dir, '..', 'build_internal', 'tools')
125 if os.path.isdir(tools):
126 slave_path.append(os.path.abspath(tools))
127 os.environ['PATH'] = os.pathsep.join(slave_path)
128 os.environ['LOGNAME'] = os.environ['USERNAME']
129
130 elif sys.platform in ('darwin', 'posix', 'linux2'):
131 # list of all variables that we want to keep
132 env_var = [
133 'CCACHE_DIR',
134 'CHROME_ALLOCATOR',
135 'CHROME_HEADLESS',
136 'DISPLAY',
137 'DISTCC_DIR',
138 'HOME',
139 'HOSTNAME',
140 'LANG',
141 'LOGNAME',
142 'PAGER',
143 'PATH',
144 'PWD',
145 'PYTHONPATH',
146 'SHELL',
147 'SSH_AGENT_PID',
148 'SSH_AUTH_SOCK',
149 'SSH_CLIENT',
150 'SSH_CONNECTION',
151 'SSH_TTY',
152 'USER',
153 'USERNAME',
154 ]
155
156 remove_all_vars_except(os.environ, env_var)
157
158 depot_tools = os.path.join(chromium_buildbot_dir, '..', 'depot_tools')
159
160 slave_path = [depot_tools, '/usr/bin', '/bin',
161 '/usr/sbin', '/sbin', '/usr/local/bin']
162 os.environ['PATH'] = os.pathsep.join(slave_path)
163
164 elif sys.platform == 'cygwin':
165 #TODO(maruel): Implement me.
166 pass
167 else:
168 raise NotImplementedError('Unknown platform')
169
170 # Run the slave.
171 HotPatchSlaveBuilder()
172 import twisted.scripts.twistd as twistd
173 twistd.run()
174
175
176 if '__main__' == __name__:
177 main()
OLDNEW
« no previous file with comments | « configs/chromium/slave/run_slave.bat ('k') | configs/chromium/slave/run_webserver.bat » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698