errors compiling libtest/stream.cc in gearmand-0.33 on gcc 4.4

Bug #994961 reported by Alexander Piavlo
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Gearman
Fix Released
High
Brian Aker

Bug Description

it was configured with:
env CC=gcc44 CXX=g++44 ./configure --disable-libmemcached --disable-libsqlite3

and make fails with:
....
  CXX libtest/libtest_libtest_la-signal.lo
  CXX libtest/libtest_libtest_la-socket.lo
  CXX libtest/libtest_libtest_la-stream.lo
libtest/stream.cc: In constructor 'libtest::stream::make_cerr::make_cerr(const char*, int, const char*)':
libtest/stream.cc:48: error: class 'libtest::stream::make_cerr' does not have any field named 'log'
libtest/stream.cc:48: error: no matching function for call to 'libtest::stream::detail::log<libtest::stream::detail::channelln, char, std::char_traits<char>, std::allocator<char> >::log()'
./libtest/stream.h:126: note: candidates are: libtest::stream::detail::log<OutputPolicy, Ch, Tr, A>::log(std::ostream&, const char*, int, const char*) [with OutputPolicy = libtest::stream::detail::channelln, Ch = char, Tr = std::char_traits<char>, A = std::allocator<char>]
./libtest/stream.h:115: note: libtest::stream::detail::log<libtest::stream::detail::channelln, char, std::char_traits<char>, std::allocator<char> >::log(const libtest::stream::detail::log<libtest::stream::detail::channelln, char, std::char_traits<char>, std::allocator<char> >&)
libtest/stream.cc: In constructor 'libtest::stream::cerr::cerr(const char*, int, const char*)':
libtest/stream.cc:52: error: class 'libtest::stream::cerr' does not have any field named 'log'
libtest/stream.cc:52: error: no matching function for call to 'libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log()'
./libtest/stream.h:126: note: candidates are: libtest::stream::detail::log<OutputPolicy, Ch, Tr, A>::log(std::ostream&, const char*, int, const char*) [with OutputPolicy = libtest::stream::detail::channel, Ch = char, Tr = std::char_traits<char>, A = std::allocator<char>]
./libtest/stream.h:115: note: libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log(const libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >&)
libtest/stream.cc: In constructor 'libtest::stream::clog::clog(const char*, int, const char*)':
libtest/stream.cc:56: error: class 'libtest::stream::clog' does not have any field named 'log'
libtest/stream.cc:56: error: no matching function for call to 'libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log()'
./libtest/stream.h:126: note: candidates are: libtest::stream::detail::log<OutputPolicy, Ch, Tr, A>::log(std::ostream&, const char*, int, const char*) [with OutputPolicy = libtest::stream::detail::channel, Ch = char, Tr = std::char_traits<char>, A = std::allocator<char>]
./libtest/stream.h:115: note: libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log(const libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >&)
libtest/stream.cc: In constructor 'libtest::stream::cout::cout(const char*, int, const char*)':
libtest/stream.cc:60: error: class 'libtest::stream::cout' does not have any field named 'log'
libtest/stream.cc:60: error: no matching function for call to 'libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log()'
./libtest/stream.h:126: note: candidates are: libtest::stream::detail::log<OutputPolicy, Ch, Tr, A>::log(std::ostream&, const char*, int, const char*) [with OutputPolicy = libtest::stream::detail::channel, Ch = char, Tr = std::char_traits<char>, A = std::allocator<char>]
./libtest/stream.h:115: note: libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log(const libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >&)
make[1]: *** [libtest/libtest_libtest_la-stream.lo] Error 1
make[1]: Leaving directory `/root/installs/gearman/gearmand-0.33'
make: *** [all] Error 2

Revision history for this message
Clint Byrum (clint-fewbar) wrote :

This affects Ubuntu 10.04 users as well (see duplicate #995106).

summary: - errors compiling libtest/stream.cc in gearmand-0.33 on cetos5.7
+ errors compiling libtest/stream.cc in gearmand-0.33 on gcc 4.4
Changed in gearmand:
status: New → Confirmed
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

I think it may be a bit early to start abandoning GCC 4.4. Ubuntu 12.04 has only just been released as the latest LTS Ubuntu with a gcc newer than 4.4. RHEL and CentOS 6 are in the same boat (though they have at least been around long enough that migrations should be under way).

Is there perhaps a compatibility layer available in boost for these newer features?

Revision history for this message
Clint Byrum (clint-fewbar) wrote :

Oh also Debian's latest stable release, "wheezy", only has GCC 4.4 available

Revision history for this message
Brian Aker (brianaker) wrote : Re: [Bug 994961] [NEW] errors compiling libtest/stream.cc in gearmand-0.33 on cetos5.7
Download full text (9.0 KiB)

Yep,...

I can revert a change which will make all of this go away (the original fix was for OSX, but it can be solved differently).

On May 4, 2012, at 10:34 PM, Alexander Piavlo wrote:

> Public bug reported:
>
> it was configured with:
> env CC=gcc44 CXX=g++44 ./configure --disable-libmemcached --disable-libsqlite3
>
> and make fails with:
> ....
> CXX libtest/libtest_libtest_la-signal.lo
> CXX libtest/libtest_libtest_la-socket.lo
> CXX libtest/libtest_libtest_la-stream.lo
> libtest/stream.cc: In constructor 'libtest::stream::make_cerr::make_cerr(const char*, int, const char*)':
> libtest/stream.cc:48: error: class 'libtest::stream::make_cerr' does not have any field named 'log'
> libtest/stream.cc:48: error: no matching function for call to 'libtest::stream::detail::log<libtest::stream::detail::channelln, char, std::char_traits<char>, std::allocator<char> >::log()'
> ./libtest/stream.h:126: note: candidates are: libtest::stream::detail::log<OutputPolicy, Ch, Tr, A>::log(std::ostream&, const char*, int, const char*) [with OutputPolicy = libtest::stream::detail::channelln, Ch = char, Tr = std::char_traits<char>, A = std::allocator<char>]
> ./libtest/stream.h:115: note: libtest::stream::detail::log<libtest::stream::detail::channelln, char, std::char_traits<char>, std::allocator<char> >::log(const libtest::stream::detail::log<libtest::stream::detail::channelln, char, std::char_traits<char>, std::allocator<char> >&)
> libtest/stream.cc: In constructor 'libtest::stream::cerr::cerr(const char*, int, const char*)':
> libtest/stream.cc:52: error: class 'libtest::stream::cerr' does not have any field named 'log'
> libtest/stream.cc:52: error: no matching function for call to 'libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log()'
> ./libtest/stream.h:126: note: candidates are: libtest::stream::detail::log<OutputPolicy, Ch, Tr, A>::log(std::ostream&, const char*, int, const char*) [with OutputPolicy = libtest::stream::detail::channel, Ch = char, Tr = std::char_traits<char>, A = std::allocator<char>]
> ./libtest/stream.h:115: note: libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log(const libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >&)
> libtest/stream.cc: In constructor 'libtest::stream::clog::clog(const char*, int, const char*)':
> libtest/stream.cc:56: error: class 'libtest::stream::clog' does not have any field named 'log'
> libtest/stream.cc:56: error: no matching function for call to 'libtest::stream::detail::log<libtest::stream::detail::channel, char, std::char_traits<char>, std::allocator<char> >::log()'
> ./libtest/stream.h:126: note: candidates are: libtest::stream::detail::log<OutputPolicy, Ch, Tr, A>::log(std::ostream&, const char*, int, const char*) [with OutputPolicy = libtest::stream::detail::channel, Ch = char, Tr = std::char_traits<char>, A = std::allocator<char>]
> ./libtest/stream.h:115: note: libtest::stream::detail::log<libtest::stream::detail::channel, char, std:...

Read more...

Revision history for this message
Brian Aker (brianaker) wrote :

Can you pull trunk and verify the fix?

Brian Aker (brianaker)
Changed in gearmand:
milestone: none → 0.34
importance: Undecided → Low
importance: Low → High
status: Confirmed → Fix Committed
assignee: nobody → Brian Aker (brianaker)
Revision history for this message
Alexander Piavlo (lolitushka) wrote :

It compiles ok now.

Brian Aker (brianaker)
Changed in gearmand:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.