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