gazebo_ros_pkgs dependency with protobuf 3.0.0
Hello,
There is an old dependency to protobuf 3.0.0 from 5 May 2017 .
https://github.com/protocolbuffers/protobuf/releases/tag/v3.3.0
And it's create a problem, because now we have protobuf 3.7.0, and other system stuff are using the newest version of librrary. Luckly packages uses static librarres, and after compilation with older version of protobuf it is possible to install a new version of librarry and use currently compiled gazebo plugin.
This causes disorder, beceause it is necessary to install other verssion of librarry.
There is a way to make some order with this situation? Maybe it's possible to install the older version of librarry locally only for these compilation, maybe configure Docker? What is the best way to resolve this inconvenience?
Edit:
Below you can see part of very long error list, which describe compilation dependencies with other than protobuf 3.0.0 version.
/usr/local/include/google/protobuf/arenastring.h:225:31: note: candidate expects 0 arguments, 1 provided
In file included from /usr/include/gazebo-9/gazebo/msgs/MessageTypes.hh:132,
from /usr/include/gazebo-9/gazebo/msgs/msgs.hh:35,
from /usr/include/gazebo-9/gazebo/physics/Entity.hh:28,
from /usr/include/gazebo-9/gazebo/physics/Model.hh:30,
from /usr/include/gazebo-9/gazebo/physics/Actor.hh:26,
from /usr/include/gazebo-9/gazebo/physics/physics.hh:2,
from /home/bartosz/catkin_ws/src/gazebo_ros_pkgs/gazebo_plugins/include/gazebo_plugins/gazebo_ros_utils.h:40,
from /home/bartosz/catkin_ws/src/gazebo_ros_pkgs/gazebo_plugins/src/gazebo_ros_utils.cpp:35:
/usr/include/gazebo-9/gazebo/msgs/world_modify.pb.h: In member function ‘const string& gazebo::msgs::WorldModify::cloned_uri() const’:
/usr/include/gazebo-9/gazebo/msgs/world_modify.pb.h:339:93: error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’
return cloned_uri_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
Can you please provide a little more context here? Protobuf is, afaict, not a direct dependency of
gazebo_ros_pkgs
. Gazebo uses Protobuf.Are you compiling Gazebo from source?
Thank you for your fast ansfer.
Gazebo packet is installed from ros repository
Yes it's true that it is not a direct dependency but this libraries are constraint by chain of dependencies.
This looks like an example of clashing dependencies.
The issue is with Gazebo 9, that is what uses the older protobuf apparently.
You'll have to make sure that the new version is not seen (ie: discovered) by CMake when compiling
gazebo_ros_pkgs
.Btw: any reason you can't just use the binary
gazebo_ros_pkgs
?I have to prepare project which will be used as base for several other developers. We will write our own gazebo plugin, and test them with other ROS and not ROS components. As you see there is possible to work around this problem. But is not a clear solution. It's causses another implications from documentation side. I will hawe to explain why i do this. In the worst case wee wil be make to create our own version of every library with the same version of any dependencies. Everything for order and documentation.