Nouvel é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 logicielles de Fedora. Cet outil est très pratique pour être instantanément averti de la sortie d'une nouvelle version de Xnee.

Synchronisation du dépôt local

Pour 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-rebuilds sont généralement lancés suite à l'évolution majeure du compilateur ou bien d'une bibliothèque utilisée par de nombreux logiciels. Les changements appliqués sur mon paquet ne sont pas énormes : la release est incrémentée et une nouvelle entrée est ajoutée au Changelog dans la branche master (la branche utilisée pour Rawhide). Il faut donc veiller, avant de commencer à travailler, à ce que l'on possède 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 :

--- 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 télécharge 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 de faire 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 changements au niveau du programme. Pour nous aider à nous y retrouver, le développeur renseigne le fichier texte nommé « NEWS ».

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 sont importants ^^).

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 sur Xnee. 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 à trainer une couche de résidus, légère 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 16/08/2012, d'après le ChangeLog. Nous allons donc les corriger aujourd'hui.

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 :

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 rappelé par la commande « Don't forget to commit the sources file ».

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

Commit/push en une seule passe, grâce à l'option -p. On va ensuite passer à la construction du paquet.

Construction du paquet pour Rawhide

Comme toujours on travaille dans la branche master du dépôt Git, donc on agit seulement sur 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 de la distribution... mes petits paquets ne sont pas des dépendances d'autres paquets, et par conséquent s'ils ne sont pas stables, ils ne menacent en rien la stabilité légendaire de Fedora. Ça permet aussi 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 des versions stables (f20 et f19). C'est une pratique autorisée par le réglement des Mises à jour de Fedora pour les updates n'apportant, ni correction de bug, ni correction de faille de sécurité.

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 distant 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 :

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 construit, il sera tagué comme paquet de mise à jour potentielle pour le dépôt updates-testing. La dernière chose à faire est de le taguer en tant que mise à jour du paquet Xnee présent dans le dépôt Fedora, à l'aide du système de Mise à jour Fedora, appelé « Bodhi ». Il ne faut pas oublier d'ajouter le ticket de Bugzilla dans le formulaire.

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. Ce sera fait manuellement avec la commande suivante :

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

L'option -R signifie « request » pour demander le passage en stable, et Xnee-3.18-1.fc20 est le nom du paquet construit par le buildsystem de Fedora, appelé « Koji ».