Table des matières

Maintenir son paquet avec git-buildpackage

Nota :

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Introduction

Les paquets évoluent, au fil des versions, les patchs à effectuer pour intégrer correctement les paquets à Debian diffèrent. Les corrections de bugs sont intégrées par upstream2). Pour s'y retrouver, il est conseillé de maintenir les sources de son paquet Debian via un VCS3), tel que subversion, mercurial ou git.

Nous allons traiter ici le cas d'un paquet géré sous git via les utilitaires git-buildpackage.

Installation

On installe git-buildpackage ainsi que quelques outils qui nous seront utiles :

apt-get install git gitk git-buildpackage pristine-tar

Configuration

Configuration de Git

git config --global user.name "Votre Nom"
git config --global user.email votre@adresse-email.org

Si vous avez une clé GPG FIXME :

git config --global user.signingkey "0xXXXXXXXX"

Configuration de Git-BuildPackage

Créer le fichier ~/.gbp.conf contenant le texte suivant :

~/.gbp.conf
[DEFAULT]
# Sign tags by default:
sign-tags = True
keyid = 0xXXXXXXXX
# use pristine tar by defaul
pristine-tar = True
 
[dch]
# Parse meta tags like Closes: from commit messages
meta = True
# Add seven digits of the commits sha1 to the commit message
id-length = 7
# Regex for matching bugs to close
meta-closes = Closes|LP|BZ
# Use the full commit message instead of the first line only
full = True
# Ignore these in commit messages
ignore-regex = (Signed-off|Acked)-by:
 
[buildpackage]
# Automatically push to remote repo after tagging a new release
posttag = /usr/share/doc/git-buildpackage/examples/gbp-posttag-push
# Run Lintian after a succesful build
postbuild = lintian $GBP_CHANGES_FILE
# Build command
builder = dpkg-buildpackage -i -I -uc -us
# Clean command
cleaner = /bin/true
 
[import-orig]
# Automatically forward the changelog after importing a new upstream version
postimport = git-dch -N%(version)s -S -a --debian-branch=$GBP_BRANCH
Remplacer 0xXXXXXXXX par l'id de votre clé GPG !

Utilisations

Gérer les patchs via une branche ''patch-queue''

Pour gérer les patchs de debian/patchs, on peut utiliser une branche git.

Inconvénient :

Créer la branche de patchs

gbp pq import
Cela changera la branche courante du dépôt à patch-queue/master.

Travailler sur les patchs

Re-générer les fichiers de patchs

gbp pq export
Cela changera la branche courante du dépôt à master.

Enregistrer les modifications

git add debian/patches
git commit

Mettre à jour le changelog

git-dch -S -a

Construire le paquet

Après avoir importé une nouvelle release

  gbp pq rebase
git checkout master
gbp pq export

Si des commits ont été fait sur //master// depuis la dernière mise à jour

gbp pq rebase

Créer un premier patch

git checkout master
gbp pq export
git add -a debian/patches/
git commit -m 'mon premier patch'

Cloner un dépôt git-buildpackage existant

gbp clone adresse-du-dépôt-git

Garder un dépôt jour

Après un clone initial avec gbp clone, vous pouvez exécuter gbp pull pour mettre à jour les branches debian, upstream et pristine-tar depuis le dépôt distant. Le flot de travail ressemble alors à cela :

gbp clone adresse/du/dépôt.git
cd dépôt
gbp pull --redo-pq

Cela mettra à jour toutes les branches en fonction des modifications faites par vos collaborateurs, et regénérera la branche de patchs.

Compilation du paquet

À faire depuis la branche patch-queue/master à jour :

export DEB_HOST_ARCH=amd64
export ARCH=amd64
export DIST=sid
git-buildpackage --git-pbuilder --git-arch=$ARCH --git-dist=$DIST --git-debian-branch=patch-queue/master

Vous pouvez ajouter l'option --git-tag pour tagger et uploader la version en cours.

Quelques rappels de git

git tag -d nomdutag && git push origin nomdutag
git reset --hard hashprefix-du-commit
git checkout -b nomdelabranche hashprefix-du-commit

Références

Références

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
2)
le développeur amont du logiciel empaqueté
3)
Gestionnaire de versions concurentes