Nota :
Contributeurs, les sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
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.
On installe git-buildpackage ainsi que quelques outils qui nous seront utiles :
apt-get install git gitk git-buildpackage pristine-tar
git config --global user.name "Votre Nom"
git config --global user.email votre@adresse-email.org
Si vous avez une clé GPG :
git config --global user.signingkey "0xXXXXXXXX"
Créer le fichier ~/.gbp.conf
contenant le texte suivant :
[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
0xXXXXXXXX
par l'id de votre clé GPG !
Pour gérer les patchs de debian/patchs, on peut utiliser une branche git.
debian/patches/
git rebase
sur la branche patch-queue (les patchs appliqués par upstream sont automatiquement détectés).debian/patches/
ont toutes les informations nécessaires pour être envoyés à upstream.Inconvénient :
gbp pq import
gbp pq export
git add debian/patches
git commit
git-dch -S -a
gbp pq rebase git checkout master gbp pq export
gbp pq rebase
gbp pq import
git checkout master gbp pq export
git add -a debian/patches/
git commit -m 'mon premier patch'
gbp clone adresse-du-dépôt-git
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.
À 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.
git tag -d nomdutag && git push origin nomdutag
git reset --hard hashprefix-du-commit
git checkout -b nomdelabranche hashprefix-du-commit