Rpm_logo.pngNouvel épisode de la chronique d'empaqueteur pour le Projet Fedora. Au programme, grosse session packaging qui sera étalée dans plusieurs posts. On commence avec Xnee qui a un ticket bugzilla ouvert. Ce ticket a été ouvert automatiquement par le script de surveillance des nouvelles versions logiciel de Fedora, très pratique pour être instantanément averti de la sortie d'une nouvelle version de Xnee.

Synchronisation du dépôt local

Avec les paquets ayants une faible activité de développement, il arrive fréquemment que le dépôt local sur notre disque ne soit pas synchrone avec le dépôt en ligne. En effet, tous les 6 à 12 mois environ, tous les paquets de la distribution sont reconstruits au cours d'un « mass-rebuild ». Les mass-rebuild sont généralement lancés suite à l'évolution majeure du compilateur ou bien d'une bibliothèque utilisée par de nombreux paquets. Les changements engendrés sur mon paquet ne sont pas énorme, la release est incrémentée et une nouvelle entrée est ajoutée au Changelog dans la branche master (la branche utilisée par Rawhide). Il faut donc veiller avant de commencer à travailler que l'on possède bien la dernière version du dépôt de code source.

casper@blackbird:~/fedora-scm/Xnee$ fedpkg pull
Depuis ssh://pkgs.fedoraproject.org/Xnee
 * [nouvelle branche] f20        -> origin/f20
Already up-to-date.

Récupération du tarball

Commençons par récupérer le nouveau tarball en modifiant le fichier SPEC comme suit :

--- a/Xnee.spec
+++ b/Xnee.spec
@@ -1,8 +1,8 @@
 Summary:       X11 environment recorder
 Summary(fr):   Enregistreur de l'environnement X11
 Name:          Xnee
-Version:       3.16
-Release:       2%{?dist}
+Version:       3.18
+Release:       1%{?dist}
 
 License:       GPLv3+
 URL:           http://www.gnu.org/software/xnee/
@@ -139,6 +139,9 @@ make test
 
 
 %changelog
+* Mon Apr 28 2014 Matthieu Saulnier <fantom@xxxxxxxxxxxxxxxxxx> - 3.18-1
+- Update to 3.18
+
 * Sat Aug 03 2013 Fedora Release Engineering <rel-eng@xxxxxxxxxxxxxxxxxx> - 3.16-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

 

Puis on peut télécharger les nouvelles sources avec la commande spectool :

casper@blackbird:~/fedora-scm/Xnee$ spectool -g -S Xnee.spec
Getting http://ftp.gnu.org/gnu/xnee/xnee-3.18.tar.gz to ./xnee-3.18.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1817k  100 1817k    0     0   378k      0  0:00:04  0:00:04 --:--:--  378k

J'ai toujours l'habitude d'en avoir une copie dans ~/Téléchargements/ afin de pouvoir l'extraire et l'étudier plus en détail.

Étude de la nouvelle version

Souvenez-vous que le paquet passe directement de la version 3.16 à 3.18, on va sauter la 3.17. Du coup il va sûrement y avoir pas mal de changement au niveau du programme. Pour nous aider à nous y retrouver, le développeur renseigne le fichier texte nommé « NEWS », qui est également présent dans le RPM au passage.

Changes in version 3.18 ('Abbado')
==============================

  Removed incorrect comments.

Changes in version 3.17 ('Seeger')
==============================

  * New features:

  * Fixed bugs:

    Savannah:
    Mayhem:    #715746 "cnee crashes with exit status 139"
    Works with X.org 1.14.*


Changes in version 3.16
==============================

  * New features:

    Gnee can record XInput events

  * Fixed bugs:

    Savannah:

On voit ici qu'il s'agit de nouvelles compatibilités avec Xorg, de correction de bugs, et d'amélioration du code (les commentaires c'est important ^^).

Répercutions sur le SPEC

Concrètement, il y en a aucune. Cela ne dispense pas de faire une relecture complète du SPEC, et de remettre en cause tous les "quickfix". Ce serait pertinent de lancer un build hors SCM pour chaque élément à remettre en cause, puis de procéder à divers tests sur les RPMs obtenus et relire les logs de compilation. C'est d'ailleurs cette petite routine de contrôle qualité qui m'a indiqué ce qu'il y avait encore à améliorer, chaque détail compte.

