ros-drivers / pointgrey_camera_driver

ROS driver for Pt. Grey cameras, based on the official FlyCapture2 SDK.
128 stars 180 forks source link

distribution of flycapture SDK #178

Closed wjwwood closed 5 years ago

wjwwood commented 5 years ago

Currently, the pointgrey_camera_driver package will download the flycapture SDK if it is not found:

https://github.com/ros-drivers/pointgrey_camera_driver/blob/6c3e4cb82f67e00980fce33bdc4d4fb251a4a06b/pointgrey_camera_driver/CMakeLists.txt#L18-L22

This should be ok, so long as you're not circumventing some registration or EULA acceptance mechanism on behalf of the user. Do any of the maintainers know about this?

However, their SDK license agreement (https://www.ptgrey.com/support/downloads/10419) says:

For clarity, headers (.h), source (.c, .cpp,.cs and .vb) and statically linked libraries (.lib and .a) cannot be redistributed;

Right now, when building the .deb for this package, it downloads the SDK, builds against it, and installs it. The result is uploaded to our http://repositories.ros.org/ where it is then re-distributed. See the contents of the .deb in Kinetic:

% dpkg -L ros-kinetic-pointgrey-camera-driver | grep fly
/opt/ros/kinetic/lib/libflycapture.so.2

Do you guys have special permission to do this? Based on the comments in the CMakeLists.txt, I'd say you probably do not, but maybe I missed some other way it works.

If not, I think we should consider removing this package from the ROS build farm, unless we either find a new way to distribute the binary so that the SDK pieces are not part of it (the user would need to install them some how after installing our deb) or we get special permission from Pointgrey to do this.

@mikepurvis CC'ing you directly since you're listed as the maintainer of the driver package.

wjwwood commented 5 years ago

Reading this again, it's possible that shared libraries are allowed to be redistributed? The line I quoted explicitly does not mention dynamically linked libraries, but I'm not sure if that's intentional or an oversight on their side.

wjwwood commented 5 years ago

Actually, reading just a little bit more I can answer my own question 😛. It's mentioned in the CMakeLists.txt here:

https://github.com/ros-drivers/pointgrey_camera_driver/blob/6c3e4cb82f67e00980fce33bdc4d4fb251a4a06b/pointgrey_camera_driver/CMakeLists.txt#L98-L100

And the previous line in the license agreement (again here: https://www.ptgrey.com/support/downloads/10419) allows for drivers, shared libraries, executables, and documentation to be redistributed in support of derivative products:

(b) may only redistribute drivers (.inf and .sys), dynamically linked libraries (.dlls and .so), executables (.exe) and documentation (.doc, .txt, .pdf and .chm) and only to the extent necessary to support your Derivative Products.

So we're ok. Sorry for the noise 😄. Maybe this will help others wondering about the same thing.