Shibboleth SP 2.5.3 fails to build with Boost 1.54

Russ Allbery rra at debian.org
Mon Mar 17 02:37:36 UTC 2014


When trying to build the new package with the libmemcached change, I found
that the 2.5.3 SP package will no longer build.  I thought it was the
C++11 change for libmemcached, but I dropped that again and it still
fails.  I'm fairly sure it's Boost, which was updated to use 1.54 by
default in Debian recently.  It looks like something changed about tuple
handling that's causing problems.

Here are the build errors:

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