Ralph Schaffner
neotinker3
Involved Projects and Packages
This project has been setup to build ROS (Robot Operating System) for SLE & Opensuse.
http://www.ros.org/
The builds supplied by ROS are built on Ubuntu. So there may be some coding changes needed to make this work on Suse.
I've already built the "core" components which are sufficient for building ROS packages using the source install method. See the "ROS Infrastructure" project
https://build.opensuse.org/project/show/home:neotinker3:ROS:ros-infrastructure
These are packages required by ROS but which aren't a part of ROS and not part of the operating systems for which we are building.
Staging Location for new packages to be added to External Dependencies.
New packages should start out in "Testing" and only move here when they build successfully and we are fairly certain that we are going to add them to "External Dependencies". Once a package has been allowed to "burn-in" for a while and there are no issues, then we can move it to "External Dependencies"
This is where we build packages before we merge them to ROS:External_Dependencies
Build new packages here. Move them to Staging when they can build successfully and we are certain that we want to include them in "External Dependencies".
https://build.opensuse.org/project/show/home:neotinker3:ROS:melodic:opensuse:15.1
https://build.opensuse.org/project/show/home:neotinker3:ROS:melodic:opensuse:15.2
https://build.opensuse.org/project/show/home:neotinker3:ROS:melodic:opensuse:15.3
I make no guarantees that these packages work.
We are currently building the following metapackages.
desktop
perception
ros_base
ros_core
robot
simulators
viz
https://github.com/ros/metapackages
We are currently building the following metapackages.
desktop
perception
ros_base
ros_core
robot
simulators
viz
https://github.com/ros/metapackages
We are currently building the following metapackages.
desktop_full
desktop
perception
ros_base
ros_core
robot
simulators
viz
https://github.com/ros/metapackages
We are currently building the following metapackages.
desktop_full
desktop
perception
ros_base
ros_core
robot
simulators
viz
https://github.com/ros/metapackages
This is the testing of the automated spec file generation and building of ROS packages.
This uses the rossuse script to pull information from ROS about packages. It then generates an rpm spec file and a '_service' file from templates and pushes them into OBS where the package then gets built.
This project is intended to test the build process. Its packages are not intended to be used for anything.
I periodically destroy this project and recreate it. The release numbers can not be trusted to increment sanely.
This is a build of the "base" ROS packages needed to perform the "source" install of ROS.
Currently, we *CAN* build all the metapackage variants for Opensuse 15.1, 15.2, and 15.3 (x86_64). We can also build all the metapackages for SLES 15 SP3. We are missing some graphics libraries on other architectures, at the moment.
https://github.com/ros/metapackages.
I have created another project called "ROS:External_Dependencies" where I am putting ROS dependencies which are not available with the OS and not a part of ROS.
https://build.opensuse.org/project/show/home:neotinker3:ROS:External_Dependencies
The target for this project is currently ROS Melodic. I will build for newer ROS Distros once I get clean builds of Melodic.
Currently, I am maintaining my own rosdistro with custom modifications for Opensuse Leap and SLES at https://github.com/neotinker/rosdistro. You must use the "build_test" branch to get functional dependencies. I'm in the process of pushing these upstream to ros/rosdistro.
The goal is to be able to follow the Installing from Source Wiki ( http://wiki.ros.org/melodic/Installation/Source ) but there are currently a few differences.
For section 1.1, "Installing bootstrap dependencies"
1) Install the "ros-infrastructure" and "External Dependiencies" repos for your OS. You may need extra extensions/modules installed for SLES. The example below is for openSUSE 15.1
$ sudo zypper --gpg-auto-import-keys ar -f -n "ROS Infrastructure (openSUSE_Leap_15.1)" http://download.opensuse.org/repositories/home:/neotinker3:/ROS:/ros-infrastructure/openSUSE_Leap_15.1/ ROS-Infrastructure
$ sudo zypper --gpg-auto-import-keys ar -f -n "ROS External Dependencies (openSUSE_Leap_15.1)" https://download.opensuse.org/repositories/home:/neotinker3:/ROS:/External_Dependencies/openSUSE_Leap_15.1/ ROS-External-Dependencies
$ sudo zypper refresh
2) Install "base" packages
$ sudo zypper in gcc-c++ python2-rosdep python2-rosinstall_generator python2-wstool python2-rosinstall libboost_system1_66_0-devel libboost_chrono1_66_0-devel libboost_date_time1_66_0-devel libboost_serialization1_66_0-devel libboost_thread1_66_0-devel libboost_filesystem1_66_0-devel libboost_program_options1_66_0-devel liblz4-devel libboost_signals1_66_0-devel libboost_regex1_66_0-devel python3-vcstool ros_external_cmake_modules
If you have X11 installed, you should already have these but if you encounter an error in compiling apps (ex. pcl_ros or gazebo_ros), then make sure these rpms are installed.
$ sudo zypper in glew-devel sqlite3-devel proj-devel libxml2-devel python3-devel libXt-devel jsoncpp-devel libjpeg8-devel
To use my forked rosdistro, install the ros_external_extras_suse rpm. It contains a modified "20-default.list" file that will need to be copied to /etc/ros/rosdep/sources.list.d/
$ sudo zypper in ros_external_extras_suse
You will most likely encounter a conflict between Poco and vtk due to the use of unixODBC and iodbc. I've included a version of Poco in the "External Dependency" repo that is build against iodbc. You may need to force the install of libiodbc-devel (from the OS) and poco-devel (from "External Dependencies). This will most likely pull in a few hundred packages.
For section 1.2, "Initializing rosdep"
1) Initialize rosdep sources
$ export ROSDISTRO_INDEX_URL=https://raw.githubusercontent.com/neotinker/rosdistro/build_test/index-v4.yaml
$ sudo rosdep init
2) Update the rosdep sources to point to my git repo
If you installed the ros_external_extras_suse rpm, then copy the provided "20-default.list.build_test" to /etc/ros/rosdep/sources.list.d/20-default.list
$ sudo cp /usr/share/ros/20-default.list.build_test /etc/ros/rosdep/sources.list.d/20-default.list
3) Update sources
$ rosdep update
Follow sections 2 through 2.1.1 as specified in the source install wiki. Before you run the "vcs import src" command, you need to make sure the "src" directory exists. If any thing else doesn't work, let me know.
For section 2.1.2, "Building the catkin Workspace"
1) Force catkin_make_isolated to use python 2.7
I suppose it should be possible to force python 3.6 but I haven't tested it yet. If you don't force the use of one python interpreter, the packages with use a mix of both and some will fail due to missing dependencies that aren't getting built.
$ ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python
I'll try to keep this description updated with what is working. And this description should shrink as I resolve pending issues.
See also
https://github.com/ros-infrastructure
https://github.com/ros/rosdistro
This is where I build newer versions before moving them to ROS Infrastructure
This is the home for all SLES/openSUSE ROS1 distros builds (Melodic, Noetic, etc) and dependencies.
MELODIC (Uses Python2 so only builds for 15.3)
SLES 15 SP3 / openSUSE 15.3
https://build.opensuse.org/project/show/home:neotinker3:ROS:ROS1:melodic:15.3
NEOTIC (Uses Python3)
SLES 15 SP3 / openSUSE 15.3
https://build.opensuse.org/project/show/home:neotinker3:ROS:ROS1:noetic:15.3
SLES 15 SP4 / openSUSE 15.4
https://build.opensuse.org/project/show/home:neotinker3:ROS:ROS1:noetic:15.4
Look under the "Subprojects" tab for a complete list of projects.
Note:
We only build a subset of packages as defined by the ROS metapackages and their dependencies (See https://github.com/ros/metapackages)
This is the "Stable" repository for the 15.3 builds of ROS Melodic.
If you want to try out running ROS Melodic on openSUSE 15.3 or SLES 15 SP3, then you have come to the right place.
This is the Staging repository for the 15.3 builds of ROS Melodic.
If everything passes our (limited) functional tests, we push these packages to the "Stable" repository.
https://build.opensuse.org/project/show/home:neotinker3:ROS:ROS1:melodic:15.3
This is the Build Testing repository for the 15.3 builds of ROS Melodic.
If everything builds correctly, we push these packages to the Staging repository.
https://build.opensuse.org/project/show/home:neotinker3:ROS:ROS1:melodic:15.3:staging
For "Stable" builds
https://build.opensuse.org/project/show/home:neotinker3:ROS:ROS1:melodic:15.3