ROS packages for Slackware 14.2 and serious p— in the a…bdomen-related orifices

Since as of today nobody has packaged the ROS into Slackware packages, time to do it! And invent new curse-words that shall be timeless as the invention of flugelhorn itself.

First a disclaimer: dear ROS developers, I would rather jet-ski across the Atlantic ocean on a skateboard powered by a couple of fluorescent hamsters than openly use rosinstall_generator/wstool/rosdep/catkin_make/catkin_make_install combo in the package script and rely only on its magic. I’m dead serious.

So, I retraced what is happening when you use rosinstall_generator and wstool, and the conclusion is: I can do it before performing SlackBuild script. First of all, all github releases have a similar pattern for downloads:

 https://github.com/ros/gencpp/archive/0.5.5.tar.gz 

Now, if you try downloading it with Firefox – you will get gencpp-0.5.5.tar.gz and it is completely normal. But with wget – 0.5.5.tar.gz, but the file inside is the same (the tar-gzipped directory is still gencpp-0.5.5), and in order for wget to download a file with NAME-VERSION.tar.gz you can actually change the link to a patter:

 
https://github.com/REPO/NAME/archive/VERSION/NAME-VERSION.tar.gz
https://github.com/ros/gencpp/archive/0.5.5/gencpp-0.5.5.tar.gz

So I compile a list of all packages that rosinstall_generator fetches in order to create ros_comm:

https://github.com/ros/catkin/archive/0.7.6/catkin-0.7.6.tar.gz
https://github.com/ros/cmake_modules/archive/0.4.1/cmake_modules-0.4.1.tar.gz
https://github.com/ros/gencpp/archive/0.5.5/gencpp-0.5.5.tar.gz
https://github.com/jsk-ros-pkg/geneus/archive/2.2.6/geneus-2.2.6.tar.gz
https://github.com/ros/genlisp/archive/0.4.16/genlisp-0.4.16.tar.gz
https://github.com/ros/genmsg/archive/0.5.8/genmsg-0.5.8.tar.gz
https://github.com/RethinkRobotics-opensource/gennodejs/archive/2.0.1/gennodejs-2.0.1.tar.gz
https://github.com/ros/genpy/archive/0.6.5/genpy-0.6.5.tar.gz
https://github.com/ros/message_generation/archive/0.4.0/message_generation-0.4.0.tar.gz
https://github.com/ros/message_runtime/archive/0.4.12/message_runtime-0.4.12.tar.gz
https://github.com/ros/ros/archive/1.14.0/ros-1.14.0.tar.gz
https://github.com/ros/ros_comm/archive/1.13.0/ros_comm-1.13.0.tar.gz
https://github.com/ros/ros_comm_msgs/archive/1.11.2/ros_comm_msgs-1.11.2.tar.gz
https://github.com/ros/roscpp_core/archive/0.6.3/roscpp_core-0.6.3.tar.gz
https://github.com/ros/roslisp/archive/1.9.20/roslisp-1.9.20.tar.gz
https://github.com/ros/rospack/archive/2.4.1/rospack-2.4.1.tar.gz
https://github.com/ros/std_msgs/archive/0.5.11/std_msgs-0.5.11.tar.gz

if you are trying to follow what I have done – save it as LINKS and do a simple

 wget `cat LINKS` 

but better use the sbopkg or sbotools and the scripts from SlackBuilds.org (hopefully I have already finished uploading them and they are up)

Starting with catkin – and it is a first package that will require some patches. So, how to create a proper patch for the source code? Unpack catkin two times:

tar -xzf catkin-0.7.6.tar.gz
cp -R catkin-0.7.6 catkin-0.7.6-patched

now modify the catkin-0.7.6-patched directory as needed and create a diff file that will be later on used to patch the original directory:

diff -ru catkin-0.7.6 catkin-0.7.6-patched > catkin.patch

and … that’s pretty much it.

So what changes did I do to a poor catkin? Well, first of all – lib directory on pure 64bit system is a goddammit lib64! Learn a bloody difference!

(STILL WRITING, BE BACK SOON)

Leave a Reply