SlideShare a Scribd company logo
Building Mer David Greaves / lbt
Building Mer OBS
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)
What is OBS? OBS Scratchbox cf
What is OBS? Benefits Developers Maintainers Maemo Community Drawbacks Oriented towards full builds not compile+test Lots of  “:”s  Emulation-mode compile.... for the moment  accelerated compilation
Using OBS Screenshot:
Using OBS Screenshot:
Using OBS Screenshot:
Using OBS Screenshot:
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
Using OBS to Build Locally Install: apt-get install osc qemu Checkout : osc  co  Maemo:Mer:Testing/qtablet Build: osc  build  Maemo:Mer:Testing  armv5el  qtablet_0.1.dsc ..........................Coffee Copy .deb to tablet and install
Packaging Maemo packaging process Modify, compile, test, build locally Update debian/changelog “ debuild -S”  to create updated .diff and .dsc “ osc addremove” and “osc commit”
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”
Developing for Mer 'Core' Structure Maemo:Mer:Devel  &  :<areas> 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
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
Developing for Mer Home project home:lbt:Extras Has repositories for: :Devel and :Testing and :Stable i586 and armel
osc commands osc co Checkout a package or project
add / rm / addremove Add a dsc or tar.gz or a diff.gz
commit Send new files to server
up Update - get changes
build Download build-deps, create chroot, run dpkg-buildpkg
repos Show the available repos to build
ls  <proj> List packages
meta pkg/proj/...    Add/remove dis/enable packages & build targets

More Related Content

PDF
Pharo 7.0 and 8.0 alpha
PPTX
Vagrant step-by-step guide for Beginners
PDF
OSDC.no 2015 introduction to node.js workshop
ODP
openSUSE Conference 2017 - The Docker at Travis Presentation
PDF
XPDDS17: PVH Dom0: The Road so Far - Roger Pau Monné, Citrix
PDF
Introduction to telepresence
PDF
openSUSE Conference 2017 - YaST News
PDF
TDC2018SP | Trilha Containers - CI/CD com Docker e Drone
Pharo 7.0 and 8.0 alpha
Vagrant step-by-step guide for Beginners
OSDC.no 2015 introduction to node.js workshop
openSUSE Conference 2017 - The Docker at Travis Presentation
XPDDS17: PVH Dom0: The Road so Far - Roger Pau Monné, Citrix
Introduction to telepresence
openSUSE Conference 2017 - YaST News
TDC2018SP | Trilha Containers - CI/CD com Docker e Drone

What's hot (20)

