Home Home > Build-service
Sign up | Login

Deprecation notice: openSUSE Lizards user blog platform is deprecated, and will remain read only for the time being. Learn more...

Archive for the ‘Build Service’ Category

Fotostream from openSUSE Conference 2010

October 21st, 2010 by

Yet another foto stream from the openSUSE conference. You see the desktop leads from KDE and Gnome (Cornelius Schumacher and Vincent Untz) giving a talk about the past and future of the free desktop, Stephan Kulow about the future of the distribution, Bernhard Wiedemann about QA testing and so on.

Most important may be the presentation of the openSUSE board (mainly by Pascal Bleser) how they plan to found an independent foundation for openSUSE as non-profit organization. An important rule of that foundation is that it is independent of any company (no majority of Novell here) but can handle sponsoring, partnering and trademark questions.

We had also very filled rooms during the OBS talks, but I was unable to take pictures at that point of time unfortunately 😉

Documentation

October 13th, 2010 by

Hi folks,

this post is just request for all obs-packagers. Please, don’t forget write some documentation about your projects (which you maintain or develop). I mean, documentation for developers. This make more easy to understand logic of program, connection between some modules inside or interfaces between widget/applet and “system/hardware part”. For sure, comments in source code (or in changelog) help, but some times they give not so much clarity.

This is not so complicated to write one-two pages about project, which you hack. This also can save time of new developers. They will not ask you about architecture of project, and that will save your time too 😉

I don’t know how will be better to do it: use wiki (create a new page) or add just text-file in source project. Anyway it’s not so important where will be this documentation, main things that this documentation will be exist 🙂

Checking EPUBs

October 3rd, 2010 by

EPUBs are getting more and more important thesedays. If you believe the essays from well-informed magazines, they will develop into a standard for book and text consumption as MP3 did for audio.

(more…)

From Source Code to Packages for Various Distributions

September 24th, 2010 by

I presented on Thursday at LinuxKongress 2010 on “From Source Code to Packages for Various Distributions”.

When I arrived in the morning for Jon Corbet’s excellent keynote, a quick check showed that the openSUSE Build Service (OBS) which I wanted to demo as part of my presentation was down. I was glad about the advise of my colleague Michael Löffler that told me to have some backup in case I won’t have internet in the room.  So, I had prepared a screencast (video) and soon I was calm and could concentrate on Jon instead of worrying about OBS.

My talk to a small audience (Linux Kongress is small but high profile event) of around 15 people went well. I started with explaining that a developer writes code but users run binaries, so the question is how to get a binary to the user – especially if you want to support multiple distributions, versions of distributions and cpu architectures. OBS is the rescue. After a live demo (yeah, OBS was working again in time!) with some good questions, I gave some more background about OBS and how it helps upstream developers.

The only question where I struggled with was whether it is possible to checkout the complete package from e.g. Fedora’s package repository (so patches, sources and spec file) and build thus automatically an rpm using OBS. With the new source services for OBS 2.1 this should be possible and I need to ask Adrian what exactly needs to be done for this.

I’ll uploaded my screencast later to YouTube and also uploaded my slides (now with the openSUSE theming) for sharing to the wiki, – and referenced everything from the presentations page.

During my demo I explained briefly how a package can be build as deb or rpm (I used the package “osc” from the project “openSUSE:Tools”), how to handle different package names, projects and packages, submit requests, how multiple users can work on a package and how to give users access, that building happens in the background driven by a scheduler etc.

Build Service Cheat Sheet

September 13th, 2010 by

Last week I had some discussions with colleagues about the build service and Berthold and Darix suggested to create some kind of reference card for the build service.

So, I’ve sat down, learned how others do sheat cheets, e.g. via XML or in OpenOffice.org and then decided to go the easy route with columns using an OpenOffice.org text document.

The first version is now available for download.  It describes building packages for Factory, reviewing of package submissions, maintenance, package editing, miscellaneous commands and osc installation. The file is supposed to be printed on two sides of a paper – and then cut the paper to A5.

Please send me corrections, the odt is available as well from me (will upload it later to the wiki).

You can get the current version here.

Thanks to reviews and suggestions by Adrian, Berthold, Darix, Jan and Thorsten.

OBS 2.1: Status of PowerPC and MIPS support with QEMU

August 22nd, 2010 by

Now that ARM support in the OBS is getting more mature, here a report on the Status of PowerPC and MIPS builds using QEMU. They are implemented similiar to the ARM solution, and use QEMU Usermode (to allow speedup with x86 based cross compilers like we do for ARM).

