You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ji...@apache.org on 2014/04/28 12:55:22 UTC

svn commit: r1590597 [10/14] - in /httpd/httpd/trunk/modules/spdy: ./ apache/ apache/filters/ apache/testing/ common/ common/testing/ support/ support/base/ support/base/metrics/ support/build/ support/install/ support/install/common/ support/install/d...

Added: httpd/httpd/trunk/modules/spdy/mod_spdy.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/mod_spdy.h?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/mod_spdy.h (added)
+++ httpd/httpd/trunk/modules/spdy/mod_spdy.h Mon Apr 28 10:55:17 2014
@@ -0,0 +1,47 @@
+/* Copyright 2011 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* This is a public header file, to be used by other Apache modules.  So,
+ * identifiers declared here should follow Apache module naming conventions
+ * (specifically, identifiers should be lowercase_with_underscores, and our
+ * identifiers should start with the spdy_ prefix), and this header file must
+ * be valid in old-school C (not just C++). */
+
+#ifndef MOD_SPDY_MOD_SPDY_H_
+#define MOD_SPDY_MOD_SPDY_H_
+
+#include "httpd.h"
+#include "apr_optional.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** An optional function which returns zero if the given connection is _not_
+ * using SPDY, and otherwise returns the (non-zero) SPDY protocol version
+ * number being used on the connection.  This can be used e.g. to alter the
+ * response for a given request to optimize for SPDY if SPDY is being used. */
+APR_DECLARE_OPTIONAL_FN(int, spdy_get_version, (conn_rec*));
+
+/* TODO(mdsteele): Add an optional function for doing a SPDY server push. */
+
+/* TODO(mdsteele): Consider adding an optional function to tell mod_spdy NOT to
+ * use SPDY for a connection (similar to ssl_engine_disable in mod_ssl). */
+
+#ifdef __cplusplus
+}  /* extern "C" */
+#endif
+
+#endif  /* MOD_SPDY_MOD_SPDY_H_ */

Propchange: httpd/httpd/trunk/modules/spdy/mod_spdy.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: httpd/httpd/trunk/modules/spdy/support/DEPS
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/DEPS?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/DEPS (added)
+++ httpd/httpd/trunk/modules/spdy/support/DEPS Mon Apr 28 10:55:17 2014
@@ -0,0 +1,142 @@
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+vars = {
+  "chromium_trunk": "http://src.chromium.org/svn/trunk",
+  "chromium_revision": "@228939",
+  "chromium_deps_root": "src/third_party/chromium_deps",
+  "apr_src": "http://svn.apache.org/repos/asf/apr/apr/tags/1.4.2",
+  "apr_revision": "@head",
+  "aprutil_src": "http://svn.apache.org/repos/asf/apr/apr-util/tags/1.3.9",
+  "aprutil_revision": "@head",
+  "apache_httpd_src": "http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.15",
+  "apache_httpd_revision": "@head",
+  "mod_pagespeed_root": "http://modpagespeed.googlecode.com/svn/tags/0.10.19.5",
+  "mod_pagespeed_revision": "@head",
+}
+
+deps = {
+  # Fetch chromium DEPS so we can sync our other dependencies relative
+  # to it.
+  Var("chromium_deps_root"):
+    File(Var("chromium_trunk") + "/src/DEPS" + Var("chromium_revision")),
+
+  "src/net/instaweb/util":
+    Var("mod_pagespeed_root") + "/src/net/instaweb/util" +
+    Var("mod_pagespeed_revision"),
+
+  "src/testing":
+    Var("chromium_trunk") + "/src/testing" + Var("chromium_revision"),
+
+  "src/third_party/chromium/src/build":
+    Var("chromium_trunk") + "/src/build" + Var("chromium_revision"),
+
+  "src/third_party/chromium/src/base":
+    Var("chromium_trunk") + "/src/base" + Var("chromium_revision"),
+
+  "src/third_party/chromium/src/chrome/tools/build":
+    Var("chromium_trunk") + "/src/chrome/tools/build" +
+    Var("chromium_revision"),
+
+  "src/third_party/chromium/src/net/base":
+    Var("chromium_trunk") + "/src/net/base" + Var("chromium_revision"),
+
+  "src/third_party/chromium/src/net/socket":
+    Var("chromium_trunk") + "/src/net/socket" + Var("chromium_revision"),
+
+  "src/third_party/chromium/src/net/spdy":
+    Var("chromium_trunk") + "/src/net/spdy" + Var("chromium_revision"),
+
+  "src/third_party/chromium/src/net/tools/flip_server":
+    Var("chromium_trunk") + "/src/net/tools/flip_server" +
+    Var("chromium_revision"),
+
+  "src/build/linux":
+    Var("chromium_trunk") + "/src/build/linux" + Var("chromium_revision"),
+  "src/build/mac":
+    Var("chromium_trunk") + "/src/build/mac" + Var("chromium_revision"),
+  "src/build/win":
+    Var("chromium_trunk") + "/src/build/win" + Var("chromium_revision"),
+  "src/build/internal":
+    Var("chromium_trunk") + "/src/build/internal" + Var("chromium_revision"),
+
+  # lastchange.py changed its behavior at some point in a way that it
+  # stopped working for us. Thus we continue to sync just that file at
+  # a known good revision. We do not sync all of src/build/util so as
+  # to make sure that we don't accidentally depend on something else
+  # at that old revision.
+  "src/build/util":
+    File(Var("chromium_trunk") + "/src/build/util/lastchange.py" + "@90205"),
+
+  "src/third_party/apache/apr/src":
+    Var("apr_src") + Var("apr_revision"),
+
+  "src/third_party/apache/aprutil/src":
+    Var("aprutil_src") + Var("aprutil_revision"),
+
+  "src/third_party/apache/httpd/src/include":
+    Var("apache_httpd_src") + "/include" + Var("apache_httpd_revision"),
+
+  "src/third_party/apache/httpd/src/os":
+    Var("apache_httpd_src") + "/os" + Var("apache_httpd_revision"),
+
+  "src/third_party/modp_b64":
+    Var("chromium_trunk") + "/src/third_party/modp_b64" +
+      Var("chromium_revision"),
+
+  "src/third_party/protobuf":
+    (Var("chromium_trunk") + "/src/third_party/protobuf" +
+     Var("chromium_revision")),
+
+  "src/third_party/zlib":
+    Var("chromium_trunk") + "/src/third_party/zlib" + Var("chromium_revision"),
+
+  "src/testing/gmock": From(Var("chromium_deps_root")),
+  "src/testing/gtest": From(Var("chromium_deps_root")),
+  "src/tools/gyp": From(Var("chromium_deps_root")),
+}
+
+
+deps_os = {
+  "win": {
+    "src/third_party/cygwin": From(Var("chromium_deps_root")),
+    "src/third_party/python_26": From(Var("chromium_deps_root")),
+  },
+  "mac": {
+  },
+  "unix": {
+  },
+}
+
+
+include_rules = [
+  # Everybody can use some things.
+  "+base",
+  "+build",
+]
+
+
+# checkdeps.py shouldn't check include paths for files in these dirs:
+skip_child_includes = [
+   "testing",
+]
+
+
+hooks = [
+  {
+    # A change to a .gyp, .gypi, or to GYP itself should run the generator.
+    "pattern": ".",
+    "action": ["python", "src/build/gyp_chromium"],
+  },
+]

Added: httpd/httpd/trunk/modules/spdy/support/base/base.gyp
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/base/base.gyp?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/base/base.gyp (added)
+++ httpd/httpd/trunk/modules/spdy/support/base/base.gyp Mon Apr 28 10:55:17 2014
@@ -0,0 +1,135 @@
+# Copyright (c) 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.
+
+# Base was branched from the chromium version to reduce the number of
+# dependencies of this package.  Specifically, we would like to avoid
+# depending on the chrome directory, which contains the chrome version
+# and branding information.
+# TODO: push this refactoring to chronium trunk.
+
+{
+  'variables': {
+    'chromium_code': 1,
+    'chromium_root': '<(DEPTH)/third_party/chromium/src',
+  },
+  'targets': [
+    {
+      'target_name': 'base',
+      'type': '<(component)',
+      'dependencies': [
+        '<(DEPTH)/third_party/modp_b64/modp_b64.gyp:modp_b64',
+        '<(chromium_root)/base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
+      ],
+      'sources': [
+        '<(chromium_root)/base/at_exit.cc',
+        '<(chromium_root)/base/atomicops_internals_x86_gcc.cc',
+        '<(chromium_root)/base/base_switches.cc',
+        '<(chromium_root)/base/callback_internal.cc',
+        '<(chromium_root)/base/command_line.cc',
+        '<(chromium_root)/base/debug/alias.cc',
+        '<(chromium_root)/base/debug/debugger.cc',
+        '<(chromium_root)/base/debug/debugger_posix.cc',
+        '<(chromium_root)/base/debug/debugger_win.cc',
+        '<(chromium_root)/base/debug/stack_trace.cc',
+        '<(chromium_root)/base/debug/stack_trace_posix.cc',
+        '<(chromium_root)/base/debug/stack_trace_win.cc',
+        '<(chromium_root)/base/files/file_path.cc',
+        '<(chromium_root)/base/files/file_path_constants.cc',
+        '<(chromium_root)/base/lazy_instance.cc',
+        '<(chromium_root)/base/location.cc',
+        '<(chromium_root)/base/logging.cc',
+        '<(chromium_root)/base/logging_win.cc',
+        '<(chromium_root)/base/mac/foundation_util.mm',
+        '<(chromium_root)/base/memory/ref_counted.cc',
+        '<(chromium_root)/base/memory/singleton.cc',
+        '<(chromium_root)/base/metrics/stats_counters.cc',
+        'metrics/stats_table.cc',
+        '<(chromium_root)/base/pickle.cc',
+        '<(chromium_root)/base/process/process_handle_linux.cc',
+        '<(chromium_root)/base/process/process_handle_mac.cc',
+        '<(chromium_root)/base/process/process_handle_posix.cc',
+        '<(chromium_root)/base/process/process_handle_win.cc',
+        '<(chromium_root)/base/profiler/alternate_timer.cc',
+        '<(chromium_root)/base/profiler/tracked_time.cc',
+        '<(chromium_root)/base/safe_strerror_posix.cc',
+        '<(chromium_root)/base/strings/string16.cc',
+        '<(chromium_root)/base/strings/string16.h',
+        '<(chromium_root)/base/strings/string_number_conversions.cc',
+        '<(chromium_root)/base/strings/string_piece.cc',
+        '<(chromium_root)/base/strings/string_split.cc',
+        '<(chromium_root)/base/strings/string_util.cc',
+        '<(chromium_root)/base/strings/string_util_constants.cc',
+        '<(chromium_root)/base/strings/stringprintf.cc',
+        '<(chromium_root)/base/strings/sys_string_conversions_posix.cc',
+        '<(chromium_root)/base/strings/sys_string_conversions_mac.mm',
+        '<(chromium_root)/base/strings/sys_string_conversions_win.cc',
+        '<(chromium_root)/base/strings/utf_string_conversion_utils.cc',
+        '<(chromium_root)/base/strings/utf_string_conversions.cc',
+        '<(chromium_root)/base/synchronization/condition_variable_posix.cc',
+        '<(chromium_root)/base/synchronization/condition_variable_win.cc',
+        '<(chromium_root)/base/synchronization/lock.cc',
+        '<(chromium_root)/base/synchronization/lock_impl_posix.cc',
+        '<(chromium_root)/base/synchronization/lock_impl_win.cc',
+        '<(chromium_root)/base/synchronization/waitable_event_posix.cc',
+        '<(chromium_root)/base/synchronization/waitable_event_win.cc',
+        '<(chromium_root)/base/third_party/dmg_fp/g_fmt.cc',
+        '<(chromium_root)/base/third_party/dmg_fp/dtoa_wrapper.cc',
+        '<(chromium_root)/base/third_party/icu/icu_utf.cc',
+        '<(chromium_root)/base/third_party/nspr/prtime.cc',
+        '<(chromium_root)/base/threading/platform_thread_mac.mm',
+        '<(chromium_root)/base/threading/platform_thread_linux.cc',
+        '<(chromium_root)/base/threading/platform_thread_posix.cc',
+        '<(chromium_root)/base/threading/platform_thread_win.cc',
+        '<(chromium_root)/base/threading/thread_collision_warner.cc',
+        '<(chromium_root)/base/threading/thread_id_name_manager.cc',
+        '<(chromium_root)/base/threading/thread_local_posix.cc',
+        '<(chromium_root)/base/threading/thread_local_win.cc',
+        '<(chromium_root)/base/threading/thread_local_storage_posix.cc',
+        '<(chromium_root)/base/threading/thread_local_storage_win.cc',
+        '<(chromium_root)/base/threading/thread_restrictions.cc',
+        '<(chromium_root)/base/time/time.cc',
+        '<(chromium_root)/base/time/time_mac.cc',
+        '<(chromium_root)/base/time/time_posix.cc',
+        '<(chromium_root)/base/time/time_win.cc',
+        '<(chromium_root)/base/tracked_objects.cc',
+        '<(chromium_root)/base/vlog.cc',
+        '<(chromium_root)/base/win/registry.cc',
+        '<(chromium_root)/base/win/win_util.cc',
+        '<(chromium_root)/base/win/windows_version.cc',
+      ],
+      'include_dirs': [
+        '<(chromium_root)',
+        '<(DEPTH)',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '<(chromium_root)',
+          '<(DEPTH)',
+        ],
+      },
+      'conditions': [
+        ['OS != "win"', {
+          'sources/': [ ['exclude', '^win/'] ],
+        }],
+        [ 'OS == "win"', {
+          'sources!': [
+            '<(chromium_root)/base/string16.cc',
+          ],
+        }],
+        ['OS == "linux"', {
+          'cflags': [
+            '-Wno-write-strings',
+            '-Wno-error',
+          ],
+          'link_settings': {
+            'libraries': [
+              # We need rt for clock_gettime().
+              '-lrt',
+            ],
+          },
+        }],
+      ],
+    },
+  ],
+}

