Since Fremantle Extras applications will eventually be submitted to the Mer builder it may be a good idea to introduce it. We use the openSuse Open Build Service; a GPL service that provides an emulated, pristine (yes, I'm looking at you autobuilder and scratchbox), dependency driven build environment. I'll talk about the processes around Mer builds, access controls, managing integration with our DVCS (git), acceleration tricks and generally how to make good use of things you find lying about on the web. This slideset has useful notes - see tab next to 'Comments'
Citation preview
1. Building Mer David Greaves / lbt
2. Building Mer OBS 3. What is OBS?
Open Build System: Source->Binary->Package->
Repository Fully GPL Huge thanks to Suse / Novell for creating OBS
in an open manner OBS ..... Suse / Novell(cf Qt ..... Nokia)
4. What is OBS? OBS Scratchbox cf 5. What is OBS?
Benefits
Developers Maintainers Maemo Community
Drawbacks
Oriented towards full builds not compile+test Lots
of:sEmulation-mode compile.... for the momentaccelerated
compilation
6. Using OBS
Screenshot:
7. Using OBS
Screenshot:
8. Using OBS
Screenshot:
9. Using OBS
Screenshot:
10. Using OBS Service to Build Remotely
Remotely
Like an old-fashioned centralised VCS
When you check-in a package it's scheduled and built All target
repositories and architectures
Then any dependendent packages are rebuilt Status overview provided
Live Logs
11. Using OBS to Build Locally
Install:
apt-get install osc qemu
Checkout :
osccoMaemo:Mer:Testing/qtablet
Build:
oscbuildMaemo:Mer:Testingarmv5elqtablet_0.1.dsc
..........................Coffee
Copy .deb to tablet and install
12. Packaging
Maemo packaging process Modify, compile, test, build locally
Update debian/changelog debuild -Sto create updated .diff and .dsc
osc addremove and osc commit
13. OBS Projects, Packages and Repositories
An OBS Project is a collection of packages and has a number of
repositories A repository defines the base package collection used
to satisfy build dependencies Two kinds:
:Devel and :Testing and :Stable Ubuntu and Debian i586 and
armel
Independent release cycle... per package
16. Developing for Mer
Home project
home:lbt:Extras
Has repositories for:
:Devel and :Testing and :Stable i586 and armel
17. osc commands
osc
co Checkout a package or project
18. add / rm / addremove Add a dsc or tar.gz or a diff.gz
19. commit Send new files to server
20. up Update - get changes 21. build Download build-deps,
create chroot, run dpkg-buildpkg 22. repos Show the available repos
to build 23. ls List packages 24. meta pkg/proj/...Add/remove
dis/enable packages & build targets 25. Gitorious and Branches
26. Gitorious and Branches 27. Gitorious and Branches 28.
Acceleration
Qemu is used to emulate on a binary-by-binary level using
binfmt-misc Be nice to replace qemu binaries with i586 binaries
bash, gzip, make, tar,
Problem with .so library paths fixed with patchelf / chrpath
Toolchain replaced with a slightly modified gcc-cross If we install
these binaries in a chroot we get 5x to 10x performance increase
Same source as if using arm binaries unlike scratchbox
29. Issues for Mer
Patents...
the Novell service won't accept mp3 software
Ubuntu universe
isn't on Novell service
Access control
No fine grained control over packages
30. Talk to Us IRC #mer on freenode.net Microblogging..... Mer
Chatter [email_address] highlights of 'interesting' activities
Summaryat http://wiki.maemo.org/Mer/Build 31. Thanks
Carsten Munk Martin Mohringer (ScriptRipper), Adrian Schrter
(AdrianS) Marcus Rckert (darix) Jan-Simon Mller (dl9pf) Riku Voipio
(suihkulokki) rest of the teams testers, documenters,
community