-
Notifications
You must be signed in to change notification settings - Fork 285
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
Added a package.xml file for REP-136 support #446
Conversation
ROS compatibility is only a good thing, especially since there isn't any downside to it 👍 |
We can consider to use cmake variables for dart information (name, version, description) in pacakge.xml and configure it through cmake to centralize the information in CMakeLists.txt. There is an example: |
Right, since the file won't get installed until cmake is run, we may as well autogenerate it with cmake to automatically keep the versioning and other meta info up to date. |
@jslee02 Unfortunately, that won't work. Catkin examines the |
Oh, so this depends on DART already being in your catkin workspace with the |
The workflow is that you checkout DART into your workspace and run If the |
It sounds like Catkin builds DART from source that is in the workspace (some local directory) in general. Then, what if DART is already installed with package.xml? Catkin will search installed DART or still build from source in the workspace? |
Catkin is designed to chain workspaces, so the version of DART in the inner-most workspace wins. E.g. if DART both is in your workspace and installed, it will use the version in your workspace. If it is only installed locally, it will use that version. I believe this is internally implemented by munging a bunch of environment variables during the build, e.g. |
I think I get it. I was unclear why package.xml needs to be installed in share/dart. It seems package.xml in the root of DART is used when Catkin build it in the workspace, and package.xml in share/dart is used when Catkin use installed one. Anyways, package.xml in the root doesn't have chance to be configured before Catkin process. We should make sure the meta data in package.xml is updated before every release. @mkoval Could you make simple note about this in package.xml? Thanks! |
We may actually want the reminder to be in the CMakeLists.txt where the version variable is, so that we see the reminder whenever we go to update the canonical version number. |
It sounds better! |
Maybe add |
I have been maintaining several package.xml files to build gazebo, including one for dart-core. I think there's not an easy way to specify a package.xml for dart-core, probably not a big deal. Or it would argue for splitting dart-core into a separate cmake package, but that's a different discussion (and I'm not proposing it here). This comment is mainly an FYI, since the file looks pretty good. |
@scpeters Thanks! I added the I also don't think it's possible to make a separate That being said, I don't think this is a good idea. It makes the DART build system more complicated just to work around the limitation that Catkin doesn't support optional dependencies. |
It looks like the Travis build is failing because it's failing to download Nlopt:
|
Yeah, it seems MIT server is down for now. I'm testing if alternative server, github, works on Travis-CI. |
The MIT server is back. Building nlopt from the github generated tarball is not recommended so we will stay with the tarball in the MIT server. |
Added a package.xml file for REP-136 support
This pull request: (1) adds a
package.xml
file for DART and (2) installs it toshare/dart
. These are the minimal requirements, from REP-136 to build a third-party package as part of a Catkin workspace.I am generally not a fan of putting these type of files in non-ROS packages, so I make this pull request with some trepidation. However, this is very useful if you are developing DART in parallel with ROS packages (e.g. the work I mentioned on
DartLoader
) because: (1) it allows you to easily link against DART without installing it into a system directory, (2) automatically re-builds DART when it is changed, and (3) insures that the DART build is done before building ROS packages that depend on it.This doesn't add any dependencies and these files have no effect if you are not building DART in a Catkin workspace. The only visible change is that you will have an extra XML file in
/share/dart
.