Skip to content

Adding libaditof Package to Ros Index#44883

Merged
sloretz merged 2 commits intoros:masterfrom
raebelchristo-adi:master
Apr 10, 2025
Merged

Adding libaditof Package to Ros Index#44883
sloretz merged 2 commits intoros:masterfrom
raebelchristo-adi:master

Conversation

@raebelchristo-adi
Copy link
Contributor

Please add the following dependency to the rosdep database.

Package name:

libaditof

Package Upstream Source:

https://github.com/analogdevicesinc/libaditof/tree/main

Purpose of using this:

This dependency serves as an SDK that provides API calls for the ADTF3175 time of flight sensors developed at ADI.

Checks

  • All packages have a declared license in the package.xml
  • This repository has a LICENSE file
  • This package is expected to build on the submitted rosdistro

@github-actions github-actions bot added the noetic Issue/PR is for the ROS 1 Noetic distribution label Mar 26, 2025
Copy link

@github-actions github-actions bot 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 sending a pull request to ROS distro!

This is an automated tool that helps check your pull request for correctness.
This tool checks a number of attributes associated with your ROS package and generates a report that helps our reviewers merge your pull request in a timely fashion. Here are a few things to consider when sending adding or updating a package to ROS Distro.
ROS Distro includes a very helpful CONTRIBUTING.md file that we recommend reading if it is your first time submitting a package.
Please also read the ROS Distro review guidelines which summarizes this release process.

ROS Distro Considerations

Package Considerations

Having your package included in a ROS Distro is a badge of quality, and we recommend that package developers strive to create packages of the highest quality. We recommend package developers review the following resources before submitting their package.

Need Help?

Please post your questions to Robotics Stack Exchange or refer to the #infra-help channel on our Discord server.


For changes related to yamllint:

  • ✅ All new lines of YAML pass linter checks

@christophebedard christophebedard added the changes requested Maintainers have asked for changes to the pull request label Mar 26, 2025
@christophebedard
Copy link
Member

christophebedard commented Mar 26, 2025

New package checklist:


I noticed that you have multiple submodules in your repository. This complicates licensing and packaging.

Generally, licenses of anything distributed with your package should be listed in the package.xml. Looking at the licenses of the repos included using submodules, they cover a bit more than MIT. Also, when relying on external dependencies, you should try to use system packages (e.g., Ubuntu system packages). If they are not available through system packages, you can use vendor packages, which you may have to create yourself if they are not available. Looks like all submodules are available as Ubuntu Focal system packages:

So you could list these rosdep keys as dependencies (<depend>) in your package.xml and remove the submodules. You'd need to update your CMakeLists.txt to find the system package. Then users building your package from source would have to install the system packages (e.g., using rosdep).

I found this relevant discussion on ROS Discourse (seems like it was also about an Analog Devices package!): https://discourse.ros.org/t/buildfarm-make-install-error/39231.

Also, note that ROS Noetic will be EOL in ~2 months.

Copy link
Member

@christophebedard christophebedard left a comment

Choose a reason for hiding this comment

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

Just so that this doesn't accidentally get merged.

@raebelchristo-adi
Copy link
Contributor Author

Alright, so here's the issue. This package wasn't primarily designed for ROS. It's a generic package which was given a package.xml in order to be built as a ros package so that it worked seamlessly with our other ros packages. The development team had stated that they needed a very specific version of the given submodules, which can't be attained through rosdep.

Since we need very specific versions, we wish to keep them as submodules. However, the problem right now is licensing right? If we addressed the licenses of each submodule in our package.xml, will our package become valid? I am wondering if adding additional license tags using this (page 10) as reference, would help solving this issue. Any advice regarding licensing is welcome since I am not quite well versed in it.

@christophebedard
Copy link
Member

christophebedard commented Mar 29, 2025

I am wondering if adding additional license tags using this (page 10) as reference, would help solving this issue. Any advice regarding licensing is welcome since I am not quite well versed in it.

That REP has not been accepted/merged yet: ros-infrastructure/rep#347. The current best practice is to list all licenses and just put an XML comment next to each one saying what part the license is for, e.g., https://github.com/ros2/rosbag2/blob/9351e6a9a46b54b37b2edd31f73e90d923e754ee/liblz4_vendor/package.xml#L10-L12. You can use the file attribute with a relative path to the corresponding license file, though: https://ros.org/reps/rep-0149.html#id17.

I didn't see them before, but you should also list the licenses of the third-party dependencies in the dependencies/ directory: https://github.com/analogdevicesinc/libaditof/tree/main/dependencies

Alright, so here's the issue. This package wasn't primarily designed for ROS. It's a generic package which was given a package.xml in order to be built as a ros package so that it worked seamlessly with our other ros packages. The development team had stated that they needed a very specific version of the given submodules, which can't be attained through rosdep.

Since we need very specific versions, we wish to keep them as submodules. However, the problem right now is licensing right? If we addressed the licenses of each submodule in our package.xml, will our package become valid?

I understand your constraints. Unfortunately, it's also about potential clashes if other packages include a different version of the same dependency, as mentioned here: https://discourse.ros.org/t/buildfarm-make-install-error/39231/2. However, your package is using add_subdirectory() and not ExternalProject_Add(), so I'm not sure if it's the same situation. However, this comment seems to imply that this is not possible.

Let me get other people's input on this. I've added this to the agenda for Tuesday's ROS PMC meeting; I'll get back to you.

@christophebedard
Copy link
Member

Thanks for your patience. We talked about this in today's ROS PMC meeting (2025-04-01).

Unfortunately, we cannot release/distribute this as-is because of the reasons I mentioned above. You would need to rely on system packages. If that's not possible, you would need to follow the REP 136 process, but it may still not be acceptable if you rely on specific versions (I'm not sure if we accept multiple vendor packages of the same third-party lib with different versions). Also, you'd have to be careful with the licenses of those third-party dependencies, especially GPL. And, again, ROS Noetic will be EOL in <2 months, so that might not be worth it.

However, we can still proceed with this PR and only add a source: entry so that your repo/package gets indexed. We just can't (later) accept a binary release. Does that work for you?

@raebelchristo-adi
Copy link
Contributor Author

I guess that works for us. We are fine with having just source entry for now. We also just realized that we also want to add a doc entry as well. I hope that's okay with you if I update the PR right? As it is only going to be indexed for source and doc, do we still need to update the package.xml to include the licenses of submodules and dependencies folder?

We also intend to update this repository in some time to use system dependencies rather than version specific submodules, however this will cross the EOL for Noetic. We will release that version on ROS2.

@christophebedard
Copy link
Member

christophebedard commented Apr 2, 2025

We also just realized that we also want to add a doc entry as well. I hope that's okay with you if I update the PR right?

Of course, adding a doc: entry is fine.

As it is only going to be indexed for source and doc, do we still need to update the package.xml to include the licenses of submodules and dependencies folder?

It would be good to do it (or at least mention that there are third-party dependencies that have their own licenses too), but it's not required to add source: and doc: entries here.

We also intend to update this repository in some time to use system dependencies rather than version specific submodules, however this will cross the EOL for Noetic. We will release that version on ROS2.

Sounds good.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

For changes related to yamllint:

  • ✅ All new lines of YAML pass linter checks

@raebelchristo-adi
Copy link
Contributor Author

Updated the PR to contain the doc: entry. If everything looks good, please merge this PR. Thank you.

@christophebedard christophebedard added held for sync Issue/PR has been held because the distribution is in a sync hold and removed changes requested Maintainers have asked for changes to the pull request labels Apr 3, 2025
@christophebedard
Copy link
Member

Now we just need to hold for the Noetic sync

@sloretz sloretz merged commit 628c5b0 into ros:master Apr 10, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

held for sync Issue/PR has been held because the distribution is in a sync hold noetic Issue/PR is for the ROS 1 Noetic distribution

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants