make errors on CentOS 5.8

577 views
Skip to first unread message

Destralak

unread,
Oct 11, 2012, 8:31:07 AM10/11/12
to mod-spdy-discuss
Hi,

I'm following http://code.google.com/p/mod-spdy/wiki/GettingStarted .
I'm compiling the files instead of using the RPM because I have a
control panel (DirectAdmin) and no system-wide apache/mod_ssl.
I've compiled mod_spdy for CentOS 6.3 successfully using that URL.
However, if I'm compiling for CentOS 5.8 the build crashes. Can anyone
help me with this?

-bash-3.2# cat /etc/*release*
CentOS release 5.8 (Final)
-bash-3.2# uname -m
x86_64
-bash-3.2# cd ~/mod_spdy/src
-bash-3.2# make BUILDTYPE=Release
CXX(target) out/Release/obj.target/base/third_party/chromium/src/
base/at_exit.o
third_party/chromium/src/base/bind_internal.h: In instantiation of
‘base::internal::BindState<base::internal::RunnableAdapter<void (*)
(void*)>, void ()(), void ()(void*)>’:
third_party/chromium/src/base/callback.h:376: instantiated from
‘base::Callback<R ()()>::Callback(base::internal::BindState<Runnable,
RunType, BoundArgsType>*) [with Runnable =
base::internal::RunnableAdapter<void (*)(void*)>, RunType = void ()
(void*), BoundArgsType = void ()(void*), R = void]’
third_party/chromium/src/base/bind.h:124: instantiated from
‘base::Callback<typename base::internal::BindState<typename
base::internal::FunctorTraits<T>::RunnableType, typename
base::internal::FunctorTraits<T>::RunType, void ()(typename
base::internal::CallbackParamTraits<A1>::StorageType)>::UnboundRunType>
base::Bind(Functor, const P1&) [with Functor = void (*)(void*), P1 =
void*]’
third_party/chromium/src/base/at_exit.cc:47: instantiated from here
third_party/chromium/src/base/bind_internal.h:2557: error: invalid use
of undefined type ‘struct base::internal::Invoker<1,
base::internal::BindState<base::internal::RunnableAdapter<void (*)
(void*)>, void ()(), void ()(void*)>, void ()()>’
third_party/chromium/src/base/bind_internal.h:1106: error: declaration
of ‘struct base::internal::Invoker<1,
base::internal::BindState<base::internal::RunnableAdapter<void (*)
(void*)>, void ()(), void ()(void*)>, void ()()>’
third_party/chromium/src/base/callback.h: In constructor
‘base::Callback<R ()()>::Callback(base::internal::BindState<Runnable,
RunType, BoundArgsType>*) [with Runnable =
base::internal::RunnableAdapter<void (*)(void*)>, RunType = void ()
(void*), BoundArgsType = void ()(void*), R = void]’:
third_party/chromium/src/base/bind.h:124: instantiated from
‘base::Callback<typename base::internal::BindState<typename
base::internal::FunctorTraits<T>::RunnableType, typename
base::internal::FunctorTraits<T>::RunType, void ()(typename
base::internal::CallbackParamTraits<A1>::StorageType)>::UnboundRunType>
base::Bind(Functor, const P1&) [with Functor = void (*)(void*), P1 =
void*]’
third_party/chromium/src/base/at_exit.cc:47: instantiated from here
third_party/chromium/src/base/callback.h:376: error: incomplete type
‘base::internal::Invoker<1,
base::internal::BindState<base::internal::RunnableAdapter<void (*)
(void*)>, void ()(), void ()(void*)>, void ()()>’ used in nested name
specifier
make: *** [out/Release/obj.target/base/third_party/chromium/src/base/
at_exit.o] Error 1
-bash-3.2#

Tarun Reddy

unread,
Oct 12, 2012, 3:14:49 PM10/12/12
to mod-spdy...@googlegroups.com
As far as I know, this is limited by the following restriction:

Apache 2.2 (≥2.2.4)

Have you upgraded httpd-devel to something non-standard to satisfy this?
Tarun

Destralak

unread,
Oct 15, 2012, 9:26:55 AM10/15/12
to mod-spdy...@googlegroups.com
Hi Tarun,

I'm trying to make the mod_spdy.so without using a package manager, because I don't want to install httpd system-wide (not a smart move with DirectAdmin).
If you're referring to building mod_ssl with NPN, that went successful. But trying to make the mod_spdy.so only works on my CentOS 6.3 machine, which makes me think the error is related to library issues on CentOS 5.8?

For now, I've used "rpm2cpio mod-spdy-beta_current_x86_64.rpm | cpio -idmv" to extract the mod_spdy.so from the RPM but that solution is pretty dirty and it looks like that mod_spdy.so is SPDY/2.
On my CentOS 6.3-machine I have compiled the source successfully and that file is using SPDY/3, the latest.

Thanks in advance. If you have any questions, let me know.

Op vrijdag 12 oktober 2012 21:15:48 UTC+2 schreef Tarun Reddy het volgende:

Matthew Steele

unread,
Oct 15, 2012, 11:13:25 AM10/15/12
to mod-spdy...@googlegroups.com
What version of gcc are you using on the machine where the build is failing?  You may need to update it to gcc 4.4.

(The compilation error you described occurs in certain Chromium template libraries that mod_spdy indirectly depends on -- they don't seem to build correctly with older versions of gcc.  I don't know why, but I haven't yet found any other way around it, nor can I break mod_spdy's dependency on them.  Upgrading gcc seems to fix it.)

FWIW, the mod_spdy.so from the latest binary packages (v0.9.3.3) should definitely support both SPDY/2 and SPDY/3.

Destralak

unread,
Oct 23, 2012, 6:47:49 AM10/23/12
to mod-spdy...@googlegroups.com
Hi Matthew,

Thank you very much for your response, I got it working! For people on CentOS 5.8 as well, having problems when trying to compile mod_spdy.so from source;

1. yum install gcc44-c++
2. export CC=/usr/bin/gcc44
3. export CXX=/usr/bin/g++44

Continue step 6, section 'Without using a package manager' from the steps at http://code.google.com/p/mod-spdy/wiki/GettingStarted . It will compile successfully now.

Op maandag 15 oktober 2012 17:13:28 UTC+2 schreef Matthew Steele het volgende:

Matthew Steele

unread,
Oct 23, 2012, 10:23:18 AM10/23/12
to mod-spdy...@googlegroups.com
Great, glad to hear it's working!  Thanks for the writeup.
Reply all
Reply to author
Forward
0 new messages