Contrôle qualité

La mise à jour des paquets Fedora ne consiste pas à incrémenter des numéros de version puis lancer la construction, ça serait trop facile. D'autant plus que les vieux paquets comme celui de Xnee (mon premier paquet Fedora) ont la fâcheuse tendance de trainer une couche de résidus, léger certes, mais quand même. Rpmlint est un programme qui automatise un grand nombre de tests, il est très utilisé pendant la revue d'intégration d'un nouveau paquet dans le dépôt Fedora.

$ rpmlint Xnee*3.18* cnee*
Xnee-devel.x86_64: W: spelling-error Summary(fr) nécéssaires -> nécessaires
Xnee-devel.x86_64: W: spelling-error %description -l fr nécéssaires -> nécessaires
Xnee-devel.x86_64: W: spelling-error %description -l fr lib -> lob, lin, li
Xnee-devel.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 0 errors, 4 warnings.

Ces erreurs ont été introduites pendant la mise à jour du * Thu Aug 16 2012 d'après le ChangeLog. Nous allons donc les corriger.

Dernières modifications du SPEC

Dans le SPEC les erreurs sont situées au niveau du sous-paquet Xnee-devel :

diff --git a/Xnee.spec b/Xnee.spec
index 1c9dcb7..51992bb 100644
--- a/Xnee.spec
+++ b/Xnee.spec
@@ -1,8 +1,8 @@
 Summary:       X11 environment recorder
 Summary(fr):   Enregistreur de l'environnement X11
 Name:          Xnee
-Version:       3.16
-Release:       2%{?dist}
+Version:       3.18
+Release:       1%{?dist}
 
 License:       GPLv3+
 URL:           http://www.gnu.org/software/xnee/
@@ -41,7 +41,7 @@ quel client Xnee ou interface.
 
 %package devel
 Summary:       Files needed for building applications with libxnee
-Summary(fr):   Fichiers nécéssaires pour construire des applications avec libxnee
+Summary(fr):   Fichiers nécessaires pour construire des applications avec libxnee
 Requires:      Xnee-libs%{?_isa} = %{version}-%{release}
 
 %description devel
@@ -50,8 +50,8 @@ necessary for developing programs which use the xnee-lib library.
 
 %description devel -l fr
 Le paquet xnee-devel inclue les fichiers d'en-tête et bibliothèques
-nécéssaires au développement des programmes utilisant la bibliothèque
-xnee-lib.
+nécessaires au développement des programmes utilisant la bibliothèque
+libxnee.
 
 
 %package -n cnee
@@ -139,6 +139,10 @@ make test
 
 
 %changelog
+* Mon Apr 28 2014 Matthieu Saulnier <fantom@xxxxxxxxxxxxxxxxxxx> - 3.18-1
+- Update to 3.18
+- Fix spelling-error in summary and description
+
 * Sat Aug 03 2013 Fedora Release Engineering <rel-eng@xxxxxxxxxxxxxxxxxxx> - 3.16-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

 

Enregistrement des modifications

Avant de commiter il faut d'abord uploader le nouveau tarball, sinon on devra faire un nouveau commit juste après l'upload :

casper@blackbird:~/fedora-scm/Xnee$ fedpkg new-sources xnee-3.18.tar.gz
Uploading: 2ffd7832026c871d0fb0f63e06c71519  xnee-3.18.tar.gz
######################################################################## 100,0%
Uploaded and added to .gitignore: xnee-3.18.tar.gz
Source upload succeeded. Don't forget to commit the sources file

C'est même indiqué par la commande « Don't forget to commit the sources file ».

casper@blackbird:~/fedora-scm/Xnee$ fedpkg commit -m "Update to 3.18" -p

C'est commité et pushé en une seule passe, on va donc passer au build.

Construction du paquet pour Rawhide

