2 个版本
0.0.2 | 2022年6月21日 |
---|---|
0.0.1 | 2022年6月21日 |
#2124 in 开发工具
22KB
452 行
catkin-bloom
将整个 catkin 工作空间导出为原生包
catkin-bloom 是一个工具程序,旨在帮助本地构建 ROS 包,而无需部署复杂的 ROS 构建农场。
catkin-bloom 主要旨在支持在 ROS docker 镜像下运行,因此目前支持 Debian 打包。此外,这是一个非常早期的版本,仅支持 Ubuntu bionic 上的 ROS melodic。正在开发更多灵活性。
通过 Docker 运行
您可以使用以下命令构建 Docker 镜像
docker build -t catkin-bloom .
然后,使用适当的挂载运行镜像
docker run -v "${PWD}/src":/workspace -v "${PWD}/repo":/repo -it --rm catkin-bloom --repo-path /repo -j8 /workspace
os-name
、os-version
和 ros-distro
参数将根据 Docker 镜像环境自动设置。
如果没有提供参数,则 repo-path
默认为 /repo
,jobs
默认为 8,工作空间路径默认为 /workspace
。
本地运行
首先,安装 Rust 工具链,并通过它安装 catkin-bloom
cargo install --path .
或者,当这个包在 crates.io 上时
cargo install catkin-bloom
然后,安装所需依赖项
apt install dh-make python-bloom fakeroot
然后,在工作空间源上运行程序
catkin-bloom -r /tmp/bloom src
生成的 debs 将位于 /tmp/bloom 目录下。将自动将仓库添加到 /etc/apt/sources.list.d
和 /etc/ros/rosdep/sources.list.d
。
此外,此程序将安装所有这些包,为了清理,请运行以下命令
apt remove $(cd /tmp/bloom; for p in *.deb; do echo $p | cut -f1 -d"_"; done)
说明
catkin-bloom 的工作方式是遍历整个工作空间,解析依赖关系,并按方式对包进行排序,以便在依赖项之前构建所有依赖关系。假设不存在循环(因为它们是非法的)。然后,将包按层级排序,其中同一层级的所有包完全独立(并且可能只依赖于较低层级)。请参见下面的图
T 1 | T 2 | T 3 | T 4
-----------+-----------+-----------+-----------
+---+ +---+ +---+
| A |------>| D |---------------+-->| H |
+---+ +---+ | +---+
| |
+-----+-----------------------+
| |
+---+ | +---+ +---+ |
| B |---+-->| E |------>| F | |
+---+ +---+ +---+ |
| | |
+-----------+-----+ |
| |
+---+ | +---+ |
| C |---------------+-->| G |---+
+---+ +---+
包 A、B、C 可以并发构建,从而加快过程。同样,D、E 和 F、G 分别。
依赖关系
~9–20MB
~278K SLoC