Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port symlink_install fixes from ament_cmake to catkin #1199

Open
wants to merge 1 commit into
base: noetic-devel
Choose a base branch
from

Conversation

cottsay
Copy link
Member

@cottsay cottsay commented Nov 19, 2024

Symlink installs in catkin are used by colcon to provide a similar experience to a catkin devel space. To be clear, this code is not used by catkin itself or catkin_tools.

Specifically, this change includes fixes from the following ament_cmake PRs:

In my testing, these fixes were necessary to support symlink builds of the vast majority of ROS 1 packages released to date. Without this change, there are very common packages in ROS Noetic today which cannot be built with colcon when catkin symlinking is enabled.

Related to:

FYI @rhaschke

Symlink installs in catkin are used by colcon to provide a similar
experience to a catkin devel space. To be clear, this code is not used
by catkin itself or catkin_tools.

Specifically, this change includes fixes from the following ament_cmake
commits:
* 8b92e4affbd18b08a703897698960007738ee1b5
* fb1eda91c16a9423a8a96541e878358289e1b2b2
* 69afa32843a95dbed072c3eee282424a214f878a

In my testing, these fixes were necessary to support symlink builds of
the vast majority of ROS 1 packages released to date. Without this
change, there are very common packages in ROS Noetic today which cannot
be built with colcon when catkin symlinking is enabled.
@cottsay cottsay added the bug label Nov 19, 2024
@cottsay cottsay requested a review from sloretz November 19, 2024 19:31
@cottsay cottsay self-assigned this Nov 19, 2024
Copy link
Contributor

@rhaschke rhaschke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this.
Indeed this PR (fully) resolves colcon/colcon-ros#147, which was only partially addressed by #1197.
The 3rd issue in colcon/colcon-ros#149 is still not addressed: python-based catkin packages don't support --symlink-install.

rhaschke pushed a commit to ros-o/catkin that referenced this pull request Nov 21, 2024
Symlink installs in catkin are used by colcon to provide a similar
experience to a catkin devel space. To be clear, this code is not used
by catkin itself or catkin_tools.

Specifically, this change includes fixes from the following ament_cmake
commits:
* 8b92e4affbd18b08a703897698960007738ee1b5
* fb1eda91c16a9423a8a96541e878358289e1b2b2
* 69afa32843a95dbed072c3eee282424a214f878a

In my testing, these fixes were necessary to support symlink builds of
the vast majority of ROS 1 packages released to date. Without this
change, there are very common packages in ROS Noetic today which cannot
be built with colcon when catkin symlinking is enabled.
@cottsay
Copy link
Member Author

cottsay commented Nov 21, 2024

Thanks for working on this.
Indeed this PR (fully) resolves colcon/colcon-ros#147, which was only partially addressed by #1197.

Awesome, thanks very much for verifying.

The 3rd issue in colcon/colcon-ros#149 is still not addressed: python-based catkin packages don't support --symlink-install.

I don't have any immediate plans to address this myself, but I'd be happy to review a fix. Like this PR, the changes would have to be made in catkin itself.

@rhaschke
Copy link
Contributor

I don't have any immediate plans to address this myself, but I'd be happy to review a fix.

I would be working on it, but don't know where to start. Can you provide source links to:

  • how it is handled for ament_cmake packages?
  • which code to modify for catkin?

@cottsay
Copy link
Member Author

cottsay commented Nov 21, 2024

From what I have seen the approach in ament_cmake_python was pretty different from the one taken in catkin, but here are some pointers. With native python package support in ROS 2, the CMake wrapper is also far less used than it was in ROS 1.

how it is handled for ament_cmake packages?

https://github.com/ament/ament_cmake/blob/rolling/ament_cmake_python/cmake/ament_python_install_package.cmake

which code to modify for catkin?

https://github.com/ros/catkin/blob/noetic-devel/cmake/catkin_python_setup.cmake
https://github.com/ros/catkin/blob/noetic-devel/cmake/templates/python_distutils_install.sh.in

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants