On 04.05.2013 17:59, Jack O'Quin wrote:Adding a depend tag should be very little implementation effort.
In another thread there was a discussion about how the current catkin
dependency names can be confusing. Specifically, <run_depend> does not
mean exactly what it appears to say. There was a long and useful
digression about what it actually signifies.
Jonathan Bohren proposed some changes:
| <build_depend> and <run_depend> ---> <depend>
| <build_depend> and not <run_depend> ---> <internal_depend>
| <run_depend> and not <build_depend> ---> <exec_depend>
Several people pointed out the difficulty of making API changes to the
hundreds of packages already released.
But, I like Jon's idea of introducing <depend> as a
backward-compatible name for a dependency that is *both* a
<build_depend> *and* a <run_depend>. This seems likely to capture 90%
or more of the ROS usage for years to come. The more-detailed tags
should remain available for those rare cases where they can
meaningfully be used:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
catkin_pkg can encapsulate that in the parsing of the package.xml while maintaining the same API.
It would expose a depend entry as if it would be listed as build_depend and run_depend.
(One side note: having this combined dependency might encourage the behavior of "just using that" without understanding the implications.)
Since the dev package contains the header files it is actually very common to run_depend on a dev package.They can sometimes be used for system package dependencies, which
typically *are* divided into separate build and run-time .deb or .rpm
files. For that to be work, we should start adding both names to the
rosdep YAML files. Current practice is only to define the "foo-dev"
name, but "foo" could be added without breakage. Older entries
(without the "-dev" suffix) will be somewhat problematic.
This is due to the fact that these headers are required to build downstream packages.
As William mentioned in a previous email I think we need to discuss how we can better express what a dependency is used for instead of when it is used.
I expect the outcome of that discussion to affect what kind of dependency tags we need.
Therefore I think we should wait before introducing <depend> until we have a clear picture where we are heading with that.
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-buildsy...@googlegroups.com.
To post to this group, send email to ros-sig-b...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
So I've talked to a bunch of people here at ICRA, and found that nobody who uses catkin can tell me the counter-intuitive details of run_depend (deps needed when a package builds against your package) and most are surprised when I tell them.Most who I've talked to have said that they always just make every dependency a build and run dependency. Those who do this say that they find it really annoying that they have to specify it twice, especially when developing packages which contain numerous dependencies.I think we should add a run+build <depend> tag for hydro, if possible. Those who need to make the distinction can do so, but I think in 95% of the cases, a single <depend> tag which means <run_depend> AND <build_depend> is suitable.
Furthermore, I think if we can add this for hydro, it should be mentioned in the Catkin ROSCon tutorial talk alongside the other dependency options.
On 09.05.2013 18:19, Jonathan Bohren wrote:Adding a depend tag seems to be a good idea based on the feedback.
So I've talked to a bunch of people here at ICRA, and found that nobody who uses catkin can tell me the counter-intuitive details of run_depend (deps needed when a package builds against your package)
and most are surprised when I tell them.
Most who I've talked to have said that they always just make every dependency a build and run dependency. Those who do this say that they find it really annoying that they have to specify it twice,
especially when developing packages which contain numerous dependencies.
I think we should add a run+build <depend> tag for hydro, if possible. Those who need to make the distinction can do so, but I think in 95% of the cases, a single <depend> tag which means <run_depend>
AND <build_depend> is suitable.
Furthermore, I think if we can add this for hydro, it should be mentioned in the Catkin ROSCon tutorial talk alongside the other dependency options.
But making this decision two days before the conference is definitely not.
We have not yet made any progress on the discussion on dependencies in general and what we all expect and envision for the future.
Without having a consensus where we want to go / what kind of dependencies we want to address I am highly against adding another tag which we will have to deal with if the discussion goes in a different direction.
Hopefully we can find some time at ROSCon to discuss this with several people in person in order to achieve some progress on these topics.
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-buildsy...@googlegroups.com.
To post to this group, send email to ros-sig-b...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
I'd like to resume this discussion and re-assert that we should add a "<depend>" tag which translates literally to "<build_depend> and <run_depend>"
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-buildsy...@googlegroups.com.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ros-sig-buildsystem/CAB6SgyUgG8U0EpEOM93z1OE6P_fqaG20m-2tPV2zLhWoShb7bA%40mail.gmail.com?hl=en.
I added support for the <depend> tag in catkin_pkg in https://github.com/ros-infrastructure/catkin_pkg/pull/43.
Please feel free to review / provide feedback.
It is not changing any API since the depend tag is not exposed.
After parsing it is considered to be a build_depend and ros_depend.
(I hope this will not create problems in the future if we decide that we need to add more dependency types e.g. for dev/non-dev dependencies).
Perhaps we should define the semantics of ``<depend>`` to imply all current or future ``<*_depend>`` tags, except that it should never cause errors for redundant dependency tags.
To view this discussion on the web visit https://groups.google.com/d/msgid/ros-sig-buildsystem/CALU21Xykf-siHu6HChODuBJxdMkPmoeUGZ_SHkeRZJ8dPfv5pQ%40mail.gmail.com?hl=en.