Bug 220784

Summary: graphics/openshadinglanguage: fails to build against boost-libs with C++11 enabled
Product: Ports & Packages Reporter: Jan Beich <jbeich>
Component: Individual Port(s)Assignee: Jan Beich <jbeich>
Status: Closed FIXED    
Severity: Affects Only Me CC: FreeBSD
Priority: --- Keywords: patch
Version: LatestFlags: FreeBSD: maintainer-feedback+
Hardware: Any   
OS: Any   
URL: https://github.com/DragonFlyBSD/DeltaPorts/blob/d45342dd3d2f/ports/graphics/openshadinglanguage/diffs/Makefile.diff
See Also: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=220787
Bug Depends on: 222131    
Bug Blocks: 220783    
Attachments:
Description Flags
maintainer update for graphics/openshadinglaguage FreeBSD: maintainer-approval+

Description Jan Beich freebsd_committer freebsd_triage 2017-07-17 02:04:56 UTC
src/liboslcomp/liboslcomp.so: undefined reference to `boost::wave::grammars::defined_grammar_gen<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > > > >::parse_operator_defined(boost::wave::util::unput_queue_iterator<std::__1::__list_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, void*>, boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, std::__1::list<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::default_user_allocator_new_delete, boost::mutex, 32u, 0u> > > const&, boost::wave::util::unput_queue_iterator<std::__1::__list_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, void*>, boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, std::__1::list<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::default_user_allocator_new_delete, boost::mutex, 32u, 0u> > > const&, std::__1::list<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::default_user_allocator_new_delete, boost::mutex, 32u, 0u> >&)'
src/liboslcomp/liboslcomp.so: undefined reference to `boost::wave::grammars::defined_grammar_gen<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > > > >::parse_operator_defined(boost::wave::util::unput_queue_iterator<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > > >, boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, std::__1::list<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::default_user_allocator_new_delete, boost::mutex, 32u, 0u> > > const&, boost::wave::util::unput_queue_iterator<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > > >, boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, std::__1::list<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::default_user_allocator_new_delete, boost::mutex, 32u, 0u> > > const&, std::__1::list<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::default_user_allocator_new_delete, boost::mutex, 32u, 0u> >&)'
src/liboslcomp/liboslcomp.so: undefined reference to `boost::wave::grammars::cpp_grammar_gen<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > > >, std::__1::list<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::default_user_allocator_new_delete, boost::mutex, 32u, 0u> > >::parse_cpp_grammar(boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > > > const&, boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > > > const&, boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > const&, bool&, boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >&, std::__1::list<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char, std::__1::char_traits<char>, std::__1::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char, std::__1::allocator<char> >, char*> > > >, boost::default_user_allocator_new_delete, boost::mutex, 32u, 0u> >&)'
c++: error: linker command failed with exit code 1 (use -v to see invocation)

http://sprunge.us/SLGC
Comment 1 Jan Beich freebsd_committer freebsd_triage 2017-07-17 07:19:22 UTC
DragonFly has a fix, see URL field.
Comment 2 Shane 2017-09-08 02:29:45 UTC
Created attachment 186156 [details]
maintainer update for graphics/openshadinglaguage

Not sure if this should be a separate report.

The latest version of osl is now 1.8.10 which includes support for llvm40 and builds with C++11 support enabled by default. I would prefer to update to this version instead of an intermediate step just to change llvm dependancy versions. graphics/appleseed will also need a small change submitted in bug #222131

I have tested building this with boost 1.65.0 on 10.3 and 11.1 amd64/i386
Comment 3 commit-hook freebsd_committer freebsd_triage 2017-09-09 19:41:00 UTC
A commit references this bug:

Author: jbeich
Date: Sat Sep  9 19:40:10 UTC 2017
New revision: 449507
URL: https://svnweb.freebsd.org/changeset/ports/449507

Log:
  graphics/openshadinglanguage: update to 1.8.10

  - graphics/appleseed isn't compatible yet, so disable OSL by default

  Changes:	https://github.com/imageworks/OpenShadingLanguage/blob/Release-1.8.10/CHANGES.md
  PR:		220784 222131
  Submitted by:	Shane Ambler <FreeBSD@ShaneWare.Biz> (maintainer)

Changes:
  head/graphics/appleseed/Makefile
  head/graphics/blender/Makefile
  head/graphics/openshadinglanguage/Makefile
  head/graphics/openshadinglanguage/distinfo
  head/graphics/openshadinglanguage/files/patch-src_doc_CMakeLists.txt
  head/graphics/openshadinglanguage/pkg-plist
Comment 4 Jan Beich freebsd_committer freebsd_triage 2017-09-09 19:47:26 UTC
Thanks. Landed.