libyui / libyui-ncurses

libyui-ncurses
http://doc.opensuse.org/projects/libyui
19 stars 18 forks source link

Huha boost bug workaround #83

Closed shundhammer closed 4 years ago

shundhammer commented 4 years ago

Problem

Build failure in IBS for SLE-15-SP2 / -SP1:

https://build.suse.de/package/live_build_log/Devel:YaST:Head/libyui-ncurses/SUSE_SLE-15-SP2_GA/x86_64

[   89s] [ 79%] Building CXX object src/CMakeFiles/yui-ncurses.dir/NCMultiSelectionBox.cc.o
[   89s] /home/abuild/rpmbuild/BUILD/libyui-ncurses-2.53.0/src/NCItemSelector.cc: In member function 'std::vector<std::__cxx11::basic_string<char> > NCItemSelector::descriptionLines(YItem*) const':
[   89s] /home/abuild/rpmbuild/BUILD/libyui-ncurses-2.53.0/src/NCItemSelector.cc:209:37: error: cannot bind non-const lvalue reference of type 'std::__cxx11::basic_string<char>&' to an rvalue of type 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}'
[   89s]      boost::split( lines, description( item ), boost::is_any_of( "\n" ) );
[   89s]                           ~~~~~~~~~~~^~~~~~~~
[   89s] In file included from /usr/include/boost/algorithm/string.hpp:23:0,
[   89s]                  from /home/abuild/rpmbuild/BUILD/libyui-ncurses-2.53.0/src/NCItemSelector.cc:25:
[   89s] /usr/include/boost/algorithm/string/split.hpp:140:35: note:   initializing argument 2 of 'SequenceSequenceT& boost::algorithm::split(SequenceSequenceT&, RangeT&, PredicateT, boost::algorithm::token_compress_mode_type) [with SequenceSequenceT = std::vector<std::__cxx11::basic_string<char> >; RangeT = std::__cxx11::basic_string<char>; PredicateT = boost::algorithm::detail::is_any_ofF<char>]'
[   89s]          inline SequenceSequenceT& split(
[   89s]                                    ^~~~~
[   89s] [ 80%] Building CXX object src/CMakeFiles/yui-ncurses.dir/NCTable.cc.o
[   90s] make[2]: *** [src/CMakeFiles/yui-ncurses.dir/build.make:903: src/CMakeFiles/yui-ncurses.dir/NCItemSelector.cc.o] Error 1

Cause

This is fallout of a bug in boost. The bug was fixed with https://github.com/boostorg/algorithm/commit/c6f784cb7034b0a8c3183086fcd7ed8389e50a03 which is in Factory but not in SLE-15-SP1 / -SP2.

Workaround

Use a temporary variable for that string.

Credits

Michael Matz matz@suse.de and Andreas Schwab schwab@suse.de