PDF
XPDDS17: Keynote: Towards a Configurable and Slimmer x86 Hypervisor - Wei Liu...
PPTX
Docker intro workshop: Dockerize your PHP app
PDF
Install openstack
PDF
Ondřej Procházka - Deployment podle Devel.cz
PDF
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
PDF
Docker Compose to Production with Docker Swarm
PDF
12 Composer #burningkeyboards
PDF
How automated cloud infrastructure setups can help with Continuous Delivery
PPTX
Docker session III: Dockerfile
PPTX
Docker session I: Continuous integration, delivery and deployment
PPTX
ops300 Week5 storage (1)
PDF
Open Build Service 道場―パッケージの新規作成編
PPTX
Node js packages [#howto with npm]
PPTX
Composer Panada Conference 2014 by Mulia Nasution
PPTX
Café com Arquitetura - Hello Docker Captain
PDF
Travel with your mock server
PDF
Develop QNAP NAS App by Docker
PPTX
CI-CD WITH GITLAB WORKFLOW
PPTX
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PPTX
Improving WordPress Theme Development Workflow - Naveen Kharwar.
XPDDS17: Keynote: Towards a Configurable and Slimmer x86 Hypervisor - Wei Liu...
Docker intro workshop: Dockerize your PHP app
Install openstack
Ondřej Procházka - Deployment podle Devel.cz
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
Docker Compose to Production with Docker Swarm
12 Composer #burningkeyboards
How automated cloud infrastructure setups can help with Continuous Delivery
Docker session III: Dockerfile
Docker session I: Continuous integration, delivery and deployment
ops300 Week5 storage (1)
Open Build Service 道場―パッケージの新規作成編
Node js packages [#howto with npm]
Composer Panada Conference 2014 by Mulia Nasution
Café com Arquitetura - Hello Docker Captain
Travel with your mock server
Develop QNAP NAS App by Docker
CI-CD WITH GITLAB WORKFLOW
PHP on Heroku: Deploying and Scaling Apps in the Cloud
Improving WordPress Theme Development Workflow - Naveen Kharwar.
Ad

Viewers also liked (6)

PPT
Cholera Masterpiece
PDF
L&amp;S Advisors Growth &amp; Income Psn Report
PPT
William Kilbride
PPT
CLI Dress Code Presentation
PPTX
Welcome To The Dcms Library
PPT
L&S Advisors Overview
Cholera Masterpiece
L&amp;S Advisors Growth &amp; Income Psn Report
William Kilbride
CLI Dress Code Presentation
Welcome To The Dcms Library
L&S Advisors Overview
Ad

Similar to Building For Mer (20)

PDF
Continuous Integration and DevOps with Open Build Service(OBS)
ODP
Develop and Maintain a Distro with Open Build Service
PDF
Dependencies Managers in C/C++. Using stdcpp 2014
PDF
Yocto Project : Custom Embedded Linux Distribution
ODP
PDF
Haiku OS Presentation
PDF
Getting Started on Packaging Apps with Open Build Service
PDF
guadec-2015-developer-switch-dreams
PPTX
Autotools pratical training
PDF
Android Variants, Hacks, Tricks and Resources
PDF
QEMU in Cross building
ODP
The Deck by Phil Polstra GrrCON2012
PDF
Building the VM
PDF
Como criar um repositório Ubuntu
PDF
oSC-2023-Cross-Build.pdf
PDF
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
PDF
Package management and creation in Gentoo Linux
PDF
Suse Studio: "How to create a live openSUSE image with OpenFOAM® and CFD tools"
PDF
Joe Damato
ODP
Packaging for the Maemo Platform
Continuous Integration and DevOps with Open Build Service(OBS)
Develop and Maintain a Distro with Open Build Service
Dependencies Managers in C/C++. Using stdcpp 2014
Yocto Project : Custom Embedded Linux Distribution
Haiku OS Presentation
Getting Started on Packaging Apps with Open Build Service
guadec-2015-developer-switch-dreams
Autotools pratical training
Android Variants, Hacks, Tricks and Resources
QEMU in Cross building
The Deck by Phil Polstra GrrCON2012
Building the VM
Como criar um repositório Ubuntu
oSC-2023-Cross-Build.pdf
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
Package management and creation in Gentoo Linux
Suse Studio: "How to create a live openSUSE image with OpenFOAM® and CFD tools"
Joe Damato
Packaging for the Maemo Platform

Recently uploaded (20)

PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
Spectroscopy.pptx food analysis technology
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Electronic commerce courselecture one. Pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Approach and Philosophy of On baking technology
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Machine learning based COVID-19 study performance prediction
Review of recent advances in non-invasive hemoglobin estimation
Diabetes mellitus diagnosis method based random forest with bat algorithm
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Unlocking AI with Model Context Protocol (MCP)
Spectral efficient network and resource selection model in 5G networks
20250228 LYD VKU AI Blended-Learning.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Spectroscopy.pptx food analysis technology
Programs and apps: productivity, graphics, security and other tools
Chapter 3 Spatial Domain Image Processing.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
The Rise and Fall of 3GPP – Time for a Sabbatical?
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Electronic commerce courselecture one. Pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Approach and Philosophy of On baking technology

Building For Mer

  • 1. Building Mer David Greaves / lbt
  • 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 “:”s Emulation-mode compile.... for the moment accelerated compilation
  • 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 : osc co Maemo:Mer:Testing/qtablet Build: osc build Maemo:Mer:Testing armv5el qtablet_0.1.dsc ..........................Coffee Copy .deb to tablet and install
  • 12. Packaging Maemo packaging process Modify, compile, test, build locally Update debian/changelog “ debuild -S” to 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 & :<areas> 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 <proj> List packages
  • 24. meta pkg/proj/... Add/remove dis/enable packages & build targets
  • 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 Summary at http://wiki.maemo.org/Mer/Build
  • 31. Thanks Carsten Munk Martin Mohringer (ScriptRipper), Adrian Schröter (AdrianS) Marcus Rückert (darix) Jan-Simon Möller (dl9pf) Riku Voipio (suihkulokki) rest of the teams testers, documenters, community

Editor's Notes

  • #2: I&apos;m going to talk about the Mer build system Next: OBS
  • #3: OBS .... Next : Whats OBS
  • #4: Summary It&apos;s two things : * a build service * a build environment manager It&apos;s not a packaging system – it works with normal debian/maemo packages Thanks to Suse Just to get out of the way... this is not a Novell proprietary service - Full GPL What does the service do? you upload (check-in) a tarball it spits out binary packages. They do provide a huge number of machines in a public build farm but you are free to setup an independent OBS instance Both openSUSE and SLES (enterprise) build on it Linux foundation will be launching a large OBS instance (~100 cores) real soon – Mer is one of the few test projects ARM joined LF last month Next: Compare to sbox
  • #5: Build environment is very similar to sbox – *much* cleaner Allows you to run arm binaries on intel desktops Compile/install supported by improving qemu so it supports all required calls Local chroot into a qemu environment – uses the same binaries you (could) use on the device Multiple (clean) development environments – 1 per project. All integrated into your desktop Sbox benefits – used to be speed – but that&apos;s fixed now (talk more about how we did this cleanly later) SB reaches deeply into the buildenv and replaces sh, autoconf, perl, python, etc... means you may have different versions of apps to those on the device. Next steps involve kvm and sdk integration to improve the sdk Next: What it gives you
  • #6: Why? Developers: Simple to use; reliable Truly clean/pure build environment Easy upload, At-a-glance immediate status if something is wrong web interface to track build logs in real time no home made solutions flexibility and easy building for multiple targets (armv5, v7fp, i386, Stable, Testing) Maintainers: Status overview is crucial Easy promotion Tools to support processes (like promotion) &apos;Make like&apos; so entire distribution is consistent Community: Very very open Start your own project, build against Mer Build against Stable/Testing/Devel Drawbacks: Require access to the service to setup a chroot Too many :s Used to be &apos;emulated&apos; compile but not now. Next Screenshots
  • #7: Fully CLI osc &lt;cmd&gt; such as : build buildlog checkout copypac getbinaries list (ls) meta repos All written in Python / shell Scriptable eg. script that takes a local file or http location for a .dsc file, imports it, and submits it to :Extras:Testing
  • #8: Simple HTTP/XML API Next web
  • #9: Essentially a good gui for rarer overview operations rather than package management ones Cli used for development Web for overview Next monitor
  • #10: At a glance view of package status Live logs Easy enable/disable of build/publish Mouseover says “nothing provides gnome-vfs-filechooser needed by libhildon2” (circular dependency... cheers!) Next: using OBS remote service
  • #11: Version control with make-like dependencies using build-dependencies As soon as you commit the .dsc and tar.gz it is scheduled to build There is a status of where the job is. As the build progresses you can watch a live feed of the log(s)... You may have setup sbox recently; lets take a look at local builds... Next: Local Build
  • #12: Really ... it&apos;s that simple The initial setup to get to that point is pretty much a 2-liner Add a repo to your apt sources Install osc and qemu Run the co command to get the source Run the build command Grab a coffee Install the .deb Next: Packaging
  • #13: I want to stress : OBS has nothing to do with maemo packaging If anything it is better than autobuilder since the packages have no scratchbox-isms If a correct debian package fails then it is a bug (there are some complex conditional build-depends that fail at the moment) Next: Mer layout
  • #14: Complex to explain but really quite simple. Project – main grouping mechanism. Like a directory Contains Packages you want to build Build against Repositories – bad name. Where build dependencies are satisfied; a distro like Ubuntu is an obvious repo ; 2 Types: Other projects Download on demand (cached) However packages first look locally for build dependencies, then in the repository projects and their parent repositories The repository also specifies the architecture (Ubuntu 9.04 armv5el / i586) So “Maemo:Mer:Devel:UI/MerDevel_Ubuntu9.04 armv5el” Maemo:Mer:Devel:UI project Builds against Maemo:Mer:Devel project In turn against Ubuntu_9.04 (from ports) armv5 arch Next: Mer Projects
  • #15: These are OBS &apos;projects&apos; which contain all the individual packages In Devel we have: Apps, Base, MaemoCommon, Qt, UI and more Essentially move from Devel to Test to a numbered release Stable then points to the latest release using kinda symlinks HW specific areas Next: Extras and user builds
  • #16: One approach is to submit to our &apos;Extras&apos; Very similar to Maemo Extras process Initial work is done in :Devel (or locally) move to :Testing when ready for power users move to :Stable when ready for all users Clearly you don&apos;t need all 12 builds all the time; individually enabled Most will only need to build against Stable Package releases are not tied to Core releases Rebuilds triggered whenever build dependencies in the core are changed Next : Home areas
  • #17: Alternatively you can just setup your own home area and build &apos;against&apos; the Mer repos. One benefit is email/rss notifications of a rebuild Next: osc
  • #18: Listed the main commands to give a flavour VCS like – lots more to do with managing the remote server; getting binaries etc Main thing is to checkout packages and build them Usually you checkout, then use git to manage the code, build a package and commit the tarball Futures: We anticipate that co will do a git checkout and an osc commit &lt;tag&gt; will cause OBS to use that to pull a tarball and build it... Next: Move on to git branches and upstream etc
  • #19: Issue is we need to manage patches against our upstream And we want to make life easy for our downstream. That means keeping the packaging and the code separate. Start with an upstream package : unpack and remove the debian/ directory. commit onto the upstream branch. pristine-tar is used to ensure that the upstream tarball can be recreated perfectly. (not used much) All features or bug fixes are broken out to additional branches; 1 branch per feature or fix. The main difference is that features are not likely to go upstream whilst fixes are. This is very similar to quilt. Very hard to manage patches in the debian/patch dir master is the main code branch and there should only be merge commits on this branch; the only non-merge commits should be in ./ChangeLog Mer should be packaging-based and the only non-merge commits should be in debian/ Next: Stable point release
  • #20: Shows how we package a Stable point release Next: Move on to see how we handle an upstream release
  • #21: We make changes to our fixes and features They need re-integrating when upstream releases A monolithic patch means you don&apos;t always know what a particular change is related to. Having logical changes in multiple branches makes this sane. Next: Acceleration
  • #22: Discussed how qemu emulates; does this on a binary-by-binary level using binfmt-misc so ideally use 586 binaries. Just those that impact compilation Could do static builds but fiddly Use dynamic - but .so library paths collide. So we create another &apos;root&apos; /lib-x86 and install all modified packages in there. Modified OBS to do this using mkbaselibs – an rpm technique. Fixup the binaries rpath on install with a static patchelf / chrpath; then symlink the binaries into the real chroot and move the real binaries to .old Toolchain replaced with a slightly modified gcc-cross (that was hard – weeks of work!) If we install these binaries in a chroot we get 5x to 10x performance increase Same source as if using arm binaries – unlike scratchbox. Disable accel and you use a pure arm chroot again Next : Issues
  • #23: Mer devices are clearly multimedia oriented so music and video codecs are important Novell OBS only supports supported Ubuntu... ie not Universe. Ubuntu have some strange omissions As Mer grows we&apos;ll want to open up submit rights but not want users to write to other users packages. Need a login to Novell but soon using openID Linux Foundation OBS is big news!
  • #24: Chatter on #mer is very interactive Lots of support Mer Chatter is interesting ... if you&apos;re a hardcore Mer geek. Worked hard on the docs – let me know of omissions etc Help make the SDK