-
Notifications
You must be signed in to change notification settings - Fork 45
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
use ament_python_install_package when package is not installed #187
Conversation
Signed-off-by: Shingo Kitagawa <[email protected]>
@clalancette kindly ping. |
Signed-off-by: Shingo Kitagawa <[email protected]>
I update this PR to follow this comment. |
It's rather insane we got to this far after Humble release and this is an issue. We're attempting to migrate our large code base from Galactic -> Humble and this has come up. We follow our own design pattern which does not include having messages in their own package due to the overhead required to maintain so many packages, as well as legacy. Then this gets sprung on us without any rep discussion, conversion warnings or understanding of how big an issue this is. Sometimes you want messages and python in the one package. This or a similar fix really needs to be merged. |
Hi there, I recently have installed audio_common package, but I needed the assist of @knorth55 to do so. It is working just fine. Apparently the bug that prevented me to do it on my own is already fixed on his contributions. Just a friendly reminder! I am sure that it is worth the effort 😄 Greetings! |
@clalancette |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR!
It looks like this is working around an issue where ament_python_install_package()
doesn't allow the same package name to be installed twice. I see why this would be important for packages that both generate interfaces and ship a python library. I don't think this is the right place for it. It exposes ament_cmake_python
's internal variable name AMENT_CMAKE_PYTHON_INSTALL_INSTALLED_NAMES
to rosidl_generator_py
, and once we add it here I don't see a path forward to eventually remove it.
For the time being I would recommend putting this code in the affected package itself instead of it calling ament_python_install_package()
a second time.
I think the best option would be to update ament_python_install_package()
to allow installing more files into an existing package.
For example,
rosidl_generate_interfaces(...)
ament_python_install_package(... EXTEND_EXISTING)
Thank you for your review. I will update So my plan is
what do you think? |
Any update on this? |
I think we are waiting on an update to |
@clalancette |
I don't think we should do that, no. Workarounds like this tend to live forever once they are in. Given that we have another way forward, I think we should do that. |
@clalancette thanks. I see. I will work on the other way. |
At this point I think it is okay if it stays forever, because it will allow us to move forward. It's been on an ongoing issue for a year now. This prevents us merging code that can run on ROS-industrial-CI pipelines on upstream Github. |
I would also vote for a short term solution. Otherwise is there anyway we can get support from the core maintainers to fix this issue? Seems like building packages with messages in them is a pretty core feature.... |
@quarkytale for review? |
Here's my attempt to solve this: ament/ament_cmake#517 |
See my comment in #141 (comment) . I'm going to close this in favor of ament/ament_cmake#514 |
this PR fix #141
with this PR, we can use
rosidl_generator_interfaces
andament_python_install_package
in the same CMakeLists.txt.But the order is important.
as ros-drivers/audio_common#212, we need to
ament_python_install_package
first androsidl_generate_interfaces
later.