Modified: trunk/Tools/ChangeLog (124927 => 124928)
--- trunk/Tools/ChangeLog 2012-08-07 22:30:09 UTC (rev 124927)
+++ trunk/Tools/ChangeLog 2012-08-07 22:39:26 UTC (rev 124928)
@@ -1,3 +1,33 @@
+2012-08-07 Dirk Pranke <[email protected]>
+
+ test-webkitpy hangs in a new checkout on snow leopard
+ https://bugs.webkit.org/show_bug.cgi?id=93301
+
+ Reviewed by Ryosuke Niwa.
+
+ This change works around what appears to be a bug in Python
+ 2.6.1 (the version that ships on Mac Snow Leopard) that causes
+ the multiprocessing module to hang after we use the
+ autoinstaller; I'm guessing it's some sort of python sockets
+ issue. I was unable to reproduce this with 2.6.5 or newer
+ versions of Python.
+
+ * Scripts/webkitpy/common/system/autoinstall.py:
+ (AutoInstaller.install):
+ * Scripts/webkitpy/test/main.py:
+ (Tester._run_tests):
+ * Scripts/webkitpy/thirdparty/__init__.py:
+ (AutoinstallImportHook._install_mechanize):
+ (AutoinstallImportHook._install_pep8):
+ (AutoinstallImportHook._install_pylint):
+ (AutoinstallImportHook._install_buildbot):
+ (AutoinstallImportHook._install_coverage):
+ (AutoinstallImportHook._install_eliza):
+ (AutoinstallImportHook._install_irc):
+ (AutoinstallImportHook._install_webpagereplay):
+ (AutoinstallImportHook._install):
+ (autoinstall_everything):
+
2012-08-07 Xianzhu Wang <[email protected]>
[Chromium-Android][NRWT] Fix 2 FIXMEs in chromium_android.py
Modified: trunk/Tools/Scripts/webkitpy/common/system/autoinstall.py (124927 => 124928)
--- trunk/Tools/Scripts/webkitpy/common/system/autoinstall.py 2012-08-07 22:30:09 UTC (rev 124927)
+++ trunk/Tools/Scripts/webkitpy/common/system/autoinstall.py 2012-08-07 22:39:26 UTC (rev 124928)
@@ -456,7 +456,7 @@
_log.debug('URL for %s already downloaded. Skipping...'
% target_name)
_log.debug(' "%s"' % url)
- return
+ return False
self._log_transfer("Auto-installing package: %s" % target_name,
url, target_path, log_method=_log.info)
@@ -484,6 +484,7 @@
shutil.rmtree(scratch_dir)
_log.debug('Auto-installed %s to:' % target_name)
_log.debug(' "%s"' % target_path)
+ return True
if __name__=="__main__":
Modified: trunk/Tools/Scripts/webkitpy/test/main.py (124927 => 124928)
--- trunk/Tools/Scripts/webkitpy/test/main.py 2012-08-07 22:30:09 UTC (rev 124927)
+++ trunk/Tools/Scripts/webkitpy/test/main.py 2012-08-07 22:39:26 UTC (rev 124928)
@@ -126,8 +126,14 @@
# and not have to worry about autoinstalling packages concurrently.
self.printer.write_update("Checking autoinstalled packages ...")
from webkitpy.thirdparty import autoinstall_everything
- autoinstall_everything()
+ installed_something = autoinstall_everything()
+ # FIXME: There appears to be a bug in Python 2.6.1 that is causing multiprocessing
+ # to hang after we install the packages in a clean checkout.
+ if installed_something:
+ _log.warning("We installed new packages, so running things serially at first")
+ self._options.child_processes = 1
+
if self._options.coverage:
import webkitpy.thirdparty.autoinstalled.coverage as coverage
cov = coverage.coverage()
Modified: trunk/Tools/Scripts/webkitpy/thirdparty/__init__.py (124927 => 124928)
--- trunk/Tools/Scripts/webkitpy/thirdparty/__init__.py 2012-08-07 22:30:09 UTC (rev 124927)
+++ trunk/Tools/Scripts/webkitpy/thirdparty/__init__.py 2012-08-07 22:39:26 UTC (rev 124928)
@@ -90,19 +90,20 @@
self._install_webpagereplay()
def _install_mechanize(self):
- self._install("http://pypi.python.org/packages/source/m/mechanize/mechanize-0.2.5.tar.gz",
- "mechanize-0.2.5/mechanize")
+ return self._install("http://pypi.python.org/packages/source/m/mechanize/mechanize-0.2.5.tar.gz",
+ "mechanize-0.2.5/mechanize")
def _install_pep8(self):
- self._install("http://pypi.python.org/packages/source/p/pep8/pep8-0.5.0.tar.gz#md5=512a818af9979290cd619cce8e9c2e2b",
- "pep8-0.5.0/pep8.py")
+ return self._install("http://pypi.python.org/packages/source/p/pep8/pep8-0.5.0.tar.gz#md5=512a818af9979290cd619cce8e9c2e2b",
+ "pep8-0.5.0/pep8.py")
def _install_pylint(self):
+ installed_something = False
if not self._fs.exists(self._fs.join(_AUTOINSTALLED_DIR, "pylint")):
- self._install('http://pypi.python.org/packages/source/p/pylint/pylint-0.25.1.tar.gz#md5=728bbc2b339bc3749af013709a7f87a5', 'pylint-0.25.1')
+ installed_something = self._install('http://pypi.python.org/packages/source/p/pylint/pylint-0.25.1.tar.gz#md5=728bbc2b339bc3749af013709a7f87a5', 'pylint-0.25.1')
self._fs.move(self._fs.join(_AUTOINSTALLED_DIR, "pylint-0.25.1"), self._fs.join(_AUTOINSTALLED_DIR, "pylint"))
+ return installed_something
-
# autoinstalled.buildbot is used by BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py
# and should ideally match the version of BuildBot used at build.webkit.org.
def _install_buildbot(self):
@@ -113,24 +114,24 @@
# without including other modules as a side effect.
jinja_dir = self._fs.join(_AUTOINSTALLED_DIR, "jinja2")
installer = AutoInstaller(append_to_search_path=True, target_dir=jinja_dir)
- installer.install(url=""
- url_subpath="Jinja2-2.6/jinja2")
+ installed_something = installer.install(url=""
+ url_subpath="Jinja2-2.6/jinja2")
SQLAlchemy_dir = self._fs.join(_AUTOINSTALLED_DIR, "sqlalchemy")
installer = AutoInstaller(append_to_search_path=True, target_dir=SQLAlchemy_dir)
- installer.install(url=""
- url_subpath="SQLAlchemy-0.7.7/lib/sqlalchemy")
+ installed_something |= installer.install(url=""
+ url_subpath="SQLAlchemy-0.7.7/lib/sqlalchemy")
- self._install("http://pypi.python.org/packages/source/b/buildbot/buildbot-0.8.6p1.tar.gz#md5=b6727d2810c692062c657492bcbeac6a", "buildbot-0.8.6p1/buildbot")
+ installed_something |= self._install("http://pypi.python.org/packages/source/b/buildbot/buildbot-0.8.6p1.tar.gz#md5=b6727d2810c692062c657492bcbeac6a", "buildbot-0.8.6p1/buildbot")
+ return installed_something
def _install_coverage(self):
installer = AutoInstaller(target_dir=_AUTOINSTALLED_DIR)
- installer.install(url="" url_subpath="coverage-3.5.1/coverage")
+ return installer.install(url="" url_subpath="coverage-3.5.1/coverage")
def _install_eliza(self):
installer = AutoInstaller(target_dir=_AUTOINSTALLED_DIR)
- installer.install(url=""
- target_name="eliza.py")
+ return installer.install(url="" target_name="eliza.py")
def _install_irc(self):
# Since irclib and ircbot are two top-level packages, we need to import
@@ -138,23 +139,26 @@
# organization purposes.
irc_dir = self._fs.join(_AUTOINSTALLED_DIR, "irc")
installer = AutoInstaller(target_dir=irc_dir)
- installer.install(url=""
- url_subpath="irclib.py")
- installer.install(url=""
+ installed_something = installer.install(url=""
+ url_subpath="irclib.py")
+ installed_something |= installer.install(url=""
url_subpath="ircbot.py")
+ return installed_something
def _install_webpagereplay(self):
+ installed_something = False
if not self._fs.exists(self._fs.join(_AUTOINSTALLED_DIR, "webpagereplay")):
- self._install("http://web-page-replay.googlecode.com/files/webpagereplay-1.1.2.tar.gz", "webpagereplay-1.1.2")
+ installed_something = self._install("http://web-page-replay.googlecode.com/files/webpagereplay-1.1.2.tar.gz", "webpagereplay-1.1.2")
self._fs.move(self._fs.join(_AUTOINSTALLED_DIR, "webpagereplay-1.1.2"), self._fs.join(_AUTOINSTALLED_DIR, "webpagereplay"))
init_path = self._fs.join(_AUTOINSTALLED_DIR, "webpagereplay", "__init__.py")
if not self._fs.exists(init_path):
self._fs.write_text_file(init_path, "")
+ return installed_something
def _install(self, url, url_subpath):
installer = AutoInstaller(target_dir=_AUTOINSTALLED_DIR)
- installer.install(url="" url_subpath=url_subpath)
+ return installer.install(url="" url_subpath=url_subpath)
_hook = AutoinstallImportHook()
@@ -163,5 +167,7 @@
def autoinstall_everything():
install_methods = [method for method in dir(_hook.__class__) if method.startswith('_install_')]
+ installed_something = False
for method in install_methods:
- getattr(_hook, method)()
+ installed_something |= getattr(_hook, method)()
+ return installed_something