Added: httpd/httpd/trunk/modules/spdy/support/base/metrics/stats_table.cc
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/base/metrics/stats_table.cc?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/base/metrics/stats_table.cc (added)
+++ httpd/httpd/trunk/modules/spdy/support/base/metrics/stats_table.cc Mon Apr 28 10:55:17 2014
@@ -0,0 +1,31 @@
+// Copyright (c) 2006-2008 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.
+
+// A stubbed version of stats_table.cc that doesn't do anything. These
+// functions must be defined in order to link with code that updates
+// stats (such as spdy_framer.cc).
+
+#include "base/metrics/stats_table.h"
+
+namespace base {
+
+StatsTable* StatsTable::current() { return NULL; }
+
+int StatsTable::RegisterThread(const std::string& name) {
+  return 0;
+}
+
+int StatsTable::GetSlot() const {
+  return 0;
+}
+
+int StatsTable::FindCounter(const std::string& name) {
+  return 0;
+}
+
+int* StatsTable::GetLocation(int counter_id, int slot_id) const {
+  return NULL;
+}
+
+}  // namespace base

Added: httpd/httpd/trunk/modules/spdy/support/build/all.gyp
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/all.gyp?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/all.gyp (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/all.gyp Mon Apr 28 10:55:17 2014
@@ -0,0 +1,28 @@
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'targets': [
+    {
+      'target_name': 'All',
+      'type': 'none',
+      'xcode_create_dependents_test_runner': 1,
+      'dependencies': [
+        '../base/base.gyp:*',
+        '../mod_spdy/mod_spdy.gyp:*',
+        '../net/net.gyp:*',
+        '../third_party/mod_diagnostics/mod_diagnostics.gyp:*',
+        'install.gyp:*',
+      ],} ]
+}

