‹prev |
My Chain |
next›
Update: It seems as though you
should bother with mod_spdy nowadays (2011-12-22). Per the
comments below, mod_spdy is again being actively maintained again. Yay!
Tonight, I am going to see how far along I can get with
mod_spdy, the
SPDY module for
Apache. I expect that most of my work with SPDY will be in the form of
node.js or Ruby implementations, but Apache affords me a nice level of comfort with respect to simply serving up files.
I get myself off to an auspicious start:
➜ spdy sudo apt-get install subversion
[sudo] password for cstrom:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
subversion-tools db4.8-util
The following NEW packages will be installed:
subversion
0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.
Need to get 298 kB of archives.
After this operation, 1,257 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ natty/main subversion amd64 1.6.12dfsg-4ubuntu2 [298 kB]
Fetched 298 kB in 3s (85.5 kB/s)
Selecting previously deselected package subversion.
(Reading database ... 242860 files and directories currently installed.)
Unpacking subversion (from .../subversion_1.6.12dfsg-4ubuntu2_amd64.deb) ...
Processing triggers for man-db ...
Setting up subversion (1.6.12dfsg-4ubuntu2) ...
With that out of the way, I can download the "depot tools" source code, which I install into
~/repos/spdy
:
➜ spdy svn co http://src.chromium.org/svn/trunk/tools/depot_tools
A depot_tools/git-cl
A depot_tools/README.gclient
A depot_tools/WATCHLISTS
A depot_tools/README.codereview
A depot_tools/git_cl.py
...
A depot_tools/wtf
...
A depot_tools/zsh-goodies
A depot_tools/zsh-goodies/_gclient
A depot_tools/zsh-goodies/README
...
A depot_tools/cpplint.bat
A depot_tools/hammer.bat
U depot_tools
Checked out revision 82936.
(gotta love a codebase with an
wtf
file)
Again in
~repos/spdy
, I install :
➜ spdy mkdir mod_spdy
➜ spdy cd mod_spdy
➜ mod_spdy ../depot_tools/gclient config http://mod-spdy.googlecode.com/svn/trunk/src
➜ mod_spdy ls
➜ mod_spdy ls -a
. .. .gclient
Strange. This is my first experience with
gclient
, but I expected more to happen than just creating a
.gclient
file:
➜ mod_spdy cat .gclient
solutions = [
{ "name" : "src",
"url" : "http://mod-spdy.googlecode.com/svn/trunk/src",
"custom_deps" : {
},
"safesync_url": "",
},
]
It seems the real magic is in the
update
sub-command, which installs a
lot of stuff:
➜ mod_spdy ../depot_tools/gclient update --force
________ running 'svn checkout http://mod-spdy.googlecode.com/svn/trunk/src /home/cstrom/repos/spdy/mod_spdy/src --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/build
A /home/cstrom/repos/spdy/mod_spdy/src/build/common.gypi
A /home/cstrom/repos/spdy/mod_spdy/src/build/gyp_chromium
...
U /home/cstrom/repos/spdy/mod_spdy/src
Checked out revision 143.
Syncing projects: 5% ( 1/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/net/tools/flip_server@46690 /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/net/tools/flip_server --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/net/tools/flip_server/split.cc
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/net/tools/flip_server/balsa_enums.h
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/net/tools/flip_server/ring_buffer.h
Checked out revision 46690.
Syncing projects: 11% ( 2/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/base@46690 /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/base --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/base/windows_message_list.h
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/base/debug_message.cc
U /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/base
Checked out revision 46690.
Syncing projects: 16% ( 3/18)
________ running 'svn checkout http://svn.apache.org/repos/asf/apr/apr/tags/1.4.2@head /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/apr/src --revision head --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/apr/src/config.layout
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/apr/src/Makefile.in
...
/home/cstrom/repos/spdy/mod_spdy/src/tools/grit/grit.py
A /home/cstrom/repos/spdy/mod_spdy/src/tools/grit/README
Checked out revision 46690.
Syncing projects: 27% ( 5/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/testing@46690 /home/cstrom/repos/spdy/mod_spdy/src/testing --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/testing/README.chromium
A /home/cstrom/repos/spdy/mod_spdy/src/testing/gmock
...
A /home/cstrom/repos/spdy/mod_spdy/src/testing/gmock_mutant.h
U /home/cstrom/repos/spdy/mod_spdy/src/testing
Checked out revision 46690.
Syncing projects: 33% ( 6/18)
________ running 'svn checkout http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.15/include@head /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/include --revision head --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/include/ap_regex.h
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/include/util_time.h
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/include/http_request.h
U /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/include
Checked out revision 1096629.
Syncing projects: 38% ( 7/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/third_party/protobuf2@46690 /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2 --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/__init__.py
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/descriptor_pb2.py
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/config.h
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/protobuf.gyp
U /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2
Checked out revision 46690.
Syncing projects: 44% ( 8/18)
________ running 'svn checkout http://protobuf.googlecode.com/svn/trunk@327 /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/src --revision 327 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/src/post_process_dist.sh
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/src/examples/Makefile
U /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/src
Checked out revision 327.
Syncing projects: 50% ( 9/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/tools/data_pack@46690 /home/cstrom/repos/spdy/mod_spdy/src/tools/data_pack --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/tools/data_pack/repack.py
A /home/cstrom/repos/spdy/mod_spdy/src/tools/data_pack/scons.py
A /home/cstrom/repos/spdy/mod_spdy/src/tools/data_pack/data_pack.py
U /home/cstrom/repos/spdy/mod_spdy/src/tools/data_pack
Checked out revision 46690.
Syncing projects: 55% (10/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/third_party/scons@46690 /home/cstrom/repos/spdy/mod_spdy/src/third_party/scons --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/scons/README.chromium
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/scons/scons-README
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/scons/scons-LICENSE
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/scons/scons-local/SCons/Tool/cc.py
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/scons/scons-local/SCons/Tool/dvips.py
Checked out revision 46690.
Syncing projects: 61% (11/18)
________ running 'svn checkout http://gyp.googlecode.com/svn/trunk@818 /home/cstrom/repos/spdy/mod_spdy/src/tools/gyp --revision 818 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/tools/gyp/test
A /home/cstrom/repos/spdy/mod_spdy/src/tools/gyp/test/additional-targets
...
A /home/cstrom/repos/spdy/mod_spdy/src/tools/gyp/codereview.settings
A /home/cstrom/repos/spdy/mod_spdy/src/tools/gyp/DEPS
Checked out revision 818.
Syncing projects: 66% (12/18)
________ running 'svn checkout http://googletest.googlecode.com/svn/trunk@408 /home/cstrom/repos/spdy/mod_spdy/src/testing/gtest --revision 408 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/testing/gtest/test
A /home/cstrom/repos/spdy/mod_spdy/src/testing/gtest/test/gtest_break_on_failure_unittest_.cc
...
A /home/cstrom/repos/spdy/mod_spdy/src/testing/gtest/CMakeLists.txt
Checked out revision 408.
Syncing projects: 72% (13/18)
________ running 'svn checkout http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.15/os@head /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/os --revision head --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/os/Makefile.in
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/os/.indent.pro
U /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/src/os
Checked out revision 1096630.
Syncing projects: 77% (14/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/third_party/zlib@46690 /home/cstrom/repos/spdy/mod_spdy/src/third_party/zlib --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/zlib/README.chromium
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/zlib/infback.c
U /home/cstrom/repos/spdy/mod_spdy/src/third_party/zlib
Checked out revision 46690.
Syncing projects: 83% (15/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/site_scons/site_tools@46690 /home/cstrom/repos/spdy/mod_spdy/src/site_scons/site_tools --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/site_scons/site_tools/chromium_builders.py
U /home/cstrom/repos/spdy/mod_spdy/src/site_scons/site_tools
Checked out revision 46690.
Syncing projects: 88% (16/18)
________ running 'svn checkout http://src.chromium.org/svn/trunk/src/build@46690 /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/build --revision 46690 --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/build/README.chromium
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/build/apply_locales.py
U /home/cstrom/repos/spdy/mod_spdy/src/third_party/chromium/src/build
Checked out revision 46690.
Syncing projects: 94% (17/18)
________ running 'svn checkout http://svn.apache.org/repos/asf/apr/apr-util/tags/1.3.9@head /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/aprutil/src --revision head --force --ignore-externals' in '/home/cstrom/repos/spdy/mod_spdy'
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/aprutil/src/ldap
...
A /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/aprutil/src/libaprutil.rc
U /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/aprutil/src
Checked out revision 1096632.
Syncing projects: 100% (18/18), done.
________ running '/usr/bin/python src/build/gyp_chromium' in '/home/cstrom/repos/spdy/mod_spdy'
Updating projects from gyp files...
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/aprutil/include.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/py_proto.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/protobuf_lite.host.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/apr/include.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/zlib/zlib.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/base/base.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/testing/gtest.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/protobuf_lite.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/protobuf.host.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/apr/apr.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/include.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/net/spdy.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/testing/gtestmain.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/testing/gmock.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/protoc.host.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/aprutil/aprutil.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/mod_diagnostics/mod_diagnostics.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/mod_spdy/spdy_common.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/testing/gmockmain.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/base/base_unittests.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/net/spdy_test.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/mod_static/http_response_proto.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/mod_spdy/spdy_common_test.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/mod_spdy/spdy_apache.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/mod_static/mod_static.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/mod_spdy/mod_spdy.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/build/All.target.mk
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/protobuf2/protobuf.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/apr/apr.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/mod_static/mod_static.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/httpd/httpd.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/apache/aprutil/aprutil.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/net/net.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/zlib/zlib.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/testing/gtest.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/third_party/mod_diagnostics/mod_diagnostics.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/base/base.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/build/all.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/mod_spdy/mod_spdy.Makefile
Generating /home/cstrom/repos/spdy/mod_spdy/src/testing/gmock.Makefile
Whoa. So
gclient
is apparently some kind of subversion wrapper with extensions for managing
svn:external
. Hopefully I won't need to learn too much more about it.
Next, I attempt to compile the code:
➜ mod_spdy cd src
➜ src make
CC(target) out/Debug/obj.target/base/third_party/chromium/src/base/setproctitle_linux.o
CXX(target) out/Debug/obj.target/base/base/string16.o
CXX(target) out/Debug/obj.target/base/third_party/chromium/src/base/third_party/dmg_fp/dtoa.o
CXX(target) out/Debug/obj.target/base/third_party/chromium/src/base/third_party/dmg_fp/g_fmt.o
CXX(target) out/Debug/obj.target/base/third_party/chromium/src/base/at_exit.o
CXX(target) out/Debug/obj.target/base/third_party/chromium/src/base/debug_util.o
CXX(target) out/Debug/obj.target/base/third_party/chromium/src/base/debug_util_posix.o
CXX(target) out/Debug/obj.target/base/third_party/chromium/src/base/lock.o
CXX(target) out/Debug/obj.target/base/third_party/chromium/src/base/lock_impl_posix.o
CXX(target) out/Debug/obj.target/base/base/logging.o
...
CXX(target) out/Debug/obj.target/protobuf_lite/third_party/protobuf2/src/src/google/protobuf/stubs/hash.o
In file included from /usr/include/c++/4.5/ext/hash_map:60:0,
from third_party/protobuf2/src/src/google/protobuf/stubs/hash.h:43,
from third_party/protobuf2/src/src/google/protobuf/stubs/hash.cc:33:
/usr/include/c++/4.5/backward/backward_warning.h:28:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
CXX(target) out/Debug/obj.target/protobuf_lite/third_party/protobuf2/src/src/google/protobuf/extension_set.o
In file included from /usr/include/c++/4.5/ext/hash_map:60:0,
from third_party/protobuf2/src/src/google/protobuf/stubs/hash.h:43,
from third_party/protobuf2/src/src/google/protobuf/extension_set.cc:35:
/usr/include/c++/4.5/backward/backward_warning.h:28:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
CXX(target) out/Debug/obj.target/protobuf_lite/third_party/protobuf2/src/src/google/protobuf/generated_message_util.o
...
RULE http_response_proto_genproto_0 out/Debug/obj/gen/protoc_out/mod_static/http_response.pb.h
TOUCH out/Debug/obj.target/mod_static/http_response_proto.stamp
CXX(target) out/Debug/obj.target/mod_static/mod_static/mod_static.o
CXX(target) out/Debug/obj.target/mod_static/gen/protoc_out/mod_static/http_response.pb.o
SOLINK(target) out/Debug/obj.target/mod_static/libmod_static.so
COPY out/Debug/libmod_static.so
CXX(target) out/Debug/obj.target/spdy_test/net/spdy/spdy_protocol_test.o
cc1plus: warnings being treated as errors
net/spdy/spdy_protocol_test.cc: In member function ‘virtual void::SpdyProtocolTest_FrameStructs_Test::TestBody()’:
net/spdy/spdy_protocol_test.cc:64:3: error: converting ‘false’ to pointer type for argument 1 of ‘char testing::internal::IsNullLiteralHelper(testing::internal::Secret*)’
net/spdy/spdy_protocol_test.cc:70:3: error: converting ‘false’ to pointer type for argument 1 of ‘char testing::internal::IsNullLiteralHelper(testing::internal::Secret*)’
net/spdy/spdy_protocol_test.cc: At global scope:
net/spdy/spdy_protocol_test.cc:40:1: error: ‘<unnamed>::SpdyProtocolTest_ProtocolConstants_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:58:1: error: ‘<unnamed>::SpdyProtocolTest_FrameStructs_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:73:1: error: ‘::SpdyProtocolTest_DataFrameStructs_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:79:1: error: ‘::SpdyProtocolTest_ControlFrameStructs_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:125:1: error: ‘<unnamed>::SpdyProtocolTest_TestDataFrame_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:168:1: error: ‘::SpdyProtocolTest_TestSpdySettingsFrame_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:217:1: error: ‘::SpdyProtocolDeathTest_TestDataFrame_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:234:1: error: ‘::SpdyProtocolDeathTest_TestSpdyControlFrameStreamId_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:249:1: error: ‘::SpdyProtocolDeathTest_TestSpdyControlFrameVersion_Test::test_info_’ defined but not used
net/spdy/spdy_protocol_test.cc:270:1: error: ‘::SpdyProtocolDeathTest_TestSpdyControlFrameType_Test::test_info_’ defined but not used
make: *** [out/Debug/obj.target/spdy_test/net/spdy/spdy_protocol_test.o] Error 1
Gah!
It seems I have run afowl of life on the bleeding edge:
Issue 16: Build failure using GCC 4.5.2 on Gentoo.
I started out with mod_spdy to retain some comfort level. Given that, I am not going to try to investigate C++ errors (at least not tonight). Instead... to the VM!
Specifically, I retrace my steps on an Ubuntu 10.10 VM:
chris@chris-VirtualBox:~/spdy/mod_spdy/src$ make
...
CXX(target) out/Debug/obj.target/spdy_test/net/spdy/spdy_framer_test.o
LINK(target) out/Debug/spdy_test
CC(target) out/Debug/obj.target/mod_diagnostics/third_party/mod_diagnostics/mod_diagnostics.o
third_party/mod_diagnostics/mod_diagnostics.c: In function ‘diagnostic_ofilter’:
third_party/mod_diagnostics/mod_diagnostics.c:73: warning: format not a string literal and no format arguments
third_party/mod_diagnostics/mod_diagnostics.c: In function ‘diagnostic_ifilter’:
third_party/mod_diagnostics/mod_diagnostics.c:102: warning: format ‘%d’ expects type ‘int’, but argument 10 has type ‘apr_off_t’
SOLINK(target) out/Debug/obj.target/third_party/mod_diagnostics/libmod_diagnostics.so
COPY out/Debug/libmod_diagnostics.so
TOUCH out/Debug/obj.target/build/All.stamp
I guess that qualifies as success. At least it didn't exit with an error code.
Lacking any documentation, I locate what looks to be an Apache module in
mod_spdy/src/out/Debug
:
chris@chris-VirtualBox:~/spdy/mod_spdy/src/out/Debug$ ls *so
libmod_diagnostics.so libmod_spdy.so libmod_static.so
So I copy
libmod_spdy.so
to
/usr/lib/apache2/modules/
:
chris@chris-VirtualBox:~/spdy/mod_spdy/src/out/Debug$ sudo cp libmod_spdy.so /usr/lib/apache2/modules/
I then create a load file,
spdy.load
:
chris@chris-VirtualBox:/etc/apache2/mods-available$ cat spdy.load
LoadModule spdy_module /usr/lib/apache2/modules/libmod_spdy.so
And, finally enable that module:
chris@chris-VirtualBox:/etc/apache2/mods-enabled$ cd /etc/apache2/mods-enabled/
chris@chris-VirtualBox:/etc/apache2/mods-enabled$ sudo ln -s ../mods-available/spdy.load
With that, I get a nice little warning about an experimental module when I restart apache:
chris@chris-VirtualBox:/etc/apache2/mods-enabled$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2
[Mon Apr 25 23:50:52 2011] [warn] [0425/235052:WARNING:mod_spdy/mod_spdy.cc(203)] mod_spdy is currently an experimental Apache module. It is not yet suitable for production environments and may have stability issues.
... waiting [Mon Apr 25 23:50:53 2011] [warn] [0425/235053:WARNING:mod_spdy/mod_spdy.cc(203)] mod_spdy is currently an experimental Apache module. It is not yet suitable for production environments and may have stability issues.
...done.
Nice. But does it work?
The answer to that, unfortunately is a resounding no. Attempting to access the web server—either via Chrome or
curl
proves fruitless. In the apache error log, I find:
[Mon Apr 25 23:35:06 2011] [warn] [0425/233506:WARNING:net/spdy/spdy_framer.cc(243)] Unexpectedly large frame. Spdy session is likely corrupt.
[0425/233506:FATAL:mod_spdy/common/spdy_stream_distributor.cc(62)] Check failed: false.
Backtrace:
/usr/lib/apache2/modules/libmod_spdy.so(StackTrace::StackTrace()+0x2c) [0x6062fe]
/usr/lib/apache2/modules/libmod_spdy.so(+0x272b2) [0x5ff2b2]
/usr/lib/apache2/modules/libmod_spdy.so(logging::LogMessage::~LogMessage()+0x7d) [0x608137]
/usr/lib/apache2/modules/libmod_spdy.so(mod_spdy::SpdyStreamDistributor::OnError(spdy::SpdyFramer*)+0x88) [0x6287b2]
/usr/lib/apache2/modules/libmod_spdy.so(spdy::SpdyFramer::set_error(spdy::SpdyFramer::SpdyError)+0xd5) [0x621617]
/usr/lib/apache2/modules/libmod_spdy.so(spdy::SpdyFramer::ProcessDataFramePayload(char const*, unsigned int)+0x173) [0x622343]
/usr/lib/apache2/modules/libmod_spdy.so(spdy::SpdyFramer::ProcessInput(char const*, unsigned int)+0x1e6) [0x62186e]
/usr/lib/apache2/modules/libmod_spdy.so(mod_spdy::SpdyFramePump::PumpAtMost(unsigned int)+0x139) [0x627987]
/usr/lib/apache2/modules/libmod_spdy.so(mod_spdy::SpdyFramePump::PumpMoreBytes()+0x18e) [0x627740]
/usr/lib/apache2/modules/libmod_spdy.so(mod_spdy::SpdyFramePump::PumpOneFrame()+0x33) [0x62754b]
/usr/lib/apache2/modules/libmod_spdy.so(mod_spdy::SpdyInputFilter::Read(ap_filter_t*, apr_bucket_brigade*, ap_input_mode_t, apr_read_type_e, long long)+0x100) [0x600152]
/usr/lib/apache2/modules/libmod_spdy.so(+0x26968) [0x5fe968]
/usr/sbin/apache2(ap_get_brigade+0x43) [0x79cf13]
/usr/sbin/apache2(ap_rgetline_core+0xa1) [0x7837b1]
/usr/sbin/apache2(ap_read_request+0x261) [0x784191]
/usr/sbin/apache2(+0x43fde) [0x7a0fde]
/usr/sbin/apache2(ap_run_process_connection+0x61) [0x7999c1]
/usr/sbin/apache2(+0x4db4b) [0x7aab4b]
/usr/lib/libapr-1.so.0(+0x25bc5) [0x286bc5]
/lib/libpthread.so.0(+0x5cc9) [0xb4ecc9]
/lib/libc.so.6(clone+0x5e) [0x35e6ae]
[Mon Apr 25 23:35:06 2011] [notice] child pid 1697 exit signal Trace/breakpoint trap (5)
Bah! This looks to be due to
mod_spdy
being dead code. The SPDY specification has progressed to draft 2, while
mod_spdy
has been stuck on the original draft since it was abandoned.
Bummer. Looks like I will get to code implementations sooner than expected. Tomorrow.
Day #1