Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: abp_rewrite.py

Issue 29350244: Issue 4374 - Made Python code part of jshydra comply with our coding practices (Closed)
Patch Set: Rebased and fixed typo Created Aug. 30, 2016, 12:01 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | autotest.py » ('j') | autotest.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: abp_rewrite.py
===================================================================
--- a/abp_rewrite.py
+++ b/abp_rewrite.py
@@ -3,13 +3,81 @@
# http://mozilla.org/MPL/2.0/.
import os
+import platform
+import io
+import zipfile
import subprocess
-import utils
+try:
+ from urllib.request import urlopen
+except ImportError:
+ import urllib2
+ import contextlib
+
+ def urlopen(*args, **kwargs):
+ return contextlib.closing(urllib2.urlopen(*args, **kwargs))
+
+JSSHELL_DIR = 'mozilla-esr31'
+JSSHELL_URL = ('https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly'
+ '/2015/02/2015-02-25-00-22-19-{}'
+ '/jsshell-{{}}.zip'.format(JSSHELL_DIR))
+
+JSSHELL_SUPPORTED_PLATFORMS = {
+ 'Windows': 'win32',
+ 'Linux': {
+ 'i686': 'linux-i686',
+ 'x86_64': 'linux-x86_64'
+ },
+ 'Darwin': 'mac'
+}
+
+
+def ensure_jsshell():
+ path = os.environ.get('SPIDERMONKEY_BINARY')
+ if path and os.path.isfile(path):
+ return path
+
+ system = platform.system()
+ try:
+ build = JSSHELL_SUPPORTED_PLATFORMS[system]
+ if isinstance(build, dict):
+ build = build[platform.machine()]
+ except KeyError:
+ raise Exception('Platform {} ({}) not supported by JS shell'.format(
+ system, platform.machine()
+ ))
+
+ shell_dir = os.path.join(os.path.dirname(__file__),
+ '{}-{}'.format(JSSHELL_DIR, build))
+ if not os.path.exists(shell_dir):
+ os.makedirs(shell_dir)
+ if system == 'Windows':
+ path = os.path.join(shell_dir, 'js.exe')
+ else:
+ path = os.path.join(shell_dir, 'js')
+
+ if os.path.exists(path):
+ return path
+
+ with urlopen(JSSHELL_URL.format(build)) as response:
+ data = response.read()
+
+ with zipfile.ZipFile(io.BytesIO(data)) as archive:
+ archive.extractall(shell_dir)
+
+ if not os.path.exists(path):
+ raise Exception("Downloaded package doesn't contain JS shell")
+
+ try:
+ os.chmod(path, 0o700)
+ except:
+ pass
+
+ return path
def rewrite_js(args, script=None):
- jsshell = utils.ensureJSShell()
+ jsshell = ensure_jsshell()
env = {'LD_LIBRARY_PATH': os.path.relpath(os.path.dirname(jsshell))}
base_dir = os.path.dirname(__file__)
« no previous file with comments | « no previous file | autotest.py » ('j') | autotest.py » ('J')

Powered by Google App Engine
This is Rietveld