colcon / colcon-core

Command line tool to build sets of software packages
http://colcon.readthedocs.io
Apache License 2.0
103 stars 46 forks source link

[Question] Recommended way to invoke colcon on ubuntu noble? / request for release recent colcon in ROS APT ubuntu noble repos #618

Open mikaelarguedas opened 7 months ago

mikaelarguedas commented 7 months ago

It looks like colcon packages have been imported in the ros2 apt repository for ubuntu noble:

Extract of [ros2 / noble / amd64 Packages](http://packages.ros.org/ros2/ubuntu/dists/noble/main/binary-amd64/Packages) file ``` Package: python3-colcon-core Priority: optional Section: python Installed-Size: 436 Maintainer: Dirk Thomas Architecture: all Version: 0.15.0-1 ```

However the version available in the official Ubuntu repositories is higher (0.15.2):

$ rmadison python3-colcon-core
 python3-colcon-core | 0.12.1-2 | mantic/universe | all
 python3-colcon-core | 0.15.2-1 | noble/universe  | all

So that's the one getting installed.

But the packages in the official ubuntu repository don't provide an executable on the path only a python module.

More specifically, ubuntu provides a "colcon" package that provides the executable. But it is only a recommended package so for all images or workflows that don't install recommends the colcon command cannot be executed

cottsay commented 7 months ago

Here's part of the problem: ros-infrastructure/reprepro-updater#200

I'm afraid that we'll probably continue to battle with upstream packages. Either we recommend users pin the repository priority in a way that prefers the colcon packages provided by the colcon or ROS repositories, or we use the same trick as the ROS infrastructure packages and bump the debinc releases higher than we'd reasonably expect upstream to ever do. We discussed this briefly on Friday but didn't arrive on a "best" way to handle it. I'll prioritize it next week.

mikepurvis commented 7 months ago

A potential alternative option to consider here could be shipping more of an omnibus Colvin package based on dh-virtualenv. We did this for a number of years before switching to Nix and it was a nice way to take full control of the versions of everything and avoid competing with upstream versions.