ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Creating a Node which uses a proprietary library using ROS Build Farm

asked 2016-10-21 16:26:12 -0500

mdhorn gravatar image


I'm planning to create a ROS node that requires a proprietary library. The library, and associated header file, is only available as either a ZIP archive via HTTP or as Debian binary packages from a PPA, not from the Ubuntu repositories. The company distributing the library currently only has x86_64 packages for Ubuntu 14.04, Ubuntu 16.04 and Debian Jessie.

My goal would be to release this ROS node via the ROS Build Farm so that the package is automatically available via the ROS repositories, but I'm beginning to think that this might not be possible.

Reading through , I found the ROS Build Farm doesn't allow the inclusion of arbitrary PPAs or Debian repositories, so I can't use their PPA during the build process. I completely understand and agree with this security concern.

The license in the header file included with the library states that the software can not be redistributed, so I can't just include the library and header file in my own Git repository along with my source code.

Even if I used CMake rules to pull the zip file before building the workspace, that would only enable the build on the ROS Build Farm server; I still can't include that binary library in the Debian package or I would be in violation of the redistribution of the library. Leaving the library out of the package is a no-go because I can't create a ROS Dependency to resolve and install the library from either Ubuntu or ROS repositories.


Are there any existing ROS packages being built in the ROS Build Farm that use a proprietary library?

Is there a way forward using the ROS Build Farm? Or will I be stuck creating my own PPA for distributing the package and then require my users to enable both the proprietary PPA and my PPA to install and use the package?

Any advice appreciated.

edit retag flag offensive close merge delete


Not a complete answer, but the pointgrey_camera_driver seems to be doing something like that, and it is released through the buildfarm. Not sure doing it like that pkg does it still recommended though.

gvdhoorn gravatar image gvdhoorn  ( 2016-10-24 03:03:19 -0500 )edit

See these lines in pointgrey_camera_driver/CMakeLists.txt for how they handle it.

gvdhoorn gravatar image gvdhoorn  ( 2016-10-24 03:04:14 -0500 )edit

It would appear though that the Pointgrey SDK does allow distributing some of the libraries, which might make that approach unusable for you: here.

gvdhoorn gravatar image gvdhoorn  ( 2016-10-24 03:05:30 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2016-10-24 13:24:14 -0500

tfoote gravatar image

There's no examples of this sort of thing at the moment. For this sort of thing you'd basically need to include an "installer" that the user would then run.

In general we discourage this sort of interaction as it's a security risk and makes the user process non-homogeneous and requires things like internet connectivity at different times. The installers should validate hashes and signatures of things pulled from 3rd parties.

And for good measure the node should be able to detect that the installer has not bee run and suggest running it while failiing gracefully. Examples of this are things like flash plugin installers.

edit flag offensive delete link more

Question Tools



Asked: 2016-10-21 16:26:12 -0500

Seen: 215 times

Last updated: Oct 24 '16