Skip to content

Change Dart from 6.12.x to 6.13.x in Debian packaging for Ubuntu Jammy #541

@j-rivero

Description

@j-rivero

Current situation

The different package managers that use gz-physics to install the DART dependency have different versions available.

At the time of writting:

  • 6.12 Ubuntu Jammy official repositories
  • 6.13.0 Conda-forge
  • 6.13.0 Brew

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:

  • 6.12.x is the official version of DART in Jammy. This implies that all packages released in that platform are expect to use it. This includes all previous versions of Gazebo (Garden and Fortress),
  • DART does not maintain ABI/API betwen minors, just patch bumps.
  • Different major.minor versions of DART packages are not co-installable, 6.12 can not be installed together with the 6.13 version since development files (headers, buildsystem helpers, library symlinks,...) are using the same paths on both version.
  • Debian packages for different major.minor would need to declare a conflict between each other, making impossible to maintain software that depend in different versions installed at the same time.
  • dart 6.13.x packages could be uploaded to packages.o.o but we won't be covering the case of ROS users that consume ROS repositories + Ubuntu official packages.

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.

ldd /usr/lib/x86_64-linux-gnu/gz-physics-7/engine-plugins/libgz-physics7-dartsim-plugin.so.7.0.0~pre2 | grep dart
	libdart-collision-bullet.so.6.12 => /lib/x86_64-linux-gnu/libdart-collision-bullet.so.6.12 (0x00007f30d2b58000)
	libdart-collision-ode.so.6.12 => /lib/x86_64-linux-gnu/libdart-collision-ode.so.6.12 (0x00007f30d2b20000)
	libdart.so.6.12 => /lib/x86_64-linux-gnu/libdart.so.6.12 (0x00007f30d25de000)
	libdart-external-odelcpsolver.so.6.12 => /lib/x86_64-linux-gnu/libdart-external-odelcpsolver.so.6.12 (0x00007f30d132c000)

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

# dpkg -L libgz-physics7-dartsim-dev
/usr/include/gz/physics7/gz/physics/dartsim/World.hh
/usr/include/gz/physics7/gz/physics/dartsim-plugin
/usr/include/gz/physics7/gz/physics/dartsim-plugin/Export.hh
/usr/include/gz/physics7/gz/physics/dartsim-plugin/detail
/usr/include/gz/physics7/gz/physics/dartsim-plugin/detail/Export.hh

/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim
/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim/gz-physics7-dartsim-config-version.cmake
/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim/gz-physics7-dartsim-config.cmake
/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim/gz-physics7-dartsim-targets.cmake
/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim-plugin
/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim-plugin/gz-physics7-dartsim-plugin-config-version.cmake
/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim-plugin/gz-physics7-dartsim-plugin-config.cmake
/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim-plugin/gz-physics7-dartsim-plugin-targets-relwithdebinfo.cmake
/usr/lib/x86_64-linux-gnu/cmake/gz-physics7-dartsim-plugin/gz-physics7-dartsim-plugin-targets.cmake

/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/gz-physics7-dartsim-plugin.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gz-physics7-dartsim.pc

/usr/lib/x86_64-linux-gnu/gz-physics-7/engine-plugins/libgz-physics-dartsim-plugin.so
(/usr/lib/x86_64-linux-gnu/gz-physics-7/engine-plugins/libgz-physics-dartsim-plugin.so -> libgz-physics7-dartsim-plugin.so)
/usr/lib/x86_64-linux-gnu/gz-physics-7/engine-plugins/libgz-physics7-dartsim-plugin.so
( /usr/lib/x86_64-linux-gnu/gz-physics-7/engine-plugins/libgz-physics7-dartsim-plugin.so -> libgz-physics7-dartsim-plugin.so.7)
/usr/lib/x86_64-linux-gnu/libgz-physics7-dartsim-plugin.so
( /usr/lib/x86_64-linux-gnu/libgz-physics7-dartsim-plugin.so -> libgz-physics7-dartsim-plugin.so.7)
...

libgz-physics7-dartsim: real binary plugins and two symblinks

# dpkg -L libgz-physics7-dartsim    
/usr/lib/x86_64-linux-gnu/libgz-physics7-dartsim-plugin.so.7.0.0~pre2
/usr/lib/x86_64-linux-gnu/gz-physics-7/engine-plugins/libgz-physics7-dartsim-plugin.so.7.0.0~pre2
/usr/lib/x86_64-linux-gnu/gz-physics-7/engine-plugins/libgz-physics7-dartsim-plugin.so.7
(/usr/lib/x86_64-linux-gnu/gz-physics-7/engine-plugins/libgz-physics7-dartsim-plugin.so.7 -> libgz-physics7-dartsim-plugin.so.7.0.0~pre2)
/usr/lib/x86_64-linux-gnu/libgz-physics7-dartsim-plugin.so.7
(/usr/lib/x86_64-linux-gnu/libgz-physics7-dartsim-plugin.so.7 -> libgz-physics7-dartsim-plugin.so.7.0.0~pre2)
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions