21 October, 2010

Notes on OBS

Hi all!

Having an awesome time here at the conference - esp last night with the Movie Night, the Movies were cool. As was the beer during and afterwards...

During the day I followed talk by Lubos Lunak about the Build Service as I wanted to learn more about it. As I made notes I decided to share them :D

In the introduction Lubos shared that apparently you have to package each application by hand - however, automatic downloading of random tarballs from the internet and turning them into packages for all linux distributions on distrowatch.org is planned for OBS 3.0!

For developers, OBS offers a platform to test software for a variety of library and distribution vresions and on 32 and 64 bit platforms. Of course it's possible to run your own OBS and have even more platforms there like ARM, MIPS and POWER. Furthermore, OBS can help you easily create packages for your testers - it supports building a package directly from GIT, SVN and CVS, creating an updated packages with one click in the webinterface or one command from the Build Service commandline client (OSC).

OBS is build with cooperation in mind. Packagers can send merge requests when they did a bugfix for a package maintained by somone else, it's possible to assing commit rights etc etc.

But you need to do a lot of manual work for packaging; writing a 'spec' file with a huge number of boring details like build deps, a file list, etc etc etc. Lubos thought it should be possible to automate this process - so he wrote a proof-of-concept tool for this, initially called "KDE OBS Generator". This tool has now moved from a proof-of-concept changed into a reall app, capable of handling a pretty wide variety of packages. He demo-ed how it works - which is pretty easy. Put a tar-ball in a folder and run the tool. The tool then automatically detects most properties of the package and generates the needed build files for openSUSE, Fedora, Mandriva, Ubuntu and Debian. It will also tell you what information it could not create by itself, like a name of the maintainer and more.

There is work needed on the mapping of dependencies on libraries on different distributions - like KDElibs4 is called libkde4-devel on one distribution, kde4lib-devel on another etcetera. During the talk a discussion started on ways of either auto-generating these mappings or even solving the problem on another level - something which will be further discussed during the conference. At some point, it is planned to integrate the auto-generation tool into the Build Service which will make it possible to just point the buildservice to a tarball on the web and let it generate the files right there lowering the barrier to packaging software even more.

During the questions someone asked if OBS provides repositories; sure it does. So, does it build all of GNOME for all distributions? Well, that would be a bit ambitious - the differences for something as core as all the GNOME libs between distributions is a bit too big to allow building all of KDE for all linux distributions - for now. But there is nothing wrong with ambition...

Which is a good note to end this blog with ;-)

Love, Jos