kconfig-frontends: un empaquetage de kconfig

Posté par . Édité par patrick_g et baud123. Modéré par Benoît Sibaud.
37
20
mar.
2012
Noyau

Voici un projet qui vient de voir sa toute première version : kconfig-frontends est un empaquetage propre du langage kconfig, utilisé par le noyau Linux.
kconfig-frontends est maintenant disponible en version 3.3.0-0 !

Plus de détails dans la suite de la dépêche.

NdM : merci à ymorin pour son journal.

kconfig-frontends est un empaquetage propre du langage kconfig, utilisé par le noyau Linux. Il propose les 5 frontaux actuels, et une bibliothèque pour le parser :

  • conf, le frontal en-ligne (pour make config, make oldconfig)
  • mconf, le frontal classique basé sur ncurses (make menuconfig)
  • nconf, le nouveau frontal basé sur ncurses (make nconfig)
  • gconf, le frontal basé sur GTK+ (make gconfig)
  • qconf, le frontal basé sur Qt (make xconfig)
  • libkconfigparser, la bibliothèque (dynamique ou statique) contenant le parser

kconfig est un langage de configuration, issu du noyau Linux. La syntaxe et la grammaire sont très simples :

  • nombre limité de types : bool, tristate, string, int (et hex, un int exprimé en hexadécimal)
  • gestion des listes à sélection unique (choice)
  • gestion des dépendances avant (select) et arrière (depends on)
  • localisation L10n (bien que très peu utilisée, il est possible de localiser les entrées de configuration aussi bien que les messages)

Par exemple, ce bout de code de configuration :

config MON_OPTION
    bool
    prompt "Mon option à moi"
    help
      Dites oui!

config Une_Autre_option
    string
    prompt "Votre nom"
    depends on MON_OPTION
    help
      Entrez votre nom.

donnera ce fichier de sortie une fois la configuration établie (si on a choisi de dire 'oui' à la première question) :

MON_OPTION=y
Une_Autre_option="Yann E. MORIN"

Ce fichier peut alors être inclus dans un Makefile, ou dans un script shell. On peut le parser pour générer un fichier d'en-tête (le noyau le fait, pas kconfig-frontends).

De nombreux projets utilisent aujourd'hui kconfig comme langage de configuration, par exemple : busybox buildroot, uClibc, crosstool-NG, etc… Tous ces projets ont un jour dupliqué le code de kconfig par simple copie, et l'ont adapté à leur propre système de compilation. Certains projets se synchronisent avec le code source du noyau Linux, parfois de manière aléatoire, parfois jamais. D'autre divergent sans remonter leurs modifications…

Le paquet kconfig-frontends permet d'intégrer facilement kconfig dans des projets tiers, qui l'utilisent comme langage de configuration. Les évolutions de kconfig continueront à se faire dans les sources du noyau Linux, et kconfig-frontends sera mis à jour à chaque version du noyau.

En fournissant un paquet prêt à l'emploi, il est à espérer que les différents projets se synchroniseront plus facilement et plus régulièrement, et feront partager leurs évolutions vers le upstream du noyau.

Maintenant, les pointeurs !

Le plan d'actions pour le futur :

  • une version de kconfig-frontends pour chaque version majeures (dot-0 release) du noyau Linux (pour la première fois, c'est pour le noyau 3.3)
  • une version de kconfig-frontends si une version mineure (dot-release) corrige un bug du parser kconfig ou d'un frontal
  • une version pour corriger les bugs dans l'empaquetage
  • trouver une vrai maison pour le projet
  • migrer le dépôt vers git (à court terme)
  • faire de la doc ! :-)

Voilà, j'ai fait le tour !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.