Mes activités Debian en décembre 2011

Voici le récapitulatif mensuel de toutes mes activités gravitant autour de Debian. Si vous faites partie des personnes ayant fait un don pour soutenir mon travail (364,18 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.

dpkg et multiarch

J’avais quelques espoirs d’obtenir pour Noël, dans Sid, une version de dpkg supportant multi-arch. L’objectif était jugé réaliste par Guillem, mais celui-ci tomba malade… ce qui nous renvoie à ce mois de janvier, où rien n’a vraiment avancé.

La taille de sa branche pu/multiarch/master n’a pas vraiment diminué, et ce alors que certains de ses commits de décembre concernaient le support multi-architecture. Il nous en reste encore 36 à intégrer, et la majorité du travail qu’il a réalisé s’apparente à de la re-factorisation de bouts de code déjà intégrés. Il a également lancé plusieurs discussions concernant des changements d’interface. J’y ai participé, avec l’espoir de pouvoir de les amener à une conclusion rapide.

De mon côté, je maintiens toujours ma propre branche pu/multiarch/full, dérivée de celle de Guillem, mais augmentée de correctifs supplémentaires que j’ai réalisés, mais qui n’ont pas encore été intégrés. De plus, ma branche n’inclut pas une des modifications de Guillem : sa branche autorise en effet la mise à jour croisée de paquets entre architectures, tandis que dpkg ne gère pas encore correctement cette fonctionnalité.

J’ai commencé à travailler sur ce projet il y a un an déjà, et je ne peux qu’espérer que ce mois de janvier verra la conclusion de cette histoire sans fin. :-|

Travaux divers concernant dpkg

J’ai revu (et plus tard intégré) un patch de Kees Cook améliorant dpkg-buildflags de sorte que ce dernier puisse faire état des options de compilation renforcée activées. Cette fonctionnalité pourra ainsi permettre à des outils tels que lintian de détecter les options de compilation renforcée manquantes.

J’ai encadré/guidé Gianluca Ciccarelli qui essaye d’améliorer dpkg-maintscript-helper afin de gérer correctement le remplacement de répertoires par des liens symboliques, et vice-versa.

Je me suis occupé du bogue n°651993, de sorte que dpkg-mergechangelogs n’échoue plus lorsqu’il rencontre une version de changelog invalide. Je me suis également occupé du n°652414, de telle sorte que dpkg-source --commit accepte un nom de fichier relatif lorsqu’un fichier de patch lui est explicitement passé.

Guillem a également intégré un correctif que j’ai développé concernant le bogue LP n°369898.

Travaux d’empaquetage

Je me suis attelé à l’empaquetage de WordPress 3.3 dès que la version est sortie. L’upstream n’a pas mis à jour sa page de conformité à la licence GPL, ce en dépit du rapport de bogue que j’avais créé. Je me suis donc mis en chasse des sources requises, et les ai intégrées dans l’archive debian.tar.xz du paquet source Debian. C’est une solution assez brutale, mais qui présente le double avantage, d’une part, de permettre la clôture du bogue critique pour la publication n°646729 ; et d’autre part, de réintroduire les fichiers Flash écartés par le passé… ce qui est une bonne chose, dans la mesure où cet uploader à base de Flash est beaucoup plus joli que celui tirant parti du navigateur.

Quilt 0.50 est sortie après 2 ans de (lent) développement. Le paquet Debian comporte de nombreux patchs, et plusieurs de ces derniers ont du être mis à jour afin de tenir compte de cette publication. Certains d’entre eux furent heureusement intégrés upstream, mais cela ne me pris pas moins d’une matinée entière pour boucler cette mise à jour. J’ai également converti l’empaquetage de CDBS vers dh avec un mini-fichier debian/rules.

Zim 0.54 est sortie, et j’ai immédiatement mis à jour le paquet, car cette dernière version corrige un bogue qui m’ennuyait.

Revue de l’empaquetage de ledgersmb

En tant que mainteneur de sql-ledger (et utilisateur de ce logiciel pour ma comptabilité), j’espérais voir ledgersmb empaqueté, de sorte qu’il puisse tenir lieu de remplaçant pour ce premier. J’ai suivi tous les efforts déployés au fil du temps dans ce but, mais aucun n’a abouti à un véritable paquet Debian.

C’est vraiment dommage, et c’est la raison pour laquelle j’ai essayé d’y remédier en me proposant pour parrainer l’envoi du paquet. D’où une première revue de l’empaquetage. Cette revue a pris plusieurs heures, car il est nécessaire d’expliquer absolument tout ce qui n’est pas à la hauteur des standards attendus.

J’ai également créé un rapport de bogue/demande d’évolution pour le paquet lintian (cf. n°652963), suggérant que ce dernier devrait détecter les utilisations incorrectes de dpkg-statoverride (un exemple de « mauvaise » utilisation était présent dans le paquet de ledgersmb).

nautilus-dropbox

Je souhaitais fignoler les derniers détails du paquet dans les temps pour la sortie de la prochaine Ubuntu LTS, compte tenu du fait que le gel de l’import Debian est en janvier. J’ai ainsi intégré certaines des importantes corrections que je souhaitais apporter.

Le paquet Debian diverge de celui amont dans la mesure où les binaires non-libres ne sont pas installés dans $HOME, mais dans /var/lib/dropbox. Ma première correction a concerné un bogue qui avait pour effet une possession incorrecte des fichiers (normalement par root exclusivement). Décompresser le tarball en tant que root entraîne la réutilisation des informations de l’utilisateur et du groupe embarqués, informations ayant changé récemment du côté de Dropbox apparemment.

Nous avons ensuite identifié d’autres problèmes en lien avec la gestion des serveurs mandataires (proxy), cf. n°651065. J’ai également corrigé ce dernier, car il est relativement fréquent que le téléchargement initial déclenché durant la configuration du paquet échoue… et dans ce cas, il appartient à l’utilisateur de re-déclencher le téléchargement après avoir obtenu les autorisations appropriées via PackageKit. Sans mon correctif, l’usage de pkexec aurait entraîné la perte de la variable d’environnement http_proxy, et donc l’impossibilité pour l’utilisateur de télécharger à travers un serveur mandataire.

Enfin, j’ai également réorganisé les patchs spécifiques à Debian, ce afin de mieux séparer ce qui pourrait et devrait être intégré par les auteurs amonts, et ce dont ils ne veulent pas. Dropbox est malheureusement contre l’installation sous /var/lib/dropbox (et les changements qui en découlent), car ils tiennent à mettre à jour automatiquement leurs binaires non-libres.

Un point sur le livre

La traduction du Cahier de l’Admin Debian progresse : 6 chapitres sont déjà traduits (bien que non encore relus).

Sa campagne de libération, quant à elle, avance (lentement). Grâce à 90 nouveaux donateurs, la somme collectée est passée de 60 (début décembre) à 67% de la somme visée !

Merci

Au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Debian Activities in December 2011 contribuée par Weierstrass01.

Mes activités Debian en octobre 2011

Voici le récapitulatif mensuel de toutes mes activités gravitant autour de Debian. Si vous faites partie des personnes ayant fait un don pour soutenir mon travail (130,30 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.

Travail sur dpkg

Le début du mois a été marqué par la correction de bogues nouvellement rapportés, ceci pour préparer la publication de la version 1.16.1.1 :

  • n°644492 : une erreur sur une de mes modifications du code de mise en place des triggers entraînait le marquage erroné du paquet comme « configuré », alors qu’il n’était que décompressé dans un nouveau chroot.
  • n°642656 : le nouveau refus de dpkg-source de fabriquer un paquet source avec des modifications non-enregistrées dans un patch a cassé le format source « 2.0 » (quasi-inutilisé, sauf par la suite de tests lintian apparemment).
  • n°644412 : l’extrait de makefile « buildflags.mk » ne respectait pas les nouvelles variables d’environnement spécifiques aux mainteneurs (DEB_CFLAGS_MAINT_APPEND, par exemple), du fait de make qui ne transmet pas lesdites variables à travers le code $(shell …). Corrigé en exportant manuellement les variables requises.
  • J’ai également désactivé la sortie de dpkg-buildpackage en ce qui concerne les drapeaux de compilation, dans la mesure où cela induisait en erreurs de nombreux mainteneurs. dpkg-buildpackage invoquant debian/rules il n’a aucun moyen (propre) de prendre connaissance des changements de drapeaux de compilation effectués par le mainteneur en définissant les variables d’environnement associées. Les mainteneurs, quant à eux, s’attendent à voir en sortie les drapeaux de compilation tels qu’ils les ont modifiés, pas tels qu’ils sont initialisés par défaut par la distribution.

Nous avons décidé, avec l’aide de Guillem, d’une correction appropriée concernant une situation d’accès concurrent (race condition) survenant parfois à l’occasion de compilations parallèles, lorsque deux dpkg-gencontrol concurrents essayent de mettre à jour des fichiers debian/files (cf. n°642608). Pour mener à bien cette correction, un nouveau paquet était nécessaire : libfile-fcntllock-perl, qui nous a été gentiment empaqueté par l’équipe Perl. Une fois tout ceci mis en place, la correction était plutôt simple.

Support du multi-architecture

J’ai également passé beaucoup de temps sur le support multi-architecture. Tout d’abord en corrigeant un vieux bogue qui exigeait le support des chemins multi-arch dans le cas d’une cross-compilation (cf. n°595144). Deux patchs avaient été proposés, mais la discussion n’ayant pas vraiment tranchée en faveur de l’un ou l’autre, j’ai appliqué mon propre patch, qui a de plus l’avantage d’être plus proche techniquement de la manière dont nous gérons la compilation croisée.

J’ai ensuite corrigé deux problèmes rapportés sur la version Ubuntu de dpkg. Le premier (LP n°863675) était assez sérieux puisqu’il provoquait la « disparition » de paquets installés à l’avantage de leurs équivalents d’architectures étrangères supprimés (mais dont il restait certains fichiers de configuration). Le second (LP n°853679) n’affectait que les utilisateurs de dselect (il y en a encore apparemment !) dont une bibliothèque multi-architecture installée était en conflit avec elle-même (exemple : Provides: toto, Conflicts: toto).

Mais la plus grosse partie du temps passé sur la problématique multiarch le fut dans des discussions débattant, avec des interlocuteurs variés, de la direction à donner à multiarch. La Release Team intervint sur le planning du merge, afin de s’assurer de la disponibilité pour Wheezy. Le Responsable du projet Debian, quant à lui, fit le résumé des problématiques rencontrées jusqu’ici.

Bien que le déroulé des actions prises pour multiarch ne soit pas forcément celui que j’aurais espéré, ces dernières n’en représentent pas moins un progrès depuis que Guillem a commencé à pousser certains modifications validées. Des 66 modifications présentes il y a une semaine dans ma branche pu/multiarch/full, 20 ont déjà été intégrées dans la branche principale.

Mise à jour de sécurité et bogue RC pour python-django

Le mainteneur de python-django n’ayant pas réussi à préparer les mises à jour de sécurité requises, j’ai pris le relais et réalisé les nouvelles versions 1.2.3-3+squeeze2 pour Squeeze et 1.0.2-1+lenny3 pour Lenny. Cette mise à jour de sécurité est malheureusement un exemple du délai conséquent que peut prendre la publication d’une version de sécurité, lorsque le mainteneur du paquet est inactif.

La situation est compliquée, dans ce cas précis, par le fait que l’équipe en charge de la sécurité sous Debian n’a pas voulu publier de mise à jour pour Squeeze tant que celle de Lenny n’avait pas fait l’objet d’investigations (ce qui requiert un effort d’autant plus important que la version n’est plus supportée upstream). Sur ce point, leur communication ne fut pas des plus claires.

Quelques temps après, un autre bogue RC — Release Critical — a été rapporté sur ce paquet (n°646634) mais s’est révélé être, après investigation, un problème de configuration locale. Sa priorité a donc été rétrogradée, et j’ai transmis aux développeurs amont l’échec de la suite de test, car cette dernière pourrait être améliorée.

Les co-mainteneurs sont quoi qu’il en soit bienvenus : je préfère vraiment n’être que dans la situation du mainteneur « de secours »… :-)

Empaquetage de WordPress

La situation de WordPress ressemble beaucoup à celle de python-django. Je n’y suis également qu’un « mainteneur de secours », mais Giuseppe est resté inactif de nombreux mois et j’ai du m’atteler à la tâche courant août, car je voulais utiliser la nouvelle version amont. Je n’ai découvert que tardivement le fait que je n’étais pas inscrit à la liste de diffusion des bogues WordPress et, par conséquent, le bogue critique n°639733 (que j’ai introduit en même temps que la nouvelle version) est resté tel quel un certain temps. Je l’ai corrigé dès que je m’en suis aperçu.

J’ai également saisi l’opportunité d’initier une discussion sur debian-devel concernant la gestion des bibliothèques javascript embarquées, et j’ai proposé un « mécanisme de remplacement opportuniste via liens symboliques ». WordPress constitue mon banc de test pour ce mécanisme, vous pouvez consulter son debian/dh_linktree implémentant l’algorithme de remplacement.

La discussion n’a quant à elle pas été très intéressante, bien que j’ai appris que Debian exigeait maintenant que chaque paquet source embarquant des fichiers Javascript « minifiés » inclut également les fichiers originaux. C’est d’autant plus pénible, quelque part, que ce n’est dans de nombreux cas pas imposé par la licence (un grand nombre de ces fichiers ne sont pas sous GPL), mais par Debian uniquement. Et les développeurs amont sont nombreux à ne pas s’y conformer, ce qui est le cas de WordPress. En conséquence, le bogue RC n°646729 ouvert par Jakub Wilk est bien parti pour rester ouvert pendant longtemps. Après de nombreuses heures passées à investiguer chaque fichier Javascript du paquet source de WordPress, j’ai créé en retour un nouveau ticket dans le système de suivi des bogues upstream.

Empaquetage de Dropbox

Le retour d’expérience des mois écoulés depuis l’introduction de nautilus-dropbox dans Debian et Ubuntu me permet d’affirmer que la décision de ne supporter le téléchargement de dropbox que via le script de post-installation était une mauvaise idée.

Du fait de cette décision, j’ai été obligé de faire tomber en erreur le script postinst si le téléchargement échouait. Et, même si le message d’erreur est relativement clair, cela n’en a pas moins engendré de nombreux (la plupart automatisés) rapports de bogues côté Ubuntu. Sans parler des problèmes de natures diverses qui sont venus s’ajouter au tableau (comme essayer de démarrer dropbox alors que le paquet n’était pas configuré – ce qui entraîne une erreur, induite par le fait que l’utilisateur n’a pas les droits requis pour installer le logiciel ; ou encore réinstaller le paquet alors que dropbox est en cours de fonctionnement – ce qui entraîne également une erreur…).

Tous ces problèmes sont corrigés dans la version 0.7.0-2 du paquet. Dorénavant, si l’utilisateur doit installer dropbox, il utilisera PolicyKit afin d’obtenir les droits root. Le script postinst n’échouera plus dans le cas d’un échec du téléchargement de dropbox, puisque ce dernier peut être relancé ultérieurement par l’utilisateur. J’ai également corrigé le code du téléchargement, afin de supprimer le fichier remplacé avant d’extraire un nouveau fichier (au lieu d’écraser le fichier existant). Toutes ces modifications ont été transmises upstream.

Cahiers de l’Admin Debian : point d’avancement

Je suis heureux de vous annoncer que la traduction aura bien lieu. Nous avons en effet atteint l’objectif de financement minimal le 22 octobre, ce grâce à 380 donateurs.

La levée de fonds continue cependant, en vue cette fois de libérer le livre. 25000€ doivent ici être atteints, et nous en sommes aujourd’hui à 39% (soit 9950€ dans le fond de libération — ce qui signifie qu’environ 59% de l’argent collecté l’a été au titre de ce fond de libération).

Cliquez ici si vous souhaitez contribuer à la libération de ce livre.

Parvenir à recueillir cette somme en (moins de) 19 jours constitue un challenge ! Mais nous aimons relever de tels challenges, n’est-ce pas ?

Divers

  • J’ai créé le rapport de bogue n°644486. Il concerne dh-make, et a pour objectif un support approprié des drapeaux de compilation dpkg par les nouveaux paquets dès leurs débuts.
  • J’ai intégré de nombreux patchs de Luca Falavigna dans le paquet developers-reference.
  • J’ai discuté de l’intégration des debtags dans le système de suivi des paquets (PTS – Packages Tracking System) avec Enrico Zini et Paul Wise.
  • J’ai mis à jour l’empaquetage du paquet publican pour la nouvelle version 2.8. Cela a nécessité l’écriture d’un patch que j’ai transmis upstream.
  • J’ai créé un rapport de bogue upstream pour hamster-applet. Sa fenêtre n’est plus mise en avant lorsqu’on exécute hamster-time-tracker.

Merci

Au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Debian activities in October 2011 contribuée par Weierstrass01.

Mes activités Debian en août 2011

Voici le récapitulatif mensuel de toutes mes activités gravitant autour de Debian. Si vous faites partie des personnes ayant fait un don pour soutenir mon travail (91,44 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.

Dpkg

J’ai intégré mon implémentation de dpkg-source --commit à mon retour de la DebConf (travail que je vous avais présenté le mois dernier). J’ai continué à travailler un peu sur les drapeaux de compilation renforcée, mais le projet est gelé tant que Kees Cook n’aura pas fourni la documentation requise pour intégration dans dpkg-buildflags(1).

Pour faire suite à une discussion tenue pendant la DebConf, Michael Prokop a eu la gentillesse de mettre en place un auto-builder de dpkg déclenché par git (en utilisant Jenkins). Vous pouvez maintenant nous aider en testant la dernière version git. Pour ce faire :

$ wget -O - http://jenkins.grml.org/debian/C525F56752D4A654.asc | sudo apt-key add -
$ sudo sponge /etc/apt/sources.list.d/dpkg-git <<END
deb http://jenkins.grml.org/debian dpkg main
END
$ sudo apt-get update && sudo apt-get upgrade

Du côté des corrections de bogues, je me suis occupé de :

  • n°640198 : mise à jour mineure d’une page de man ;
  • n°638291 : correctif permettant de gérer proprement les liens directs (« hardlinks ») des fichiers conffiles ;
  • n°637564 : la logique était défecteuse dans certains cas ;
  • n°631494 : l’interruption de dpkg-source lors de la compilation d’un paquet source natif laissait quelques fichiers temporaires devant être effacés.

Mise à jour de WordPress

J’ai mis à jour WordPress en version 3.2.1 dans unstable (après avoir pris le temps de tester le nouveau paquet sur ce blog !) et corrigé ses bogues RC (n°625773). Ce fut l’occasion de découvrir un faux-positif dans lintian, consigné dans le n°637473.

Paquet Gnome-shell-timer

Je pratique, de temps en temps, la technique dite « Pomodoro ». J’étais donc un utilisateur occasionnel du paquet timer-applet de GNOME 2. Paquet que j’ai perdu avec la bascule vers GNOME 3. Le paquet gnome-shell-timer, que j’ai découvert récemment, est une extension GNOME Shell fournissant les mêmes fonctionnalités.

J’en ai donc fait un paquet Debian, tout en remplissant quelques rapports de bogues à mesure que je le testais (deux problèmes d’ergonomie et un problème d’encodage).

Assurance Qualité

J’ai rencontré Giovanni Mascellani durant la DebConf, qui souhaitait prêter main forte à l’équipe en charge de l’Assurance Qualité. Il s’est tout d’abord attaqué aux bogues en souffrance du système de suivi des paquets (PTS – Package Tracking System) et a soumis un certain nombre de correctifs. Je les ai revus et fusionnés avec la branche principale mais, dans la mesure où ils étaient de bonne qualité, la paresse m’a rapidement gagné et je l’ai fait entrer dans l’équipe Qualité. Il peut maintenant commiter ses corrections tout seul. La confiance en ressort également renforcée lorsque vous avez l’ocassion de discuter entre quatre yeux. :-)

Vacances

Tout cela ne représente pas beaucoup comparé aux mois précédents mais, pour ma défense, j’ai pris deux semaines de vacances. Ceci étant, je ne peux quoi qu’il arrive pas vraiment oublier Debian. Regardez mon fils :

Merci

Au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Debian activities in August 2011 contribuée par Weierstrass01.

Réorganisation de mon blog, merci de mettre à jour vos flux

Jusqu’à présent je bloguais sur ouaza.com en Français aussi bien qu’en Anglais sur des sujets divers et variés, même si Debian et le logiciel libre étaient mes sujets de prédilection. Il m’est arrivé de ne pas bloguer sur un sujet parce que cela ne répondrait pas aux attentes des mes lecteurs (et des planètes sur lesquelles le blog est syndiqué). En outre, mes lecteurs anglophones étaient (mal) accueillis sur un site entièrement francisé…

J’ai donc décidé de corriger cela une fois pour toutes et j’ai créé 2 blogs supplémentaires. Ouaza.com devient mon site personnel où je peux raconter tout ce que je veux. Par contre tout ce qui concerne le logiciel libre et Debian en particulier sera sur mes deux nouveaux blogs :

Des redirections de flux sont en place lorsqu’une correspondance logique existait, mais il est tout de même souhaitable que vous mettiez à jour l’URL des flux que sous suiviez.

Cette séparation de mon blog a été l’occasion pour moi de passer à WordPress 3.0 (avec l’option multisite introduite dans cette version). La principale régression est que j’utilise à nouveau le thème standard WordPress sans aucune personnalisation. Si vous avez les compétences en graphisme que je n’ai pas et que cela vous tente de bosser sur le design du site, contactez-moi.

D’autres changements ont été introduits et certains sont encore à venir, mais cela fera l’objet d’autres articles. Merci de me suivre, et à bientôt pour la suite.

WordPress 2.3 et les flux associés aux tags

J’attendais avec une certaine impatience cette dernière mouture de WordPress pour son support des tags. Je viens de l’installer (maintenant que le paquet est dans sid) et cela fonctionne. Il y a tout de même quelques éléments gênants dans cette mise à jour.

Je n’ai pas eu de problèmes avec mes plugins, en revanche lorsque j’ai converti mes catégories en tags, les catégories ont été totalement supprimées ! La page du convertisseur n’était vraiment pas clair sur cet aspect, en outre la présentation laisse à croire qu’il y aura plusieurs étapes dans la conversion alors qu’il n’y en a qu’une. On choisit les catégories à convertir et hop c’est fait. J’aurai aimé quelque chose de plus évolué où je peux choisir un ensemble de tags pour chaque catégorie… et où la catégorie ne disparaît pas !

Bref, la suppression des catégories a aussi cassé les flux RSS associés (/category/debian/feed/)… j’ai réussi à contourner le problème en configurant le préfixe des URL des tag en « category » (et en mettant « old-cat » comme préfixe pour les catégories, désormais inexistantes sur mon site). Ouf, je n’ai pas à tout recatégoriser… d’ailleurs si vous connaissez un plugin qui permet de recatégoriser/retagger un grand nombre d’articles facilement, je suis preneur.

Le côté positif dans tout cela, c’est que je peux enfin proposer des flux qui sont des intersections entre différents tags. Ainsi au lieu d’avoir un tag « DebianFr » dédié, je pourrai utiliser une URL de flux qui représente l’intersection entre « Debian » et « Français », cela donne par exemple ceci: http://raphaelhertzog.fr/category/debian+francais/feed/
(bon, c’est vide pour le moment car tous les articles taggés « Debian » sont en anglais… les autres sont dans « DebianFr » jusqu’à ce que j’arrive à trouver la motivation pour reclasser tous les articles :-))

On peut aussi faire l’union entre différents tags au lieu d’une intersection, on utilise alors une virgule (,) comme délimiteur au lieu du symbole plus (+).