Modern version control systems for cross-distro packaging
DebConf 8, Mar Del Plata, Argentina
11 August 2008
Introduction
Package maintenance is:
- debianising the upstream source tree
- creating a package
- developing new features
- distro-specific
- package-format specific
- intended for upstream
- tracking upstream, or importing new release tarballs
- keeping track of upstream features
- adjusting specific features
This is pretty distro-independent!
What is vcs-pkg.org?
- cross-distro
- VCS-independent
- an endeavour to determine a packaging workflow which accounts for all
involved:
- distros
- QA, release, security teams
- contributors
The goal is enable distros to work together on the version control level
Overview of this talk
- New Debian source package formates
- A Debian packaging workflow using Git
- Where to go from here?
Debian source packages, version 3
dpkg-source knows a few new (experimental) formats:
VCS source packages
Source packages consist of the (compressed, pruned) repository, which is
checked out on unpack.
Arguments against:
- new tools required on build daemons and for build-essential
- VCS knowledge required to properly work on the package
- dependencies on young, third-party tools
quilt source packages
The "wig&pen" format gets rid of diff.gz files and uses:
- dsc file, as before
- orig.tar.gz, as before
- debian.tar.gz, which unpacks to ./debian
- orig-$FEATURE.tar.gz, which unpacks to ./$FEATURE
The use of ./debian/patches is encouraged.
Thus, the task becomes how to extract ./debian/patches from version
control.
Overview of this talk
- New Debian source package formates
- A Debian packaging workflow using Git
Debian packaging with Git
This workflow does not rely on Git-specific features and can be used with
other VCSs
Used branches:
- upstream, which tracks upstream
- upstream/dist, which contains autoconf-dist changes
- pristine-tar, used to recreate tarballs
- features/*, features targetted for upstream
- debian/*, Debian-specific changes
- debian, the main Debianisation branch
- build, the integration branch used to build
Features of this workflow
- features can be developed and maintained independently
- the repository contains everything needed to recreate pristine source
packages
- source packages contain patches for each feature (quilt series)
TopGit: managing patch queues with Git
- use an entire branch to track a patch
- manage dependencies between patches
- allow full use of Git features, including distributed development
- similar to Bazaar looms and Mercurial patch queues
Live demonstration?
Do you want to see this in action?
Overview of this talk
- New Debian source package formates
- A Debian packaging workflow using Git
Working with other distros
- Why not use the same repository as e.g. Fedora?
- Additional feature branch families:
- distro/*: (optional) non-upstream changes applicable to all distros
- rpm/*/deb/*: package-format-specific changes
- ubuntu/*/fedora/*: the debian/* counterparts
How can we make this happen?
- talk to other distros, map out requirements
- design a workflow, in collaboration
- try out the workflow with a few packages
- refine
- provide a wrapper which implements this workflow in a VCS-agnostic way
- Take over the world
My only friend, the end…
Thank you for your attention!