openSUSE Lizards

Authors
Adrian Schröter (5)
Agustin Chavarria (1)
Akhil Laddha
Alexander Naumov
Alexander Orlovskyy (3)
Alexey Eromenko
Alin M Elena (4)
Andrea Florio (14)
Andreas Jaeger (44)
Andreas Stieger (1)
Andreas van dem Helge
Andrej Semen
Andrew Wafaa (25)
Arvin Schnell (6)
Beineri2
Bharath Acharya
Bonnie Kurniawan
Brian G. Merrell
Carl Fletcher
Casual Programmer
Christoph Thiel
Christopher Hobbs (15)
Ciaran Farrell (2)
Coly Li
Cristian Rodríguez
Daniel Bornkessel
David C. Rankin
Dean Hilkewich
Dinar Valeev (5)
Dirk Müller (1)
Dmitry Serpokryl (7)
Duncan Mac-Vicar
Enrique Herrera Noya
Eugene Pivnev
FabioMux (1)
Federico Lucifredi
Frank Lee
Gabriele Mohr
Gerrit Beine
Helman Rene Taleno Martinez
Helmut Schaa
Henne (6)
Herbert Graeber
Holgi (2)
Hubert Mantel (1)
Ioan Vancea
J. Daniel Schmidt (1)
Jaime Andrés Vélez Osorio
James Tremblay (7)
Jan Blunck (4)
Jan Madsen (1)
Jan Nieuwenhuizen
Jan-Christoph Bornschlegel (3)
Jan-Simon Möller (19)
Javier Llorente (2)
Jigish Gohil (22)
Jiri Srain (1)
Jiří Suchomel (1)
jloeser (1)
Johan Kotze (5)
John Terpstra
Joop Boonen
Josef Reidinger (7)
Juergen Weigert (1)
Julio Vannini (7)
Justin Haygood
Kálmán Kéménczy
Kevin Yeaux (10)
Klaas Freitag (20)
Klara Cihlarova
Klaus Kämpf
Klaus Singvogel
kl_eisbaer (10)
Lars Marowsky-Bree
Li Bin
Ludwig Nussel (6)
M. Edwin Zakaria
Manuel Trujillo
Marcus Hüwe (8)
Marcus Meissner (1)
Marcus Moeller (1)
Marcus Schaefer (3)
Martin Lasarsch (8)
Martin Mohring (8)
Martin Schmidkunz
Masim "Vavai" Sugianto (20)
Matt Sealey
Mauro Parra-Miranda
Michael Andres (1)
Michael Löffler (3)
Michael Skiba
Michal Marek (3)
Michal Vyskocil (8)
Michal Zugec
mrdocs
Nikanth Karthikesan (2)
Oprea Lucian
Oswin Zulu
Peter Nixon
Peter Pöml (4)
Petr Mladek (30)
Petr Uzel (2)
Philipp Thomas
Pragnesh Radadiya
Ray Chen
Ray Wang (1)
Ricardo Varas Santana (6)
Richard Bos (4)
Robert Lihm
Roland Haidl
Roman Drahtmueller
Rossana Motta (1)
Rupert Horstkötter (10)
Sascha Manns (45)
Sebastian Schöbinger (4)
Stanislav Visnovsky (7)
Stefan Haas (1)
Stefan Hundhammer (5)
Stefan Schubert (3)
Steffen Winterfeldt (4)
Stephan Kulow (10)
Suman Manjunath
Suresh Jayaraman (1)
Susanne Oberhauser (2)
Syamsul Qamar Ngabito
Thomas Göttlicher (4)
Thomas Schraitle (14)
Thruth Wang
Tuukka (11)
Ulrich Hecht
Wilken Gottwalt
Will Stephenson (1)
Xin Wei Hu





 

Hackweek Day 2: cross-build with OBS Part 1

1 Star2 Stars3 Stars4 Stars5 Stars (8 votes, average: 5.00 out of 5)
Loading ... Loading ...
Sunday, August 31st, 2008 by Martin Mohring Digg!

I took the chance to meet with the openSUSE Buildservice Developers on tuesday and discuss with them the progress made so far. Although the OBS was not a theme at Hackweek that much, I found two people participating.

Dirk Müller, Marcus Hüwe and me decided to meet at Hackweek to accelerate the development by adding a way to build for architectures, where the buildhost is different from the architecture you are working at. Dirk was inspired by the call of some KDE akademy participants to get the Maemo Project used in the Nokia N810 building and running in OBS. We were all motivated by all the embedded systems out there and a secenario of running embedded openSUSE on them. Also, Adrian told me very often that cross-build is one of the most wanted features requested when openSUSE and OBS is beeing presented at an event.

During the last months, I was busy with testing and making sure that the source code in the subversion repository and snapshots of openSUSE:Tools* packages do work in general but also could be used for building on/for non x86 architectures. As a first result, some weeks ago new PowerPC workers could be easily introduced without doing much more than installing OBS regularily in the PowerPC workers. The required PowerPC distributions could also be used without much more effort other than installing also the PowerPC packages next to the others in the backend.

So the next thing we wanted to achive was cross-building. Say, your buildhost is a openSUSE:11.0 on a x86_64 processor, and your target is a Debian:Etch on a armv4l processor type. There are different ways to achive this, so we searched for a solution that fits into the openSUSE Buildservice philosophy, which allows you also to use prebuild binaries and a set of metadata to be as compatible as possibe to the target system where the original was build.

A central requirement was to use original binaries for building. That got us faced with the situation that we could not change the originals in the source code. Lets see how we solved this.

First some thoughts on cross-build in general, how it can be implemented and how it is used by some projects in the field. A first consideration are the types of cross-build in a packaged build environments like OBS:

  • Type 1 cross-build: Build a complete set of packages using one big Package in OBS. Examples are busybox and the uClibc buildroot system
  • Type 2 cross-build: Put a complete distro including cross-tools into a Project, by modifying all single Packages to build for the cross-target. No original packages for the target can be used.
  • Type 3 cross-build: In contrast to Type 2, the build system is modified so original source and binary packages can be build and used in a repository
  • Type 4 cross-build: To make things even more compatible, an emulator is used in the build system to provide the original target system. Now, the orginial binaries can be even run. Also, testsuites can be run.
  • I had myself been working on a complete distribution, that used Type 2 cross-build to implement. As a result, the current OBS is already capable of running Type 2 cross-build.

    To define an achivable goal for Hackweek, we decided to implement Type 4 cross-build at Hackweek. In advance I had made already some preparations, and installed Debian:Etch/Arm in my local OBS (openSUSE:11.0/ppc was there already quite a while, but for native workers), and got the projects/repos running in OBS backend, to make some feasibility testing. Also Marcus did the same on another level, because he was working on another project, he wanted to combine with ours (he works on a way to use official Distribution mirrors to extract the meta data from there instead of installing a copy in your local OBS).

    The results of the preparations were: in fact can the backend also handle Debian:Etch/Arm, we wanted to use the qemu emulator in the so called “User Emulation Mode” as the emulator and we decided to first implement cross-build with Arm architecture, because qemu for PowerPC is not that mature, and there is already PowerPC running with native works now in the official build.o.o OBS.

    So much for an introdution, next part is about doing and first results. The last part will be about next steps.


    Comments

    No comments yet.

    Sorry, the comment form is closed at this time.