You are here -> Home Logram et son site » Logram se dote d'un serveur de construction

Logram se dote d'un serveur de construction

Le 18/04/2010 à 16h38 by steckdenis, in Logram et son site, 0 commentaries

Bonjour :) ,

Construire et gérer des paquets a la main est fâtiguant et peut amener des erreurs. De plus, il faut ensuite les placer dans un dépôt, les tester, rester derrière l'ordinateur pendant que ça compile, les envoyer sur le dépôt, etc.

Tout ceci fait qu'une petite quantité seulement de paquets peut être construite, et que ça peut provoquer pas mal d'erreurs.

Aujourd'hui, après une semaine de travail, Logram se dote d'un petit serveur de construction. Il est simple, pas très beau, mais il marche plus ou moins. Il ne sera d'ailleurs pas utilisé en production avant de longs mois, et reste pour le moment cantonné à des tests.

Ce server supporte les opérations suivantes :

  • Il récupère automatiquement depuis la base de donnée les paquets à reconstruire
  • Il crée un chroot Logram contenant uniquement les dépendances de construction de ce paquet
  • Il lance les scripts de téléchargement et compilation du paquet
  • Il empaquette le tout dans de beaux fichiers .lpk
  • Il importe les .lpk résultats dans la base de donnée, dans la distribution, puis exporte les listes
  • Il gère l'historique de construction que vous allez découvrir bientôt, sur le site web
  • Il nettoie un peu et passe au paquet suivant.

Du côté du site web, quelques changements en base de donnée et quelques fonctionnalités bienvenues s'ajoutent :

  • Les descriptions courtes et longues, ainsi que le titre de tous les paquets se retrouvent sur le wiki (connectez-vous, allez sur la page d'un paquet, cliquez sur le bouton «Éditer» vers la fin de cette page). Si vous éditez ces pages, elles seront re-transformées en XML et incluses dans les descriptions des paquets à la prochaine reconstruction par le serveur (oui oui, il fait ça aussi :) )
  • La page des paquets binaires contient un lien vers le paquet source qui l'a créé. Cette page permet de voir tous les paquets binaires créés par ce paquet source, ainsi que les dépendances de construction, un historique de construction (haut en couleur, permettant de savoir quelle version est dans quelle distribution, quand ça a été construit, par qui, si c'était automatique, s'il y a eu des erreurs, etc).
  • Cette page contient également un bout de forum, permettant de commenter les paquets sources :D . On pourra discuter des options de compilation, résoudre des problèmes, changer le paquet de dépôt, etc. Ça c'est un truc qui me plaît beaucoup.
  • Chaque enregistrement d'historique permet d'accéder à une page, contenant quelques informations. On peut par exemple voir les dépendances à la construction d'une toute veille version d'un paquet (nostalgie pour dans un an ou deux, quand on verra par exemple notre pauvre paquet Bash dépendre d'une vieille version de readline :) ). Pour les paquets construits automatiquement, tous les logs sont disponibles (chaque ligne sortie par Make est enregistrée, chaque fichier inclus aussi, etc).
  • Cette page permet aux packageurs de de demander la reconstruction d'une certaine version d'un paquet (généralement la dernière, mais pas obligatoirement). Linkdd, ainsi que les admins, pourront donc contrôler tout ça (et ce sera d'ailleurs, je crois, un des premiers privilège de linkdd en tant que packageur :) ). J'expliquerai dans les commentaires de cette news comment on se sert de tout ça.

Le code source du serveur de compilation est contenu dans le dossier buildserver du dépôt Git de Setup (voir page «Développement»). C'est pour le moment un gros fichier App.cpp de plus de 1700 lignes, c'est immonde, pas propre, y'a des petites imperfections partout, mais ce n'est que le début.

Dans les jours à venir, nettoyage. Découpage du code du serveur de compilation en petits morceaux plus facilement maintenables, documentation de tout ça, correction des fuites mémoire de Setup, classification des 16 fichiers de libpackage dans des dossiers, passage à CMake, etc.

Ensuite, nettoyage des paquets, ils doivent compiler et fonctionner avec le build serveur. Pour cela, création attentive des paquets dont ils dépendent, ajout dans Setup d'une détection automatique des dépendances (shlibdeps de Debian), puis grosse mise à jour des paquets. Le livre LFS est parfois un peu périmé (par exemple, il est possible de tout refaire avec GCC 4.5 sorti il y a quelques jours, et de bénéficier de -flto qui accélère Setup près de 2 fois par exemple), et cette mise à jour sera bienvenue :) .

Voilà. Profitez bien de tout ça. Le serveur ne tourne pas encore, mais le site web a été mis à jour.

Commentaries

Author Message