Comme toujours on travaille dans la branche master du dépôt Git, donc on impacte seulement Rawhide. C'est une sécurité, si jamais mon paquet devait introduire de l'instabilité dans la distribution, les versions stables de Fedora ne seront pas touchées. Bien sûr cela concerne les paquets principaux, mes petits paquets ne sont pas des dépendances d'autres paquets, et par conséquent s'ils ne sont pas stable ils ne menacent en rien la stabilité légendaire de Fedora. Mais ça permet toujours aux testeurs de vérifier et rapporter des bugs avant que le paquet n'arrive dans les branches stables.

casper@blackbird:~/fedora-scm/Xnee$ fedpkg build --nowait
Building Xnee-3.18-1.fc21 for rawhide
Created task: 6792610
Task info: http://koji.fedoraproject.org/koji/taskinfo?taskID=6792610

Il est possible que certains packageurs mettent à jour seulement Rawhide (la future F21) et pas les branches stables (F20, F19), ça m'est arrivé sur certain paquets. C'est autorisé par le réglement des Mises à jour de Fedora pour les updates n'apportant ni correctifs de bug ni correctifs de faille de sécurité. Les deux pratiques sont bonnes et ça dépend vraiment du bon vouloir du packageur en fait...

Mise à jour pour F20

On applique les changements de la branche master à la branche f20 du dépôt Git. Pour cela il faut d'abord changer de branche :

casper@blackbird:~/fedora-scm/Xnee$ fedpkg switch-branch f20
La branche f20 est paramétrée pour suivre la branche distante f20 depuis origin.

Puis on applique les modifications de la branche master :

casper@blackbird:~/fedora-scm/Xnee$ git merge master
Mise à jour 7fe7be6..81328d5
Fast-forward
 .gitignore |  1 +
 Xnee.spec  | 14 +++++++++-----
 sources    |  2 +-
 3 files changed, 11 insertions(+), 6 deletions(-)

Ensuite on synchronise le dépôt en ligne avec la commande :

casper@blackbird:~/fedora-scm/Xnee$ fedpkg push
Total 0 (delta 0), reused 0 (delta 0)
remote: Emitting a message to the fedmsg bus.
To ssh://fantom@pkgs.fedoraproject.org/Xnee
   7fe7be6..81328d5  f20 -> f20

Et enfin on peut demander la construction du paquet à partir du dépôt de code source en ligne :

casper@blackbird:~/fedora-scm/Xnee$ fedpkg build --nowait
Building Xnee-3.18-1.fc20 for f20-candidate
Created task: 6795576
Task info: http://koji.fedoraproject.org/koji/taskinfo?taskID=6795576

Lorsque le paquet sera effectivement construit, il sera taggué comme paquet de mise à jour potentielle pour le dépôt updates-testing. Il ne reste donc plus qu'à le tagguer en tant que mise à jour effective du paquet Xnee présent dans le dépôt Fedora, à l'aide du système de Mise à jour Fedora, Bodhi. Il ne faut pas oublier d'assigner le ticket de Bugzilla à l'update.

casper@blackbird:~/fedora-scm/Xnee$ bodhi -u fantom -n -b 1059676 -t enhancement -N "Update to 3.18" -R testing Xnee-3.18-1.fc20
Creating a new update for Xnee-3.18-1.fc20
Password for fantom:
Creating a new update for Xnee-3.18-1.fc20
Update successfully created
================================================================================
     Xnee-3.18-1.fc20
================================================================================
    Release: Fedora 20
     Status: pending
       Type: enhancement
      Karma: 0
    Request: testing
       Bugs: 1059676 - Xnee-3.18 is available
      Notes: Update to 3.18
  Submitter: fantom
  Submitted: 2014-04-29 17:19:16
   Comments: bodhi - 2014-04-29 17:19:31 (karma 0)
             This update has been submitted for testing by fantom.

  https://admin.fedoraproject.org/updates/Xnee-3.18-1.fc20


Dans 7 jours le paquet passera du dépôt updates-testing au dépôt updates, uniquement avec la commande que je dois lancer manuellement :

$ bodhi -u fantom -R stable Xnee-3.18-1.fc20

L'option -R signifiant "request" pour demander le passage en stable, et Xnee-3.18-1.fc20 indiquant le nom du paquet construit par Koji.