[build] Update protobuf to 5.29.5#2122
[build] Update protobuf to 5.29.5#2122DownerCase wants to merge 15 commits intoeclipse-ecal:masterfrom
Conversation
|
It's a big one. What I find a bit strange - though nice: it's only build system changes. So apparently nothing of the API parts which we used have been changed. Which is great, and unexpected. I am a bit confused though, especially regarding ftxui, since you downgraded the c++ standard there (mon_cli for example) - that it builds, because my understanding was that C++17 was a requirement there. Also, Protobuf is no longer a dependency of eCAL core. but I will take a proper look tomorrow. |
Thanks Kerstin. For protobuf the major version changes on the C++ API are nominal and scheduled yearly*, so going from 3.x -> 5.x hasn't required eCAL to change anything. Going to 6.x will require changes because they move signatures from Technically I can't speak for anyone except me, but protobuf is pretty much the only serializer I have used with eCAL, I consider it a "core" feature. Splitting off " That said if nothing is done, this change will, with great certainty, bite someone if the binaries continue to be supplied in the current methods. Personally I'm against including the SDK in the windows installer (just leave it as the app installer) and would direct people to Conan/vcpkg/others. I appreciate that's considerable extra effort, but am willing to help. On the Linux side Debian-based distros are stuck on the pre-abseil protobuf versions so not an imminent concern yet. I've taken up maintainership of eCAL for the AUR (where protobuf is updated) and am working through all the issues; but here there aren't exactly many users. * Some extra reading on Protobuf versions if you care: https://protobuf.dev/support/version-support/ |
4c9eea8 to
1222c79
Compare
|
Updated with latest master and added sbom.py, you'll want to double check that though. |
b7b2a40 to
4422f72
Compare
|
We now do need C++17 for several eCAL internal components, but in a way that it will stay compatible with VS2017 compiler (v141). |
This is correct, it sets the minimum C++ version for that target.
I appear to have accommodated that with this section in the root CMakeLists that only sets the C++ standard if eCAL is not a sub-project and the standard hasn't been externally set like how you suggest (by setting CMAKE_CXX_STANDARD):
As mentioned in the OP, the key catch is that everything that uses protobuf headers needs to be using at least (but preferably exactly) the C++ version abseil/protobuf was built for, as the available interface differs depending on the C++ version. For example, your C++17 component would see The easiest solution is just to use the same version everywhere, but sounds like you want to keep a C++14 interface for now? It's been a while since I looked at this, so will try and poke things a bit later this week to get a clearer explanation of the failure modes. The easiest way should be to disable the bit where |
|
Just did a quick test setting the CMAKE_CXX_STANDARD to C++14 and building (because my compilers default is >= C++17). Just pushed a commit to see what CI thinks if you don't try and build with a consistent version. |
Description
Updates protobuf from 3.11.4 to 5.29.4.
Originally it would have been to 4.25.x but:
a. That major version just went out of maintenance support.
b. There is a regression in that version with msvc and
/permissive-which impacts eCAL.c. Jumping to 5.x didn't seem to need any additional work...
d. 5.x gives a
yearfew months of maintenance supportUnfortunately, updating protobuf has some knock on effects.
CMAKE_CXX_STANDARDstd::string_viewAPIs but as protobuf was compiled with C++14 they would be missing and cause link failures.protobuf-protostarget so it is removed from the innosetup scriptprotobuf-headers)See also:
WARNING I have not lent any attention to the Python or C# (beyond fixing an obvious bug) binding situation (but no CI job has started failing). If there's something that needs attention point me at it and I'll have a go 😄
Related issues
Related to #1187 (I'll let the team decide if this closes it or not)
Superceeds #1818
Plus a bunch of other open issues mainly relating to the Python situation.