Nous avions annoncé que notre première image ISO alpha serait disponible fin janvier… et toujours pas d’ISO disponible. Bon sang ! Que se passe-t-il ? Je vais vous l’expliquer.
Il était une fois un bootstrap…
Comme nous l’avons rapporté dans les articles précédents, notre build-system a été en intense activité pendant les dernières semaines et plus de 4000 paquets ont déjà été construits. Cet ensemble de paquets constitue ce que nous appelons un bootstrap.
Si vous regardez sur Wikipédia, vous verrez qu’un bootstrap est un petit programme d’amorçage qui permet d’en lancer un plus gros. Dans le cas de Mageia, ce concept désigne l’étape actuelle dans laquelle le système de base et les dépendances principales sont construits pour que toutes les applications puissent ensuite l’être à partir des propres outils et paquets de Mageia. Toutes les distributions Linux utilisent leurs propres paquets pour construire tous les paquets disponibles dans leurs dépôts.
C’est maintenant qu’arrive la partie la plus complexe de l’histoire, un peu comme le dilemme de l’œuf et de la poule. Certains paquets de bas niveau, souvent appelés outils de développement, ont besoin d’eux-mêmes pour être compilés : gcc, glibc… Ces paquets existent déjà dans beaucoup de distributions, c’est pourquoi le bootstrapping commence en se basant sur l’une de ces distributions.
Dans le cas de Mageia, nous avons choisi d’utiliser les paquets de Mandriva puisque la première release est basée sur Cooker. Pour pouvoir les utiliser, nous avons dû les nettoyer :
- en retirant les éléments spécifiques à Mandriva (macros RPM, objets sous copyright comme des images ou des icônes, éléments dépréciés) ;
- en retirant les conditions non nécessaires dans la définition des besoins pour la construction ;
- en envoyant des patchs en amont, de sorte que nous n’ayons pas besoin de les maintenir alors qu’ils peuvent profiter à tous si les auteurs les acceptent ;
- en désactivant temporairement certaines dépendances de haut niveau car elles ne sont pas encore construites et disponibles pour Mageia (Java, Mono).
Une fois ce travail effectué, chaque paquet est prêt à être reconstruit sur le build-system de Mageia. Dès qu’un paquet est reconstruit en tant que paquet de Mageia, le packager doit vérifier et, si nécessaire, ré-ajouter les dépendances additionnelles lorsqu’elles sont disponibles.
Prenons un exemple
GCC est un compilateur de C, et est une partie importante du système de base car de nombreuses applications en ont besoin pour être construites à partir de leurs sources.
Mageia a besoin d’avoir son propre paquet de GCC pour générer toutes les applications utilisant le langage C (aussi appelé dogfooding en anglais, ce qui désigne une entreprise utilisant ses propres produits). C’est une opération cruciale pour Mageia car, en la réalisant proprement, on s’assure que tout fonctionne et on peut en même temps lister et corriger les problèmes potentiels. Le GCC de Mageia est alors généré.
Une fois la construction de l’outil de développement terminée, nous pouvons reconstruire le noyau de Mageia, les pilotes X, le serveur X, etc. et les applications de plus haut niveau. Dans l’état de bootstrap, un système n’offre aux packagers que quelques bibliothèques et un compilateur. Il a alors besoin d’être complété par des paquets système importants avant que l’équipe des packagers soit capable de débuter son travail pour de bon. De nombreux paquets requièrent des dépendances qui elles aussi nécessitent d’autres dépendances pour être construites.
Au final, des milliers de paquets sont nécessaires pour construire les composants majeurs qui seront utilisés par les applications de haut niveau.
Bien évidemment, c’est une version simplifiée de l’histoire, sans toutes les choses amusantes qui peuvent se produire pendant le processus de reconstruction. Mais c’est l’idée générale.
Pourquoi le bootstrap est-il si important ?
Nous avons déjà dit que le bootstrap est une étape durant laquelle des packagers et des spécialistes du système de base peuvent passer du temps à vérifier la cohérence des éléments de très bas niveau de la distribution, à nettoyer les paquets et à s’assurer de leur compatibilité avec la politique de Mageia. Le bootstrap n’est donc pas uniquement dédié aux personnes intéressées par les forks :).
À propos, l’amélioration et l’écriture d’une documentation correcte sur le bootstrap sera d’une grande aide lors de l’ajout du support de nouvelles architectures. Il faudra un outil de développement convenable, un système de base… C’est la même histoire.
Des ISO !
Revenons à notre question initiale : pour quand peut-on espérer la première ISO de test ? L’étape de bootstrap a commencé il y a un mois et devrait se terminer demain. Il aura fallu environ 1500 heures pour construire les paquets disponibles, en comptant les constructions réussies mais aussi les échecs, les reconstructions, la prise de décisions techniques, les problèmes inattendus, les discussions…
Et maintenant, nous voilà :). Le dépôt est prêt pour les premiers essais de construction, notre machine de build pour les ISO est complètement configurée et la version Alpha1 est attendue pour le 15 février. Vous aurez bientôt plus de nouvelles sur la future feuille de route, alors restez connectés !
Publié en anglais par ennael, traduction française par Rémi, relecture par Jehane
Merci pour tout ce boulot! Je sens que Mageia va être l’occasion de faire un nettoyage de printemps dans toutes les distributions 😉
Comme je n’ai pas le niveau pour développer, ni le temps pour vous aider (je suis en train de me former pour me reconvertir), j’ai fait appel aux bonnes volontés, parmi les membres de mon groupe linux (et quelques de mes amis), sur le réseau social belge Netlog. J’espère qu’au moins quelques un(e)s d’entres eux (elles) viendont vous prêter main forte. Longue vie à Mageia!