[Qt] NRWT should pick up the right httpd config file
authoreric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Jul 2011 08:08:28 +0000 (08:08 +0000)
committereric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Jul 2011 08:08:28 +0000 (08:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=64086

Reviewed by Adam Barth.

Tools:

This is more fall-out from the Port class inappropriately encapsulating
both platform and port knowledge.  We need to split out some of this
platform knowledge into a separate class which can be better shared
between ports.

The fix was to move all the _path_to_apache_config_file logic down
into the WebKitPort baseclass so that all of the ports can find the
right apache config file, regardless of what platform they may be running on.

I did not move this down into base.Port (even though I considered it).
Chromium duplicates some of this logic, but since they have separate
subclasses for each port-OS combination (e.g. ChromiumMac, ChromiumWin)
they wouldn't notice the change.  Eventually we'll move this logic
out of Port entirely, and then it will be shared by all ports.

I also cleaned up the http-config logic for ORWT while I was there,
although since we're killing that code, I'm happy to revert that part
of the change if changing it is viewed as needlessly risky.

During this cleanup, I noticed that no ports use the "default" httpd.conf
which is left over from Mac OS X Tiger (and old linux distros) which used
Apache 1.3.  I've removed httpd.conf (and associated support in ORWT) since
we no longer support any ports which use this httpd.conf.

* Scripts/webkitperl/httpd.pm:
(getHTTPDConfigPathForTestDirectory):
* Scripts/webkitpy/layout_tests/port/base.py:
* Scripts/webkitpy/layout_tests/port/gtk.py:
* Scripts/webkitpy/layout_tests/port/mac.py:
* Scripts/webkitpy/layout_tests/port/qt.py:
* Scripts/webkitpy/layout_tests/port/webkit.py:
* Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
* Scripts/webkitpy/layout_tests/port/win.py:
* Scripts/webkitpy/layout_tests/servers/apache_http_server.py:

LayoutTests:

Removed this old httpd.conf file (used by Tiger and old linux distros)
since no supported WebKit ports use it anymore.

* http/conf/httpd.conf: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@90810 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 files changed:
LayoutTests/ChangeLog
LayoutTests/http/conf/httpd.conf [deleted file]
Tools/ChangeLog
Tools/Scripts/webkitperl/httpd.pm
Tools/Scripts/webkitpy/layout_tests/port/base.py
Tools/Scripts/webkitpy/layout_tests/port/gtk.py
Tools/Scripts/webkitpy/layout_tests/port/mac.py
Tools/Scripts/webkitpy/layout_tests/port/qt.py
Tools/Scripts/webkitpy/layout_tests/port/webkit.py
Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py
Tools/Scripts/webkitpy/layout_tests/port/win.py
Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py

index ee95c2a..2015b9d 100644 (file)
@@ -1,3 +1,15 @@
+2011-07-12  Eric Seidel  <eric@webkit.org>
+
+        [Qt] NRWT should pick up the right httpd config file
+        https://bugs.webkit.org/show_bug.cgi?id=64086
+
+        Reviewed by Adam Barth.
+
+        Removed this old httpd.conf file (used by Tiger and old linux distros)
+        since no supported WebKit ports use it anymore.
+
+        * http/conf/httpd.conf: Removed.
+
 2011-07-11  Hironori Bono  <hbono@chromium.org>
 
         Reviewed by Adam Roben.
diff --git a/LayoutTests/http/conf/httpd.conf b/LayoutTests/http/conf/httpd.conf
deleted file mode 100644 (file)
index 4629c47..0000000
+++ /dev/null
@@ -1,746 +0,0 @@
-##
-## httpd.conf -- Apache HTTP server configuration file
-##
-
-#
-# Based upon the NCSA server configuration files originally by Rob McCool.
-#
-# This is the main Apache server configuration file.  It contains the
-# configuration directives that give the server its instructions.
-# See <URL:http://httpd.apache.org/docs/> for detailed information about
-# the directives.
-#
-# Do NOT simply read the instructions in here without understanding
-# what they do.  They're here only as hints or reminders.  If you are unsure
-# consult the online docs. You have been warned.  
-#
-# After this file is processed, the server will look for and process
-# /private/etc/httpd/srm.conf and then /private/etc/httpd/access.conf
-# unless you have overridden these with ResourceConfig and/or
-# AccessConfig directives here.
-#
-# The configuration directives are grouped into three basic sections:
-#  1. Directives that control the operation of the Apache server process as a
-#     whole (the 'global environment').
-#  2. Directives that define the parameters of the 'main' or 'default' server,
-#     which responds to requests that aren't handled by a virtual host.
-#     These directives also provide default values for the settings
-#     of all virtual hosts.
-#  3. Settings for virtual hosts, which allow Web requests to be sent to
-#     different IP addresses or hostnames and have them handled by the
-#     same Apache server process.
-#
-# Configuration and logfile names: If the filenames you specify for many
-# of the server's control files begin with "/" (or "drive:/" for Win32), the
-# server will use that explicit path.  If the filenames do *not* begin
-# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
-# with ServerRoot set to "/usr/local/apache" will be interpreted by the
-# server as "/usr/local/apache/logs/foo.log".
-#
-
-### Section 1: Global Environment
-#
-# The directives in this section affect the overall operation of Apache,
-# such as the number of concurrent requests it can handle or where it
-# can find its configuration files.
-#
-
-#
-# ServerType is either inetd, or standalone.  Inetd mode is only supported on
-# Unix platforms.
-#
-ServerType standalone
-
-#
-# ServerRoot: The top of the directory tree under which the server's
-# configuration, error, and log files are kept.
-#
-# NOTE!  If you intend to place this on an NFS (or otherwise network)
-# mounted filesystem then please read the LockFile documentation
-# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
-# you will save yourself a lot of trouble.
-#
-ServerRoot "/usr"
-
-#
-# The LockFile directive sets the path to the lockfile used when Apache
-# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
-# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
-# its default value. The main reason for changing it is if the logs
-# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
-# DISK. The PID of the main server process is automatically appended to
-# the filename. 
-#
-LockFile "/tmp/WebKit/httpd.lock"
-
-#
-# PidFile: The file in which the server should record its process
-# identification number when it starts.
-#
-PidFile "/tmp/WebKit/httpd.pid"
-
-#
-# ScoreBoardFile: File used to store internal server process information.
-# Not all architectures require this.  But if yours does (you'll know because
-# this file will be  created when you run Apache) then you *must* ensure that
-# no two invocations of Apache share the same scoreboard file.
-#
-ScoreBoardFile "/tmp/WebKit/httpd.scoreboard"
-
-#
-# In the standard configuration, the server will process httpd.conf (this 
-# file, specified by the -f command line option), srm.conf, and access.conf 
-# in that order.  The latter two files are now distributed empty, as it is 
-# recommended that all directives be kept in a single file for simplicity.  
-# The commented-out values below are the built-in defaults.  You can have the 
-# server ignore these files altogether by using "/dev/null" (for Unix) or
-# "nul" (for Win32) for the arguments to the directives.
-#
-ResourceConfig /dev/null
-AccessConfig /dev/null
-
-#
-# Timeout: The number of seconds before receives and sends time out.
-#
-Timeout 300
-
-#
-# KeepAlive: Whether or not to allow persistent connections (more than
-# one request per connection). Set to "Off" to deactivate.
-#
-KeepAlive On
-
-#
-# MaxKeepAliveRequests: The maximum number of requests to allow
-# during a persistent connection. Set to 0 to allow an unlimited amount.
-# We recommend you leave this number high, for maximum performance.
-#
-MaxKeepAliveRequests 100
-
-#
-# KeepAliveTimeout: Number of seconds to wait for the next request from the
-# same client on the same connection.
-#
-KeepAliveTimeout 15
-
-#
-# Server-pool size regulation.  Rather than making you guess how many
-# server processes you need, Apache dynamically adapts to the load it
-# sees --- that is, it tries to maintain enough server processes to
-# handle the current load, plus a few spare servers to handle transient
-# load spikes (e.g., multiple simultaneous requests from a single
-# Netscape browser).
-#
-# It does this by periodically checking how many servers are waiting
-# for a request.  If there are fewer than MinSpareServers, it creates
-# a new spare.  If there are more than MaxSpareServers, some of the
-# spares die off.  The default values are probably OK for most sites.
-#
-MinSpareServers 1
-MaxSpareServers 5
-
-#
-# Number of servers to start initially --- should be a reasonable ballpark
-# figure.
-#
-StartServers 1
-
-#
-# Limit on total number of servers running, i.e., limit on the number
-# of clients who can simultaneously connect --- if this limit is ever
-# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
-# It is intended mainly as a brake to keep a runaway server from taking
-# the system with it as it spirals down...
-#
-MaxClients 150
-
-#
-# MaxRequestsPerChild: the number of requests each child process is
-# allowed to process before the child dies.  The child will exit so
-# as to avoid problems after prolonged use when Apache (and maybe the
-# libraries it uses) leak memory or other resources.  On most systems, this
-# isn't really needed, but a few (such as Solaris) do have notable leaks
-# in the libraries. For these platforms, set to something like 10000
-# or so; a setting of 0 means unlimited.
-#
-# NOTE: This value does not include keepalive requests after the initial
-#       request per connection. For example, if a child process handles
-#       an initial request and 10 subsequent "keptalive" requests, it
-#       would only count as 1 request towards this limit.
-#
-MaxRequestsPerChild 100000
-
-#
-# Listen: Allows you to bind Apache to specific IP addresses and/or
-# ports, instead of the default. See also the <VirtualHost>
-# directive.
-#
-# Configured from the httpd command line for WebKit layout tests.
-# Port 8443 is hard-coded as it is needed for the HTTPS configuration later on.
-#
-#Listen 3000
-Listen 127.0.0.1:8080
-Listen 127.0.0.1:8443
-# Apache 1.3 only supports IPv4, so we do not listen on ::1 (IPv6 loopback).
-# This may cause flaky tests on systems which support IPv6 if localhost resolves
-# to ::1 in addition to 127.0.0.1.
-# See https://bugs.webkit.org/show_bug.cgi?id=37104
-
-#
-# Dynamic Shared Object (DSO) Support
-#
-# To be able to use the functionality of a module which was built as a DSO you
-# have to place corresponding `LoadModule' lines at this location so the
-# directives contained in it are actually available _before_ they are used.
-# Please read the file http://httpd.apache.org/docs/dso.html for more
-# details about the DSO mechanism and run `httpd -l' for the list of already
-# built-in (statically linked and thus always available) modules in your httpd
-# binary.
-#
-# Note: The order in which modules are loaded is important.  Don't change
-# the order below without expert advice.
-#
-# Example:
-# LoadModule foo_module libexec/mod_foo.so
-#LoadModule vhost_alias_module libexec/httpd/mod_vhost_alias.so
-#LoadModule env_module         libexec/httpd/mod_env.so
-LoadModule config_log_module  libexec/httpd/mod_log_config.so
-#LoadModule mime_magic_module  libexec/httpd/mod_mime_magic.so
-LoadModule mime_module        libexec/httpd/mod_mime.so
-LoadModule negotiation_module libexec/httpd/mod_negotiation.so
-#LoadModule status_module      libexec/httpd/mod_status.so
-#LoadModule info_module        libexec/httpd/mod_info.so
-LoadModule includes_module    libexec/httpd/mod_include.so
-#LoadModule autoindex_module   libexec/httpd/mod_autoindex.so
-#LoadModule dir_module         libexec/httpd/mod_dir.so
-LoadModule cgi_module         libexec/httpd/mod_cgi.so
-LoadModule asis_module        libexec/httpd/mod_asis.so
-LoadModule imap_module        libexec/httpd/mod_imap.so
-LoadModule action_module      libexec/httpd/mod_actions.so
-#LoadModule speling_module     libexec/httpd/mod_speling.so
-#LoadModule userdir_module     libexec/httpd/mod_userdir.so
-LoadModule alias_module       libexec/httpd/mod_alias.so
-LoadModule rewrite_module     libexec/httpd/mod_rewrite.so
-LoadModule access_module      libexec/httpd/mod_access.so
-LoadModule auth_module        libexec/httpd/mod_auth.so
-#LoadModule anon_auth_module   libexec/httpd/mod_auth_anon.so
-#LoadModule dbm_auth_module    libexec/httpd/mod_auth_dbm.so
-#LoadModule digest_module      libexec/httpd/mod_digest.so
-#LoadModule proxy_module       libexec/httpd/libproxy.so
-#LoadModule cern_meta_module   libexec/httpd/mod_cern_meta.so
-#LoadModule expires_module     libexec/httpd/mod_expires.so
-LoadModule headers_module     libexec/httpd/mod_headers.so
-#LoadModule usertrack_module   libexec/httpd/mod_usertrack.so
-#LoadModule log_forensic_module libexec/httpd/mod_log_forensic.so
-#LoadModule unique_id_module   libexec/httpd/mod_unique_id.so
-#LoadModule setenvif_module    libexec/httpd/mod_setenvif.so
-#LoadModule dav_module         libexec/httpd/libdav.so
-LoadModule ssl_module         libexec/httpd/libssl.so
-#LoadModule perl_module        libexec/httpd/libperl.so
-LoadModule php4_module        libexec/httpd/libphp4.so
-LoadModule hfs_apple_module   libexec/httpd/mod_hfs_apple.so
-#LoadModule bonjour_module     libexec/httpd/mod_bonjour.so
-
-#  Reconstruction of the complete module list from all available modules
-#  (static and shared ones) to achieve correct module execution order.
-#  [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
-ClearModuleList
-#AddModule mod_vhost_alias.c
-#AddModule mod_env.c
-AddModule mod_log_config.c
-#AddModule mod_mime_magic.c
-AddModule mod_mime.c
-AddModule mod_negotiation.c
-#AddModule mod_status.c
-#AddModule mod_info.c
-AddModule mod_include.c
-#AddModule mod_autoindex.c
-#AddModule mod_dir.c
-AddModule mod_cgi.c
-AddModule mod_asis.c
-AddModule mod_imap.c
-AddModule mod_actions.c
-#AddModule mod_speling.c
-#AddModule mod_userdir.c
-AddModule mod_alias.c
-AddModule mod_rewrite.c
-AddModule mod_access.c
-AddModule mod_auth.c
-#AddModule mod_auth_anon.c
-#AddModule mod_auth_dbm.c
-#AddModule mod_digest.c
-#AddModule mod_proxy.c
-#AddModule mod_cern_meta.c
-#AddModule mod_expires.c
-AddModule mod_headers.c
-#AddModule mod_usertrack.c
-#AddModule mod_log_forensic.c
-#AddModule mod_unique_id.c
-AddModule mod_so.c
-#AddModule mod_setenvif.c
-#AddModule mod_dav.c
-AddModule mod_ssl.c
-#AddModule mod_perl.c
-AddModule mod_php4.c
-AddModule mod_hfs_apple.c
-#AddModule mod_bonjour.c
-
-### Section 2: 'Main' server configuration
-#
-# The directives in this section set up the values used by the 'main'
-# server, which responds to any requests that aren't handled by a
-# <VirtualHost> definition.  These values also provide defaults for
-# any <VirtualHost> containers you may define later in the file.
-#
-# All of these directives may appear inside <VirtualHost> containers,
-# in which case these default settings will be overridden for the
-# virtual host being defined.
-#
-
-#
-# ServerName allows you to set a host name which is sent back to clients for
-# your server if it's different than the one the program would get (i.e., use
-# "www" instead of the host's real name).
-#
-# Note: You cannot just invent host names and hope they work. The name you 
-# define here must be a valid DNS name for your host. If you don't understand
-# this, ask your network administrator.
-# If your host doesn't have a registered DNS name, enter its IP address here.
-# You will have to access it by its address (e.g., http://123.45.67.89/)
-# anyway, and this will make redirections work in a sensible way.
-#
-# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your 
-# machine always knows itself by this address. If you use Apache strictly for 
-# local testing and development, you may use 127.0.0.1 as the server name.
-#
-ServerName 127.0.0.1
-
-#
-# DocumentRoot: The directory out of which you will serve your
-# documents. By default, all requests are taken from this directory, but
-# symbolic links and aliases may be used to point to other locations.
-#
-# Configured from the httpd command line for WebKit layout tests.
-#DocumentRoot "/Library/WebServer/Documents"
-
-#
-# Each directory to which Apache has access, can be configured with respect
-# to which services and features are allowed and/or disabled in that
-# directory (and its subdirectories). 
-#
-<Directory />
-#
-# This may also be "None", "All", or any combination of "Indexes",
-# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
-#
-# Note that "MultiViews" must be named *explicitly* --- "Options All"
-# doesn't give it to you.
-#
-    Options Indexes FollowSymLinks MultiViews ExecCGI Includes
-
-#
-# This controls which options the .htaccess files in directories can
-# override. Can also be "All", or any combination of "Options", "FileInfo", 
-# "AuthConfig", and "Limit"
-#
-    AllowOverride All
-
-#
-# Controls who can get stuff from this server.
-#
-    Order allow,deny
-    Allow from all
-</Directory>
-
-#
-# AccessFileName: The name of the file to look for in each directory
-# for access control information.
-#
-AccessFileName .htaccess
-
-#
-# The following lines prevent .htaccess files from being viewed by
-# Web clients.  Since .htaccess files often contain authorization
-# information, access is disallowed for security reasons.  Comment
-# these lines out if you want Web visitors to see the contents of
-# .htaccess files.  If you change the AccessFileName directive above,
-# be sure to make the corresponding changes here.
-#
-# Also, folks tend to use names such as .htpasswd for password
-# files, so this will protect those as well.
-#
-<Files ~ "^\.([Hh][Tt]|[Dd][Ss]_[Ss])">
-    Order allow,deny
-    Deny from all
-    Satisfy All
-</Files>
-
-#
-# Apple specific filesystem protection.
-# 
-
-<Files "rsrc">
-    Order allow,deny
-    Deny from all
-    Satisfy All
-</Files>
-
-<Directory  ~ ".*\.\.namedfork">
-    Order allow,deny
-    Deny from all
-    Satisfy All
-</Directory>
-
-#
-# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
-# document that was negotiated on the basis of content. This asks proxy
-# servers not to cache the document. Uncommenting the following line disables
-# this behavior, and proxies will be allowed to cache the documents.
-#
-#CacheNegotiatedDocs
-
-#
-# UseCanonicalName:  (new for 1.3)  With this setting turned on, whenever
-# Apache needs to construct a self-referencing URL (a URL that refers back
-# to the server the response is coming from) it will use ServerName and
-# Port to form a "canonical" name.  With this setting off, Apache will
-# use the hostname:port that the client supplied, when possible.  This
-# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
-#
-UseCanonicalName On
-
-#
-# TypesConfig describes where the mime.types file (or equivalent) is
-# to be found.
-#
-# Configured from the httpd command line for WebKit layout tests.
-#
-#<IfModule mod_mime.c>
-#    TypesConfig /private/etc/httpd/mime.types
-#</IfModule>
-
-#
-# DefaultType is the default MIME type the server will use for a document
-# if it cannot otherwise determine one, such as from filename extensions.
-# If your server contains mostly text or HTML documents, "text/plain" is
-# a good value.  If most of your content is binary, such as applications
-# or images, you may want to use "application/octet-stream" instead to
-# keep browsers from trying to display binary files as though they are
-# text.
-#
-DefaultType text/plain
-
-#
-# HostnameLookups: Log the names of clients or just their IP addresses
-# e.g., www.apache.org (on) or 204.62.129.132 (off).
-# The default is off because it'd be overall better for the net if people
-# had to knowingly turn this feature on, since enabling it means that
-# each client request will result in AT LEAST one lookup request to the
-# nameserver.
-#
-HostnameLookups Off
-
-#
-# ErrorLog: The location of the error log file.
-# If you do not specify an ErrorLog directive within a <VirtualHost>
-# container, error messages relating to that virtual host will be
-# logged here.  If you *do* define an error logfile for a <VirtualHost>
-# container, that host's errors will be logged there and not here.
-#
-# Configured from the httpd command line for WebKit layout tests.
-#ErrorLog "/tmp/layout-test-results/error_log"
-
-#
-# LogLevel: Control the number of messages logged to the error_log.
-# Possible values include: debug, info, notice, warn, error, crit,
-# alert, emerg.
-#
-LogLevel warn
-
-#
-# The following directives define some format nicknames for use with
-# a CustomLog directive (see below).
-#
-LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
-LogFormat "%h %l %u %t \"%r\" %>s %b" common
-LogFormat "%{Referer}i -> %U" referer
-LogFormat "%{User-agent}i" agent
-
-#
-# The location and format of the access logfile (Common Logfile Format).
-# If you do not define any access logfiles within a <VirtualHost>
-# container, they will be logged here.  Contrariwise, if you *do*
-# define per-<VirtualHost> access logfiles, transactions will be
-# logged therein and *not* in this file.
-#
-# Configured from the httpd command line for WebKit layout tests.
-#CustomLog "/tmp/layout-test-results/access_log" common
-
-#
-# If you prefer a single logfile with access, agent, and referer information
-# (Combined Logfile Format) you can use the following directive.
-#
-#CustomLog "/tmp/layout-test-results/access_log" combined
-
-#
-# Optionally add a line containing the server version and virtual host
-# name to server-generated pages (error documents, FTP directory listings,
-# mod_status and mod_info output etc., but not CGI generated documents).
-# Set to "EMail" to also include a mailto: link to the ServerAdmin.
-# Set to one of:  On | Off | EMail
-#
-ServerSignature On
-
-#
-# Aliases: Add here as many aliases as you need (with no limit). The format is 
-# Alias fakename realname
-#
-<IfModule mod_alias.c>
-</IfModule>
-# End of aliases.
-
-#
-# Redirect allows you to tell clients about documents which used to exist in
-# your server's namespace, but do not anymore. This allows you to tell the
-# clients where to look for the relocated document.
-# Format: Redirect old-URI new-URL
-#
-
-#
-# Document types.
-#
-<IfModule mod_mime.c>
-
-    #
-    # AddLanguage allows you to specify the language of a document. You can
-    # then use content negotiation to give a browser a file in a language
-    # it can understand.  
-    #
-    # Note 1: The suffix does not have to be the same as the language 
-    # keyword --- those with documents in Polish (whose net-standard 
-    # language code is pl) may wish to use "AddLanguage pl .po" to 
-    # avoid the ambiguity with the common suffix for perl scripts.
-    #
-    # Note 2: The example entries below illustrate that in quite
-    # some cases the two character 'Language' abbreviation is not
-    # identical to the two character 'Country' code for its country,
-    # E.g. 'Danmark/dk' versus 'Danish/da'.
-    #
-    # Note 3: In the case of 'ltz' we violate the RFC by using a three char 
-    # specifier. But there is 'work in progress' to fix this and get 
-    # the reference data for rfc1766 cleaned up.
-    #
-    # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
-    # French (fr) - German (de) - Greek-Modern (el)
-    # Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
-    # Portugese (pt) - Luxembourgeois* (ltz)
-    # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cs)
-    # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
-    # Russian (ru)
-    #
-    AddLanguage da .dk
-    AddLanguage nl .nl
-    AddLanguage en .en
-    AddLanguage et .ee
-    AddLanguage fr .fr
-    AddLanguage de .de
-    AddLanguage el .el
-    AddLanguage he .he
-    AddCharset ISO-8859-8 .iso8859-8
-    AddLanguage it .it
-    AddLanguage ja .ja
-    AddCharset ISO-2022-JP .jis
-    AddLanguage kr .kr
-    AddCharset ISO-2022-KR .iso-kr
-    AddLanguage nn .nn
-    AddLanguage no .no
-    AddLanguage pl .po
-    AddCharset ISO-8859-2 .iso-pl
-    AddLanguage pt .pt
-    AddLanguage pt-br .pt-br
-    AddLanguage ltz .lu
-    AddLanguage ca .ca
-    AddLanguage es .es
-    AddLanguage sv .sv
-    AddLanguage cs .cz .cs
-    AddLanguage ru .ru
-    AddLanguage zh-TW .zh-tw
-    AddCharset Big5         .Big5    .big5
-    AddCharset WINDOWS-1251 .cp-1251
-    AddCharset CP866        .cp866
-    AddCharset ISO-8859-5   .iso-ru
-    AddCharset KOI8-R       .koi8-r
-    AddCharset UCS-2        .ucs2
-    AddCharset UCS-4        .ucs4
-    AddCharset UTF-8        .utf8
-
-    # LanguagePriority allows you to give precedence to some languages
-    # in case of a tie during content negotiation.
-    #
-    # Just list the languages in decreasing order of preference. We have
-    # more or less alphabetized them here. You probably want to change this.
-    #
-    <IfModule mod_negotiation.c>
-        LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
-    </IfModule>
-
-    #
-    # AddType allows you to tweak mime.types without actually editing it, or to
-    # make certain files to be certain types.
-    #
-    AddType application/x-tar .tgz
-
-    #
-    # AddEncoding allows you to have certain browsers uncompress
-    # information on the fly. Note: Not all browsers support this.
-    # Despite the name similarity, the following Add* directives have nothing
-    # to do with the FancyIndexing customization directives above.
-    #
-    AddEncoding x-compress .Z
-    AddEncoding x-gzip .gz .tgz
-    #
-    # If the AddEncoding directives above are commented-out, then you
-    # probably should define those extensions to indicate media types:
-    #
-    #AddType application/x-compress .Z
-    #AddType application/x-gzip .gz .tgz
-
-    #
-    # AddHandler allows you to map certain file extensions to "handlers",
-    # actions unrelated to filetype. These can be either built into the server
-    # or added with the Action command (see below)
-    #
-    # If you want to use server side includes, or CGI outside
-    # ScriptAliased directories, uncomment the following lines.
-    #
-    # To use CGI scripts:
-    #
-    AddHandler cgi-script .cgi .pl
-
-    #
-    # To use server-parsed HTML files
-    #
-    AddType text/html .shtml
-    AddHandler server-parsed .shtml
-
-    #
-    # Uncomment the following line to enable Apache's send-asis HTTP file
-    # feature
-    #
-    AddHandler send-as-is asis
-
-    #
-    # If you wish to use server-parsed imagemap files, use
-    #
-    #AddHandler imap-file map
-
-    #
-    # To enable type maps, you might want to use
-    #
-    #AddHandler type-map var
-
-</IfModule>
-# End of document types.
-
-#
-# Action lets you define media types that will execute a script whenever
-# a matching file is called. This eliminates the need for repeated URL
-# pathnames for oft-used CGI file processors.
-# Format: Action media/type /cgi-script/location
-# Format: Action handler-name /cgi-script/location
-#
-
-#
-# MetaDir: specifies the name of the directory in which Apache can find
-# meta information files. These files contain additional HTTP headers
-# to include when sending the document
-#
-#MetaDir .web
-
-#
-# MetaSuffix: specifies the file name suffix for the file containing the
-# meta information.
-#
-#MetaSuffix .meta
-
-#
-# Customizable error response (Apache style)
-#  these come in three flavors
-#
-#    1) plain text
-#ErrorDocument 500 "The server made a boo boo.
-#  n.b.  the single leading (") marks it as text, it does not get output
-#
-#    2) local redirects
-#ErrorDocument 404 /missing.html
-#  to redirect to local URL /missing.html
-#ErrorDocument 404 /cgi-bin/missing_handler.pl
-#  N.B.: You can redirect to a script or a document using server-side-includes.
-#
-#    3) external redirects
-#ErrorDocument 402 http://some.other-server.com/subscription_info.html
-#  N.B.: Many of the environment variables associated with the original
-#  request will *not* be available to such a script.
-
-#
-# Proxy Server directives. Uncomment the following lines to
-# enable the proxy server:
-#
-#<IfModule mod_proxy.c>
-#    ProxyRequests On
-
-#    <Directory proxy:*>
-#        Order deny,allow
-#        Deny from all
-#        Allow from .your-domain.com
-#    </Directory>
-
-    #
-    # Enable/disable the handling of HTTP/1.1 "Via:" headers.
-    # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
-    # Set to one of: Off | On | Full | Block
-    #
-#    ProxyVia On
-
-    #
-    # To enable the cache as well, edit and uncomment the following lines:
-    # (no cacheing without CacheRoot)
-    #
-#    CacheRoot "/private/var/run/proxy"
-#    CacheSize 5
-#    CacheGcInterval 4
-#    CacheMaxExpire 24
-#    CacheLastModifiedFactor 0.1
-#    CacheDefaultExpire 1
-#    NoCache a-domain.com another-domain.edu joes.garage-sale.com
-
-#</IfModule>
-# End of proxy directives.
-
-
-<IfModule mod_php4.c>
-    # If php is turned on, we repsect .php and .phps files.
-    AddType application/x-httpd-php .php
-    AddType application/x-httpd-php .bat
-    AddType application/x-httpd-php-source .phps
-
-    # Since most users will want index.php to work we
-    # also automatically enable index.php
-    <IfModule mod_dir.c>
-        DirectoryIndex index.html index.php
-    </IfModule>
-
-    php_flag log_errors on
-    php_flag short_open_tag on
-</IfModule>
-
-<IfModule mod_rewrite.c>
-    RewriteEngine On
-    RewriteCond %{REQUEST_METHOD} ^TRACE
-    RewriteRule .* - [F]
-</IfModule>
-
-<VirtualHost *:8443>
-    ServerName 127.0.0.1
-    SSLEngine On
-</VirtualHost>
index b39f487..880c6ab 100644 (file)
@@ -1,3 +1,45 @@
+2011-07-12  Eric Seidel  <eric@webkit.org>
+
+        [Qt] NRWT should pick up the right httpd config file
+        https://bugs.webkit.org/show_bug.cgi?id=64086
+
+        Reviewed by Adam Barth.
+
+        This is more fall-out from the Port class inappropriately encapsulating
+        both platform and port knowledge.  We need to split out some of this
+        platform knowledge into a separate class which can be better shared
+        between ports.
+
+        The fix was to move all the _path_to_apache_config_file logic down
+        into the WebKitPort baseclass so that all of the ports can find the
+        right apache config file, regardless of what platform they may be running on.
+
+        I did not move this down into base.Port (even though I considered it).
+        Chromium duplicates some of this logic, but since they have separate
+        subclasses for each port-OS combination (e.g. ChromiumMac, ChromiumWin)
+        they wouldn't notice the change.  Eventually we'll move this logic
+        out of Port entirely, and then it will be shared by all ports.
+
+        I also cleaned up the http-config logic for ORWT while I was there,
+        although since we're killing that code, I'm happy to revert that part
+        of the change if changing it is viewed as needlessly risky.
+
+        During this cleanup, I noticed that no ports use the "default" httpd.conf
+        which is left over from Mac OS X Tiger (and old linux distros) which used
+        Apache 1.3.  I've removed httpd.conf (and associated support in ORWT) since
+        we no longer support any ports which use this httpd.conf.
+
+        * Scripts/webkitperl/httpd.pm:
+        (getHTTPDConfigPathForTestDirectory):
+        * Scripts/webkitpy/layout_tests/port/base.py:
+        * Scripts/webkitpy/layout_tests/port/gtk.py:
+        * Scripts/webkitpy/layout_tests/port/mac.py:
+        * Scripts/webkitpy/layout_tests/port/qt.py:
+        * Scripts/webkitpy/layout_tests/port/webkit.py:
+        * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
+        * Scripts/webkitpy/layout_tests/port/win.py:
+        * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
+
 2011-07-11  Hironori Bono  <hbono@chromium.org>
 
         Reviewed by Adam Roben.
index 86a8461..1adb7ad 100644 (file)
@@ -136,26 +136,30 @@ sub getHTTPDConfigPathForTestDirectory
 {
     my ($testDirectory) = @_;
     die "No test directory has been specified." unless ($testDirectory);
+
     my $httpdConfig;
     my $httpdPath = getHTTPDPath();
+    my $httpdConfDirectory = "$testDirectory/http/conf/";
+
     if (isCygwin()) {
-        my $windowsConfDirectory = "$testDirectory/http/conf/";
-        unless (-x "/usr/lib/apache/libphp4.dll") {
-            copy("$windowsConfDirectory/libphp4.dll", "/usr/lib/apache/libphp4.dll");
-            chmod(0755, "/usr/lib/apache/libphp4.dll");
+        my $libPHP4DllPath = "/usr/lib/apache/libphp4.dll";
+        # FIXME: run-webkit-tests should not modify the user's system, especially not in this method!
+        unless (-x $libPHP4DllPath) {
+            copy("$httpdConfDirectory/libphp4.dll", $libPHP4DllPath);
+            chmod(0755, $libPHP4DllPath);
         }
-        $httpdConfig = "$windowsConfDirectory/cygwin-httpd.conf";
+        $httpdConfig = "cygwin-httpd.conf";  # This is an apache 1.3 config.
     } elsif (isMsys()) {
-        $httpdConfig = "$testDirectory/http/conf/apache2-msys-httpd.conf";
+        $httpdConfig = "apache2-msys-httpd.conf";
     } elsif (isDebianBased()) {
-        $httpdConfig = "$testDirectory/http/conf/apache2-debian-httpd.conf";
+        $httpdConfig = "apache2-debian-httpd.conf";
     } elsif (isFedoraBased()) {
-        $httpdConfig = "$testDirectory/http/conf/fedora-httpd.conf";
+        $httpdConfig = "fedora-httpd.conf"; # This is an apache2 config, despite the name.
     } else {
-        $httpdConfig = "$testDirectory/http/conf/httpd.conf";
-        $httpdConfig = "$testDirectory/http/conf/apache2-httpd.conf" if `$httpdPath -v` =~ m|Apache/2|;
+        # All other ports use apache2, so just use our default apache2 config.
+        $httpdConfig = "apache2-httpd.conf";
     }
-    return $httpdConfig;
+    return "$httpdConfDirectory/$httpdConfig";
 }
 
 sub openHTTPD(@)
index 9c7df7a..e03d433 100755 (executable)
@@ -73,7 +73,7 @@ class DummyOptions(object):
             self.__dict__[key] = value
 
 
-# FIXME: This class should merge with webkitpy.common.config.ports.
+# FIXME: This class should merge with WebKitPort now that Chromium behaves mostly like other webkit ports.
 class Port(object):
     """Abstract class for Port-specific hooks for the layout_test package."""
 
index 29d0f9f..5644c15 100644 (file)
@@ -67,13 +67,8 @@ class GtkPort(webkit.WebKitPort):
         environment['GTK_MODULES'] = 'gail'
         environment['LIBOVERLAY_SCROLLBAR'] = '0'
         environment['WEBKIT_INSPECTOR_PATH'] = self._build_path('Programs/resources/inspector')
-
         return environment
 
-    def _path_to_apache_config_file(self):
-        # FIXME: This needs to detect the distribution and change config files.
-        return self._filesystem.join(self.layout_tests_dir(), 'http', 'conf', 'apache2-debian-httpd.conf')
-
     def _path_to_driver(self):
         return self._build_path('Programs', self.driver_name())
 
@@ -89,23 +84,12 @@ class GtkPort(webkit.WebKitPort):
         else:
             return '/usr/sbin/apache2'
 
-    def _path_to_apache_config_file(self):
-        if self._is_redhat_based():
-            config_name = 'fedora-httpd.conf'
-        else:
-            config_name = 'apache2-debian-httpd.conf'
-
-        return self._filesystem.join(self.layout_tests_dir(), 'http', 'conf', config_name)
-
     def _path_to_wdiff(self):
         if self._is_redhat_based():
             return '/usr/bin/dwdiff'
         else:
             return '/usr/bin/wdiff'
 
-    def _is_redhat_based(self):
-        return self._filesystem.exists(self._filesystem.join('/etc', 'redhat-release'))
-
     def _path_to_webcore_library(self):
         gtk_library_names = [
             "libwebkitgtk-1.0.so",
index 506fa8a..7621abf 100644 (file)
@@ -113,8 +113,5 @@ class MacPort(WebKitPort):
     def _check_port_build(self):
         return self._build_java_test_support()
 
-    def _path_to_apache_config_file(self):
-        return self._filesystem.join(self.layout_tests_dir(), 'http', 'conf', 'apache2-httpd.conf')
-
     def _path_to_webcore_library(self):
         return self._build_path('WebCore.framework/Versions/A/WebCore')
index 8820b38..a6a8c2e 100644 (file)
@@ -63,10 +63,6 @@ class QtPort(WebKitPort):
             name_components.append(self._operating_system)
         self._name = "-".join(name_components)
 
-    def _path_to_apache_config_file(self):
-        # FIXME: This needs to detect the distribution and change config files.
-        return self._filesystem.join(self.layout_tests_dir(), 'http', 'conf', 'apache2-debian-httpd.conf')
-
     def _build_driver(self):
         # The Qt port builds DRT as part of the main build step
         return True
index 611628b..39039ae 100644 (file)
@@ -36,8 +36,10 @@ import logging
 import operator
 import os
 import re
+import sys
 import time
 
+from webkitpy.common.memoized import memoized
 from webkitpy.common.net.buildbot import BuildBot
 from webkitpy.common.system.executive import ScriptError
 from webkitpy.layout_tests.port import builders, server_process, Port, Driver, DriverOutput
@@ -49,7 +51,6 @@ _log = logging.getLogger(__name__)
 class WebKitPort(Port):
     def __init__(self, **kwargs):
         Port.__init__(self, **kwargs)
-        self._cached_apache_path = None  # FIXME: This class should use @memoized instead.
 
         # FIXME: Disable pixel tests until they are run by default on build.webkit.org.
         self.set_option_default("pixel_tests", False)
@@ -358,19 +359,39 @@ class WebKitPort(Port):
         # FIXME: This does not exist on a default Mac OS X Leopard install.
         return 'wdiff'
 
+    # FIXME: This does not belong on the port object.
+    @memoized
     def _path_to_apache(self):
-        if not self._cached_apache_path:
-            # The Apache binary path can vary depending on OS and distribution
-            # See http://wiki.apache.org/httpd/DistrosDefaultLayout
-            for path in ["/usr/sbin/httpd", "/usr/sbin/apache2"]:
-                if self._filesystem.exists(path):
-                    self._cached_apache_path = path
-                    break
-
-            if not self._cached_apache_path:
-                _log.error("Could not find apache. Not installed or unknown path.")
-
-        return self._cached_apache_path
+        # The Apache binary path can vary depending on OS and distribution
+        # See http://wiki.apache.org/httpd/DistrosDefaultLayout
+        for path in ["/usr/sbin/httpd", "/usr/sbin/apache2"]:
+            if self._filesystem.exists(path):
+                return path
+            _log.error("Could not find apache. Not installed or unknown path.")
+        return None
+
+    # FIXME: This belongs on some platform abstraction instead of Port.
+    def _is_redhat_based(self):
+        return self._filesystem.exists('/etc/redhat-release')
+
+    def _is_debian_based(self):
+        return self._filesystem.exists('/etc/debian_version')
+
+    # We pass sys_platform into this method to make it easy to unit test.
+    def _apache_config_file_name_for_platform(self, sys_platform):
+        if sys_platform == 'cygwin':
+            return 'cygwin-httpd.conf'  # CYGWIN is the only platform to still use Apache 1.3.
+        if sys_platform.startswith('linux'):
+            if self._is_redhat_based():
+                return 'fedora-httpd.conf'  # This is an Apache 2.x config file despite the naming.
+            if self._is_debian_based():
+                return 'apache2-debian-httpd.conf'
+        # All platforms use apache2 except for CYGWIN (and Mac OS X Tiger and prior, which we no longer support).
+        return "apache2-httpd.conf"
+
+    def _path_to_apache_config_file(self):
+        config_file_name = self._apache_config_file_name_for_platform(sys.platform)
+        return self._filesystem.join(self.layout_tests_dir(), 'http', 'conf', config_file_name)
 
 
 class WebKitDriver(Driver):
index 82fbeda..603ea54 100755 (executable)
@@ -146,3 +146,43 @@ BUG_SKIPPED SKIP : media = FAIL""")
         port._executive = MockExecutive(should_log=True, should_throw=True)
         expected_stderr = "MOCK run_command: ['Tools/Scripts/build-webkittestrunner', '--release']\n"
         self.assertFalse(output.assert_outputs(self, port._build_driver, expected_stderr=expected_stderr))
+
+    def _assert_config_file_for_platform(self, port, platform, config_file):
+        self.assertEquals(port._apache_config_file_name_for_platform(platform), config_file)
+
+    def test_linux_distro_detection(self):
+        port = TestWebKitPort()
+        self.assertFalse(port._is_redhat_based())
+        self.assertFalse(port._is_debian_based())
+
+        port._filesystem = MockFileSystem({'/etc/redhat-release': ''})
+        self.assertTrue(port._is_redhat_based())
+        self.assertFalse(port._is_debian_based())
+
+        port._filesystem = MockFileSystem({'/etc/debian_version': ''})
+        self.assertFalse(port._is_redhat_based())
+        self.assertTrue(port._is_debian_based())
+
+    def test_apache_config_file_name_for_platform(self):
+        port = TestWebKitPort()
+        self._assert_config_file_for_platform(port, 'cygwin', 'cygwin-httpd.conf')
+
+        self._assert_config_file_for_platform(port, 'linux2', 'apache2-httpd.conf')
+        self._assert_config_file_for_platform(port, 'linux3', 'apache2-httpd.conf')
+
+        port._is_redhat_based = lambda: True
+        self._assert_config_file_for_platform(port, 'linux2', 'fedora-httpd.conf')
+
+        port = TestWebKitPort()
+        port._is_debian_based = lambda: True
+        self._assert_config_file_for_platform(port, 'linux2', 'apache2-debian-httpd.conf')
+
+        self._assert_config_file_for_platform(port, 'mac', 'apache2-httpd.conf')
+        self._assert_config_file_for_platform(port, 'win32', 'apache2-httpd.conf')  # win32 isn't a supported sys.platform.  AppleWin/WinCairo/WinCE ports all use cygwin.
+        self._assert_config_file_for_platform(port, 'barf', 'apache2-httpd.conf')
+
+    def test_path_to_apache_config_file(self):
+        port = TestWebKitPort()
+        # Mock out _apache_config_file_name_for_platform to ignore the passed sys.platform value.
+        port._apache_config_file_name_for_platform = lambda platform: 'httpd.conf'
+        self.assertEquals(port._path_to_apache_config_file(), '/mock/LayoutTests/http/conf/httpd.conf')
index a06bd16..ef20531 100644 (file)
@@ -57,5 +57,6 @@ class WinPort(WebKitPort):
         # FIXME: This does not work for WebKit2.
         return map(self._webkit_baseline_path, self.FALLBACK_PATHS[self._version])
 
-    def _path_to_apache_config_file(self):
-        return self._filesystem.join(self.layout_tests_dir(), 'http', 'conf', 'cygwin-httpd.conf')
+    # FIXME: webkitperl/httpd.pm installs /usr/lib/apache/libphp4.dll on cycwin automatically
+    # as part of running old-run-webkit-tests.  That's bad design, but we may need some similar hack.
+    # We might use setup_environ_for_server for such a hack (or modify apache_http_server.py).
index c623c9f..62268f2 100644 (file)
@@ -62,13 +62,10 @@ class LayoutTestApacheHttpd(http_server_base.HttpServerBase):
         self._pid_file = self._filesystem.join(self._runtime_path, '%s.pid' % self._name)
 
         test_dir = self._port_obj.layout_tests_dir()
-        js_test_resources_dir = self._cygwin_safe_join(test_dir, "fast", "js",
-            "resources")
+        js_test_resources_dir = self._cygwin_safe_join(test_dir, "fast", "js", "resources")
         media_resources_dir = self._cygwin_safe_join(test_dir, "media")
-        mime_types_path = self._cygwin_safe_join(test_dir, "http", "conf",
-            "mime.types")
-        cert_file = self._cygwin_safe_join(test_dir, "http", "conf",
-            "webkit-httpd.pem")
+        mime_types_path = self._cygwin_safe_join(test_dir, "http", "conf", "mime.types")
+        cert_file = self._cygwin_safe_join(test_dir, "http", "conf", "webkit-httpd.pem")
         access_log = self._cygwin_safe_join(output_dir, "access_log.txt")
         error_log = self._cygwin_safe_join(output_dir, "error_log.txt")
         document_root = self._cygwin_safe_join(test_dir, "http", "tests")
@@ -99,8 +96,7 @@ class LayoutTestApacheHttpd(http_server_base.HttpServerBase):
             '-k', "stop"]
 
         if self._is_cygwin():
-            cygbin = self._port_obj._path_from_base('third_party', 'cygwin',
-                'bin')
+            cygbin = self._port_obj._path_from_base('third_party', 'cygwin', 'bin')
             # Not entirely sure why, but from cygwin we need to run the
             # httpd command through bash.
             self._start_cmd = [
@@ -126,8 +122,8 @@ class LayoutTestApacheHttpd(http_server_base.HttpServerBase):
     def _is_cygwin(self):
         return sys.platform in ("win32", "cygwin")
 
+    # FIXME: This is the wrong place to have this method.  Perhaps this belongs in filesystem.py?
     def _cygwin_safe_join(self, *parts):
-        """Returns a platform appropriate path."""
         path = os.path.join(*parts)
         if self._is_cygwin():
             return self._get_cygwin_path(path)
@@ -160,6 +156,7 @@ class LayoutTestApacheHttpd(http_server_base.HttpServerBase):
         httpd_config = self._port_obj._path_to_apache_config_file()
         httpd_config_copy = os.path.join(output_dir, "httpd.conf")
         httpd_conf = self._filesystem.read_text_file(httpd_config)
+        # FIXME: This only works for Chromium. Instead it should use some abstraction on the port object.
         if self._is_cygwin():
             # This is a gross hack, but it lets us use the upstream .conf file
             # and our checked in cygwin. This tells the server the root
@@ -167,10 +164,8 @@ class LayoutTestApacheHttpd(http_server_base.HttpServerBase):
             # plus the relative paths to the .so files listed in the .conf
             # file. We have apache/cygwin checked into our tree so
             # people don't have to install it into their cygwin.
-            cygusr = self._port_obj._path_from_base('third_party', 'cygwin',
-                'usr')
-            httpd_conf = httpd_conf.replace('ServerRoot "/usr"',
-                'ServerRoot "%s"' % self._get_cygwin_path(cygusr))
+            cygusr = self._port_obj._path_from_base('third_party', 'cygwin', 'usr')
+            httpd_conf = httpd_conf.replace('ServerRoot "/usr"', 'ServerRoot "%s"' % self._get_cygwin_path(cygusr))
 
         self._filesystem.write_text_file(httpd_config_copy, httpd_conf)