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

Side by Side Diff: build/android/install_emulator_deps.py

Issue 116493002: build/android/install_emulator_deps.py: run kvm-ok as root when needed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Only run kvm-ok (as root) after installing packages, probe for /dev/kvm directly before that. Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
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) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 The Chromium Authors. 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 """Installs deps for using SDK emulator for testing. 6 """Installs deps for using SDK emulator for testing.
7 7
8 The script will download the SDK and system images, if they are not present, and 8 The script will download the SDK and system images, if they are not present, and
9 install and enable KVM, if virtualization has been enabled in the BIOS. 9 install and enable KVM, if virtualization has been enabled in the BIOS.
10 """ 10 """
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 True if sdk/system-images/android-<api_level>/x86 exists inside 87 True if sdk/system-images/android-<api_level>/x86 exists inside
88 EMULATOR_SDK_ROOT. 88 EMULATOR_SDK_ROOT.
89 """ 89 """
90 api_target = 'android-%d' % api_level 90 api_target = 'android-%d' % api_level
91 return os.path.exists(os.path.join(constants.EMULATOR_SDK_ROOT, 91 return os.path.exists(os.path.join(constants.EMULATOR_SDK_ROOT,
92 'sdk', 'system-images', 92 'sdk', 'system-images',
93 api_target, 'x86')) 93 api_target, 'x86'))
94 94
95 95
96 def CheckKVM(): 96 def CheckKVM():
97 """Check if KVM is enabled. 97 """Quickly check whether KVM is enabled.
98 98
99 Returns: 99 Returns:
100 True if kvm-ok returns 0 (already enabled) 100 True iff /dev/kvm exists (Linux only).
101 """
102 return os.path.exists('/dev/kvm')
103
104
105 def RunKvmOk():
106 """Run kvm-ok as root to check that KVM is properly enabled after installation
107 of the required packages.
108
109 Returns:
110 True iff KVM is enabled (/dev/kvm exists). On failure, returns False
111 but also print detailed information explaining why KVM isn't enabled
112 (e.g. CPU doesn't support it, or BIOS disabled it).
101 """ 113 """
102 try: 114 try:
103 return not cmd_helper.RunCmd(['kvm-ok']) 115 # Note: kvm-ok is in /usr/sbin, so always use 'sudo' to run it.
116 return not cmd_helper.RunCmd(['sudo', 'kvm-ok'])
104 except OSError: 117 except OSError:
105 logging.info('kvm-ok not installed') 118 logging.info('kvm-ok not installed')
106 return False 119 return False
107 120
108 121
109 def GetSDK(): 122 def GetSDK():
110 """Download the SDK and unzip it into EMULATOR_SDK_ROOT.""" 123 """Download the SDK and unzip it into EMULATOR_SDK_ROOT."""
111 logging.info('Download Android SDK.') 124 logging.info('Download Android SDK.')
112 sdk_url = '%s/%s' % (SDK_BASE_URL, SDK_ZIP) 125 sdk_url = '%s/%s' % (SDK_BASE_URL, SDK_ZIP)
113 try: 126 try:
(...skipping 14 matching lines...) Expand all
128 def InstallKVM(): 141 def InstallKVM():
129 """Installs KVM packages.""" 142 """Installs KVM packages."""
130 rc = cmd_helper.RunCmd(['sudo', 'apt-get', 'install', 'kvm']) 143 rc = cmd_helper.RunCmd(['sudo', 'apt-get', 'install', 'kvm'])
131 if rc: 144 if rc:
132 logging.critical('ERROR: Did not install KVM. Make sure hardware ' 145 logging.critical('ERROR: Did not install KVM. Make sure hardware '
133 'virtualization is enabled in BIOS (i.e. Intel VT-x or ' 146 'virtualization is enabled in BIOS (i.e. Intel VT-x or '
134 'AMD SVM).') 147 'AMD SVM).')
135 # TODO(navabi): Use modprobe kvm-amd on AMD processors. 148 # TODO(navabi): Use modprobe kvm-amd on AMD processors.
136 rc = cmd_helper.RunCmd(['sudo', 'modprobe', 'kvm-intel']) 149 rc = cmd_helper.RunCmd(['sudo', 'modprobe', 'kvm-intel'])
137 if rc: 150 if rc:
138 logging.critical('ERROR: Did not add KVM module to Linux Kernal. Make sure ' 151 logging.critical('ERROR: Did not add KVM module to Linux Kernel. Make sure '
139 'hardware virtualization is enabled in BIOS.') 152 'hardware virtualization is enabled in BIOS.')
140 # Now check to ensure KVM acceleration can be used. 153 # Now check to ensure KVM acceleration can be used.
141 rc = cmd_helper.RunCmd(['kvm-ok']) 154 if not RunKvmOk():
142 if rc:
143 logging.critical('ERROR: Can not use KVM acceleration. Make sure hardware ' 155 logging.critical('ERROR: Can not use KVM acceleration. Make sure hardware '
144 'virtualization is enabled in BIOS (i.e. Intel VT-x or ' 156 'virtualization is enabled in BIOS (i.e. Intel VT-x or '
145 'AMD SVM).') 157 'AMD SVM).')
146 158
147 159
148 def GetX86Image(api_level=DEFAULT_ANDROID_API_LEVEL): 160 def GetX86Image(api_level=DEFAULT_ANDROID_API_LEVEL):
149 """Download x86 system image from Intel's website. 161 """Download x86 system image from Intel's website.
150 162
151 Args: 163 Args:
152 api_level: the Android API level to download for. 164 api_level: the Android API level to download for.
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 265
254 # Make sure KVM packages are installed and enabled. 266 # Make sure KVM packages are installed and enabled.
255 if CheckKVM(): 267 if CheckKVM():
256 logging.info('KVM already installed and enabled.') 268 logging.info('KVM already installed and enabled.')
257 else: 269 else:
258 InstallKVM() 270 InstallKVM()
259 271
260 272
261 if __name__ == '__main__': 273 if __name__ == '__main__':
262 sys.exit(main(sys.argv)) 274 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698