First of all, PowerPC native builds do work since a long time (3+ years). At the beginning, only XEN virtualization was available for OBS, and XEN did not work on PowerPC hardware. Recently, KVM autosetup was added to OBS with release 1.8. KVM also works on PowerPC machines, so there are now fully functional PowerPC native builds with virtual machine support available.

QEMU Usermode builds for PowerPC are working on 32bit targets. They had been tested on all linux distribution targets using 32bit PowerPC mode (all Debian or Ubuntu PowerPC have working builds). Due to the lack of some functions in QEMU, these builds do not work with QEMU inside a KVM virtual machine (the build results cannot be extracted due to a missing ioctl emulation on PowerPC). Since currently Fedora as well as openSUSE have dropped PowerPC support in their distros, this leaves only 32bit targets on Debian based packaging to be supported. Anyway, should someone need 64bit support, he can use a native machine to work with that.

QEMU Usermode builds for MIPS had also made the first beep inside OBS. They support currently Debian 4.0 mips and mipsel 32bit builds, and Debian 5.0 mips builds (mipsel currently fails on QEMU). It seems there is no RPM based distro available anywhere, so I had no chance to test this case. 64bit MIPS Usermode seems to be broken in QEMU, so it would need fixing. Also, QEMU Usermode hangs for MIPS builds when running in a KVM virtual machine.

A QEMU used for both the above cases is available now for quite a while in the OBS project openSUSE:Tools:MeeGo. The qemu package there is named qemu-deploy. The other small changes in osc, build and obs-server code needed are already in git master and will roll out with OBS 2.1.

In case you would like to help me enhance the support for PowerPC or MIPS and close missing parts (get MIPSEL working, fix KVM builds), feel free to contact me.

OBS 2.1: ACL Feature and Status

August 15th, 2010 by

One and a half year is now gone since I posted about my work for ARM support in the OBS and the work for a port of openSUSE to ARM. Lots of things had happened in the meantime that are related, from my limited view most notably Nokia and Intel joining Moblin and Maemo to MeeGo (MeeGo is currently working on a number of Atom and ARM based devices), chosing to use OBS as build system and last but not least myself joining The Linuxfoundation (you will be not surprised to hear that I work at LF on OBS). In the meantime there had also been a major new OBS release 1.8/2.0 with a bunch of new features.

Interesting is the fact that we adapted the cross build system for OBS to MeeGo, first developed for use in Maemo and openSUSE @ ARM. An improved version for the standard MeeGo releases, and for the MeeGo weekly snapshots is used in the MeeGo OBS System to build all ARM releases of MeeGo (the cross toolchain will later get part of the MeeGo SDK @ ARM), thanks to Jan-Simon Möller (In the openSUSE ML, the issue of reactivating openSUSE:Factory ARM builds were brought up. So it might be a good variant to backport Jan-Simons new solution back into openSUSE @ ARM for that purpose). All the MeeGo related OBS installations will move sooner or later to OBS 2.1.

But now to the most recent work, Access Control support. A preview was shipped with OBS 1.8. Now an own OBS version, 2.1, will be dedicated to the introduction of this single new feature into the OBS mainline: Access Control (or abbrevated ACL for Access Control Lists). ACL means that there is control by the user on a per project or per package basis to protect information, source and binaries from the read access of other users in an OBS system and to hide projects or packages.

What is the intended audience of ACL? ACL is intended for installations of OBS that require protection of projects or packages during work. This can be but is not limited to commercial installations of OBS, or semi public installations of OBS.

How does ACL work? ACL sits on top of two features introduced with OBS 2.0: Role and Permission Management as well as freely definable user groups. ACL uses 4 specifically defined permissions (‘source_access’ for read access to sources, ‘private_view’ for viewing package and project information, ‘download_binaries’ for read access to binaries and ‘access’ permission to protect and hide everything and all from read access and viewing) on a user or group in the Role and Permission management. Also, the preexisting roles “maintainer”, “reader” and “downloader” had been modified with specific predifined permissions (which can at any time changed with the role and permission editor dynamically). And last but not least 4 new flags (namely ‘sourceaccess’ to signal a project/package has read protected source code, ‘binarydownload’ to signal it has read protected packages, ‘privacy’ to signal information/logfiles or status cannot be read and ‘access’ to hide and protect a project or package completely in all possible OBS API calls) had been added to the project and package descriptions to signal that some information is only readable by specific users or groups, or that information is hidden.

