Publishing the Bundle
In order to publish our bundle, sharing it with e.g. our coworkers, we actually have to do a few things:
-
Create a
manifest.xml
with the following contents:<package> <description brief="Syskit Tutorial Bundle from 'Rock and Syskit'"> </description> <depend package="bundles/common_models" /> <depend package="simulation/rock_gazebo" /> <depend package="control/orogen/cart_ctrl_wdls" /> <depend package="control/orogen/robot_frames" /> </package>
-
You will obviously need to put the code somewhere. Let's assume it will end up on GitHub. The repository naming convention is to separate the folder names with dashes, so in this case, the repo would be named
bundles-syskit_basics
. Let's use therock-core
organization as an example.Turn first the
bundles/syskit_basics
folder into agit
repository, and add the files we have created with:git init git add . git commit -m "Initial commit - Finished the Basics tutorial"
Then create the repository and push to it (replacing the URL with your repository URL):
git push git@github.com:rock-core/bundles-syskit_basics master
-
Create your own Autoproj project, on top of which you will be able to expand your developments. This is described in the Starting A New Project section in the Workspace and Packages chapter. Read this chapter, and apply it here.
Make sure you added the newly created package set to both the
package_sets
and thelayout
, as the "Starting a new project' section instructed you to. -
Finally, add the bundle to your newly create package set. Edit the
packages.autobuild
file and addbundle_package "bundles/syskit_basics"
And add a corresponding entry in the package set's
source.yml
, which would look like- bundles/syskit_basics: github: rock-core/bundles-syskit_basics
Check that things resolve properly with
autoproj show syskit_basics
and do aaup -n syskit_basics
to verify that the repository is properly setup. -
Because the bundle is part of the package set, and because the bundle depends on the
control/orogen/cart_ctrl_wdls
andcontrol/orogen/robot_frames
packages, they should not be listed anymore within the workspace manifest. Removes them fromautoproj/manifest
.The general best practice is to basically ensure that your projects packages depend on what they need, and then either depend on the whole package set (common on developer machines), or on specific packages. The latter is usually the bundle, which happens on the robot machines themselves.
-
Publish the changes from your package set and main build configuration.
Let's finally go to the section's recap