Index: webkit/tools/layout_tests/layout_package/platform_utils_linux.py |
=================================================================== |
--- webkit/tools/layout_tests/layout_package/platform_utils_linux.py (revision 36724) |
+++ webkit/tools/layout_tests/layout_package/platform_utils_linux.py (working copy) |
@@ -1,223 +0,0 @@ |
-# Copyright (c) 2008-2009 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-"""This is the Linux implementation of the layout_package.platform_utils |
- package. This file should only be imported by that package.""" |
- |
-import os |
-import signal |
-import subprocess |
-import sys |
-import logging |
- |
-import path_utils |
-import platform_utils_win |
- |
- |
-def PlatformName(): |
- """Returns the name of the platform we're currently running on.""" |
- return 'chromium-linux' + PlatformVersion() |
- |
- |
-def PlatformVersion(): |
- """Returns the version string for the platform, e.g. '-vista' or |
- '-snowleopard'. If the platform does not distinguish between |
- minor versions, it returns ''.""" |
- return '' |
- |
- |
-def GetNumCores(): |
- """Returns the number of cores on the machine. For hyperthreaded machines, |
- this will be double the number of actual processors.""" |
- num_cores = os.sysconf("SC_NPROCESSORS_ONLN") |
- if isinstance(num_cores, int) and num_cores > 0: |
- return num_cores |
- return 1 |
- |
- |
-def BaselinePath(platform=None): |
- """Returns the path relative to the top of the source tree for the |
- baselines for the specified platform version. If |platform| is None, |
- then the version currently in use is used.""" |
- if platform is None: |
- platform = PlatformName() |
- return path_utils.PathFromBase('webkit', 'data', 'layout_tests', |
- 'platform', platform, 'LayoutTests') |
- |
- |
-def BaselineSearchPath(platform=None): |
- """Returns the list of directories to search for baselines/results, in |
- order of preference. Paths are relative to the top of the source tree.""" |
- return [BaselinePath(platform), |
- platform_utils_win.BaselinePath('chromium-win'), |
- path_utils.WebKitBaselinePath('win'), |
- path_utils.WebKitBaselinePath('mac')] |
- |
- |
-def ApacheExecutablePath(): |
- """Returns the executable path to start Apache""" |
- path = os.path.join("/usr", "sbin", "apache2") |
- if os.path.exists(path): |
- return path |
- print "Unable to fine Apache executable %s" % path |
- _MissingApache() |
- |
- |
-def ApacheConfigFilePath(): |
- """Returns the path to Apache config file""" |
- return path_utils.PathFromBase("third_party", "WebKit", "LayoutTests", |
- "http", "conf", "apache2-debian-httpd.conf") |
- |
- |
-def LigHTTPdExecutablePath(): |
- """Returns the executable path to start LigHTTPd""" |
- binpath = "/usr/sbin/lighttpd" |
- if os.path.exists(binpath): |
- return binpath |
- print "Unable to find LigHTTPd executable %s" % binpath |
- _MissingLigHTTPd() |
- |
- |
-def LigHTTPdModulePath(): |
- """Returns the library module path for LigHTTPd""" |
- modpath = "/usr/lib/lighttpd" |
- if os.path.exists(modpath): |
- return modpath |
- print "Unable to find LigHTTPd modules %s" % modpath |
- _MissingLigHTTPd() |
- |
- |
-def LigHTTPdPHPPath(): |
- """Returns the PHP executable path for LigHTTPd""" |
- binpath = "/usr/bin/php-cgi" |
- if os.path.exists(binpath): |
- return binpath |
- print "Unable to find PHP CGI executable %s" % binpath |
- _MissingLigHTTPd() |
- |
- |
-def WDiffPath(): |
- """Path to the WDiff executable, which we assume is already installed and |
- in the user's $PATH.""" |
- return 'wdiff' |
- |
- |
-def ImageDiffPath(target): |
- """Path to the image_diff binary. |
- |
- Args: |
- target: Build target mode (debug or release)""" |
- return _PathFromBuildResults(target, 'image_diff') |
- |
- |
-def LayoutTestHelperPath(target): |
- """Path to the layout_test helper binary, if needed, empty otherwise""" |
- return '' |
- |
- |
-def TestShellPath(target): |
- """Return the platform-specific binary path for our TestShell. |
- |
- Args: |
- target: Build target mode (debug or release) """ |
- if target in ('Debug', 'Release'): |
- try: |
- debug_path = _PathFromBuildResults('Debug', 'test_shell') |
- release_path = _PathFromBuildResults('Release', 'test_shell') |
- |
- debug_mtime = os.stat(debug_path).st_mtime |
- release_mtime = os.stat(release_path).st_mtime |
- |
- if debug_mtime > release_mtime and target == 'Release' or \ |
- release_mtime > debug_mtime and target == 'Debug': |
- logging.info('\x1b[31mWarning: you are not running the most ' |
- 'recent test_shell binary. You need to pass ' |
- '--debug or not to select between Debug and ' |
- 'Release.\x1b[0m') |
- # This will fail if we don't have both a debug and release binary. |
- # That's fine because, in this case, we must already be running the |
- # most up-to-date one. |
- except path_utils.PathNotFound: |
- pass |
- |
- return _PathFromBuildResults(target, 'test_shell') |
- |
- |
-def FuzzyMatchPath(): |
- """Return the path to the fuzzy matcher binary.""" |
- return path_utils.PathFromBase('third_party', 'fuzzymatch', 'fuzzymatch') |
- |
- |
-def ShutDownHTTPServer(server_pid): |
- """Shut down the lighttpd web server. Blocks until it's fully shut down. |
- |
- Args: |
- server_pid: The process ID of the running server. |
- """ |
- # server_pid is not set when "http_server.py stop" is run manually. |
- if server_pid is None: |
- # This isn't ideal, since it could conflict with web server processes |
- # not started by http_server.py, but good enough for now. |
- KillAllProcess('lighttpd') |
- KillAllProcess('apache2') |
- else: |
- try: |
- os.kill(server_pid, signal.SIGTERM) |
- #TODO(mmoss) Maybe throw in a SIGKILL just to be sure? |
- except OSError: |
- # Sometimes we get a bad PID (e.g. from a stale httpd.pid file), |
- # so if kill fails on the given PID, just try to 'killall' web |
- # servers. |
- ShutDownHTTPServer(None) |
- |
- |
-def KillProcess(pid): |
- """Forcefully kill the process. |
- |
- Args: |
- pid: The id of the process to be killed. |
- """ |
- os.kill(pid, signal.SIGKILL) |
- |
- |
-def KillAllProcess(process_name): |
- null = open(os.devnull) |
- subprocess.call(['killall', '-TERM', '-u', os.getenv('USER'), |
- process_name], stderr=null) |
- null.close() |
- |
- |
-def KillAllTestShells(): |
- """Kills all instances of the test_shell binary currently running.""" |
- KillAllProcess('test_shell') |
- |
-# |
-# Private helper functions |
-# |
- |
- |
-def _MissingLigHTTPd(): |
- print 'Please install using: "sudo apt-get install lighttpd php5-cgi"' |
- print 'For complete Linux build requirements, please see:' |
- print 'http://code.google.com/p/chromium/wiki/LinuxBuildInstructions' |
- sys.exit(1) |
- |
- |
-def _MissingApache(): |
- print ('Please install using: "sudo apt-get install apache2 ' |
- 'libapache2-mod-php5"') |
- print 'For complete Linux build requirements, please see:' |
- print 'http://code.google.com/p/chromium/wiki/LinuxBuildInstructions' |
- sys.exit(1) |
- |
- |
-def _PathFromBuildResults(*pathies): |
- # FIXME(dkegel): use latest or warn if more than one found? |
- for dir in ["sconsbuild", "out", "xcodebuild"]: |
- try: |
- return path_utils.PathFromBase(dir, *pathies) |
- except: |
- pass |
- raise path_utils.PathNotFound("Unable to find %s in build tree" % |
- (os.path.join(*pathies))) |