Added: httpd/httpd/trunk/modules/spdy/support/build/build_config.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/build_config.h?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/build_config.h (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/build_config.h Mon Apr 28 10:55:17 2014
@@ -0,0 +1 @@
+#include "third_party/chromium/src/build/build_config.h"

Propchange: httpd/httpd/trunk/modules/spdy/support/build/build_config.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: httpd/httpd/trunk/modules/spdy/support/build/build_util.gyp
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/build_util.gyp?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/build_util.gyp (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/build_util.gyp Mon Apr 28 10:55:17 2014
@@ -0,0 +1,84 @@
+# Copyright (c) 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.
+
+{
+  'variables': {
+    'version_py_path': 'version.py',
+    'mod_spdy_path': '<(DEPTH)/mod_spdy',
+    'version_path': '<(mod_spdy_path)/common/VERSION',
+    'version_h_in_path': '<(mod_spdy_path)/common/version.h.in',
+    'version_h_path': '<(SHARED_INTERMEDIATE_DIR)/mod_spdy/common/version.h',
+    'lastchange_out_path': '<(SHARED_INTERMEDIATE_DIR)/build/LASTCHANGE',
+  },
+  'targets': [
+    {
+      'target_name': 'lastchange',
+      'type': 'none',
+      'variables': {
+        'default_lastchange_path': '../LASTCHANGE.in',
+      },
+      'actions': [
+        {
+          'action_name': 'lastchange',
+          'inputs': [
+            # Note:  <(default_lastchange_path) is optional,
+            # so it doesn't show up in inputs.
+            'util/lastchange.py',
+          ],
+          'outputs': [
+            '<(lastchange_out_path).always',
+            '<(lastchange_out_path)',
+          ],
+          'action': [
+            'python', '<@(_inputs)',
+            '-o', '<(lastchange_out_path)',
+            '-d', '<(default_lastchange_path)',
+          ],
+          'message': 'Extracting last change to <(lastchange_out_path)',
+          'process_outputs_as_sources': '1',
+        },
+      ],
+    },
+    {
+      'target_name': 'mod_spdy_version_header',
+      'type': 'none',
+      'dependencies': [
+        'lastchange',
+      ],
+      'actions': [
+        {
+          'action_name': 'version_header',
+          'inputs': [
+            '<(version_path)',
+            '<(lastchange_out_path)',
+            '<(version_h_in_path)',
+          ],
+          'outputs': [
+            '<(version_h_path)',
+          ],
+          'action': [
+            'python',
+            '<(version_py_path)',
+            '-f', '<(version_path)',
+            '-f', '<(lastchange_out_path)',
+            '<(version_h_in_path)',
+            '<@(_outputs)',
+          ],
+          'message': 'Generating version header file: <@(_outputs)',
+        },
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '<(SHARED_INTERMEDIATE_DIR)',
+        ],
+      },
+    },
+  ]
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:

Added: httpd/httpd/trunk/modules/spdy/support/build/common.gypi
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/common.gypi?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/common.gypi (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/common.gypi Mon Apr 28 10:55:17 2014
@@ -0,0 +1,49 @@
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# mod_spdy common gyp configuration.
+{
+  'variables': {
+    'library%': 'static_library',
+
+    # Don't use the gold linker:
+    'linux_use_gold_binary': 0,
+    'linux_use_gold_flags': 0,
+
+    # Don't use the system Apache dev files by default:
+    'use_system_apache_dev%': 0,
+
+    # Turn these off to prevent Chromium's build config from bothering us about
+    # things we don't care about for mod_spdy:
+    'clang_use_chrome_plugins': 0,
+    'incremental_chrome_dll': 0,
+    'use_official_google_api_keys': 0,
+  },
+
+  # Import Chromium's common.gypi to inherit their build configuration.
+  'includes': [
+    '../third_party/chromium/src/build/common.gypi',
+  ],
+
+  # Modify the Chromium configuration as needed:
+  'target_defaults': {
+    # Make sure our shadow view of chromium source is available to
+    # targets that don't explicitly declare their dependencies and
+    # assume chromium source headers are available from the root
+    # (third_party/modp_b64 is one such target).
+    'include_dirs': [
+      '<(DEPTH)/third_party/chromium/src',
+    ],
+  },
+}

Added: httpd/httpd/trunk/modules/spdy/support/build/compiler_version.py
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/compiler_version.py?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/compiler_version.py (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/compiler_version.py Mon Apr 28 10:55:17 2014
@@ -0,0 +1,24 @@
+#!/usr/bin/python
+
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script is wrapper for the Chromium version of compiler_version.py.
+
+import os
+
+script_dir = os.path.dirname(__file__)
+chrome_src = os.path.normpath(os.path.join(script_dir, os.pardir, 'third_party', 'chromium', 'src'))
+
+execfile(os.path.join(chrome_src, 'build', 'compiler_version.py'))

Propchange: httpd/httpd/trunk/modules/spdy/support/build/compiler_version.py
------------------------------------------------------------------------------
    svn:eol-style = native

Added: httpd/httpd/trunk/modules/spdy/support/build/dir_exists.py
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/dir_exists.py?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/dir_exists.py (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/dir_exists.py Mon Apr 28 10:55:17 2014
@@ -0,0 +1,24 @@
+#!/usr/bin/python
+
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script is wrapper for the Chromium version of dir_exists.py.
+
+import os
+
+script_dir = os.path.dirname(__file__)
+chrome_src = os.path.normpath(os.path.join(script_dir, os.pardir, 'third_party', 'chromium', 'src'))
+
+execfile(os.path.join(chrome_src, 'build', 'dir_exists.py'))

Propchange: httpd/httpd/trunk/modules/spdy/support/build/dir_exists.py
------------------------------------------------------------------------------
    svn:eol-style = native

Added: httpd/httpd/trunk/modules/spdy/support/build/features_override.gypi
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/features_override.gypi?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/features_override.gypi (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/features_override.gypi Mon Apr 28 10:55:17 2014
@@ -0,0 +1,18 @@
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Chromium expects this file to be here, but for our purposes, it
+# doesn't need to actually do anything.
+
+{}

Added: httpd/httpd/trunk/modules/spdy/support/build/gyp_chromium
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/gyp_chromium?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/gyp_chromium (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/gyp_chromium Mon Apr 28 10:55:17 2014
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script is wrapper for the Chromium version of gyp_chromium.
+
+import os
+import sys
+
+script_dir = os.path.dirname(__file__)
+chrome_src = os.path.normpath(os.path.join(script_dir, os.pardir, 'third_party', 'chromium', 'src'))
+
+# The Chromium gyp_chromium defaults to ninja on linux.  We want to default to
+# make instead.
+if sys.platform.startswith('linux') and not os.environ.get('GYP_GENERATORS'):
+  os.environ['GYP_GENERATORS'] = 'make'
+
+execfile(os.path.join(chrome_src, 'build', 'gyp_chromium'))

Added: httpd/httpd/trunk/modules/spdy/support/build/gyp_helper.py
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/gyp_helper.py?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/gyp_helper.py (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/gyp_helper.py Mon Apr 28 10:55:17 2014
@@ -0,0 +1,24 @@
+#!/usr/bin/python
+
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script is wrapper for the Chromium version of gyp_helper.py.
+
+import os
+
+script_dir = os.path.dirname(__file__)
+chrome_src = os.path.normpath(os.path.join(script_dir, os.pardir, 'third_party', 'chromium', 'src'))
+
+execfile(os.path.join(chrome_src, 'build', 'gyp_helper.py'))

Propchange: httpd/httpd/trunk/modules/spdy/support/build/gyp_helper.py
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpd/httpd/trunk/modules/spdy/support/build/gyp_helper.py
------------------------------------------------------------------------------
    svn:executable = *

Added: httpd/httpd/trunk/modules/spdy/support/build/install.gyp
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/install.gyp?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/install.gyp (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/install.gyp Mon Apr 28 10:55:17 2014
@@ -0,0 +1,200 @@
+# Copyright (c) 2010 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.
+
+{
+  'variables': {
+    'install_path': '<(DEPTH)/install',
+    'version_py_path': '<(DEPTH)/build/version.py',
+    'version_path': '<(DEPTH)/mod_spdy/common/VERSION',
+    'lastchange_path': '<(SHARED_INTERMEDIATE_DIR)/build/LASTCHANGE',
+    'branding_path': '<(install_path)/common/BRANDING',
+  },
+  'conditions': [
+    ['OS=="linux"', {
+      'variables': {
+        'version' : '<!(python <(version_py_path) -f <(version_path) -t "@MAJOR@.@MINOR@.@BUILD@.@PATCH@")',
+        'revision' : '<!(python <(DEPTH)/build/util/lastchange.py | cut -d "=" -f 2)',
+        'packaging_files_common': [
+          '<(install_path)/common/apt.include',
+          '<(install_path)/common/mod-spdy.info',
+          '<(install_path)/common/installer.include',
+          '<(install_path)/common/repo.cron',
+          '<(install_path)/common/rpm.include',
+          '<(install_path)/common/rpmrepo.cron',
+          '<(install_path)/common/updater',
+          '<(install_path)/common/variables.include',
+          '<(install_path)/common/BRANDING',
+          '<(install_path)/common/spdy.load.template',
+          '<(install_path)/common/spdy.conf.template',
+          '<(install_path)/common/ssl.load.template',
+        ],
+        'packaging_files_deb': [
+          '<(install_path)/debian/build.sh',
+          '<(install_path)/debian/changelog.template',
+          '<(install_path)/debian/conffiles.template',
+          '<(install_path)/debian/control.template',
+          '<(install_path)/debian/postinst',
+          '<(install_path)/debian/postrm',
+          '<(install_path)/debian/preinst',
+          '<(install_path)/debian/prerm',
+        ],
+        'packaging_files_rpm': [
+          '<(install_path)/rpm/build.sh',
+          '<(install_path)/rpm/mod-spdy.spec.template',
+        ],
+        'packaging_files_binaries': [
+          '<(PRODUCT_DIR)/libmod_spdy.so',
+        ],
+        'flock_bash': ['flock', '--', '/tmp/linux_package_lock', 'bash'],
+        'deb_build': '<(PRODUCT_DIR)/install/debian/build.sh',
+        'rpm_build': '<(PRODUCT_DIR)/install/rpm/build.sh',
+        'deb_cmd': ['<@(flock_bash)', '<(deb_build)', '-o' '<(PRODUCT_DIR)',
+                    '-b', '<(PRODUCT_DIR)', '-a', '<(target_arch)'],
+        'rpm_cmd': ['<@(flock_bash)', '<(rpm_build)', '-o' '<(PRODUCT_DIR)',
+                    '-b', '<(PRODUCT_DIR)', '-a', '<(target_arch)'],
+        'conditions': [
+          ['target_arch=="ia32"', {
+            'deb_arch': 'i386',
+            'rpm_arch': 'i386',
+          }],
+          ['target_arch=="x64"', {
+            'deb_arch': 'amd64',
+            'rpm_arch': 'x86_64',
+          }],
+        ],
+      },
+      'targets': [
+        {
+          'target_name': 'linux_installer_configs',
+          'suppress_wildcard': 1,
+          'type': 'none',
+          # Add these files to the build output so the build archives will be
+          # "hermetic" for packaging.
+          'copies': [
+            {
+              'destination': '<(PRODUCT_DIR)/install/debian/',
+              'files': [
+                '<@(packaging_files_deb)',
+              ]
+            },
+            {
+              'destination': '<(PRODUCT_DIR)/install/rpm/',
+              'files': [
+                '<@(packaging_files_rpm)',
+              ]
+            },
+            {
+              'destination': '<(PRODUCT_DIR)/install/common/',
+              'files': [
+                '<@(packaging_files_common)',
+              ]
+            },
+            {
+              'destination': '<(PRODUCT_DIR)/',
+              'files': [
+                '<(DEPTH)/mod_ssl.so',
+              ]
+            },
+          ],
+          'actions': [
+            {
+              'action_name': 'save_build_info',
+              'inputs': [
+                '<(branding_path)',
+                '<(version_path)',
+                '<(lastchange_path)',
+              ],
+              'outputs': [
+                '<(PRODUCT_DIR)/installer/version.txt',
+              ],
+              # Just output the default version info variables.
+              'action': [
+                'python', '<(version_py_path)',
+                '-f', '<(branding_path)',
+                '-f', '<(version_path)',
+                '-f', '<(lastchange_path)',
+                '-o', '<@(_outputs)'
+              ],
+            },
+          ],
+        },
+        {
+          'target_name': 'linux_packages',
+          'suppress_wildcard': 1,
+          'type': 'none',
+          'dependencies': [
+            'linux_package_deb',
+            'linux_package_rpm',
+          ],
+        },
+        {
+          'target_name': 'linux_package_deb',
+          'suppress_wildcard': 1,
+          'type': 'none',
+          'dependencies': [
+            '<(DEPTH)/mod_spdy/mod_spdy.gyp:mod_spdy',
+            'linux_installer_configs',
+          ],
+          'actions': [
+            {
+              'variables': {
+                'channel': 'beta',
+              },
+              'action_name': 'deb_package_<(channel)',
+              'process_outputs_as_sources': 1,
+              'inputs': [
+                '<(deb_build)',
+                '<@(packaging_files_binaries)',
+                '<@(packaging_files_common)',
+                '<@(packaging_files_deb)',
+              ],
+              'outputs': [
+                '<(PRODUCT_DIR)/mod-spdy-<(channel)_<(version)-r<(revision)_<(deb_arch).deb',
+              ],
+              'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
+            },
+          ],
+        },
+        {
+          'target_name': 'linux_package_rpm',
+          'suppress_wildcard': 1,
+          'type': 'none',
+          'dependencies': [
+            '<(DEPTH)/mod_spdy/mod_spdy.gyp:mod_spdy',
+            'linux_installer_configs',
+          ],
+          'actions': [
+            {
+              'variables': {
+                'channel': 'beta',
+              },
+              'action_name': 'rpm_package_<(channel)',
+              'process_outputs_as_sources': 1,
+              'inputs': [
+                '<(rpm_build)',
+                '<(PRODUCT_DIR)/install/rpm/mod-spdy.spec.template',
+                '<@(packaging_files_binaries)',
+                '<@(packaging_files_common)',
+                '<@(packaging_files_rpm)',
+              ],
+              'outputs': [
+                '<(PRODUCT_DIR)/mod-spdy-<(channel)-<(version)-r<(revision).<(rpm_arch).rpm',
+              ],
+              'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
+            },
+          ],
+        },
+      ],
+    },{
+      'targets': [
+      ],
+    }],
+  ],
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:

Added: httpd/httpd/trunk/modules/spdy/support/build/output_dll_copy.rules
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/output_dll_copy.rules?rev=1590597&view=auto
==============================================================================
Binary file - no diff available.

Propchange: httpd/httpd/trunk/modules/spdy/support/build/output_dll_copy.rules
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: httpd/httpd/trunk/modules/spdy/support/build/release.gypi
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/release.gypi?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/release.gypi (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/release.gypi Mon Apr 28 10:55:17 2014
@@ -0,0 +1,19 @@
+{
+  'conditions': [
+    # Handle build types.
+    ['buildtype=="Dev"', {
+      'includes': ['internal/release_impl.gypi'],
+    }],
+    ['buildtype=="Official"', {
+      'includes': ['internal/release_impl_official.gypi'],
+    }],
+    # TODO(bradnelson): may also need:
+    #     checksenabled
+    #     coverage
+    #     dom_stats
+    #     pgo_instrument
+    #     pgo_optimize
+    #     purify
+  ],
+}
+

Added: httpd/httpd/trunk/modules/spdy/support/build/version.py
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build/version.py?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build/version.py (added)
+++ httpd/httpd/trunk/modules/spdy/support/build/version.py Mon Apr 28 10:55:17 2014
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script is wrapper for the Chromium version of compiler_version.py.
+
+import os
+
+script_dir = os.path.dirname(__file__)
+chrome_src = os.path.normpath(os.path.join(script_dir, os.pardir, 'third_party',
+                                           'chromium', 'src'))
+
+execfile(os.path.join(chrome_src, 'chrome', 'tools', 'build', 'version.py'))

Propchange: httpd/httpd/trunk/modules/spdy/support/build/version.py
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpd/httpd/trunk/modules/spdy/support/build/version.py
------------------------------------------------------------------------------
    svn:executable = *

Added: httpd/httpd/trunk/modules/spdy/support/build_modssl_with_npn.sh
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/build_modssl_with_npn.sh?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/build_modssl_with_npn.sh (added)
+++ httpd/httpd/trunk/modules/spdy/support/build_modssl_with_npn.sh Mon Apr 28 10:55:17 2014
@@ -0,0 +1,240 @@
+#!/bin/bash
+#
+# This script builds mod_ssl.so for Apache 2.2.x, with SSL NPN
+# support.
+#
+# NPN is not yet supported in Apache HTTPD mod_ssl. A patch has been
+# submitted to Apache to enable NPN in mod_ssl:
+# https://issues.apache.org/bugzilla/show_bug.cgi?id=52210
+#
+# Thus, we download the 1.0.1 release of OpenSSL and the most recent
+# release of Apache 2.2, and apply a patch to enable NPN support in
+# Apache mod_ssl.
+#
+# We currently statically link OpenSSL with mod_ssl, which results in
+# a large (several megabyte) mod_ssl.so. If you prefer, you can
+# install NPN-enabled OpenSSL as a shared library system-wide, by
+# building OpenSSL like so:
+#
+# ./config shared -fPIC  # -fPIC is only needed on some architectures
+# make
+# sudo make install
+#
+# And Apache like so (after applying the NPN patch):
+#
+# ./configure --enable-ssl=shared
+# make
+
+MODSSL_SO_DESTPATH=$(pwd)/mod_ssl.so
+
+if [ -f $MODSSL_SO_DESTPATH ]; then
+  echo "mod_ssl already exists at $MODSSL_SO_DESTPATH. Please remove."
+  exit 1
+fi
+
+if [ -z "$BUILDROOT" ]; then
+  BUILDROOT=$(mktemp -d)
+  REMOVE_BUILDROOT=1
+else
+  REMOVE_BUILDROOT=0
+fi
+
+if [ ! -d "$BUILDROOT" ]; then
+  echo "Not a directory: $BUILDROOT"
+  exit 1
+fi
+
+# Convert BUILDROOT to an absolute path.
+BUILDROOT="$(cd $(dirname $BUILDROOT); pwd)/$(basename $BUILDROOT)"
+echo "Using buildroot: $BUILDROOT"
+echo ""
+
+function do_cleanup {
+  echo ""
+  echo "Build aborted."
+  if [ $REMOVE_BUILDROOT -eq 1 ]; then
+    echo -n "Cleaning up ... "
+    rm -rf "$BUILDROOT"
+    echo "done"
+  fi
+  exit 1
+}
+
+trap 'do_cleanup' SIGINT SIGTERM
+
+PROGRESS_DIR=$BUILDROOT/progress
+mkdir -p $PROGRESS_DIR
+if [ $? -ne 0 ]; then
+  do_cleanup
+fi
+
+function download_file {
+  if [ ! -f "$PROGRESS_DIR/$2.downloaded" ]; then
+    echo "Downloading $1"
+    curl -f -# "$1" -o $2 || do_cleanup
+    if [[ $(md5sum $2 | cut -d\  -f1) != $3 ]]; then
+      echo "md5sum mismatch for $2"
+      do_cleanup
+    fi
+    touch "$PROGRESS_DIR/$2.downloaded"
+  else
+    echo "Already downloaded $1"
+  fi
+}
+
+function uncompress_file {
+  if [ ! -f "$PROGRESS_DIR/$1.uncompressed" ]; then
+    echo -n "Uncompressing $1 ... "
+    tar xzf $1 || do_cleanup
+    echo "done"
+    touch "$PROGRESS_DIR/$1.uncompressed"
+  else
+    echo "Already uncompressed $1"
+  fi
+}
+
+OPENSSL_SRC_TGZ_URL="https://www.openssl.org/source/openssl-1.0.1g.tar.gz"
+APACHE_HTTPD_SRC_TGZ_URL="https://archive.apache.org/dist/httpd/httpd-2.2.27.tar.gz"
+APACHE_HTTPD_MODSSL_NPN_PATCH_PATH="$(dirname $0)/scripts/mod_ssl_with_npn.patch"
+
+OPENSSL_SRC_TGZ=$(basename $OPENSSL_SRC_TGZ_URL)
+APACHE_HTTPD_SRC_TGZ=$(basename $APACHE_HTTPD_SRC_TGZ_URL)
+APACHE_HTTPD_MODSSL_NPN_PATCH="mod_ssl_npn.patch"
+
+OPENSSL_SRC_ROOT=${OPENSSL_SRC_TGZ%.tar.gz}
+OPENSSL_INST_ROOT=${OPENSSL_SRC_ROOT}_install
+APACHE_HTTPD_SRC_ROOT=${APACHE_HTTPD_SRC_TGZ%.tar.gz}
+
+OPENSSL_BUILDLOG=$(mktemp -p /tmp openssl_buildlog.XXXXXXXXXX)
+APACHE_HTTPD_BUILDLOG=$(mktemp -p /tmp httpd_buildlog.XXXXXXXXXX)
+
+cp $APACHE_HTTPD_MODSSL_NPN_PATCH_PATH $BUILDROOT/$APACHE_HTTPD_MODSSL_NPN_PATCH
+
+pushd $BUILDROOT >/dev/null
+
+download_file $OPENSSL_SRC_TGZ_URL $OPENSSL_SRC_TGZ de62b43dfcd858e66a74bee1c834e959
+download_file $APACHE_HTTPD_SRC_TGZ_URL $APACHE_HTTPD_SRC_TGZ 148eb08e731916a43a33a6ffa25f17c0
+
+echo ""
+
+uncompress_file $OPENSSL_SRC_TGZ
+uncompress_file $APACHE_HTTPD_SRC_TGZ
+
+if [ ! -f "$PROGRESS_DIR/modssl_patched" ]; then
+  pushd $APACHE_HTTPD_SRC_ROOT >/dev/null
+  echo "Applying Apache mod_ssl NPN patch ... "
+  patch -p0 < $BUILDROOT/$APACHE_HTTPD_MODSSL_NPN_PATCH
+  if [ $? -ne 0 ]; then
+    echo "Failed to patch."
+    do_cleanup
+  fi
+  echo "done"
+  popd >/dev/null  # $APACHE_HTTPD_SRC_ROOT
+  touch "$PROGRESS_DIR/modssl_patched"
+else
+  echo "Already applied Apache mod_ssl NPN patch."
+fi
+
+echo ""
+
+if [ ! -f "$PROGRESS_DIR/openssl_configured" ]; then
+  pushd $OPENSSL_SRC_ROOT >/dev/null
+  echo -n "Configuring OpenSSL ... "
+  ./config no-shared -fPIC --openssldir=$BUILDROOT/$OPENSSL_INST_ROOT >> $OPENSSL_BUILDLOG
+  if [ $? -ne 0 ]; then
+    echo "Failed. Build log at $OPENSSL_BUILDLOG."
+    do_cleanup
+  fi
+  echo "done"
+  popd >/dev/null  # $OPENSSL_SRC_ROOT
+  touch "$PROGRESS_DIR/openssl_configured"
+else
+  echo "Already configured OpenSSL."
+fi
+
+if [ ! -f "$PROGRESS_DIR/openssl_built" ]; then
+  pushd $OPENSSL_SRC_ROOT >/dev/null
+  echo -n "Building OpenSSL (this may take a while) ... "
+  make install >> $OPENSSL_BUILDLOG 2>&1
+  if [ $? -ne 0 ]; then
+    echo "Failed. Build log at $OPENSSL_BUILDLOG."
+    do_cleanup
+  fi
+  # A hacky fix that helps things build on CentOS:
+  if grep -q CentOS /etc/issue; then
+    sed --in-place 's/^Libs\.private: -ldl$/& -lcrypto/' \
+      $BUILDROOT/$OPENSSL_INST_ROOT/lib/pkgconfig/openssl.pc
+  fi
+  echo "done"
+  popd >/dev/null  # $OPENSSL_SRC_ROOT
+  touch "$PROGRESS_DIR/openssl_built"
+else
+  echo "Already built OpenSSL."
+fi
+
+rm -f "$OPENSSL_BUILDLOG"
+
+echo ""
+
+if [ ! -f "$PROGRESS_DIR/modssl_configured" ]; then
+  pushd $APACHE_HTTPD_SRC_ROOT >/dev/null
+  echo -n "Configuring Apache mod_ssl ... "
+
+  # OpenSSL, as of version 1.0.1, changed its pkg-config file to list
+  # its dependent libraries in Libs.private. Prior to this, dependent
+  # libraries were listed in Libs. This change in 1.0.1 is the right
+  # thing for OpenSSL, but it breaks the Apache 2.2.x configure when
+  # linking statically against OpenSSL, since it assumes that all
+  # dependent libs are provided in the pkg config Libs directive. We
+  # run a search-replace on the configure script to tell it to include
+  # not only libraries in Libs, but also those in Libs.private:
+  mv configure configure.bak
+  sed 's/--libs-only-l openssl/--libs-only-l --static openssl/' configure.bak > configure
+  chmod --reference=configure.bak configure
+
+  ./configure --enable-ssl=shared --with-ssl=$BUILDROOT/$OPENSSL_INST_ROOT >> $APACHE_HTTPD_BUILDLOG
+  if [ $? -ne 0 ]; then
+    echo "Failed. Build log at $APACHE_HTTPD_BUILDLOG."
+    do_cleanup
+  fi
+  echo "done"
+  popd >/dev/null  # $APACHE_HTTPD_SRC_ROOT
+  touch "$PROGRESS_DIR/modssl_configured"
+else
+  echo "Already configured Apache mod_ssl."
+fi
+
+if [ ! -f "$PROGRESS_DIR/modssl_built" ]; then
+  pushd $APACHE_HTTPD_SRC_ROOT >/dev/null
+  echo -n "Building Apache mod_ssl (this may take a while) ... "
+  make >> $APACHE_HTTPD_BUILDLOG 2>&1
+  if [ $? -ne 0 ]; then
+    echo "Failed. Build log at $APACHE_HTTPD_BUILDLOG."
+    do_cleanup
+  fi
+  echo "done"
+  popd >/dev/null  # $APACHE_HTTPD_SRC_ROOT
+  touch "$PROGRESS_DIR/modssl_built"
+else
+  echo "Already built Apache mod_ssl."
+fi
+
+rm -f "$APACHE_HTTPD_BUILDLOG"
+
+popd >/dev/null  # $BUILDROOT
+
+MODSSL_SO_SRCPATH=$(find $BUILDROOT/$APACHE_HTTPD_SRC_ROOT -name mod_ssl.so)
+if [ $(echo $MODSSL_SO_SRCPATH | wc -l) -ne 1 ]; then
+  echo "Found multiple mod_ssl.so's:"
+  echo $MODSSL_SO_SRCPATH
+  do_cleanup
+fi
+
+cp $MODSSL_SO_SRCPATH $MODSSL_SO_DESTPATH
+
+if [ $REMOVE_BUILDROOT -eq 1 ]; then
+  rm -rf "$BUILDROOT"
+fi
+
+echo ""
+echo "Generated mod_ssl.so at $MODSSL_SO_DESTPATH."

Propchange: httpd/httpd/trunk/modules/spdy/support/build_modssl_with_npn.sh
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpd/httpd/trunk/modules/spdy/support/build_modssl_with_npn.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: httpd/httpd/trunk/modules/spdy/support/install/common/BRANDING
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/BRANDING?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/BRANDING (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/BRANDING Mon Apr 28 10:55:17 2014
@@ -0,0 +1,5 @@
+COMPANY_FULLNAME=Google Inc.
+COMPANY_SHORTNAME=Google Inc.
+PRODUCT_FULLNAME=mod_spdy
+PRODUCT_SHORTNAME=mod_spdy
+COPYRIGHT=Copyright (C) 2012.

Added: httpd/httpd/trunk/modules/spdy/support/install/common/apt.include
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/apt.include?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/apt.include (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/apt.include Mon Apr 28 10:55:17 2014
@@ -0,0 +1,188 @@
+@@include@@variables.include
+
+APT_GET="`which apt-get 2> /dev/null`"
+APT_CONFIG="`which apt-config 2> /dev/null`"
+
+SOURCES_PREAMBLE="### THIS FILE IS AUTOMATICALLY CONFIGURED ###
+# You may comment out this entry, but any other modifications may be lost.\n"
+
+# Parse apt configuration and return requested variable value.
+apt_config_val() {
+  APTVAR="$1"
+  if [ -x "$APT_CONFIG" ]; then
+    "$APT_CONFIG" dump | sed -e "/^$APTVAR /"'!d' -e "s/^$APTVAR \"\(.*\)\".*/\1/"
+  fi
+}
+
+# Install the repository signing key (see also:
+# http://www.google.com/linuxrepositories/aboutkey.html)
+install_key() {
+  APT_KEY="`which apt-key 2> /dev/null`"
+  if [ -x "$APT_KEY" ]; then
+    "$APT_KEY" add - >/dev/null 2>&1 <<KEYDATA
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.2.2 (GNU/Linux)
+
+mQGiBEXwb0YRBADQva2NLpYXxgjNkbuP0LnPoEXruGmvi3XMIxjEUFuGNCP4Rj/a
+kv2E5VixBP1vcQFDRJ+p1puh8NU0XERlhpyZrVMzzS/RdWdyXf7E5S8oqNXsoD1z
+fvmI+i9b2EhHAA19Kgw7ifV8vMa4tkwslEmcTiwiw8lyUl28Wh4Et8SxzwCggDcA
+feGqtn3PP5YAdD0km4S4XeMEAJjlrqPoPv2Gf//tfznY2UyS9PUqFCPLHgFLe80u
+QhI2U5jt6jUKN4fHauvR6z3seSAsh1YyzyZCKxJFEKXCCqnrFSoh4WSJsbFNc4PN
+b0V0SqiTCkWADZyLT5wll8sWuQ5ylTf3z1ENoHf+G3um3/wk/+xmEHvj9HCTBEXP
+78X0A/0Tqlhc2RBnEf+AqxWvM8sk8LzJI/XGjwBvKfXe+l3rnSR2kEAvGzj5Sg0X
+4XmfTg4Jl8BNjWyvm2Wmjfet41LPmYJKsux3g0b8yzQxeOA4pQKKAU3Z4+rgzGmf
+HdwCG5MNT2A5XxD/eDd+L4fRx0HbFkIQoAi1J3YWQSiTk15fw7RMR29vZ2xlLCBJ
+bmMuIExpbnV4IFBhY2thZ2UgU2lnbmluZyBLZXkgPGxpbnV4LXBhY2thZ2VzLWtl
+eW1hc3RlckBnb29nbGUuY29tPohjBBMRAgAjAhsDBgsJCAcDAgQVAggDBBYCAwEC
+HgECF4AFAkYVdn8CGQEACgkQoECDD3+sWZHKSgCfdq3HtNYJLv+XZleb6HN4zOcF
+AJEAniSFbuv8V5FSHxeRimHx25671az+uQINBEXwb0sQCACuA8HT2nr+FM5y/kzI
+A51ZcC46KFtIDgjQJ31Q3OrkYP8LbxOpKMRIzvOZrsjOlFmDVqitiVc7qj3lYp6U
+rgNVaFv6Qu4bo2/ctjNHDDBdv6nufmusJUWq/9TwieepM/cwnXd+HMxu1XBKRVk9
+XyAZ9SvfcW4EtxVgysI+XlptKFa5JCqFM3qJllVohMmr7lMwO8+sxTWTXqxsptJo
+pZeKz+UBEEqPyw7CUIVYGC9ENEtIMFvAvPqnhj1GS96REMpry+5s9WKuLEaclWpd
+K3krttbDlY1NaeQUCRvBYZ8iAG9YSLHUHMTuI2oea07Rh4dtIAqPwAX8xn36JAYG
+2vgLAAMFB/wKqaycjWAZwIe98Yt0qHsdkpmIbarD9fGiA6kfkK/UxjL/k7tmS4Vm
+CljrrDZkPSQ/19mpdRcGXtb0NI9+nyM5trweTvtPw+HPkDiJlTaiCcx+izg79Fj9
+KcofuNb3lPdXZb9tzf5oDnmm/B+4vkeTuEZJ//IFty8cmvCpzvY+DAz1Vo9rA+Zn
+cpWY1n6z6oSS9AsyT/IFlWWBZZ17SpMHu+h4Bxy62+AbPHKGSujEGQhWq8ZRoJAT
+G0KSObnmZ7FwFWu1e9XFoUCt0bSjiJWTIyaObMrWu/LvJ3e9I87HseSJStfw6fki
+5og9qFEkMrIrBCp3QGuQWBq/rTdMuwNFiEkEGBECAAkFAkXwb0sCGwwACgkQoECD
+D3+sWZF/WACfeNAu1/1hwZtUo1bR+MWiCjpvHtwAnA1R3IHqFLQ2X3xJ40XPuAyY
+/FJG
+=Quqp
+-----END PGP PUBLIC KEY BLOCK-----
+KEYDATA
+  fi
+}
+
+# Set variables for the locations of the apt sources lists.
+find_apt_sources() {
+  APTDIR=$(apt_config_val Dir)
+  APTETC=$(apt_config_val 'Dir::Etc')
+  APT_SOURCES="$APTDIR$APTETC$(apt_config_val 'Dir::Etc::sourcelist')"
+  APT_SOURCESDIR="$APTDIR$APTETC$(apt_config_val 'Dir::Etc::sourceparts')"
+}
+
+# Update the Google repository if it's not set correctly.
+# Note: this doesn't necessarily enable the repository, it just makes sure the
+# correct settings are available in the sources list.
+# Returns:
+# 0 - no update necessary
+# 2 - error
+update_bad_sources() {
+  if [ ! "$REPOCONFIG" ]; then
+    return 0
+  fi
+
+  find_apt_sources
+
+  SOURCELIST="$APT_SOURCESDIR/@@PACKAGE@@.list"
+  # Don't do anything if the file isn't there, since that probably means the
+  # user disabled it.
+  if [ ! -r "$SOURCELIST" ]; then
+    return 0
+  fi
+
+  # Basic check for active configurations (non-blank, non-comment lines).
+  ACTIVECONFIGS=$(grep -v "^[[:space:]]*\(#.*\)\?$" "$SOURCELIST" 2>/dev/null)
+
+  # Check if the correct repository configuration is in there.
+  REPOMATCH=$(grep "^[[:space:]#]*\b$REPOCONFIG\b" "$SOURCELIST" \
+    2>/dev/null)
+
+  # Check if the correct repository is disabled.
+  MATCH_DISABLED=$(echo "$REPOMATCH" | grep "^[[:space:]]*#" 2>/dev/null)
+
+  # Now figure out if we need to fix things.
+  BADCONFIG=1
+  if [ "$REPOMATCH" ]; then
+    # If it's there and active, that's ideal, so nothing to do.
+    if [ ! "$MATCH_DISABLED" ]; then
+      BADCONFIG=0
+    else
+      # If it's not active, but neither is anything else, that's fine too.
+      if [ ! "$ACTIVECONFIGS" ]; then
+        BADCONFIG=0
+      fi
+    fi
+  fi
+
+  if [ $BADCONFIG -eq 0 ]; then
+    return 0
+  fi
+
+  # At this point, either the correct configuration is completely missing, or
+  # the wrong configuration is active. In that case, just abandon the mess and
+  # recreate the file with the correct configuration. If there were no active
+  # configurations before, create the new configuration disabled.
+  DISABLE=""
+  if [ ! "$ACTIVECONFIGS" ]; then
+    DISABLE="#"
+  fi
+  printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
+  printf "$DISABLE$REPOCONFIG\n" >> "$SOURCELIST"
+  if [ $? -eq 0 ]; then
+    return 0
+  fi
+  return 2
+}
+
+# Add the Google repository to the apt sources.
+# Returns:
+# 0 - sources list was created
+# 2 - error
+create_sources_lists() {
+  if [ ! "$REPOCONFIG" ]; then
+    return 0
+  fi
+
+  find_apt_sources
+
+  SOURCELIST="$APT_SOURCESDIR/@@PACKAGE@@.list"
+  if [ -d "$APT_SOURCESDIR" ]; then
+    printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
+    printf "$REPOCONFIG\n" >> "$SOURCELIST"
+    if [ $? -eq 0 ]; then
+      return 0
+    fi
+  fi
+  return 2
+}
+
+# Remove our custom sources list file.
+# Returns:
+# 0 - successfully removed, or not configured
+# !0 - failed to remove
+clean_sources_lists() {
+  if [ ! "$REPOCONFIG" ]; then
+    return 0
+  fi
+
+  find_apt_sources
+
+  rm -f "$APT_SOURCESDIR/@@PACKAGE@@.list" \
+        "$APT_SOURCESDIR/@@PACKAGE@@-@@CHANNEL@@.list"
+}
+
+# Detect if the repo config was disabled by distro upgrade and enable if
+# necessary.
+handle_distro_upgrade() {
+  if [ ! "$REPOCONFIG" ]; then
+    return 0
+  fi
+
+  find_apt_sources
+  SOURCELIST="$APT_SOURCESDIR/@@PACKAGE@@.list"
+  if [ -r "$SOURCELIST" ]; then
+    REPOLINE=$(grep -E "^[[:space:]]*#[[:space:]]*$REPOCONFIG[[:space:]]*# disabled on upgrade to .*" "$SOURCELIST")
+    if [ $? -eq 0 ]; then
+      sed -i -e "s,^[[:space:]]*#[[:space:]]*\($REPOCONFIG\)[[:space:]]*# disabled on upgrade to .*,\1," \
+        "$SOURCELIST"
+      LOGGER=$(which logger 2> /dev/null)
+      if [ "$LOGGER" ]; then
+        "$LOGGER" -t "$0" "Reverted repository modification: $REPOLINE."
+      fi
+    fi
+  fi
+}
+

Added: httpd/httpd/trunk/modules/spdy/support/install/common/installer.include
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/installer.include?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/installer.include (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/installer.include Mon Apr 28 10:55:17 2014
@@ -0,0 +1,116 @@
+# Recursively replace @@include@@ template variables with the referenced file,
+# and write the resulting text to stdout.
+process_template_includes() {
+  INCSTACK+="$1->"
+  # Includes are relative to the file that does the include.
+  INCDIR=$(dirname $1)
+  # Clear IFS so 'read' doesn't trim whitespace
+  local OLDIFS="$IFS"
+  IFS=''
+  while read -r LINE
+  do
+    INCLINE=$(sed -e '/^[[:space:]]*@@include@@/!d' <<<$LINE)
+    if [ -n "$INCLINE" ]; then
+      INCFILE=$(echo $INCLINE | sed -e "s#@@include@@\(.*\)#\1#")
+      # Simple filename match to detect cyclic includes.
+      CYCLE=$(sed -e "\#$INCFILE#"'!d' <<<$INCSTACK)
+      if [ "$CYCLE" ]; then
+        echo "ERROR: Possible cyclic include detected." 1>&2
+        echo "$INCSTACK$INCFILE" 1>&2
+        exit 1
+      fi
+      if [ ! -r "$INCDIR/$INCFILE" ]; then
+        echo "ERROR: Couldn't read include file: $INCDIR/$INCFILE" 1>&2
+        exit 1
+      fi
+      process_template_includes "$INCDIR/$INCFILE"
+    else
+      echo "$LINE"
+    fi
+  done < "$1"
+  IFS="$OLDIFS"
+  INCSTACK=${INCSTACK%"$1->"}
+}
+
+# Replace template variables (@@VARNAME@@) in the given template file. If a
+# second argument is given, save the processed text to that filename, otherwise
+# modify the template file in place.
+process_template() (
+  # Don't worry if some of these substitution variables aren't set.
+  # Note that this function is run in a sub-shell so we don't leak this
+  # setting, since we still want unbound variables to be an error elsewhere.
+  set +u
+
+  local TMPLIN="$1"
+  if [ -z "$2" ]; then
+    local TMPLOUT="$TMPLIN"
+  else
+    local TMPLOUT="$2"
+  fi
+  # Process includes first so included text also gets substitutions.
+  TMPLINCL="$(process_template_includes "$TMPLIN")"
+  sed \
+    -e "s#@@PACKAGE@@#${PACKAGE}#g" \
+    -e "s#@@CHANNEL@@#${CHANNEL}#g" \
+    -e "s#@@COMPANY_FULLNAME@@#${COMPANY_FULLNAME}#g" \
+    -e "s#@@VERSION@@#${VERSION}#g" \
+    -e "s#@@REVISION@@#${REVISION}#g" \
+    -e "s#@@VERSIONFULL@@#${VERSIONFULL}#g" \
+    -e "s#@@BUILDDIR@@#${BUILDDIR}#g" \
+    -e "s#@@STAGEDIR@@#${STAGEDIR}#g" \
+    -e "s#@@SCRIPTDIR@@#${SCRIPTDIR}#g" \
+    -e "s#@@PRODUCTURL@@#${PRODUCTURL}#g" \
+    -e "s#@@PREDEPENDS@@#${PREDEPENDS}#g" \
+    -e "s#@@DEPENDS@@#${DEPENDS}#g" \
+    -e "s#@@PROVIDES@@#${PROVIDES}#g" \
+    -e "s#@@REPLACES@@#${REPLACES}#g" \
+    -e "s#@@CONFLICTS@@#${CONFLICTS}#g" \
+    -e "s#@@ARCHITECTURE@@#${HOST_ARCH}#g" \
+    -e "s#@@MAINTNAME@@#${MAINTNAME}#g" \
+    -e "s#@@MAINTMAIL@@#${MAINTMAIL}#g" \
+    -e "s#@@REPOCONFIG@@#${REPOCONFIG}#g" \
+    -e "s#@@SHORTDESC@@#${SHORTDESC}#g" \
+    -e "s#@@FULLDESC@@#${FULLDESC}#g" \
+    -e "s#@@APACHE_CONFDIR@@#${APACHE_CONFDIR}#g" \
+    -e "s#@@APACHE_MODULEDIR@@#${APACHE_MODULEDIR}#g" \
+    -e "s#@@APACHE_USER@@#${APACHE_USER}#g" \
+    -e "s#@@MODSPDY_ENABLE_UPDATES@@#${MODSPDY_ENABLE_UPDATES}#g" \
+    -e "s#@@COMMENT_OUT_DEFLATE@@#${COMMENT_OUT_DEFLATE}#g" \
+    > "$TMPLOUT" <<< "$TMPLINCL"
+)
+
+# Setup the installation directory hierachy in the package staging area.
+prep_staging_common() {
+  install -m 755 -d \
+    "${STAGEDIR}${APACHE_CONFDIR}" \
+    "${STAGEDIR}${APACHE_MODULEDIR}"
+}
+
+get_version_info() {
+  # Default to a bogus low version, so if somebody creates and installs
+  # a package with no version info, it won't prevent upgrading when
+  # trying to install a properly versioned package (i.e. a proper
+  # package will always be "newer").
+  VERSION="0.0.0.0"
+  # Use epoch timestamp so packages with bogus versions still increment
+  # and will upgrade older bogus-versioned packages.
+  REVISION=$(date +"%s")
+  # Default to non-official build since official builds set this
+  # properly.
+  OFFICIAL_BUILD=0
+
+  VERSIONFILE="${BUILDDIR}/installer/version.txt"
+  if [ -f "${VERSIONFILE}" ]; then
+    source "${VERSIONFILE}"
+    VERSION="${MAJOR}.${MINOR}.${BUILD}.${PATCH}"
+    REVISION="${LASTCHANGE}"
+  fi
+}
+
+stage_install_common() {
+  echo "Staging common install files in '${STAGEDIR}'..."
+
+  # app and resources
+  install -m 644 -s "${BUILDDIR}/libmod_spdy.so" "${STAGEDIR}${APACHE_MODULEDIR}/mod_spdy.so"
+  install -m 644 -s "${BUILDDIR}/mod_ssl.so" "${STAGEDIR}${APACHE_MODULEDIR}/mod_ssl_with_npn.so"
+}

Added: httpd/httpd/trunk/modules/spdy/support/install/common/mod-spdy.info
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/mod-spdy.info?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/mod-spdy.info (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/mod-spdy.info Mon Apr 28 10:55:17 2014
@@ -0,0 +1,20 @@
+# Copyright (c) 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 file provides common configuration information for building
+# mod-spdy packages for various platforms.
+
+# Base name of the package.
+PACKAGE="mod-spdy"
+
+# Brief package description.
+SHORTDESC="Apache 2 module to enable SPDY support."
+
+# Detailed package description.
+FULLDESC="mod_spdy is an Apache module that allows an Apache server to support the SPDY protocol for serving HTTP resources."
+
+# Package maintainer information.
+MAINTNAME="mod_spdy developers"
+MAINTMAIL="mod-spdy-dev@googlegroups.com"
+PRODUCTURL="http://code.google.com/p/mod-spdy/"

Added: httpd/httpd/trunk/modules/spdy/support/install/common/repo.cron
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/repo.cron?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/repo.cron (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/repo.cron Mon Apr 28 10:55:17 2014
@@ -0,0 +1,42 @@
+#!/bin/sh
+#
+# Copyright (c) 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 script is part of the @@PACKAGE@@ package.
+#
+# It creates the repository configuration file for package updates, and it
+# monitors that config to see if it has been disabled by the overly aggressive
+# distro upgrade process (e.g.  intrepid -> jaunty). When this situation is
+# detected, the respository will be re-enabled. If the respository is disabled
+# for any other reason, this won't re-enable it.
+#
+# This functionality can be controlled by creating the $DEFAULTS_FILE and
+# setting "repo_add_once" and/or "repo_reenable_on_distupgrade" to "true" or
+# "false" as desired. An empty $DEFAULTS_FILE is the same as setting both values
+# to "false".
+
+@@include@@apt.include
+
+## MAIN ##
+DEFAULTS_FILE="/etc/default/@@PACKAGE@@"
+if [ -r "$DEFAULTS_FILE" ]; then
+  . "$DEFAULTS_FILE"
+fi
+
+if [ "$repo_add_once" = "true" ]; then
+  install_key
+  create_sources_lists
+  RES=$?
+  # Sources creation succeeded, so stop trying.
+  if [ $RES -ne 2 ]; then
+    sed -i -e 's/[[:space:]]*repo_add_once=.*/repo_add_once="false"/' "$DEFAULTS_FILE"
+  fi
+else
+  update_bad_sources
+fi
+
+if [ "$repo_reenable_on_distupgrade" = "true" ]; then
+  handle_distro_upgrade
+fi

Added: httpd/httpd/trunk/modules/spdy/support/install/common/rpm.include
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/rpm.include?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/rpm.include (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/rpm.include Mon Apr 28 10:55:17 2014
@@ -0,0 +1,305 @@
+@@include@@variables.include
+
+# Install the repository signing key (see also:
+# http://www.google.com/linuxrepositories/aboutkey.html)
+install_rpm_key() {
+  # Check to see if key already exists.
+  rpm -q gpg-pubkey-7fac5991-4615767f > /dev/null 2>&1
+  if [ "$?" -eq "0" ]; then
+    # Key already exists
+    return 0
+  fi
+  # This is to work around a bug in RPM 4.7.0. (see http://crbug.com/22312)
+  rpm -q gpg-pubkey-7fac5991-45f06f46 > /dev/null 2>&1
+  if [ "$?" -eq "0" ]; then
+    # Key already exists
+    return 0
+  fi
+
+  # RPM on Mandriva 2009 is dumb and does not understand "rpm --import -"
+  TMPKEY=$(mktemp /tmp/google.sig.XXXXXX)
+  if [ -n "$TMPKEY" ]; then
+    cat > "$TMPKEY" <<KEYDATA
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.2.2 (GNU/Linux)
+
+mQGiBEXwb0YRBADQva2NLpYXxgjNkbuP0LnPoEXruGmvi3XMIxjEUFuGNCP4Rj/a
+kv2E5VixBP1vcQFDRJ+p1puh8NU0XERlhpyZrVMzzS/RdWdyXf7E5S8oqNXsoD1z
+fvmI+i9b2EhHAA19Kgw7ifV8vMa4tkwslEmcTiwiw8lyUl28Wh4Et8SxzwCggDcA
+feGqtn3PP5YAdD0km4S4XeMEAJjlrqPoPv2Gf//tfznY2UyS9PUqFCPLHgFLe80u
+QhI2U5jt6jUKN4fHauvR6z3seSAsh1YyzyZCKxJFEKXCCqnrFSoh4WSJsbFNc4PN
+b0V0SqiTCkWADZyLT5wll8sWuQ5ylTf3z1ENoHf+G3um3/wk/+xmEHvj9HCTBEXP
+78X0A/0Tqlhc2RBnEf+AqxWvM8sk8LzJI/XGjwBvKfXe+l3rnSR2kEAvGzj5Sg0X
+4XmfTg4Jl8BNjWyvm2Wmjfet41LPmYJKsux3g0b8yzQxeOA4pQKKAU3Z4+rgzGmf
+HdwCG5MNT2A5XxD/eDd+L4fRx0HbFkIQoAi1J3YWQSiTk15fw7RMR29vZ2xlLCBJ
+bmMuIExpbnV4IFBhY2thZ2UgU2lnbmluZyBLZXkgPGxpbnV4LXBhY2thZ2VzLWtl
+eW1hc3RlckBnb29nbGUuY29tPohjBBMRAgAjAhsDBgsJCAcDAgQVAggDBBYCAwEC
+HgECF4AFAkYVdn8CGQEACgkQoECDD3+sWZHKSgCfdq3HtNYJLv+XZleb6HN4zOcF
+AJEAniSFbuv8V5FSHxeRimHx25671az+uQINBEXwb0sQCACuA8HT2nr+FM5y/kzI
+A51ZcC46KFtIDgjQJ31Q3OrkYP8LbxOpKMRIzvOZrsjOlFmDVqitiVc7qj3lYp6U
+rgNVaFv6Qu4bo2/ctjNHDDBdv6nufmusJUWq/9TwieepM/cwnXd+HMxu1XBKRVk9
+XyAZ9SvfcW4EtxVgysI+XlptKFa5JCqFM3qJllVohMmr7lMwO8+sxTWTXqxsptJo
+pZeKz+UBEEqPyw7CUIVYGC9ENEtIMFvAvPqnhj1GS96REMpry+5s9WKuLEaclWpd
+K3krttbDlY1NaeQUCRvBYZ8iAG9YSLHUHMTuI2oea07Rh4dtIAqPwAX8xn36JAYG
+2vgLAAMFB/wKqaycjWAZwIe98Yt0qHsdkpmIbarD9fGiA6kfkK/UxjL/k7tmS4Vm
+CljrrDZkPSQ/19mpdRcGXtb0NI9+nyM5trweTvtPw+HPkDiJlTaiCcx+izg79Fj9
+KcofuNb3lPdXZb9tzf5oDnmm/B+4vkeTuEZJ//IFty8cmvCpzvY+DAz1Vo9rA+Zn
+cpWY1n6z6oSS9AsyT/IFlWWBZZ17SpMHu+h4Bxy62+AbPHKGSujEGQhWq8ZRoJAT
+G0KSObnmZ7FwFWu1e9XFoUCt0bSjiJWTIyaObMrWu/LvJ3e9I87HseSJStfw6fki
+5og9qFEkMrIrBCp3QGuQWBq/rTdMuwNFiEkEGBECAAkFAkXwb0sCGwwACgkQoECD
+D3+sWZF/WACfeNAu1/1hwZtUo1bR+MWiCjpvHtwAnA1R3IHqFLQ2X3xJ40XPuAyY
+/FJG
+=Quqp
+-----END PGP PUBLIC KEY BLOCK-----
+KEYDATA
+    rpm --import "$TMPKEY"
+    rc=$?
+    rm -f "$TMPKEY"
+    if [ "$rc" -eq "0" ]; then
+      return 0
+    fi
+  fi
+  return 1
+}
+
+determine_rpm_package_manager() {
+  local RELEASE
+  LSB_RELEASE="$(which lsb_release 2> /dev/null)"
+  if [ -x "$LSB_RELEASE" ]; then
+    RELEASE=$(lsb_release -i 2> /dev/null)
+    case $DISTRIB_ID in
+    "Fedora")
+      PACKAGEMANAGER=yum
+      ;;
+    "MandrivaLinux")
+      PACKAGEMANAGER=urpmi
+      ;;
+    "SUSE LINUX")
+      PACKAGEMANAGER=yast
+      ;;
+    esac
+  fi
+
+  if [ "$PACKAGEMANAGER" ]; then
+    return
+  fi
+
+  # Fallback methods that are probably unnecessary on modern systems.
+  if [ -f "/etc/lsb-release" ]; then
+    # file missing on Fedora, does not contain DISTRIB_ID on OpenSUSE.
+    eval $(sed -e '/DISTRIB_ID/!d' /etc/lsb-release)
+    case $DISTRIB_ID in
+    MandrivaLinux)
+      PACKAGEMANAGER=urpmi
+      ;;
+    esac
+  fi
+
+  if [ "$PACKAGEMANAGER" ]; then
+    return
+  fi
+
+  if [ -f "/etc/fedora-release" ] || [ -f "/etc/redhat-release" ]; then
+    PACKAGEMANAGER=yum
+  elif [ -f "/etc/SuSE-release" ]; then
+    PACKAGEMANAGER=yast
+  elif [ -f "/etc/mandriva-release" ]; then
+    PACKAGEMANAGER=urpmi
+  fi
+}
+
+DEFAULT_ARCH="@@ARCHITECTURE@@"
+YUM_REPO_FILE="/etc/yum.repos.d/@@PACKAGE@@.repo"
+ZYPPER_REPO_FILE="/etc/zypp/repos.d/@@PACKAGE@@.repo"
+URPMI_REPO_FILE="/etc/urpmi/urpmi.cfg"
+
+install_yum() {
+  install_rpm_key
+
+  if [ ! "$REPOCONFIG" ]; then
+    return 0
+  fi
+
+  if [ -d "/etc/yum.repos.d" ]; then
+cat > "$YUM_REPO_FILE" << REPOCONTENT
+[@@PACKAGE@@]
+name=@@PACKAGE@@
+baseurl=$REPOCONFIG/$DEFAULT_ARCH
+enabled=1
+gpgcheck=1
+REPOCONTENT
+  fi
+}
+
+# This is called by the cron job, rather than in the RPM postinstall.
+# We cannot do this during the install when urpmi is running due to
+# database locking. We also need to enable the repository, and we can
+# only do that while we are online.
+# see: https://qa.mandriva.com/show_bug.cgi?id=31893
+configure_urpmi() {
+  if [ ! "$REPOCONFIG" ]; then
+    return 0
+  fi
+
+  urpmq --list-media | grep -q -s "^@@PACKAGE@@$"
+  if [ "$?" -eq "0" ]; then
+    # Repository already configured
+    return 0
+  fi
+  urpmi.addmedia --update \
+    "@@PACKAGE@@" "$REPOCONFIG/$DEFAULT_ARCH"
+}
+
+install_urpmi() {
+  # urpmi not smart enough to pull media_info/pubkey from the repository?
+  install_rpm_key
+
+  # Defer urpmi.addmedia to configure_urpmi() in the cron job.
+  # See comment there.
+  #
+  # urpmi.addmedia --update \
+  #   "@@PACKAGE@@" "$REPOCONFIG/$DEFAULT_ARCH"
+}
+
+install_yast() {
+  if [ ! "$REPOCONFIG" ]; then
+    return 0
+  fi
+
+  # We defer adding the key to later. See comment in the cron job.
+
+  # Ideally, we would run: zypper addrepo -t YUM -f \
+  # "$REPOCONFIG/$DEFAULT_ARCH" "@@PACKAGE@@"
+  # but that does not work when zypper is running.
+  if [ -d "/etc/zypp/repos.d" ]; then
+cat > "$ZYPPER_REPO_FILE" << REPOCONTENT
+[@@PACKAGE@@]
+name=@@PACKAGE@@
+enabled=1
+autorefresh=1
+baseurl=$REPOCONFIG/$DEFAULT_ARCH
+type=rpm-md
+keeppackages=0
+REPOCONTENT
+  fi
+}
+
+# Check if the automatic repository configuration is done, so we know when to
+# stop trying.
+verify_install() {
+  # It's probably enough to see that the repo configs have been created. If they
+  # aren't configured properly, update_bad_repo should catch that when it's run.
+  case $1 in
+  "yum")
+    [ -f "$YUM_REPO_FILE" ]
+    ;;
+  "yast")
+    [ -f "$ZYPPER_REPO_FILE" ]
+    ;;
+  "urpmi")
+    urpmq --list-url | grep -q -s "\b@@PACKAGE@@\b"
+    ;;
+  esac
+}
+
+# Update the Google repository if it's not set correctly.
+update_bad_repo() {
+  if [ ! "$REPOCONFIG" ]; then
+    return 0
+  fi
+
+  determine_rpm_package_manager
+
+  case $PACKAGEMANAGER in
+  "yum")
+    update_repo_file "$YUM_REPO_FILE"
+    ;;
+  "yast")
+    update_repo_file "$ZYPPER_REPO_FILE"
+    ;;
+  "urpmi")
+    update_urpmi_cfg
+    ;;
+  esac
+}
+
+update_repo_file() {
+  REPO_FILE="$1"
+
+  # Don't do anything if the file isn't there, since that probably means the
+  # user disabled it.
+  if [ ! -r "$REPO_FILE" ]; then
+    return 0
+  fi
+
+  # Check if the correct repository configuration is in there.
+  REPOMATCH=$(grep "^baseurl=$REPOCONFIG/$DEFAULT_ARCH" "$REPO_FILE" \
+    2>/dev/null)
+  # If it's there, nothing to do
+  if [ "$REPOMATCH" ]; then
+    return 0
+  fi
+
+  # Check if it's there but disabled by commenting out (as opposed to using the
+  # 'enabled' setting).
+  MATCH_DISABLED=$(grep "^[[:space:]]*#.*baseurl=$REPOCONFIG/$DEFAULT_ARCH" \
+    "$REPO_FILE" 2>/dev/null)
+  if [ "$MATCH_DISABLED" ]; then
+    # It's OK for it to be disabled, as long as nothing bogus is enabled in its
+    # place.
+    ACTIVECONFIGS=$(grep "^baseurl=.*" "$REPO_FILE" 2>/dev/null)
+    if [ ! "$ACTIVECONFIGS" ]; then
+      return 0
+    fi
+  fi
+
+  # If we get here, the correct repository wasn't found, or something else is
+  # active, so fix it. This assumes there is a 'baseurl' setting, but if not,
+  # then that's just another way of disabling, so we won't try to add it.
+  sed -i -e "s,^baseurl=.*,baseurl=$REPOCONFIG/$DEFAULT_ARCH," "$REPO_FILE"
+}
+
+update_urpmi_cfg() {
+  REPOCFG=$(urpmq --list-url | grep "\b@@PACKAGE@@\b")
+  if [ ! "$REPOCFG" ]; then
+    # Don't do anything if the repo isn't there, since that probably means the
+    # user deleted it.
+    return 0
+  fi
+
+  # See if it's the right repo URL
+  REPOMATCH=$(echo "$REPOCFG" | grep "\b$REPOCONFIG/$DEFAULT_ARCH\b")
+  # If so, nothing to do
+  if [ "$REPOMATCH" ]; then
+    return 0
+  fi
+
+  # Looks like it's the wrong URL, so recreate it.
+  urpmi.removemedia "@@PACKAGE@@" && \
+    urpmi.addmedia --update "@@PACKAGE@@" "$REPOCONFIG/$DEFAULT_ARCH"
+}
+
+# We only remove the repository configuration during a purge. Since RPM has
+# no equivalent to dpkg --purge, the code below is actually never used. We
+# keep it only for reference purposes, should we ever need it.
+#
+#remove_yum() {
+#  rm -f "$YUM_REPO_FILE"
+#}
+#
+#remove_urpmi() {
+#  # Ideally, we would run: urpmi.removemedia "@@PACKAGE@@"
+#  # but that does not work when urpmi is running.
+#  # Sentinel comment text does not work either because urpmi.update removes
+#  # all comments. So we just delete the entry that matches what we originally
+#  # inserted. If such an entry was added manually, that's tough luck.
+#  if [ -f "$URPMI_REPO_FILE" ]; then
+#    sed -i '\_^@@PACKAGE@@ $REPOCONFIG/$DEFAULT_ARCH {$_,/^}$/d' "$URPMI_REPO_FILE"
+#  fi
+#}
+#
+#remove_yast() {
+#  # Ideally, we would run: zypper removerepo "@@PACKAGE@@"
+#  # but that does not work when zypper is running.
+#  rm -f /etc/zypp/repos.d/@@PACKAGE@@.repo
+#}

Added: httpd/httpd/trunk/modules/spdy/support/install/common/rpmrepo.cron
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/rpmrepo.cron?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/rpmrepo.cron (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/rpmrepo.cron Mon Apr 28 10:55:17 2014
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# Copyright (c) 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 script is part of the @@PACKAGE@@ package.
+#
+# It creates the repository configuration file for package updates, since
+# we cannot do this during the @@PACKAGE@@ installation since the repository
+# is locked.
+#
+# This functionality can be controlled by creating the $DEFAULTS_FILE and
+# setting "repo_add_once" to "true" or "false" as desired. An empty
+# $DEFAULTS_FILE is the same as setting the value to "false".
+
+@@include@@rpm.include
+
+## MAIN ##
+DEFAULTS_FILE="/etc/default/@@PACKAGE@@"
+if [ -r "$DEFAULTS_FILE" ]; then
+  . "$DEFAULTS_FILE"
+fi
+
+if [ "$repo_add_once" = "true" ]; then
+  determine_rpm_package_manager
+
+  case $PACKAGEMANAGER in
+  "urpmi")
+    # We need to configure urpmi after the install has finished.
+    # See configure_urpmi() for details.
+    configure_urpmi
+    ;;
+  "yast")
+    # It looks as though yast/zypper has a lock on the RPM DB during
+    # postinstall, so we cannot add the signing key with install_rpm_key().
+    # Instead, we attempt to do this here. If the user attempt to update before
+    # the cron job imports the key, Yast will grab the key from our server and
+    # prompt the user to accept the key.
+    install_rpm_key
+    ;;
+  esac
+
+  if [ $? -eq 0 ]; then
+    # Before we quit auto-configuration, check that everything looks sane, since
+    # part of this happened during package install and we don't have the return
+    # value of that process.
+    verify_install $PACKAGEMANAGER
+    if [ $? -eq 0 ]; then
+      sed -i -e 's/[[:space:]]*repo_add_once=.*/repo_add_once="false"/' \
+        "$DEFAULTS_FILE"
+    fi
+  fi
+else
+  update_bad_repo
+fi

Added: httpd/httpd/trunk/modules/spdy/support/install/common/spdy.conf.template
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/spdy.conf.template?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/spdy.conf.template (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/spdy.conf.template Mon Apr 28 10:55:17 2014
@@ -0,0 +1,22 @@
+<IfModule spdy_module>
+    # Turn on mod_spdy. To completely disable mod_spdy, you can set
+    # this to "off".
+    SpdyEnabled on
+
+    # In order to support concurrent multiplexing of requests over a
+    # single connection, mod_spdy maintains its own thread pool in
+    # each Apache child process for processing requests.  The default
+    # size of this thread pool is very conservative; you can override
+    # it with a larger value (as below) to increase concurrency, at
+    # the possible cost of increased memory usage.
+    #
+    #SpdyMaxThreadsPerProcess 30
+
+    # Memory usage can also be affected by the maximum number of
+    # simultaneously open SPDY streams permitted for each client
+    # connection.  Ideally, this limit should be set as high as
+    # possible, but you can tweak it as necessary to limit memory
+    # consumption.
+    #
+    #SpdyMaxStreamsPerConnection 100
+</IfModule>

Added: httpd/httpd/trunk/modules/spdy/support/install/common/spdy.load.template
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/spdy.load.template?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/spdy.load.template (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/spdy.load.template Mon Apr 28 10:55:17 2014
@@ -0,0 +1 @@
+LoadModule spdy_module @@APACHE_MODULEDIR@@/mod_spdy.so

Added: httpd/httpd/trunk/modules/spdy/support/install/common/ssl.load.template
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/ssl.load.template?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/ssl.load.template (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/ssl.load.template Mon Apr 28 10:55:17 2014
@@ -0,0 +1,15 @@
+# This version of ssl.load was placed here because you installed mod_spdy.
+
+# Using mod_spdy requires using a patched version of mod_ssl that provides
+# hooks into the Next Protocol Negotiation (NPN) data from the SSL handshake.
+# Thus, the mod_spdy package installs mod_ssl_with_npn.so, which is exactly
+# mod_ssl but with the following (small) patch applied:
+#   https://issues.apache.org/bugzilla/attachment.cgi?id=27969
+
+LoadModule ssl_module @@APACHE_MODULEDIR@@/mod_ssl_with_npn.so
+
+# If you'd like to go back to using the original, unpatched version of mod_ssl,
+# simply comment out the above line and uncomment the below line.  However,
+# beware that mod_spdy will probably then cease to function.
+
+#LoadModule ssl_module @@APACHE_MODULEDIR@@/mod_ssl.so

Added: httpd/httpd/trunk/modules/spdy/support/install/common/updater
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/updater?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/updater (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/updater Mon Apr 28 10:55:17 2014
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# Copyright (c) 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.
+
+# TODO
+# - handle other distros (e.g. non-apt).
+
+@@include@@apt.include
+
+if [ -x "$APT_GET" ]; then
+  update_sources_lists
+  # If the repo was just added, force a cache update.
+  if [ $? -eq 1 ]; then
+    install_key
+    "$APT_GET" -qq update
+  fi
+
+  # TODO(mmoss) detect if apt cache is stale (> 1 day) and force update?
+
+  # Just try to install the packge. If it's already installed, apt-get won't do
+  # anything.
+  "$APT_GET" install -y -q @@PACKAGE@@
+fi
+

Propchange: httpd/httpd/trunk/modules/spdy/support/install/common/updater
------------------------------------------------------------------------------
    svn:executable = *

Added: httpd/httpd/trunk/modules/spdy/support/install/common/variables.include
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/common/variables.include?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/common/variables.include (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/common/variables.include Mon Apr 28 10:55:17 2014
@@ -0,0 +1,5 @@
+# System-wide package configuration.
+DEFAULTS_FILE="/etc/default/@@PACKAGE@@"
+
+# sources.list setting for @@PACKAGE@@ updates.
+REPOCONFIG="@@REPOCONFIG@@"

Added: httpd/httpd/trunk/modules/spdy/support/install/debian/build.sh
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/debian/build.sh?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/debian/build.sh (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/debian/build.sh Mon Apr 28 10:55:17 2014
@@ -0,0 +1,249 @@
+#!/bin/bash
+#
+# Copyright (c) 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.
+
+set -e
+if [ "$VERBOSE" ]; then
+  set -x
+fi
+set -u
+
+# Create the Debian changelog file needed by dpkg-gencontrol. This just adds a
+# placeholder change, indicating it is the result of an automatic build.
+gen_changelog() {
+  rm -f "${DEB_CHANGELOG}"
+  process_template "${SCRIPTDIR}/changelog.template" "${DEB_CHANGELOG}"
+  debchange -a --nomultimaint -m --changelog "${DEB_CHANGELOG}" \
+    --distribution UNRELEASED "automatic build"
+}
+
+# Create the Debian control file needed by dpkg-deb.
+gen_control() {
+  dpkg-gencontrol -v"${VERSIONFULL}" -c"${DEB_CONTROL}" -l"${DEB_CHANGELOG}" \
+  -f"${DEB_FILES}" -p"${PACKAGE}-${CHANNEL}" -P"${STAGEDIR}" -T"${DEB_SUBST}" \
+  -O > "${STAGEDIR}/DEBIAN/control"
+  rm -f "${DEB_CONTROL}"
+}
+
+# Create the Debian substvars file needed by dpkg-gencontrol.
+gen_substvars() {
+  # dpkg-shlibdeps requires a control file in debian/control, so we're
+  # forced to prepare a fake debian directory.
+  mkdir "${SUBSTFILEDIR}/debian"
+  cp "${DEB_CONTROL}" "${SUBSTFILEDIR}/debian"
+  pushd "${SUBSTFILEDIR}" >/dev/null
+  dpkg-shlibdeps "${STAGEDIR}${APACHE_MODULEDIR}/mod_spdy.so" \
+  -O >> "${DEB_SUBST}" 2>/dev/null
+  popd >/dev/null
+}
+
+# Setup the installation directory hierachy in the package staging area.
+prep_staging_debian() {
+  prep_staging_common
+  install -m 755 -d "${STAGEDIR}/DEBIAN" \
+    "${STAGEDIR}/etc/cron.daily"
+}
+
+# Put the package contents in the staging area.
+stage_install_debian() {
+  prep_staging_debian
+  stage_install_common
+  echo "Staging Debian install files in '${STAGEDIR}'..."
+  process_template "${BUILDDIR}/install/common/repo.cron" \
+    "${STAGEDIR}/etc/cron.daily/${PACKAGE}"
+  chmod 755 "${STAGEDIR}/etc/cron.daily/${PACKAGE}"
+  process_template "${BUILDDIR}/install/debian/preinst" \
+    "${STAGEDIR}/DEBIAN/preinst"
+  chmod 755 "${STAGEDIR}/DEBIAN/preinst"
+  process_template "${BUILDDIR}/install/debian/postinst" \
+    "${STAGEDIR}/DEBIAN/postinst"
+  chmod 755 "${STAGEDIR}/DEBIAN/postinst"
+  process_template "${BUILDDIR}/install/debian/prerm" \
+    "${STAGEDIR}/DEBIAN/prerm"
+  chmod 755 "${STAGEDIR}/DEBIAN/prerm"
+  process_template "${BUILDDIR}/install/debian/postrm" \
+    "${STAGEDIR}/DEBIAN/postrm"
+  chmod 755 "${STAGEDIR}/DEBIAN/postrm"
+  process_template "${BUILDDIR}/install/debian/conffiles.template" \
+    "${STAGEDIR}/DEBIAN/conffiles"
+  chmod 644 "${STAGEDIR}/DEBIAN/conffiles"
+  process_template "${BUILDDIR}/install/common/spdy.load.template" \
+    "${STAGEDIR}${APACHE_CONFDIR}/spdy.load"
+  chmod 644 "${STAGEDIR}${APACHE_CONFDIR}/spdy.load"
+  process_template "${BUILDDIR}/install/common/spdy.conf.template" \
+    "${STAGEDIR}${APACHE_CONFDIR}/spdy.conf"
+  chmod 644 "${STAGEDIR}${APACHE_CONFDIR}/spdy.conf"
+}
+
+# Build the deb file within a fakeroot.
+do_package_in_fakeroot() {
+  FAKEROOTFILE=$(mktemp -t fakeroot.tmp.XXXXXX) || exit 1
+  fakeroot -i "${FAKEROOTFILE}" -- \
+    dpkg-deb -b "${STAGEDIR}" .
+  rm -f "${FAKEROOTFILE}"
+}
+
+# Actually generate the package file.
+do_package() {
+  export HOST_ARCH="$1"
+  echo "Packaging ${HOST_ARCH}..."
+  PREDEPENDS="$COMMON_PREDEPS"
+  DEPENDS="${COMMON_DEPS}"
+  gen_changelog
+  process_template "${SCRIPTDIR}/control.template" "${DEB_CONTROL}"
+  export DEB_HOST_ARCH="${HOST_ARCH}"
+  gen_substvars
+  if [ -f "${DEB_CONTROL}" ]; then
+    gen_control
+  fi
+
+  do_package_in_fakeroot
+}
+
+# Remove temporary files and unwanted packaging output.
+cleanup() {
+  echo "Cleaning..."
+  rm -rf "${STAGEDIR}"
+  rm -rf "${TMPFILEDIR}"
+  rm -rf "${SUBSTFILEDIR}"
+}
+
+usage() {
+  echo "usage: $(basename $0) [-c channel] [-a target_arch] [-o 'dir'] [-b 'dir']"
+  echo "-c channel the package channel (unstable, beta, stable)"
+  echo "-a arch    package architecture (ia32 or x64)"
+  echo "-o dir     package output directory [${OUTPUTDIR}]"
+  echo "-b dir     build input directory    [${BUILDDIR}]"
+  echo "-h         this help message"
+}
+
+# Check that the channel name is one of the allowable ones.
+verify_channel() {
+  case $CHANNEL in
+    stable )
+      CHANNEL=stable
+      ;;
+    unstable|dev|alpha )
+      CHANNEL=unstable
+      ;;
+    testing|beta )
+      CHANNEL=beta
+      ;;
+    * )
+      echo
+      echo "ERROR: '$CHANNEL' is not a valid channel type."
+      echo
+      exit 1
+      ;;
+  esac
+}
+
+process_opts() {
+  while getopts ":o:b:c:a:h" OPTNAME
+  do
+    case $OPTNAME in
+      o )
+        OUTPUTDIR="$OPTARG"
+        mkdir -p "${OUTPUTDIR}"
+        ;;
+      b )
+        BUILDDIR=$(readlink -f "${OPTARG}")
+        ;;
+      c )
+        CHANNEL="$OPTARG"
+        ;;
+      a )
+        TARGETARCH="$OPTARG"
+        ;;
+      h )
+        usage
+        exit 0
+        ;;
+      \: )
+        echo "'-$OPTARG' needs an argument."
+        usage
+        exit 1
+        ;;
+      * )
+        echo "invalid command-line option: $OPTARG"
+        usage
+        exit 1
+        ;;
+    esac
+  done
+}
+
+#=========
+# MAIN
+#=========
+
+SCRIPTDIR=$(readlink -f "$(dirname "$0")")
+OUTPUTDIR="${PWD}"
+STAGEDIR=$(mktemp -d -t deb.build.XXXXXX) || exit 1
+TMPFILEDIR=$(mktemp -d -t deb.tmp.XXXXXX) || exit 1
+SUBSTFILEDIR=$(mktemp -d -t deb.subst.XXXXXX) || exit 1
+DEB_CHANGELOG="${TMPFILEDIR}/changelog"
+DEB_FILES="${TMPFILEDIR}/files"
+DEB_CONTROL="${TMPFILEDIR}/control"
+DEB_SUBST="${SUBSTFILEDIR}/debian/substvars"
+CHANNEL="beta"
+# Default target architecture to same as build host.
+if [ "$(uname -m)" = "x86_64" ]; then
+  TARGETARCH="x64"
+else
+  TARGETARCH="ia32"
+fi
+
+# call cleanup() on exit
+trap cleanup 0
+process_opts "$@"
+if [ ! "$BUILDDIR" ]; then
+  BUILDDIR=$(readlink -f "${BUILDDIR}/install/../mod-spdy-release/src/out/Release")
+fi
+
+source ${BUILDDIR}/install/common/installer.include
+
+get_version_info
+VERSIONFULL="${VERSION}-r${REVISION}"
+
+source "${BUILDDIR}/install/common/mod-spdy.info"
+eval $(sed -e "s/^\([^=]\+\)=\(.*\)$/export \1='\2'/" \
+  "${BUILDDIR}/install/common/BRANDING")
+
+REPOCONFIG="deb http://dl.google.com/linux/${PACKAGE#google-}/deb/ stable main"
+verify_channel
+
+# Some Debian packaging tools want these set.
+export DEBFULLNAME="${MAINTNAME}"
+export DEBEMAIL="${MAINTMAIL}"
+
+# Make everything happen in the OUTPUTDIR.
+cd "${OUTPUTDIR}"
+
+COMMON_DEPS="apache2.2-common"
+COMMON_PREDEPS="dpkg (>= 1.14.0)"
+REPLACES=""
+
+APACHE_MODULEDIR="/usr/lib/apache2/modules"
+APACHE_CONFDIR="/etc/apache2/mods-available"
+APACHE_USER="www-data"
+COMMENT_OUT_DEFLATE=
+
+case "$TARGETARCH" in
+  ia32 )
+    stage_install_debian
+    do_package "i386"
+    ;;
+  x64 )
+    stage_install_debian
+    do_package "amd64"
+    ;;
+  * )
+    echo
+    echo "ERROR: Don't know how to build DEBs for '$TARGETARCH'."
+    echo
+    exit 1
+    ;;
+esac

Propchange: httpd/httpd/trunk/modules/spdy/support/install/debian/build.sh
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpd/httpd/trunk/modules/spdy/support/install/debian/build.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: httpd/httpd/trunk/modules/spdy/support/install/debian/changelog.template
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/debian/changelog.template?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/debian/changelog.template (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/debian/changelog.template Mon Apr 28 10:55:17 2014
@@ -0,0 +1,4 @@
+@@PACKAGE@@-@@CHANNEL@@ (@@VERSIONFULL@@) UNRELEASED; urgency=low
+  * No changes
+
+ -- @@MAINTNAME@@ <@@MAINTMAIL@@>  Wed, 20 Oct 2010 14:54:35 -0800

Added: httpd/httpd/trunk/modules/spdy/support/install/debian/conffiles.template
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/spdy/support/install/debian/conffiles.template?rev=1590597&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/spdy/support/install/debian/conffiles.template (added)
+++ httpd/httpd/trunk/modules/spdy/support/install/debian/conffiles.template Mon Apr 28 10:55:17 2014
@@ -0,0 +1,3 @@
+/etc/apache2/mods-available/spdy.load
+/etc/apache2/mods-available/spdy.conf
+/etc/cron.daily/@@PACKAGE@@