[SyncEvolution] Re: SyncEvolution 2.0.0 pre-release - 1.99.2
Patrick Ohly
patrick.ohly at intel.com
Thu Feb 11 20:26:06 UTC 2021
Milan Crha <mcrha at 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 at syncevolution.org
To unsubscribe send an email to syncevolution-leave at syncevolution.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
More information about the SyncEvolution
mailing list