Milan Crha <mc...@redhat.com> writes: > On Tue, 2021-02-09 at 18:28 +0100, Milan Crha wrote: >> I opened this new bug: >> https://bugzilla.redhat.com/show_bug.cgi?id=1926932 > > Hi, > there is written the cause of the failure: > https://bugzilla.redhat.com/show_bug.cgi?id=1926932#c4 > > To cite Jakub: > > So, seems this has nothing to do with LTO, and is related to the > extern template class std::basic_string<char>; > extern template class std::vector<std::string>; > extern template class std::list<std::string>; > lines in src/syncevo/util.h , removing them makes the problem go away. > > Could you try whether it'll work properly for you too, when you remove > those lines, please?
This was meant to be a size optimization. The commit itself is almost three years old and I don't remember anymore why exactly it works (or should work), but my former self left a comment in the commit message: C++: instantiate some templates once in libsyncevolution This saves some space (total number of blocks for SyncEvolution object files when building statically down from 421588 to 413300) and presumably also build times (not measured). However, it did not work for all templates, leading to link errors when trying to add std::map and std::pair of strings. It probably also does not make sense for templates where only some functionality is used. It still works for me, but it seems that it's fragile. I'll remove it. Thanks for tracking this down. -- Best Regards Patrick Ohly _______________________________________________ SyncEvolution mailing list -- syncevolution@syncevolution.org To unsubscribe send an email to syncevolution-le...@syncevolution.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s