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

Reply via email to