Building For Mer

Embed Size (px)

DESCRIPTION

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:
    • Other projects Download on demand
    Key Download on demand:
    • Ubuntu 9.04 armv5el / i586 Debian 5.0 armv5el / i586
    Names like Maemo:Mer:Devel:UI/MerDevel_Ubuntu9.04 armv5el

14. Developing for Mer

  • 'Core' Structure
    • Maemo:Mer:Devel&: Maemo:Mer:Testing Maemo:Mer:0.15 Maemo:Mer:Stable
    HW Specifics in each project:
    • :HW:N8x0 :HW:Freerunner :HW:SmartQ :HW:Marvell :HW:HTC :HW:Beagle

15. Developing for Mer

  • Submit to autobuilder and it goes into 'Extras' Structure
    • Maemo:Mer:Extras:Devel Maemo:Mer:Extras:Testing Maemo:Mer:Extras:Stable
    Each builds 12x .... against
    • :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