I'm working on updating a package of mine (ledger) that uses the boost C++ 
suite (I'm using boost1.53.python27) as well as libicu48.  I'm having some 
trouble with the build and can't quite tell where the problem lies.  Consider 
this minature C++ program badboost.cpp (which occurs as one of the programs 
during the config stage of ledger):

#include <boost/regex/icu.hpp>

using namespace boost;

int main() {
  std::string text = "Активы";
  u32regex r = make_u32regex("активы", regex::perl | regex::icase);
  return u32regex_search(text, r) ? 0 : 1;
}

When compiling this, I get a linking error:

In file included from badboost.cpp:1:
In file included from /sw/include/boost/regex/icu.hpp:25:
In file included from /sw/include/boost/regex.hpp:31:
In file included from /sw/include/boost/regex/v4/regex.hpp:32:
In file included from /sw/include/boost/regex/v4/regex_workaround.hpp:43:
In file included from /sw/include/boost/shared_ptr.hpp:17:
/sw/include/boost/smart_ptr/shared_ptr.hpp:491:41: warning: rvalue references 
are a C++11 extension [-Wc++11-extensions]
    shared_ptr( std::unique_ptr< Y, D > && r ): px( r.get() ), pn()
                                        ^
/sw/include/boost/smart_ptr/shared_ptr.hpp:556:51: warning: rvalue references 
are a C++11 extension [-Wc++11-extensions]
    shared_ptr & operator=( std::unique_ptr<Y, D> && r )
                                                  ^
/sw/include/boost/smart_ptr/shared_ptr.hpp:558:55: warning: rvalue references 
are a C++11 extension [-Wc++11-extensions]
        this_type( static_cast< std::unique_ptr<Y, D> && >( r ) ).swap(*this);
                                                      ^
3 warnings generated.
Undefined symbols for architecture x86_64:
  "boost::basic_regex<int, boost::icu_regex_traits>::do_assign(int const*, int 
const*, unsigned int)", referenced from:
      boost::basic_regex<int, boost::icu_regex_traits>::assign(int const*, int 
const*, unsigned int) in badboost-2044fe.o
  "boost::re_detail::get_mem_block()", referenced from:
      
boost::re_detail::save_state_init::save_state_init(boost::re_detail::saved_state**,
 boost::re_detail::saved_state**) in badboost-2044fe.o
      
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, 
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int> > >, boost::icu_regex_traits>::extend_stack() in 
badboost-2044fe.o
  "boost::re_detail::put_mem_block(void*)", referenced from:
      boost::re_detail::save_state_init::~save_state_init() in badboost-2044fe.o
      
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, 
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int> > >, boost::icu_regex_traits>::unwind_extra_block(bool) in 
badboost-2044fe.o
  "boost::re_detail::verify_options(unsigned int, 
boost::regex_constants::_match_flags)", referenced from:
      
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, 
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int> > >, boost::icu_regex_traits>::find_imp() in badboost-2044fe.o
  "boost::re_detail::raise_runtime_error(std::runtime_error const&)", 
referenced from:
      void 
boost::re_detail::raise_error<boost::regex_traits_wrapper<boost::icu_regex_traits>
 >(boost::regex_traits_wrapper<boost::icu_regex_traits> const&, 
boost::regex_constants::error_type) in badboost-2044fe.o
  
"boost::re_detail::get_default_error_string(boost::regex_constants::error_type)",
 referenced from:
      boost::icu_regex_traits::error_string(boost::regex_constants::error_type) 
const in badboost-2044fe.o
  "boost::re_detail::is_combining_implementation(unsigned short)", referenced 
from:
      bool boost::re_detail::is_combining<int>(int) in badboost-2044fe.o
  "boost::icu_regex_traits::isctype(int, unsigned long long) const", referenced 
from:
      
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, 
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int> > >, boost::icu_regex_traits>::find_restart_word() in 
badboost-2044fe.o
      boost::u8_to_u32_iterator<std::__1::__wrap_iter<char const*>, int> 
boost::re_detail::re_is_set_member<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, int, boost::icu_regex_traits, unsigned long 
long>(boost::u8_to_u32_iterator<std::__1::__wrap_iter<char const*>, int>, 
boost::u8_to_u32_iterator<std::__1::__wrap_iter<char const*>, int>, 
boost::re_detail::re_set_long<unsigned long long> const*, 
boost::re_detail::regex_data<int, boost::icu_regex_traits> const&, bool) in 
badboost-2044fe.o
      
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, 
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int> > >, boost::icu_regex_traits>::match_word_boundary() in 
badboost-2044fe.o
      
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, 
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int> > >, boost::icu_regex_traits>::match_within_word() in 
badboost-2044fe.o
      
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, 
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int> > >, boost::icu_regex_traits>::match_word_start() in 
badboost-2044fe.o
      
boost::re_detail::perl_matcher<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int>, 
std::__1::allocator<boost::sub_match<boost::u8_to_u32_iterator<std::__1::__wrap_iter<char
 const*>, int> > >, boost::icu_regex_traits>::match_word_end() in 
badboost-2044fe.o
  "boost::re_detail::icu_regex_traits_implementation::do_transform(int const*, 
int const*, icu_48::Collator const*) const", referenced from:
      boost::re_detail::icu_regex_traits_implementation::transform_primary(int 
const*, int const*) const in badboost-2044fe.o
      boost::re_detail::icu_regex_traits_implementation::transform(int const*, 
int const*) const in badboost-2044fe.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Is there some kind of binary incompatibility problem here?

Jesse


------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to