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 (pourmake 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
(ethex
, unint
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 !
- la page du projet kconfig-frontends
- le dépôt des sources
- les tarballs
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 !
Aller plus loin
- Journal à l'origine de la dépêche (169 clics)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.