Closed blacklightpy closed 6 months ago
@classabbyamp This would be the top level ROS 2: Iron package. This is a separate request from the Gazebo framework.
The standard procedure for generating DEB/RPM files is by using git-buildpackage
(GBP) on the build farm. bloom
is the ROS infrastructure tool provided which generates the release files and makes a PR to the Build Farm repo, and when merged, it invokes the Jenkins CI job.
To do this without deploying to the ROS APT/DNF repo, we'll need to self-host ros_buildfarm
and set a local APT repo to deploy to.
How it is locally built:
~- First we obtain the ROS 2 variant sources, using vcs import
the ros2.repos
file from the appropriate branch from https://github.com/ros2/ros2 into the src
path of the working directory.~
~- Then we also clone the appropriate branch of the variants repo into src
~
EDIT: Apparently, the ros2.repos
file does not have all the files in ROS 2. That file was historically only used for CI jobs, and it did not include all files because building nightlies would often time out. It got repurposed for general users only recently. That should be why the docs require you to add ROS 2 repo to APT/DNF for rosdep install
.
To get all the sources, we have the older method of rosinstall_generator
. It generates .rosinstall
files, which is an older format used with previous import tools like rosinstall
, rosws
and wstools
, but it is still supported by vcstool
(which by the way, is not vcstools
, which is what all these tools are based on). It can also generate .repos
files by using --format=repos
.
To use it:
rosinstall_generator <variant> --rosdistro <distro> --deps --tar > <variant>.rosinstall
(It's available as a python package, rosinstall-generator
, on PyPI. And it also works for packages, not just variants)vcs import --input <variant>.rosinstall src
(It's available as a python package, vcstool
, on PyPI)Next steps:
rosdep init
and rosdep update
to get the latest package definitions, from the rosdistro repo.rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"
(Skipping those because they don't have the package.xml
manifests set or have require a license to use).
rosinstall_generator
, which should get all the ROS related packages to use with vcs import
.rosdep
can handle XBPS yet (My storage is tummy full to check rn).~ EDIT: It seems that rosdep
supports Debian, Ubuntu, Gentoo, Nix, Slackware, FreeBSD, etc. but Void does not have a support script. The distro specific dependency package names are in https://github.com/ros/rosdistro/blob/master/rosdep/base.yaml.colcon build
is used to generate the binaries. colcon build --merge-install
should install all packages into one directory. So we must use colcon build --merge-install --packages-up-to <variant>
to build a variant.And I think once the binary is generated, we can package it normally.
Possible Issues:
I don't know how rosdep
handles system packages (including Python packages, since PEP 668). I know that rosdep keys
should list all the dependencies from a workspace source.. so that should help find out what all the dependencies are, and we should be able to add them in makedepends
. The ROS specific packages, we should be able to build from sources.
EDIT: To make rosdep
support XBPS, we'll need to add a support script, referring other packages. But for getting the dependency names itself, we can refer https://github.com/ros/rosdistro/blob/master/rosdep/base.yaml with the list of dependency keys.
[!NOTE]
colcon
(Collective Construction) is the latest and universal build system in ROS, that handles CMake, setuptools, cargo, gradle and many other build systems to allow diversity in ROS packages. It also allows building with other more systems using extensions, likecolcon-blaze
for Blaze.Prior to
colcon
, ROS used to useament_tools/ament
in ROS 2 andcatkin_tools/catkin
,catkin_make_isolated
,catkin_make
androsbuild/rosmake
in ROS 1, in that reverse-chronological order. So many tutorials may list building withcatkin build
orcatkin_make_isolated
and that can get confusing.
colcon
handlesament
andcatkin
repositories by usingcatkin_pkg
to parsepackage.xml
files and skipping directly to the underlying build systems.
python3-vcstool
should come as a dependency of ros-dev-tools
(#50087).
python3-rosinstall-generator
is needed to build variants, since we can't use the ROS APT/DNF repos, so perhaps that too should be added to ros-dev-tools
. Or it could go in makedepends
. Still, it's a very common development tool used in ROS.
Package name
ros2-iron-desktop-full
Package homepage
https://github.com/ros2/variants/tree/master/desktop_full
Description
The Robot Operating System, is a meta operating system for robots (Desktop Full Variant)
Depends on #50090, #50091 and #50092
Guide: https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html Also see:
Does the requested package meet the package requirements?
Compiled
Is the requested package released?
Yes