Package: fuzzylite Version: 5.1+dfsg-3 Severity: normal Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu xenial ubuntu-patch
Hi Johannes, The Ubuntu ppc64el port uses -O3 optimization for package builds by default. Under -O3, there are a number of template symbols that are not exported in libfuzzylite because they wind up inlined instead. As a result, fuzzylite fails to build with a mismatched symbols file error. The attached patch has been applied in Ubuntu to mark these additional symbols optional, since they are not part of the ABI, and allows the package to build wherever -O3 is used. Thanks for considering the patch. -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slanga...@ubuntu.com vor...@debian.org
diff -Nru fuzzylite-5.1+dfsg/debian/libfuzzylite5.1v5.symbols fuzzylite-5.1+dfsg/debian/libfuzzylite5.1v5.symbols --- fuzzylite-5.1+dfsg/debian/libfuzzylite5.1v5.symbols 2015-11-01 01:29:51.000000000 -0800 +++ fuzzylite-5.1+dfsg/debian/libfuzzylite5.1v5.symbols 2016-03-23 20:31:54.000000000 -0700 @@ -1396,23 +1396,23 @@ (c++)"std::vector<fl::Console::Option, std::allocator<fl::Console::Option> >::~vector()@Base" 5.1 (c++)"std::vector<fl::Proposition*, std::allocator<fl::Proposition*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::Proposition**, std::vector<fl::Proposition*, std::allocator<fl::Proposition*> > >, fl::Proposition* const&)@Base" 5.1 (c++)"std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::InputVariable**, std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> > >, fl::InputVariable* const&)@Base" 5.1 - (c++)"std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> >::_M_erase(__gnu_cxx::__normal_iterator<fl::InputVariable**, std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> > >)@Base" 5.1 - (c++)"std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> >::operator=(std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> > const&)@Base" 5.1 + (c++|optional)"std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> >::_M_erase(__gnu_cxx::__normal_iterator<fl::InputVariable**, std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> > >)@Base" 5.1 + (c++|optional)"std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> >::operator=(std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> > const&)@Base" 5.1 (c++)"std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::OutputVariable**, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > >, fl::OutputVariable* const&)@Base" 5.1 - (c++)"std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> >::_M_erase(__gnu_cxx::__normal_iterator<fl::OutputVariable**, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > >)@Base" 5.1 - (c++)"std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> >::operator=(std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > const&)@Base" 5.1 + (c++|optional)"std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> >::_M_erase(__gnu_cxx::__normal_iterator<fl::OutputVariable**, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > >)@Base" 5.1 + (c++|optional)"std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> >::operator=(std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > const&)@Base" 5.1 (c++)"std::vector<fl::Rule*, std::allocator<fl::Rule*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::Rule**, std::vector<fl::Rule*, std::allocator<fl::Rule*> > >, fl::Rule* const&)@Base" 5.1 - (c++)"std::vector<fl::Rule*, std::allocator<fl::Rule*> >::operator=(std::vector<fl::Rule*, std::allocator<fl::Rule*> > const&)@Base" 5.1 + (c++|optional)"std::vector<fl::Rule*, std::allocator<fl::Rule*> >::operator=(std::vector<fl::Rule*, std::allocator<fl::Rule*> > const&)@Base" 5.1 (c++)"std::vector<fl::Term*, std::allocator<fl::Term*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::Term**, std::vector<fl::Term*, std::allocator<fl::Term*> > >, fl::Term* const&)@Base" 5.1 - (c++)"std::vector<fl::Term*, std::allocator<fl::Term*> >::operator=(std::vector<fl::Term*, std::allocator<fl::Term*> > const&)@Base" 5.1 + (c++|optional)"std::vector<fl::Term*, std::allocator<fl::Term*> >::operator=(std::vector<fl::Term*, std::allocator<fl::Term*> > const&)@Base" 5.1 (c++)"std::vector<fl::Hedge*, std::allocator<fl::Hedge*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::Hedge**, std::vector<fl::Hedge*, std::allocator<fl::Hedge*> > >, fl::Hedge* const&)@Base" 5.1 (c++)"std::vector<fl::Variable*, std::allocator<fl::Variable*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::Variable**, std::vector<fl::Variable*, std::allocator<fl::Variable*> > >, fl::Variable* const&)@Base" 5.1 (c++)"void std::vector<fl::Variable*, std::allocator<fl::Variable*> >::_M_range_insert<__gnu_cxx::__normal_iterator<fl::InputVariable* const*, std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> > > >(__gnu_cxx::__normal_iterator<fl::Variable**, std::vector<fl::Variable*, std::allocator<fl::Variable*> > >, __gnu_cxx::__normal_iterator<fl::InputVariable* const*, std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> > >, __gnu_cxx::__normal_iterator<fl::InputVariable* const*, std::vector<fl::InputVariable*, std::allocator<fl::InputVariable*> > >, std::forward_iterator_tag)@Base" 5.1 - (c++)"void std::vector<fl::Variable*, std::allocator<fl::Variable*> >::_M_range_insert<__gnu_cxx::__normal_iterator<fl::OutputVariable* const*, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > > >(__gnu_cxx::__normal_iterator<fl::Variable**, std::vector<fl::Variable*, std::allocator<fl::Variable*> > >, __gnu_cxx::__normal_iterator<fl::OutputVariable* const*, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > >, __gnu_cxx::__normal_iterator<fl::OutputVariable* const*, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > >, std::forward_iterator_tag)@Base" 5.1 + (c++|optional)"void std::vector<fl::Variable*, std::allocator<fl::Variable*> >::_M_range_insert<__gnu_cxx::__normal_iterator<fl::OutputVariable* const*, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > > >(__gnu_cxx::__normal_iterator<fl::Variable**, std::vector<fl::Variable*, std::allocator<fl::Variable*> > >, __gnu_cxx::__normal_iterator<fl::OutputVariable* const*, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > >, __gnu_cxx::__normal_iterator<fl::OutputVariable* const*, std::vector<fl::OutputVariable*, std::allocator<fl::OutputVariable*> > >, std::forward_iterator_tag)@Base" 5.1 (c++)"std::vector<fl::Activated*, std::allocator<fl::Activated*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::Activated**, std::vector<fl::Activated*, std::allocator<fl::Activated*> > >, fl::Activated* const&)@Base" 5.1 (c++)"std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<fl::RuleBlock**, std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> > >, fl::RuleBlock* const&)@Base" 5.1 - (c++)"std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> >::_M_erase(__gnu_cxx::__normal_iterator<fl::RuleBlock**, std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> > >)@Base" 5.1 - (c++)"std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> >::operator=(std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> > const&)@Base" 5.1 + (c++|optional)"std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> >::_M_erase(__gnu_cxx::__normal_iterator<fl::RuleBlock**, std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> > >)@Base" 5.1 + (c++|optional)"std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> >::operator=(std::vector<fl::RuleBlock*, std::allocator<fl::RuleBlock*> > const&)@Base" 5.1 (c++)"std::vector<std::pair<fl::Exporter*, fl::Importer*>, std::allocator<std::pair<fl::Exporter*, fl::Importer*> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::pair<fl::Exporter*, fl::Importer*>*, std::vector<std::pair<fl::Exporter*, fl::Importer*>, std::allocator<std::pair<fl::Exporter*, fl::Importer*> > > >, std::pair<fl::Exporter*, fl::Importer*> const&)@Base" 5.1 (c++)"std::auto_ptr<fl::Exporter>::reset(fl::Exporter*)@Base" 5.1 (c++)"std::auto_ptr<fl::Importer>::reset(fl::Importer*)@Base" 5.1