You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In order to build maliput packages that depends on Drake inside the ROS buildfarm and distribute them through the ROS repositories, first step is being able to build Drake as a ROS package that can be used for other ROS packages.
Bazel is required to build Drake even if there is a CMake wrapper that helps with the installation of the build artifacts.
Bazel is only supported in Ubuntu starting with Ubuntu Jammy. The target of this work would be the ROS versions supported on Jammy and follow.
Debhelper flags (such as fortify, O3, etc) don't cause any test failures but it does cause changes in floating-point roundoff so that the user's numeric results would change depending on the release channel. Need to avoid debhelper default flags.
Drake supports a variety of solvers, at least three are commercial optimization solvers dependencies: SNOPT, MOSEK, and GUROBI. Installation is optional. In order to simplify the works of dealing with commercial code and licenses in the starting phase, the commercial solvers installation is disabled at this point.
Drake aims to vendor and statically link all of our dependencies using hidden symbols. Usually the version of the dependencies need not match up other uses of the library within the user's ecosystem.
The only exceptions to the design in the point above are for the interface libraries: Eigen, fmt, and spdlog. Drake assume that the user will use the host OS version of the libraries.
VTK is built using Dockerfile, upload to S3 and Drake build is using the binaries from S3. Need to find a way of building VTK from source to go into the ROS buildfarm.
ROS buildfarm restrictions:
Code inside the ROS Buildfarm needs to be built under a user account with rootless access .
Code downloads in the ROS Buildfarm are allowed at building time although other alternatives are preferred.
Binary blobs inside a ROS package code or injected at building time are discouraged and needs to be discussed with the ROS team.
The bottom line is that we make a release archive (tgz) file using the CMake install, and then we run alien on it. Trying to use dpkg-buildpackage was a lot of hassle with little benefit.
Drake supports a variety of solvers, at least three are commercial optimization solvers dependencies: SNOPT, MOSEK, and GUROBI. Installation is optional.
Drake has obtained a license grant to enable MOSEK during the build, and that grant transfers to anyone else redistributing Drake as well.
(I agree that it makes sense to keep those turned off during the initial testing phase here.)
Drake aims to vendor and statically link all of our dependencies using hidden symbols. Usually the version of the dependencies need not match up other uses of the library within the user's ecosystem. The only exceptions to the design in the point above are for the interface libraries: Eigen, fmt, and spdlog.
Exactly right.
Drake assume that the user will use the host OS version of the libraries.
Drake defaults to using the host OS version, but you can change it to use your own build via CMake options:
... in which case Drake will use find_package() for those dependencies.
VTK is built using Dockerfile, upload to S3 and Drake build is using the binaries from S3. Need to find a way of building VTK from source to go into the ROS buildfarm.
When we upgrade to VTK 10, we might switch back binary downloads, though. If it helps, we might be able to preserve an option to rebuild VTK from source.
Code downloads in the ROS Buildfarm are allowed at building time although other alternatives are preferred.
Drake fetches most of its externals' source code via downloads (with mirrors), but there are ways to populate that cache ahead of time and/or disable source downloads (in which case pre-population would become mandatory).
In order to build maliput packages that depends on Drake inside the ROS buildfarm and distribute them through the ROS repositories, first step is being able to build Drake as a ROS package that can be used for other ROS packages.
Considerations #
Drake version selected at this moment is Drake 1.12.
Bazel is required to build Drake even if there is a CMake wrapper that helps with the installation of the build artifacts.
Bazel is only supported in Ubuntu starting with Ubuntu Jammy. The target of this work would be the ROS versions supported on Jammy and follow.
Debhelper flags (such as
fortify
,O3
, etc) don't cause any test failures but it does cause changes in floating-point roundoff so that the user's numeric results would change depending on the release channel. Need to avoid debhelper default flags.Drake dependencies:
ROS buildfarm restrictions:
Roadmap and tracking #
Prototype building of Drake 1.12 on Ubuntu Jammy with a rootless user
Bazel 4.0
rootless usingBazel 3.5.1
Implement Drake 1.12 as a ROS package
The text was updated successfully, but these errors were encountered: