add_dependencies(your_program ${your_package_EXPORTED_TARGETS})
--
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.
Again; Awesome work, thanks a lot Jack!
Since recently this is correctly linked from within the API doc:
http://www.ros.org/wiki/catkin -> Code API -> Extracted CMake API reference
>>> For the question about run_depend on msg packages:I am still trying to understand how nested C++ headers can cause a
>>>
>>>
>>> http://farnsworth.csres.utexas.edu/docs/catkin/html/howto/cpp_msg_dependencies.html
>>> (related)
>>>
>>> http://farnsworth.csres.utexas.edu/docs/catkin/html/howto/python_msg_dependencies.html
>>>
>>> It is true that for C++ programs, you technically only need the message
>>> packages at build time, because for the ROS serialization system C++
>>> generated code is header only.
>
>
> That is only correct if a package will never have other packages depending
> on it.
> As soon as another package includes headers transitively include generated
> headers from the message package you also need a run_depend.
> Therefore it should always be stated as a run dependency to not prevent that
> other packages can depend on a package (without explicitly pull in the
> package dependencies).
run-time dependency.
Is that *only* true for nested headers generated from messages?
On 02.05.2013 16:32, Jonathan Bohren wrote:
On Thu, May 2, 2013 at 7:20 PM, Jack O'Quin <jack....@gmail.com <mailto:jack....@gmail.com>> wrote:
On Thu, May 2, 2013 at 6:08 PM, Jonathan Bohren
<jonatha...@gmail.com <mailto:jonathan.bohren@gmail.com>> wrote:
>
> On Thu, May 2, 2013 at 6:05 PM, Jack O'Quin <jack....@gmail.com <mailto:jack....@gmail.com>> wrote:
>> I am still trying to understand how nested C++ headers can cause a
>> run-time dependency.
>>
>> Is that *only* true for nested headers generated from messages?
>
> This is one instance of catkin nomenclature that I find really
> counter-intuitive. "run" dependencies are actually "use" dependencies. So a
> package is in "run" dependency mode, for example, when another package is
> using any sort of resources in that package, including header files at build
> time.
Good point.
For me, it had the unfortunate effect of fooling me into thinking I
knew what it meant, when in fact I did not. Had it been named
something meaningless, like <fubar_depend>, I would have recognized my
ignorance much sooner.
As so often happens: it's not what I don't know that gets me in
trouble, it's what I think I know that is wrong.
That's exactly what happened to me when I was first trying to figure out catkin dependencies. It was also something that Daniel Stonier brought up 6 months ago, see the discussion here:
https://github.com/ros/catkin/issues/260
And the conclusion on that issue is likely still valid:
"As much as the naming is not exactly right, I don't think that any single word is going to exactly capture the intent."
So if the issue here is only that the semantic of the existing tags and terms is not clear enough than the documentation must provide a better explanation.
When we would want to go towards building separate dev and non-dev packages we will for sure need more metainformation to distinguish the dependency information...
>> If a package B build depends on C it does not necessarily imply that A building against B requires C.We model this exact differentiation with build and run dependencies and in CMake of B by "exposing" the package A to others (e.g. A) with the catkin_package(CATKIN_DEPENDS b).
>>
>> * A build dependency can be "internal", e.g. linking a static library or using header files only in .cpp files.
>> * Or a build dependency can be "exposed", e.g. linking a dynamic library or using header files in .h files.
>>
>> Just the fact that B build depends on C does not allow you to derive what C is for A.
So the differentiation is currently necessary to fulfill the use cases where the maintainer wants to decide between the above mentioned two bullet points.
shlibs:Depends)
.
It would be nice if they are separated per part of the ros package
(library and executable) so that if you need only the library you
don't need to install all the dependencies of the executable. Adding a combined dependency tag to replace two lines by one is not really a big difference.
Especially with the fact that we do have four different kind of depend tags I find it more confusing if a new tag combines two of them - but that is mostly personal preference.
Regarding the proposed renaming:
despite the effort and confusion during the transition period I highly doubt that these term are any better.
"run" as well as "exec" do not capture the fact that this is also used for e.g. exposing dynamic libraries and headers for building downstream packages.
I don't see how the proposed name change would make it any clearer to the users.
-j--Jonathan BohrenLaboratory for Computational Sensing and Robotics
--
On 03.05.2013 07:54, Jonathan Bohren wrote:
On Fri, May 3, 2013 at 12:36 AM, Dirk Thomas <dth...@osrfoundation.org <mailto:dthomas@osrfoundation.org>> wrote:
Well I see how such a change would make it A LOT clearer, but apparently my opinion isn't worth anything; ...
As every discussion which is not based on 100% logically verifiable facts this is based on personal perspective.
Your opinion has the same weight as any body else contributing to the discussion.
If there is a majority leaning to any proposed solution - no matter from whom - that is what commonly gets realized.
I'm sorry you're getting frustrated. We are listening to your input as well as others. There are advantages to your proposal such as a more minimal representation. However there are also advantages to the current implementation such as having a 1-1 mapping to other common dependency systems (ala debian packages [1]).
We have spent over a year now on developing the build system and it has been reviewed many times. It's been a lot of effort to make the existing implementation and we're approaching the release of Hydro with the new system. As such the first time we could deploy an new set of dependencies is in ITurtle. Making this change will require everyone to change all their package.xml files again in the next cycle, and we cannot hard deprecate it in one cycle so it will drag out for at least another year. And in the mean time we will need to keep documentation for both the proposed tags, as well as adequate documentation for the current tags.With this much inertia we need to have a very strong justification for making a change. From a preliminary review of the feedback from the ROS distro survey one of the primary takeaways is that people want things to change less/slower. In the discussion above it is clear we need to make sure that the documentation is clearer. But that will still be required through the proposed renaming, and be doubly problematic during the next year or more of migration.
At this point I suggest that unless someone has a compelling reason that the existing standard is not technically adequate that we not continue discussing the xml format of the dependency tags. There are lots of other things which can use attention in our push to get groovy (beta) out the door this week.
There is significant fatigue for both ROS developers and ROS users with the buildsystem changes and making further changes is encountering resistance because of this. As the current system is functional, and during the reviews we followed closely the debian model which is a well established system, the case needs to be very strong to change anything this core and disrupt all ROS users.
I understand your goal of usability and fully agree with a goal of making ROS as accessible as possible. To that end I think that a script which explains to the user the implications of their currently declared dependencies could be much more useful than changing the semantic names. It could even have an interactive prompt which asks questions of the developer to make sure they haven't made common errors.
On Fri, May 3, 2013 at 1:32 PM, Dirk Thomas <dth...@osrfoundation.org> wrote:
On 03.05.2013 07:54, Jonathan Bohren wrote:
On Fri, May 3, 2013 at 12:36 AM, Dirk Thomas <dth...@osrfoundation.org <mailto:dthomas@osrfoundation.org>> wrote:
Well I see how such a change would make it A LOT clearer, but apparently my opinion isn't worth anything; ...
As every discussion which is not based on 100% logically verifiable facts this is based on personal perspective.
No, my opinion is based on the data that numerous people, both ROS experts and novices, have wasted time because Catkin's interface is confusing.Your opinion has the same weight as any body else contributing to the discussion.
If there is a majority leaning to any proposed solution - no matter from whom - that is what commonly gets realized.So then maybe we should ask everyone on ROS users:"Write down what you think <build_depend> and <run_depend> mean in a Catkin package.xml file."I'm pretty sure most people will be very confident in their answers and at the same time be very wrong.
On Fri, May 3, 2013 at 2:33 PM, Tully Foote <tfo...@osrfoundation.org> wrote:
I'm sorry you're getting frustrated. We are listening to your input as well as others. There are advantages to your proposal such as a more minimal representation. However there are also advantages to the current implementation such as having a 1-1 mapping to other common dependency systems (ala debian packages [1]).I recognize that Catkin has been geared towards making releases easier, but I think in the process, the developers lost sight of the fact that most people spend the majority of their time writing packages, and not releasing them.
We have spent over a year now on developing the build system and it has been reviewed many times. It's been a lot of effort to make the existing implementation and we're approaching the release of Hydro with the new system. As such the first time we could deploy an new set of dependencies is in ITurtle. Making this change will require everyone to change all their package.xml files again in the next cycle, and we cannot hard deprecate it in one cycle so it will drag out for at least another year. And in the mean time we will need to keep documentation for both the proposed tags, as well as adequate documentation for the current tags.With this much inertia we need to have a very strong justification for making a change. From a preliminary review of the feedback from the ROS distro survey one of the primary takeaways is that people want things to change less/slower. In the discussion above it is clear we need to make sure that the documentation is clearer. But that will still be required through the proposed renaming, and be doubly problematic during the next year or more of migration.This justification is even more frustrating since back before the groovy release, the discussion of making the package.xml spec clearer was ended because Catkin needed to be pushed out the door [2]:At this point I suggest that unless someone has a compelling reason that the existing standard is not technically adequate that we not continue discussing the xml format of the dependency tags. There are lots of other things which can use attention in our push to get groovy (beta) out the door this week.
Maybe part of the reason why people want it to change more slowly isn't because of the changes themselves, but because the changes were released prematurely and without adequate user feedback? The challenge with supporting an LTS is that you need to make sure that the decisions that you're committing to for an LTS are well-founded.I understand the ROS maintainer team has put a lot of work into catkin, but most people I know who were using ROS before Groovy are still using rosbuild, even if they're now using Groovy. I think the only heartache would be for the small percentage of people who have started to use Catkin, and if usability was improved, maybe they wouldn't mind the work. The buildsystem is the FIRST thing that people interact with when they start using ROS, and if the buildsystem is confusing, then it makes the learning curve especially steep.
There is significant fatigue for both ROS developers and ROS users with the buildsystem changes and making further changes is encountering resistance because of this. As the current system is functional, and during the reviews we followed closely the debian model which is a well established system, the case needs to be very strong to change anything this core and disrupt all ROS users.I think that the notion that changing the buildsystem causes significant fatigue for everyone should have made usability for the majority of people the #1 design goal, instead of reducing calls to CMake and making it easier to release packages. The Debian model isn't the best model for ROS users who build numerous source packages and never plan to generate binary packages.
I understand your goal of usability and fully agree with a goal of making ROS as accessible as possible. To that end I think that a script which explains to the user the implications of their currently declared dependencies could be much more useful than changing the semantic names. It could even have an interactive prompt which asks questions of the developer to make sure they haven't made common errors.If we can do that, why can't we just write a script that migrates package.xml files?-j--Jonathan BohrenLaboratory for Computational Sensing and Robotics
--
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.
First, let me suggest that we give Jack back his thread and really focus on small, tractable proposals.
First, let me suggest that we give Jack back his thread and really focus on small, tractable proposals.
--
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.
Really nice Jack.I noticed the tests are still on a todo. I think that's a really important fragment that often gets neglected and I've been fighting on and off with them over the last few weeks.gtests : mostly the same, although it would be worth including that if you don't have gtest on your system, you can just add the gtest sources to your rosinstall file and catkin will simply just run with it.rostests : ok, not much changed herenosetests : don't seem to have changed much, but for the life of me I can't figure out how to get nosetests working on a folder rather than specifying them one by one.
I don't have much time right now, but I could probably contribute to this section after RosCon.
Another question came to mind while editing these files. Doesn't the dynamic reconfiguration page also require add_dependencies() commands, similar to those needed for packages that define their own custom messages or services?
--
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.
Austin found this error in the documentation:The `Boost_LIBRARY` variable is used, but it should be `Boost_LIBRARIES`.
--
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/CAB6SgyWcfUq0FmaYAkAeF6XZbGKhE-z_z07QmZaXj4%2BJtfjaXQ%40mail.gmail.com?hl=en.
I am completely positive that you should be using Boost_LIBRARIES, you can, however, use Boost_<COMPONENT>_LIBRARY. There is no Boost_LIBRARY.