| Index: chrome/test/pyautolib/fetch_prebuilt_pyauto.py
|
| diff --git a/chrome/test/pyautolib/fetch_prebuilt_pyauto.py b/chrome/test/pyautolib/fetch_prebuilt_pyauto.py
|
| index 4423e711f0b5c0fa495f3742de9fa7d8d2c9a0d6..e308ea8bf15666f4c37e38940013c3a5f52f8014 100644
|
| --- a/chrome/test/pyautolib/fetch_prebuilt_pyauto.py
|
| +++ b/chrome/test/pyautolib/fetch_prebuilt_pyauto.py
|
| @@ -20,11 +20,13 @@ Examples:
|
| """
|
|
|
| import glob
|
| +import httplib
|
| import optparse
|
| import os
|
| import shutil
|
| import sys
|
| import urllib
|
| +import urlparse
|
|
|
| import pyauto_utils
|
|
|
| @@ -54,21 +56,45 @@ class FetchPrebuilt(object):
|
| self._outdir = self._options.outdir
|
| self._url = self._args[0]
|
|
|
| - # Setup urls to download
|
| - self._chrome_zip_name = 'chrome-%s' % { 'linux64': 'linux64bit',
|
| - 'linux32': 'linux32bit',
|
| - 'mac': 'mac',
|
| - 'win': 'win32'
|
| - }[self._options.platform]
|
| + # Determine name of zip.
|
| + if not self._options.platform.startswith('linux'):
|
| + self._chrome_zip_name = 'chrome-%s' % { 'mac': 'mac',
|
| + 'win': 'win32'
|
| + }[self._options.platform]
|
| + else:
|
| + linux_32_names = ['linux', 'lucid32bit']
|
| + linux_64_names = ['linux64', 'lucid64bit']
|
| + linux_names = { 'linux': linux_32_names + linux_64_names,
|
| + 'linux32': linux_32_names,
|
| + 'linux64': linux_64_names
|
| + }[self._options.platform]
|
| + for name in linux_names:
|
| + zip_name = 'chrome-' + name
|
| + if self._DoesURLExist('%s/%s.zip' % (self._url, zip_name)):
|
| + self._chrome_zip_name = zip_name
|
| + break
|
| + else:
|
| + raise RuntimeError('Could not find chrome zip at ' + self._url)
|
| +
|
| + # Setup urls to download.
|
| self._chrome_zip_url = '%s/%s.zip' % (self._url, self._chrome_zip_name)
|
| chrome_test_url = '%s/%s.test' % (self._url, self._chrome_zip_name)
|
| self._pyautolib_py_url = '%s/pyautolib.py' % chrome_test_url
|
| - self._pyautolib_so_url = '%s/%s' % (chrome_test_url,
|
| - { 'linux64': '_pyautolib.so',
|
| - 'linux32': '_pyautolib.so',
|
| - 'mac': '_pyautolib.so',
|
| - 'win': '_pyautolib.pyd',
|
| - }[self._options.platform])
|
| + if self._options.platform == 'win':
|
| + self._pyautolib_so_name = '_pyautolib.pyd'
|
| + self._chromedriver_name = 'chromedriver.exe'
|
| + else:
|
| + self._pyautolib_so_name = '_pyautolib.so'
|
| + self._chromedriver_name = 'chromedriver'
|
| + self._pyautolib_so_url = chrome_test_url + '/' + self._pyautolib_so_name
|
| + self._chromedriver_url = chrome_test_url + '/' + self._chromedriver_name
|
| +
|
| + def _DoesURLExist(self, url):
|
| + """Determines whether a resource exists at the given URL."""
|
| + parsed = urlparse.urlparse(url)
|
| + conn = httplib.HTTPConnection(parsed.netloc)
|
| + conn.request('HEAD', parsed.path)
|
| + return conn.getresponse().status == 200
|
|
|
| def Cleanup(self):
|
| """Remove old binaries, if any."""
|
| @@ -84,9 +110,11 @@ class FetchPrebuilt(object):
|
| print self._chrome_zip_url
|
| print self._pyautolib_py_url
|
| print self._pyautolib_so_url
|
| + print self._chromedriver_url
|
| chrome_zip = urllib.urlretrieve(self._chrome_zip_url)[0]
|
| pyautolib_py = urllib.urlretrieve(self._pyautolib_py_url)[0]
|
| pyautolib_so = urllib.urlretrieve(self._pyautolib_so_url)[0]
|
| + chromedriver = urllib.urlretrieve(self._chromedriver_url)[0]
|
| chrome_unzip_dir = os.path.join(self._outdir, self._chrome_zip_name)
|
| if os.path.exists(chrome_unzip_dir):
|
| print 'Cleaning', chrome_unzip_dir
|
| @@ -96,12 +124,8 @@ class FetchPrebuilt(object):
|
| # Copy over the binaries to outdir
|
| items_to_copy = {
|
| pyautolib_py: os.path.join(self._outdir, 'pyautolib.py'),
|
| - pyautolib_so: os.path.join(self._outdir,
|
| - { 'linux64': '_pyautolib.so',
|
| - 'linux32': '_pyautolib.so',
|
| - 'mac': '_pyautolib.so',
|
| - 'win': '_pyautolib.pyd'
|
| - }[self._options.platform])
|
| + pyautolib_so: os.path.join(self._outdir, self._pyautolib_so_name),
|
| + chromedriver: os.path.join(self._outdir, self._chromedriver_name)
|
| }
|
| unzip_dir_contents = glob.glob(os.path.join(chrome_unzip_dir, '*'))
|
| for item in unzip_dir_contents:
|
| @@ -115,6 +139,11 @@ class FetchPrebuilt(object):
|
| pyauto_utils.RemovePath(chrome_unzip_dir)
|
|
|
| # Final setup (if any)
|
| + # Set executable bit on chromedriver binary.
|
| + if not self._options.platform == 'win':
|
| + if not os.access(items_to_copy[chromedriver], os.R_OK | os.X_OK):
|
| + os.chmod(items_to_copy[chromedriver], 0500)
|
| +
|
| # Create symlink to .framework on Mac
|
| if self._options.platform == 'mac':
|
| mac_app_name = os.path.basename([x for x in unzip_dir_contents
|
| @@ -133,4 +162,3 @@ class FetchPrebuilt(object):
|
|
|
| if __name__ == '__main__':
|
| FetchPrebuilt().Run()
|
| -
|
|
|