OLD | NEW |
1 # This Source Code Form is subject to the terms of the Mozilla Public | 1 # This Source Code Form is subject to the terms of the Mozilla Public |
2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
4 | 4 |
5 import os | 5 import os |
6 import sys | 6 import sys |
7 import re | 7 import re |
8 import hashlib | 8 import hashlib |
9 import base64 | 9 import base64 |
10 import urllib | 10 import urllib |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 params['jsonRequires'][name[len(prefix):]] = json.loads(content) | 230 params['jsonRequires'][name[len(prefix):]] = json.loads(content) |
231 for name in params['jsonRequires'].iterkeys(): | 231 for name in params['jsonRequires'].iterkeys(): |
232 del files[prefix + name] | 232 del files[prefix + name] |
233 | 233 |
234 | 234 |
235 def addMissingFiles(params, files): | 235 def addMissingFiles(params, files): |
236 templateData = { | 236 templateData = { |
237 'hasChrome': False, | 237 'hasChrome': False, |
238 'hasChromeRequires': False, | 238 'hasChromeRequires': False, |
239 'hasShutdownHandlers': False, | 239 'hasShutdownHandlers': False, |
240 'hasXMLHttpRequest': False, | |
241 'chromeWindows': [], | 240 'chromeWindows': [], |
242 'requires': set(), | 241 'requires': set(), |
243 'jsonRequires': params['jsonRequires'], | 242 'jsonRequires': params['jsonRequires'], |
244 'metadata': params['metadata'], | 243 'metadata': params['metadata'], |
245 'multicompartment': params['multicompartment'], | 244 'multicompartment': params['multicompartment'], |
246 'applications': dict((v, k) for k, v in KNOWN_APPS.iteritems()), | 245 'applications': dict((v, k) for k, v in KNOWN_APPS.iteritems()), |
247 } | 246 } |
248 | 247 |
249 def checkScript(name): | 248 def checkScript(name): |
250 content = files[name] | 249 content = files[name] |
251 for match in re.finditer(r'(?:^|\s)require\(\s*"([\w\-]+)"\s*\)', conten
t): | 250 for match in re.finditer(r'(?:^|\s)require\(\s*"([\w\-]+)"\s*\)', conten
t): |
252 templateData['requires'].add(match.group(1)) | 251 templateData['requires'].add(match.group(1)) |
253 if name.startswith('chrome/content/'): | 252 if name.startswith('chrome/content/'): |
254 templateData['hasChromeRequires'] = True | 253 templateData['hasChromeRequires'] = True |
255 if name.startswith('lib/') and re.search(r'\bXMLHttpRequest\b', content)
: | |
256 templateData['hasXMLHttpRequest'] = True | |
257 if not '/' in name or name.startswith('lib/'): | 254 if not '/' in name or name.startswith('lib/'): |
258 if re.search(r'(?:^|\s)onShutdown\.', content): | 255 if re.search(r'(?:^|\s)onShutdown\.', content): |
259 templateData['hasShutdownHandlers'] = True | 256 templateData['hasShutdownHandlers'] = True |
260 | 257 |
261 for name, content in files.iteritems(): | 258 for name, content in files.iteritems(): |
262 if name == 'chrome.manifest': | 259 if name == 'chrome.manifest': |
263 templateData['hasChrome'] = True | 260 templateData['hasChrome'] = True |
264 elif name.endswith('.js'): | 261 elif name.endswith('.js'): |
265 checkScript(name) | 262 checkScript(name) |
266 elif name.endswith('.xul'): | 263 elif name.endswith('.xul'): |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 addMissingFiles(params, files) | 326 addMissingFiles(params, files) |
330 if metadata.has_section('preprocess'): | 327 if metadata.has_section('preprocess'): |
331 files.preprocess([f for f, _ in metadata.items('preprocess')]) | 328 files.preprocess([f for f, _ in metadata.items('preprocess')]) |
332 files.zip(outFile, sortKey=lambda x: '!' if x == 'META-INF/zigbert.rsa' else
x) | 329 files.zip(outFile, sortKey=lambda x: '!' if x == 'META-INF/zigbert.rsa' else
x) |
333 | 330 |
334 | 331 |
335 def autoInstall(baseDir, type, host, port, multicompartment=False): | 332 def autoInstall(baseDir, type, host, port, multicompartment=False): |
336 fileBuffer = StringIO() | 333 fileBuffer = StringIO() |
337 createBuild(baseDir, type=type, outFile=fileBuffer, multicompartment=multico
mpartment) | 334 createBuild(baseDir, type=type, outFile=fileBuffer, multicompartment=multico
mpartment) |
338 urllib.urlopen('http://%s:%s/' % (host, port), data=fileBuffer.getvalue()) | 335 urllib.urlopen('http://%s:%s/' % (host, port), data=fileBuffer.getvalue()) |
OLD | NEW |