Develop and Maintain a Distro with Open Build Service
Develop and Maintain a Distro with Open Build Service Gary Lin Software Engineer, SUSE Labs firstname.lastname@example.org
Open Build Service?Open Build Service (OBS) is an open sourceproject initiated by SUSE to create a genericbuild system to build and distribute packagesfrom sources in an automatic, consistent andreproducible way.
Basic IdeaSource codePatches Package OBS (RPM, DEB, ...)Changelog Whatever
Project and Package● Project – Each project contains the resources needed to build one or more packages. – These resources include source archives, patch files, spec files, etc. – The project defines the build architectures and the general settings.● Package – The packages are the build targets of the project. – The package format could be any supported output format, e.g. RPM or DEB.
Frontend to BackendFrontend Requests Create a package/project Query packages/projects Check in/modify sources Backend Servers Delete a package ... Submit changes
Backend Components scheduler scheduler publish i586 x86_64 s job descriptions nteve dispatcher srcserver publisher s rce s ck age jobs sou pa download worker rep server server warden dep packages signer ... ... ... build results download worker rep server server
Current Release● All packages are in the release project and the update project, e.g. openSUSE:12.1 and openSUSE:12.1:Update.● Each package update must be reviewed by the maintenance team and then be submitted to the update project.● In general, every update has to be tracked by a bugzilla entry.
Next Release● The packages for the next release are in the “factory” project, e.g. openSUSE:Factory.● All developments are happened in the “devel” projects.● The package updates are reviewed by the devel project maintainers.● Any modification is allowed as long as the maintainer agrees.
Comparison Name Multi- Build for other Package formats Create Images Architecture distributionsFedora Koji N N rpm YUbuntu Y N deb NLaunchpadMandriva Build Y N rpm TODOSystem deb, rpm, ebuild,Project Build Y Y N pkgBuild Bot Y N N/A NPoky Y N rpm, deb, ipg, tgz YOpen Build rpm, deb, tgz, Y Y YService exe[*]* experimental
Package Build Build Server Local Build Sources Sources Sources SourcesDependenciesDependencies Dependencies DependenciesBase PackagesBase Packages Base Packages Base PackagesBase SystemBase System chroot chroot qemu qemu
copypacProject A Project B Package Package Package Package Change
linkpacProject A Project B Package Package (Package) Diff Diff
Tumbleweed● Tumbleweed is a project based on the current release and the “stable” projects.● Tumbleweed is initiated and maintained by Greg KH.