How do I use ACL? There are 4 steps to use ACL (a part of them a optional and can only be performed by the Administator of an OBS instance). Step one is to assign the listed permissions to a role, user or group (this step can be done only by the admin, and is not needed for the predefined roles “maintainer”, “reader” and “downloader”). Step two is to add a group for special users to projects which are intended to be run with ACL (this operations can only be performed by the admin). Step three is to protect a project with appropriate protection flags at project creation by adding them to the project meta. Step four is to add other users or groups with one of the new predefined roles that has ACL permissions added to the project meta.

What information can be protected by ACL? The protected information is grouped into 4 categories. Category 1 (flag ‘sourceaccess’) is source code. Category 2 (flag ‘binarydownload’) is binary packages or logfiles or builds. Category 3 (flag ‘privacy’) is project or package information like build status. Category 4 (flag ‘access’) is all viewable or accessable information to any project or package (full blocking of all access and information).

Example of a project configuration using ACL:

<user userid="MartinMohring" role="maintainer" />
<!-- grant user full write and read access -->

<group groupid="MeeGo-Reviewer" role="maintainer" />
<!-- grant group full write and read access -->

<group groupid="MeeGo-Developers" role="reader" />
<!-- grant group full source read access -->

<group groupid="MeeGo-BetaTesters" role="downloader" />
<!-- grant group access to packages/images -->

  <sourceaccess>
    <disable/>
  </sourceaccess>
  <!-- disable read access - unless granted explictely.
          This flag will not accept arch or repository arguments. -->

  <binarydownload>
    <disable/>
  </binarydownload>
  <!-- disable access - unless granted explictely -
          to packages/image and logfiles -->

  <access>
    <disable/>
  </access>
  <!-- disable access - unless granted explictely-,
          project will not visible or found via search,
          nor will any source or binary or logfile be accessable.
          This flag will not accept arch or repository arguments. -->

  <privacy>
    <enable/>
  </privacy>
  <!-- project will not visible.
          This flag will not accept arch or repository arguments. -->

What is the current status of the ACL implementation? The current status is that the complete API of the OBS git master had been instrumented with ACL code, critical portions of the API controllers had been code inspected and a big portion of these API calls now have a testcase in the OBS testsuite. Work is ongoing to make ACL as secure as possible. A code drop of current git master is under test in some bigger OBS systems, most notably the openSUSE Buildsystem. You can find snapshots of this codebase as usual in the OBS project openSUSE:Tools:Unstable. Adrian Schröter updates these “Alpha Snapshots” relatively often, on a 1-2 weekly basis, and runs the testsuite on git master daily. Thanks to Jan-Simon Möller for putting in many of the testcases into the testsuite for the ACL checks. On OBS Testing in general, read also Development and Test.

What is next? Code is tested and debugged against granting unwanted access due to some concepts inside OBS that are “working against ACL”, like project or package links, aggregates or kiwi imaging. We will inform you interested user of course about beta releases and an official 2.1 release.

Stay tuned.

Software search trick

August 4th, 2010 by

Do you use software.opensuse.org and get an error message “search limit reached” when searching for a generic term like “perl” or “kde”? Here is the solution:
The software search now also supports matching for exact package names, just put your search string into double quotes! See for example perl or kde4

OBS Development Team Member Job Position

July 14th, 2010 by

SUSE GmbH has currently a job position open for an OBS Developer. Find details on the job position page at Novell.

OBS is used in the openSUSE project, but also internally at Novell and at plenty other places and companies.

The downside will be of course that you will have to work together with people like me 😉

Workshop at Party Quijote

July 13th, 2010 by

Last weekend I went to Party Quijote, which is probably the biggest LAN party of Castile (Spain). It was organized by the regional government (Junta de Comunidades de Castilla-La Mancha), local universities (Universidad de Castilla-La Mancha, Universidad de Alcalá de Henares) and other institutions (Centro de excelencia de software libre de Castilla-La Mancha, Fundación Insula Barataria, Ayuntamiento de Azuqueca de Henares). Some of its sponsors were Cisco, Telefónica, Iberdrola and Caja Castilla-La Mancha. This year Party Quijote took place in the city of Azuqueca de Henares, which is very close to Guadalajara and Madrid. For more information, take a look at Party Quijote’s website

Anyways, I thought it was a great opportunity to promote openSUSE and KDE  in my region, so I organized a workshop: Crea tu propio Live CD (build your own Live CD). Yes, it was a LAN party but there were also Linux-related talks and workshops.

(more…)