Bug#740941: shibboleth-sp2: FTBFS with libmemcached-1.0.18-1 from experimental

Russ Allbery rra at debian.org
Mon Mar 17 04:35:22 UTC 2014


Michael Fladischer <FladischerMichael at fladi.at> writes:

> libmemcached-1.0.18-1 has been uploaded to experimental and
> shibboleth-sp2 FTBFS with this version.

> This problem can be fixed by enabling C++11 through CPPFLAGS as shown in
> the attached patch.

I'm afraid this patch causes shibboleth-sp2 to FTBFS, at least with
version 2.5.3 (which I'm about to upload).  This appears to be due to a
conflict between C++11 and Boost 1.54, at least as used by Shibboleth.
The build fails with the following errors.  I tried a few things (such as
using boost::tuple instead of tuple) to no avail.  I poked around the
Boost documentation and in Google, but couldn't find a clear reference to
what this problem might be.

It seems a little weird that a shared library would force all programs
that want to use it to have to build in a particular standardization mode.
Are you sure that's the right path forward?  It's particularly problematic
if packages won't build with C++11, although maybe we're supposed to be
moving the whole archive to that?

libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -O2 -DNDEBUG -D_FORTIFY_SOURCE=2 -std=c++11 -pthread -Wall -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -O2 -DNDEBUG -c handler/impl/TransformSessionInitiator.cpp  -fPIC -DPIC -o .libs/TransformSessionInitiator.o
handler/impl/TransformSessionInitiator.cpp:136:43: error: template argument 1 is invalid
         vector< tuple<bool,string,string> > m_regex;
                                           ^
handler/impl/TransformSessionInitiator.cpp:136:43: error: template argument 2 is invalid
handler/impl/TransformSessionInitiator.cpp: In constructor 'shibsp::TransformSessionInitiator::TransformSessionInitiator(const xercesc_3_1::DOMElement*, const char*)':
handler/impl/TransformSessionInitiator.cpp:112:41: error: request for member 'push_back' in '((shibsp::TransformSessionInitiator*)this)->shibsp::TransformSessionInitiator::m_regex', which is of non-class type 'int'
                                 m_regex.push_back(tuple<bool,string,string>(flag, m.get(), repl.get()));
                                         ^
handler/impl/TransformSessionInitiator.cpp:112:51: error: reference to 'tuple' is ambiguous
                                 m_regex.push_back(tuple<bool,string,string>(flag, m.get(), repl.get()));
                                                   ^
In file included from /usr/include/c++/4.8/utility:70:0,
                 from /usr/include/xmltooling/base.h:1965,
                 from /usr/include/saml/base.h:31,
                 from ./base.h:35,
                 from ./internal.h:47,
                 from handler/impl/TransformSessionInitiator.cpp:27:
/usr/include/c++/4.8/bits/stl_pair.h:83:11: note: candidates are: template<class ...> class std::tuple
     class tuple;
           ^
In file included from /usr/include/boost/tuple/tuple.hpp:33:0,
                 from handler/impl/TransformSessionInitiator.cpp:41:
/usr/include/boost/tuple/detail/tuple_basic.hpp:76:7: note:                 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> class boost::tuples::tuple
 class tuple;
       ^
handler/impl/TransformSessionInitiator.cpp:112:57: error: expected primary-expression before 'bool'
                                 m_regex.push_back(tuple<bool,string,string>(flag, m.get(), repl.get()));
                                                         ^
handler/impl/TransformSessionInitiator.cpp:112:68: error: expected primary-expression before ',' token
                                 m_regex.push_back(tuple<bool,string,string>(flag, m.get(), repl.get()));
                                                                    ^
handler/impl/TransformSessionInitiator.cpp:112:75: error: expected primary-expression before '>' token
                                 m_regex.push_back(tuple<bool,string,string>(flag, m.get(), repl.get()));
                                                                           ^
handler/impl/TransformSessionInitiator.cpp:112:89: warning: left operand of comma operator has no effect [-Wunused-value]
                                 m_regex.push_back(tuple<bool,string,string>(flag, m.get(), repl.get()));
                                                                                         ^
handler/impl/TransformSessionInitiator.cpp: In member function 'void shibsp::TransformSessionInitiator::doRequest(const shibsp::Application&, std::string&) const':
handler/impl/TransformSessionInitiator.cpp:257:44: error: template argument 1 is invalid
     for (vector< tuple<bool,string,string> >::const_iterator r = m_regex.begin(); r != m_regex.end(); ++r) {
                                            ^
handler/impl/TransformSessionInitiator.cpp:257:44: error: template argument 2 is invalid
handler/impl/TransformSessionInitiator.cpp:257:62: error: invalid type in declaration before 'r'
     for (vector< tuple<bool,string,string> >::const_iterator r = m_regex.begin(); r != m_regex.end(); ++r) {
                                                              ^
handler/impl/TransformSessionInitiator.cpp:257:62: error: invalid use of qualified-name '::const_iterator'
handler/impl/TransformSessionInitiator.cpp:257:62: error: expected ';' before 'r'
handler/impl/TransformSessionInitiator.cpp:257:62: error: 'r' was not declared in this scope
handler/impl/TransformSessionInitiator.cpp:257:74: error: request for member 'begin' in '((const shibsp::TransformSessionInitiator*)this)->shibsp::TransformSessionInitiator::m_regex', which is of non-class type 'const int'
     for (vector< tuple<bool,string,string> >::const_iterator r = m_regex.begin(); r != m_regex.end(); ++r) {
                                                                          ^
handler/impl/TransformSessionInitiator.cpp:257:96: error: request for member 'end' in '((const shibsp::TransformSessionInitiator*)this)->shibsp::TransformSessionInitiator::m_regex', which is of non-class type 'const int'
     for (vector< tuple<bool,string,string> >::const_iterator r = m_regex.begin(); r != m_regex.end(); ++r) {
                                                                                                ^
handler/impl/TransformSessionInitiator.cpp:257:101: error: expected ')' before ';' token
     for (vector< tuple<bool,string,string> >::const_iterator r = m_regex.begin(); r != m_regex.end(); ++r) {
                                                                                                     ^
handler/impl/TransformSessionInitiator.cpp:257:105: error: 'r' was not declared in this scope
     for (vector< tuple<bool,string,string> >::const_iterator r = m_regex.begin(); r != m_regex.end(); ++r) {
                                                                                                         ^
handler/impl/TransformSessionInitiator.cpp:257:106: error: expected ';' before ')' token
     for (vector< tuple<bool,string,string> >::const_iterator r = m_regex.begin(); r != m_regex.end(); ++r) {
                                                                                                          ^
handler/impl/TransformSessionInitiator.cpp:294:1: error: expected '}' at end of input
 }
 ^
make[4]: *** [TransformSessionInitiator.lo] Error 1

-- 
Russ Allbery (rra at debian.org)               <http://www.eyrie.org/~eagle/>



More information about the Pkg-shibboleth-devel mailing list