# This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # mod_spdy # mod_spdy/Makefile # mod_spdy/pkg-plist # mod_spdy/distinfo # mod_spdy/files # mod_spdy/files/patch-apache_spdy_stream_task_factory.cc # mod_spdy/files/patch-python_arch.sh # mod_spdy/files/patch-apache_spdy_session_io.cc # mod_spdy/files/patch-build_modssl_with_npn.sh # mod_spdy/files/patch-python_arch2.sh # mod_spdy/files/patch-common.h # mod_spdy/files/patch-make.py # mod_spdy/files/patch-pthread_shared_mem.cc # mod_spdy/files/patch-spdy_protocol_test.cc # mod_spdy/files/patch-base.gypi # mod_spdy/files/patch-mod_spdy.cc # mod_spdy/files/patch-stack_trace_posix.cc # mod_spdy/pkg-message # mod_spdy/pkg-descr # echo c - mod_spdy mkdir -p mod_spdy > /dev/null 2>&1 echo x - mod_spdy/Makefile sed 's/^X//' >mod_spdy/Makefile << 'b7959958d3e08f7d47d6236cf1248c2d' X# New ports collection makefile for: mod_spdy X# Date created: 1 April 2012 X# Whom: Masaki TAGAWA X# X# $FreeBSD$ X# X XPORTNAME= mod_spdy XPORTVERSION= 0.9.1.1 XPORTREVISION= 1 XPORTEPOCH= 1 XCATEGORIES= www XMASTER_SITES= http://www.club.kyutech.ac.jp/~masaki/ports/ XDISTNAME= mod_spdy_source_${PORTVERSION} X XMAINTAINER= masaki@club.kyutech.ac.jp XCOMMENT= A SPDY module for the Apache HTTP server v2.2 X XBUILD_DEPENDS= bash:${PORTSDIR}/shells/bash \ X greadlink:${PORTSDIR}/sysutils/coreutils \ X svn:${PORTSDIR}/devel/subversion \ X flock:${PORTSDIR}/sysutils/flock XLIB_DEPENDS= execinfo.1:${PORTSDIR}/devel/libexecinfo X XUSE_XZ= yes XUSE_BINUTILS= yes XUSE_APACHE= 22+ XUSE_PYTHON= 2.6+ XUSE_GMAKE= yes XMAKE_JOBS_SAFE= yes XONLY_FOR_ARCHS= amd64 i386 XLDFLAGS+= -L${LOCALBASE}/lib XMAKE_ENV+= BUILDTYPE=Release XWRKSRC= ${WRKDIR}/${PORTNAME}_source_${PORTVERSION}/mod_spdy/src XGYP_DEFINES+= \ X use_system_apache_dev=1 \ X use_system_zlib=1 \ X system_include_path_httpd=${LOCALBASE}/include/apache22 \ X system_include_path_apr=${LOCALBASE}/include/apr-1 \ X system_include_path_aprutil=${LOCALBASE}/include/apr-1 \ X system_include_path_execinfo=${LOCALBASE}/include \ X include_dirs=${LOCALBASE}/include XOPTIONS= MOD_SSL "Install mod_ssl with NPN support" On X X.if defined(WITH_MOD_SSL) XPLIST_SUB+= MOD_SSL="" X.else XPLIST_SUB+= MOD_SSL="@comment " X.endif X X.include X Xpost-patch: X @${REINPLACE_CMD} -e "s,%%LOCALBASE%%,${LOCALBASE},g" \ X ${WRKSRC}/base/base.gypi X @${REINPLACE_CMD} -e 's|#!/bin/bash|#!${LOCALBASE}/bin/bash|' \ X ${WRKSRC}/build_modssl_with_npn.sh X Xpre-install: X.if defined(WITH_MOD_SSL) X @cd ${WRKSRC} && \ X ${WRKSRC}/build_modssl_with_npn.sh X @if [ -f ${PREFIX}/${APACHEMODDIR}/mod_ssl.so ]; then \ X ${CP} -p ${PREFIX}/${APACHEMODDIR}/mod_ssl.so ${PREFIX}/${APACHEMODDIR}/mod_ssl.so.bak ; \ X fi X @${INSTALL} ${WRKSRC}/mod_ssl.so ${PREFIX}/${APACHEMODDIR}/mod_ssl.so X.endif X Xdo-configure: X @cd ${WRKSRC} && \ X GYP_DEFINES="${GYP_DEFINES}" ${PYTHON_CMD} \ X ../../depot_tools/gclient.py runhooks X Xdo-install: X @cd ${WRKSRC} && \ X ${INSTALL} out/Release/libmod_spdy.so ${PREFIX}/${APACHEMODDIR}/mod_spdy.so X Xpost-install: X @${CAT} ${PKGMESSAGE} X X.include b7959958d3e08f7d47d6236cf1248c2d echo x - mod_spdy/pkg-plist sed 's/^X//' >mod_spdy/pkg-plist << 'a36fe375bf7faa62826f333b64cb87d8' X%%APACHEMODDIR%%/mod_spdy.so X%%MOD_SSL%%@exec if [ -f %%APACHEMODDIR%%/mod_ssl.so ] ; then cp %%APACHEMODDIR%%/mod_ssl.so %%APACHEMODDIR%%/mod_ssl.so.bak; fi X%%MOD_SSL%%%%APACHEMODDIR%%/mod_ssl.so a36fe375bf7faa62826f333b64cb87d8 echo x - mod_spdy/distinfo sed 's/^X//' >mod_spdy/distinfo << '83ea993a804b62b7e07afb3120cb494e' XSHA256 (mod_spdy_source_0.9.1.1.tar.xz) = 434443a51931b4c8b9e3786ca5d02aca7644423e88c282c948eadedcaa028438 XSIZE (mod_spdy_source_0.9.1.1.tar.xz) = 5009472 83ea993a804b62b7e07afb3120cb494e echo c - mod_spdy/files mkdir -p mod_spdy/files > /dev/null 2>&1 echo x - mod_spdy/files/patch-apache_spdy_stream_task_factory.cc sed 's/^X//' >mod_spdy/files/patch-apache_spdy_stream_task_factory.cc << 'db48e7c91d911a0e7f2894b3250583cf' X--- mod_spdy/apache/apache_spdy_stream_task_factory.cc.org 2012-03-31 16:28:56.491796000 +0900 X+++ mod_spdy/apache/apache_spdy_stream_task_factory.cc 2012-03-31 20:46:51.134788973 +0900 X@@ -25,6 +25,9 @@ X X #include "apr_buckets.h" X #include "apr_network_io.h" X+// When HAVE_SYSLOG is defined, apache http_log.h will include syslog.h, which X+// #defined LOG_* as numbers. This conflicts with what we are using those here. X+#undef HAVE_SYSLOG X #include "http_log.h" X #include "util_filter.h" X db48e7c91d911a0e7f2894b3250583cf echo x - mod_spdy/files/patch-python_arch.sh sed 's/^X//' >mod_spdy/files/patch-python_arch.sh << 'a51a3cd63308af84f5725f8008c0f70b' X--- build/linux/python_arch.sh.org 2012-03-31 16:29:00.054773000 +0900 X+++ build/linux/python_arch.sh 2012-03-31 17:00:09.262802125 +0900 X@@ -10,7 +10,15 @@ X # python_arch.sh /path/to/sysroot/usr/lib/libpython2.4.so.1.0 X # X X-python=$(readlink -f "$1") X+UNAME=`uname` X+ X+# FreeBSD readlink lacks -f support before 9.0 X+if [ ${UNAME} = "FreeBSD" ]; then X+ python=$(greadlink -f "$1") X+else X+ python=$(readlink -f "$1") X+fi X+ X if [ ! -r "$python" ]; then X echo unknown X exit 0 a51a3cd63308af84f5725f8008c0f70b echo x - mod_spdy/files/patch-apache_spdy_session_io.cc sed 's/^X//' >mod_spdy/files/patch-apache_spdy_session_io.cc << 'ff8fabe2556280e8431acaa7284cf7b0' X--- mod_spdy/apache/apache_spdy_session_io.cc.org 2012-03-31 16:28:56.502800000 +0900 X+++ mod_spdy/apache/apache_spdy_session_io.cc 2012-03-31 20:46:33.033900102 +0900 X@@ -15,6 +15,9 @@ X #include "mod_spdy/apache/apache_spdy_session_io.h" X X #include "apr_buckets.h" X+// When HAVE_SYSLOG is defined, apache http_log.h will include syslog.h, which X+// #defined LOG_* as numbers. This conflicts with what we are using those here. X+#undef HAVE_SYSLOG X #include "http_log.h" X #include "util_filter.h" X ff8fabe2556280e8431acaa7284cf7b0 echo x - mod_spdy/files/patch-build_modssl_with_npn.sh sed 's/^X//' >mod_spdy/files/patch-build_modssl_with_npn.sh << 'e4b7ee50705ed1154103d36fd3d96036' X--- build_modssl_with_npn.sh.org 2012-03-31 16:28:55.660831000 +0900 X+++ build_modssl_with_npn.sh 2012-03-31 21:14:56.155134872 +0900 X@@ -33,7 +33,7 @@ X fi X X if [ -z "$BUILDROOT" ]; then X- BUILDROOT=$(mktemp -d) X+ BUILDROOT=$(mktemp -d temp) X REMOVE_BUILDROOT=1 X else X REMOVE_BUILDROOT=0 X@@ -72,7 +72,7 @@ X if [ ! -f "$PROGRESS_DIR/$2.downloaded" ]; then X echo "Downloading $1" X curl -f -# "$1" -o $2 || do_cleanup X- if [[ $(md5sum $2 | cut -d\ -f1) != $3 ]]; then X+ if [[ $(md5 $2 | cut -d\ -f4) != $3 ]]; then X echo "md5sum mismatch for $2" X do_cleanup X fi X@@ -105,9 +105,6 @@ X OPENSSL_INST_ROOT=${OPENSSL_SRC_ROOT}_install X APACHE_HTTPD_SRC_ROOT=${APACHE_HTTPD_SRC_TGZ%.tar.gz} X X-OPENSSL_BUILDLOG=$(mktemp -p /tmp openssl_buildlog.XXXXXXXXXX) X-APACHE_HTTPD_BUILDLOG=$(mktemp -p /tmp httpd_buildlog.XXXXXXXXXX) X- X cp $APACHE_HTTPD_MODSSL_NPN_PATCH_PATH $BUILDROOT/$APACHE_HTTPD_MODSSL_NPN_PATCH X X pushd $BUILDROOT >/dev/null X@@ -140,9 +137,9 @@ X if [ ! -f "$PROGRESS_DIR/openssl_configured" ]; then X pushd $OPENSSL_SRC_ROOT >/dev/null X echo -n "Configuring OpenSSL ... " X- ./config no-shared -fPIC --openssldir=$BUILDROOT/$OPENSSL_INST_ROOT >> $OPENSSL_BUILDLOG X+ ./config no-shared -fPIC --openssldir=$BUILDROOT/$OPENSSL_INST_ROOT X if [ $? -ne 0 ]; then X- echo "Failed. Build log at $OPENSSL_BUILDLOG." X+ echo "Failed at configuring OpenSSL." X do_cleanup X fi X echo "done" X@@ -155,9 +152,9 @@ X if [ ! -f "$PROGRESS_DIR/openssl_built" ]; then X pushd $OPENSSL_SRC_ROOT >/dev/null X echo -n "Building OpenSSL (this may take a while) ... " X- make install >> $OPENSSL_BUILDLOG 2>&1 X+ make install X if [ $? -ne 0 ]; then X- echo "Failed. Build log at $OPENSSL_BUILDLOG." X+ echo "Failed at building OpenSSL." X do_cleanup X fi X echo "done" X@@ -167,7 +164,6 @@ X echo "Already built OpenSSL." X fi X X-rm -f "$OPENSSL_BUILDLOG" X X echo "" X X@@ -185,11 +181,11 @@ X # not only libraries in Libs, but also those in Libs.private: X mv configure configure.bak X sed 's/--libs-only-l openssl/--libs-only-l --static openssl/' configure.bak > configure X- chmod --reference=configure.bak configure X+ chmod 755 configure X X- ./configure --enable-ssl=shared --with-ssl=$BUILDROOT/$OPENSSL_INST_ROOT >> $APACHE_HTTPD_BUILDLOG X+ ./configure --enable-ssl=shared --with-ssl=$BUILDROOT/$OPENSSL_INST_ROOT X if [ $? -ne 0 ]; then X- echo "Failed. Build log at $APACHE_HTTPD_BUILDLOG." X+ echo "Failed at configuring Apache mod_ssl." X do_cleanup X fi X echo "done" X@@ -202,9 +198,9 @@ X if [ ! -f "$PROGRESS_DIR/modssl_built" ]; then X pushd $APACHE_HTTPD_SRC_ROOT >/dev/null X echo -n "Building Apache mod_ssl (this may take a while) ... " X- make >> $APACHE_HTTPD_BUILDLOG 2>&1 X+ make X if [ $? -ne 0 ]; then X- echo "Failed. Build log at $APACHE_HTTPD_BUILDLOG." X+ echo "Failed at building Apache mod_ssl." X do_cleanup X fi X echo "done" X@@ -214,8 +210,6 @@ X echo "Already built Apache mod_ssl." X fi X X-rm -f "$APACHE_HTTPD_BUILDLOG" X- X popd >/dev/null # $BUILDROOT X X MODSSL_SO_SRCPATH=$(find $BUILDROOT/$APACHE_HTTPD_SRC_ROOT -name mod_ssl.so) e4b7ee50705ed1154103d36fd3d96036 echo x - mod_spdy/files/patch-python_arch2.sh sed 's/^X//' >mod_spdy/files/patch-python_arch2.sh << '1d3db43fc1e9af536ccd9b6e85702ca7' X--- third_party/chromium/src/build/linux/python_arch.sh.org 2012-03-31 16:29:02.968788000 +0900 X+++ third_party/chromium/src/build/linux/python_arch.sh 2012-03-31 17:00:18.892838462 +0900 X@@ -10,7 +10,15 @@ X # python_arch.sh /path/to/sysroot/usr/lib/libpython2.4.so.1.0 X # X X-python=$(readlink -f "$1") X+UNAME=`uname` X+ X+# FreeBSD readlink lacks -f support before 9.0 X+if [ "${UNAME}" = "FreeBSD" ]; then X+ python=$(greadlink -f "$1") X+else X+ python=$(readlink -f "$1") X+fi X+ X if [ ! -r "$python" ]; then X echo unknown X exit 0 1d3db43fc1e9af536ccd9b6e85702ca7 echo x - mod_spdy/files/patch-common.h sed 's/^X//' >mod_spdy/files/patch-common.h << 'd7f6400295f47b30ae353ddf21f37ef2' X--- third_party/protobuf/src/google/protobuf/stubs/common.h 2012-03-31 16:29:08.772785000 +0900 X+++ third_party/protobuf/src/google/protobuf/stubs/common.h 2012-03-31 16:59:06.012795843 +0900 X@@ -47,6 +47,10 @@ X #elif !defined(_MSC_VER) X #include X #endif X+#if defined(__FreeBSD__) X+#undef major X+#undef minor X+#endif X X #if defined(_MSC_VER) && defined(_CPPUNWIND) X #define PROTOBUF_USE_EXCEPTIONS d7f6400295f47b30ae353ddf21f37ef2 echo x - mod_spdy/files/patch-make.py sed 's/^X//' >mod_spdy/files/patch-make.py << 'e48de82b702484107171b5c7893feb8e' X--- tools/gyp/pylib/gyp/generator/make.py.org 2012-03-31 16:29:12.063738000 +0900 X+++ tools/gyp/pylib/gyp/generator/make.py 2012-03-31 16:59:21.541770196 +0900 X@@ -129,11 +129,11 @@ X # in gyp's make.py where ARFLAGS.host etc. is computed. X # TODO(evan): move all cross-compilation logic to gyp-time so we don't need X # to replicate this environment fallback in make as well. X-CC.host ?= gcc X+CC.host ?= cc X CFLAGS.host ?= X-CXX.host ?= g++ X+CXX.host ?= c++ X CXXFLAGS.host ?= X-LINK.host ?= g++ X+LINK.host ?= c++ X LDFLAGS.host ?= X AR.host ?= ar X ARFLAGS.host := %(ARFLAGS.host)s e48de82b702484107171b5c7893feb8e echo x - mod_spdy/files/patch-pthread_shared_mem.cc sed 's/^X//' >mod_spdy/files/patch-pthread_shared_mem.cc << '57570ed2e816266a00d7c5316a0a5ffe' X--- net/instaweb/util/pthread_shared_mem.cc.org 2012-03-31 16:29:02.678813000 +0900 X+++ net/instaweb/util/pthread_shared_mem.cc 2012-03-31 16:59:45.750779463 +0900 X@@ -24,6 +24,9 @@ X #include X #include X #include X+#if defined(__FreeBSD__) X+#include X+#endif X #include "net/instaweb/util/public/abstract_shared_mem.h" X #include "net/instaweb/util/public/abstract_mutex.h" X #include "net/instaweb/util/public/basictypes.h" X@@ -70,13 +73,45 @@ X DISALLOW_COPY_AND_ASSIGN(PthreadSharedMemMutex); X }; X X+#if defined(__FreeBSD__) X+// Some OSs does not support PTHREAD_PROCESS_SHARED attribute. (ex. FreeBSD < 9R, MacOS) X+// FreeBSD lacks PTHREAD_PROCESS_SHARED support before 9.0R, so we use a semaphore X+// instead. But nested locking is not supported. X+class SemSharedMemMutex : public AbstractMutex { X+ public: X+ explicit SemSharedMemMutex(sem_t* sem) X+ : sem_(sem) {} X+ X+ virtual void Lock() { X+ sem_wait(sem_); X+ } X+ X+ virtual void Unlock() { X+ sem_post(sem_); X+ } X+ X+private: X+ sem_t* sem_; X+ DISALLOW_COPY_AND_ASSIGN(SemSharedMemMutex); X+}; X+#endif X+ X class PthreadSharedMemSegment : public AbstractSharedMemSegment { X public: X // We will be representing memory mapped in the [base, base + size) range. X+#if defined(__FreeBSD__) X+ PthreadSharedMemSegment(char* base, size_t size, MessageHandler* handler, const char* name) X+ : base_(base), X+ size_(size), X+ sem_(NULL) { X+ std::sprintf(name_, "/%s_sem", name); X+ } X+#else X PthreadSharedMemSegment(char* base, size_t size, MessageHandler* handler) X : base_(base), X size_(size) { X } X+#endif X X virtual ~PthreadSharedMemSegment() { X } X@@ -86,10 +121,18 @@ X } X X virtual size_t SharedMutexSize() const { X+#if defined(__FreeBSD__) X+ return 0; X+#else X return sizeof(pthread_mutex_t); X+#endif X } X X virtual bool InitializeSharedMutex(size_t offset, MessageHandler* handler) { X+#if defined(__FreeBSD__) X+ sem_ = sem_open(name_, O_CREAT, 0755, 1); X+ return sem_ ? true : false; X+#else X pthread_mutexattr_t attr; X if (pthread_mutexattr_init(&attr) != 0) { X handler->Message(kError, "pthread_mutexattr_init failed with errno:%d", X@@ -113,19 +156,32 @@ X X pthread_mutexattr_destroy(&attr); X return true; X+#endif X } X X virtual AbstractMutex* AttachToSharedMutex(size_t offset) { X+#if defined(__FreeBSD__) X+ sem_ = sem_open(name_, O_EXCL); X+ return new SemSharedMemMutex(sem_); X+#else X return new PthreadSharedMemMutex(MutexPtr(offset)); X+#endif X } X X private: X+#if defined(__FreeBSD__) X+#else X pthread_mutex_t* MutexPtr(size_t offset) { X return reinterpret_cast(base_ + offset); X } X+#endif X X char* const base_; X const size_t size_; X+#if defined(__FreeBSD__) X+ char name_[256]; X+ sem_t* sem_; X+#endif X X DISALLOW_COPY_AND_ASSIGN(PthreadSharedMemSegment); X }; X@@ -143,7 +199,11 @@ X } X X size_t PthreadSharedMem::SharedMutexSize() const { X+#if defined(__FreeBSD__) X+ return 0; X+#else X return sizeof(pthread_mutex_t); X+#endif X } X X AbstractSharedMemSegment* PthreadSharedMem::CreateSegment( X@@ -167,7 +227,11 @@ X SegmentBaseMap* bases = AcquireSegmentBases(); X (*bases)[name] = base; X UnlockSegmentBases(); X+#if defined(__FreeBSD__) X+ return new PthreadSharedMemSegment(base, size, handler, name.c_str()); X+#else X return new PthreadSharedMemSegment(base, size, handler); X+#endif X } X X AbstractSharedMemSegment* PthreadSharedMem::AttachToSegment( X@@ -182,7 +246,11 @@ X } X char* base = i->second; X UnlockSegmentBases(); X+#if defined(__FreeBSD__) X+ return new PthreadSharedMemSegment(base, size, handler, name.c_str()); X+#else X return new PthreadSharedMemSegment(base, size, handler); X+#endif X } X X void PthreadSharedMem::DestroySegment(const GoogleString& name, 57570ed2e816266a00d7c5316a0a5ffe echo x - mod_spdy/files/patch-spdy_protocol_test.cc sed 's/^X//' >mod_spdy/files/patch-spdy_protocol_test.cc << '967a2dfb237c9cb8063b354d88549e49' X--- net/spdy/spdy_protocol_test.cc.org 2012-03-31 16:28:55.670784000 +0900 X+++ net/spdy/spdy_protocol_test.cc 2012-03-31 20:49:17.303795861 +0900 X@@ -239,13 +239,13 @@ X frame.set_stream_id(0); X // TODO(mbelshe): implement EXPECT_DEBUG_DEATH on windows. X #ifndef WIN32 X- EXPECT_DEBUG_DEATH(frame.set_stream_id(~0), ""); X+ EXPECT_DEATH_IF_SUPPORTED(frame.set_stream_id(~0), ""); X #endif X EXPECT_FALSE(frame.is_control_frame()); X X frame.set_flags(0); X #ifndef WIN32 X- EXPECT_DEBUG_DEATH(frame.set_length(~0), ""); X+ EXPECT_DEATH_IF_SUPPORTED(frame.set_length(~0), ""); X #endif X EXPECT_EQ(0, frame.flags()); X } 967a2dfb237c9cb8063b354d88549e49 echo x - mod_spdy/files/patch-base.gypi sed 's/^X//' >mod_spdy/files/patch-base.gypi << 'fb1e7d92284299ee16e7310fc79fd4e6' X--- base/base.gypi.org 2012-03-31 16:28:56.347804000 +0900 X+++ base/base.gypi 2012-03-31 17:03:22.470770534 +0900 X@@ -7,6 +7,7 @@ X 'variables': { X 'base_target': 0, X 'chromium_root': '<(DEPTH)/third_party/chromium/src', X+ 'system_include_path_execinfo%': '%%LOCALBASE%%/include', X }, X 'target_conditions': [ X # This part is shared between the targets defined below. Only files and X@@ -107,6 +108,7 @@ X 'include_dirs': [ X '<(chromium_root)', X '<(DEPTH)', X+ '<(system_include_path_execinfo)', X ], X # These warnings are needed for the files in third_party\dmg_fp. X 'msvs_disabled_warnings': [ fb1e7d92284299ee16e7310fc79fd4e6 echo x - mod_spdy/files/patch-mod_spdy.cc sed 's/^X//' >mod_spdy/files/patch-mod_spdy.cc << '5c235e4cde6995cc72672734db3cf1d0' X--- mod_spdy/mod_spdy.cc.org 2012-03-31 16:28:56.745777000 +0900 X+++ mod_spdy/mod_spdy.cc 2012-03-31 20:48:01.337782696 +0900 X@@ -22,6 +22,9 @@ X #include "httpd.h" X #include "http_connection.h" X #include "http_config.h" X+// When HAVE_SYSLOG is defined, apache http_log.h will include syslog.h, which X+// #defined LOG_* as numbers. This conflicts with what we are using those here. X+#undef HAVE_SYSLOG X #include "http_log.h" X #include "http_protocol.h" X #include "http_request.h" 5c235e4cde6995cc72672734db3cf1d0 echo x - mod_spdy/files/patch-stack_trace_posix.cc sed 's/^X//' >mod_spdy/files/patch-stack_trace_posix.cc << '9ec172ee38bc14f5e4281c1fa1812be7' X--- third_party/chromium/src/base/debug/stack_trace_posix.cc.org 2012-03-31 16:29:07.080777000 +0900 X+++ third_party/chromium/src/base/debug/stack_trace_posix.cc 2012-03-31 17:00:32.436774287 +0900 X@@ -127,7 +127,7 @@ X trace_strings->push_back(base::StringPrintf("%p", trace[i])); X } X } X-#else X+#elif defined(OS_LINUX) X scoped_ptr_malloc trace_symbols(backtrace_symbols(trace, size)); X if (trace_symbols.get()) { X for (int i = 0; i < size; ++i) { X@@ -156,10 +156,13 @@ X count_ = 0; X return; X } X-#endif X+#elif defined(OS_LINUX) X // Though the backtrace API man page does not list any possible negative X // return values, we take no chance. X count_ = std::max(backtrace(trace_, arraysize(trace_)), 0); X+#else X+ count_ = 0; X+#endif X } X X void StackTrace::PrintBacktrace() const { 9ec172ee38bc14f5e4281c1fa1812be7 echo x - mod_spdy/pkg-message sed 's/^X//' >mod_spdy/pkg-message << '73a19fc7b2e4df097498694f33857a72' X---------------------------------------------------------------------- XTo enable mod_spdy, add these lines: X XLoadModule spdy_module libexec/apache22/mod_spdy.so X XSpdyEnabled on X X Xto etc/apache22/httpd.conf X---------------------------------------------------------------------- 73a19fc7b2e4df097498694f33857a72 echo x - mod_spdy/pkg-descr sed 's/^X//' >mod_spdy/pkg-descr << '61da0c7636cb0ffd18b7132b5bbcb498' Xmod_spdy is an Apache 2.x filter module that provides SPDY support in the XApache HTTPD web server. Because mod_spdy is an Apache module, it can be Xloaded into currently deployed Apache HTTPD 2.x web servers using mod_so. XThis module is still an early beta and is not yet suitable for production Xenvironments. X X XWWW: http://code.google.com/p/mod-spdy/ 61da0c7636cb0ffd18b7132b5bbcb498 exit