Suite à la proposition que nous avons rédigée avec Raphaël sur la gestion des paquets orphelins de Debian, j’ai commencé à écrire un script d’injection automatique des paquets source dans le dépôt svn du projet debian-qa.
L’idée est la suivante : on récupère le fichier Sources.gz de l’archive unstable/main de Debian, et on parse ce fichier pour en extraire tous les paquets orphelins. Très bien, on a la liste des paquets qui nous intéressent. Ensuite, on télécharge le fichier .dsc du paquet et les sources une à une (attention, parfois on trouvera un couple diff.gz + orig.tar.gz, parfois juste un fichier .tar.gz).
Maintenant que nous avons chaque paquet source sous la main, il ne nous reste plus qu’à utiliser l’outil svn-inject qui permet d’ajouter un paquet source debian dans un dépôt svn en un clin d’oeil.
Voilà pour la téhorie, pour la pratique, le script que j’ai écrit se nomme archive2svn et implémente cette idée avec en bonus, une gestion de cache, histoire d’éviter de télécharger Sources.gz de unstable/main à chaque fois que le script est lancé, et surtout, pour éviter de retélécharger des sources de paquets déjà présents.
En passant, j’ai fait en sorte que l’on puisse juste demander au script de se contenter de télécharger les sources, ce qui permet de faire des mesures intéressantes :
Nous avons actuellement 252 paquets orphelins, qui représentent 117 megs de données sous leur forme archivée et 566 megs une fois décompressés.
Le script permet de définir sur la ligne de commande le mirroir Debian que l’on souhaite utiliser ainsi que le dépôt SVN à utiliser pour les injections, voici un exemple d’utilisation pour injecter tous les paquets orphelins :
archive2svn --mirror=ftp2.fr.debian.org \
--repository=svn+ssh://sv n.debian.org/svn/qa/test-repo \
--cachedir=/var/cache/archive2svn \
--action=inject \
--verbose
Je viens de le lancer, vous pouvez donc consulter la liste de nos paquets orphelins sur svn.debian.org.