[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