-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change Dart from 6.12.x to 6.13.x in Debian packaging for Ubuntu Jammy #541
Comments
There was a discussion in #274 about |
A possible workaround: We really don’t want to make 6.13 and 6.12 to conflict. Period. Use case A) Using the dartsim plugin (load it when launching Gazebo): we would need to get the DART 6.13 code (binary code) without touching the 6.12 files/packages. How to get 6.13 binaries without conflicting with 6.12:
Use case B) For developing on top of the dartsim plugin: I’m going to consider this use case “infrequent” since it is not usual to use a plugin to build things on top. If we are going to compile the gz-dartsim-plugin with dart 6.13 we would need 6.13 development files, otherwise problems with the ABI will arise. For going forward, the question to answer is: how to keep 6.12 dart-dev packages in a system while having the gz-dartsim-plugin compiled with 6.13? A possible answer is: we can maintain the divergence of having gz-dartsim-plugin with 6.13 and dart-dev 6.12 as far as we block the user from building (compiling/developing) things on top of this mix. For that we could use the build system (adding some CMake code to gz-physics7-dartsim-plugin-config.cmake) to stop the user from building on top of the plugin. We would consider this case not supported: if anyone wants to develop on top of the gz-physics7-dartsim-plugin she/he should uninstall dart-6.12 packages and install dart-6.13 and build from source. For allowing the divergence in the package manager, the gz-physics7 packages can declare a dependency on any of the both versions: Summarizing of changes needed:
|
For case A, I like the option 1.b approach, directly shipping them inside the dartsim plugin themselves. Option 2 is also doable, the static linking should be okay (and this is actually how bazel rules do it), but I agree, still more unknowns.
Another alternative is to use DART from the colcon workspace. I find this works pretty well in that it overlays the system install of DART and already gets picked up by Edit: Thanks for summarizing all of this, a lot of moving pieces. |
1.b of including dart libs inside the
That is a great use of the overlaying provided by colcon. Not easy to understand for non advanced users but a powerful setup for experts. |
Removed in #551 . That opens the question: is there a valid use for developers that would generate code from the dartsim plugin that has no public headers? Because we are generating the buildsystem helpers (CMake + pkgconfig) to facilitate that use case. If there is no use case, we either don't package the helpers and remove the |
Continuing from #551 (comment)
Without any public headers, I don't see a way downstream users can build on top of this. And I don't think that's really a use case we have in mind for the gz-physics plugins anyway. @scpeters ? |
In the Gazebo weekly meeting we decide to support the Option 1) version 1.a that builds gz-physics7 on top of DART 6.13 and package the DART 6.13 libraries separated:
|
I think there is a use case for 3rd parties to supply header files with the API definitions of custom features, though they shouldn't use engine-specific types like we had in the dartsim World.hh file. We haven't yet finished the user story for custom features, but that's the one thing that comes to mind |
Per discussion in gazebosim/gz-physics#541 (comment) Signed-off-by: Jose Luis Rivero <[email protected]>
Per discussion in gazebosim/gz-physics#541 (comment) Signed-off-by: Jose Luis Rivero <[email protected]>
So we can probably ignore the CMake/pkg-config files by now and remove the |
Move the -dev files to the libgz-phsyics-dev packages since they does not allow to develop on top of the dartsim plugin but to check if the dartsim plugin is installed. Per discussion in gazebosim/gz-physics#541 (comment) Signed-off-by: Jose Luis Rivero <[email protected]>
I tried to build gz-physics (with tests) after installing
Manually installing |
Makes sense your expectations. Looking at the code of the Debian official package:
Are the ones lincluded in the -dev-all package, skipping |
Okay, then maybe the fix for now is to not include |
We can close the issue since the change to 6.13.x was done. |
Current situation
The different package managers that use gz-physics to install the DART dependency have different versions available.
At the time of writting:
The developer team would prefer to get rid of the 6.12.x version and move the Debian packages to the 6.13.x for the Ubuntu Jammy distribution. This has several problems:
Source code using DART
After checking links (
ldd $lib
) and binary symbols (nm -D $lib
) in the gazebo libs, I'm think that the gz-physics source code that users DART is limited to the generation of the gz-physics dart plugin. The plugin is not linked against any other lib or being used in other compilation unit.gz-physics dart packages
libgz-physics7-dartsim-dev: mainly CMake/pkg-config stuff and symlinks of the plugins (the .so files are no more than symlinks). The real file interesting here is
/usr/include/gz/physics7/gz/physics/dartsim/World.hh
libgz-physics7-dartsim: real binary plugins and two symblinks
The text was updated successfully, but these errors were encountered: