• # BSD Owl, ton prochain système de build

    Posté par (site web personnel) . En réponse au message lancer un shell "vierge" dans un nouveau terminal. Évalué à 4. Dernière modification le 04 mai 2015 à 20:30.

    As-tu essayé comme ça?

    env -i HOME="${HOME}" x-terminal-emulator -e bash
    

    Sinon, je remplacerais volontiers le bash par su - "${USER}" qui simule un nouveau login et utilise donc le bon shell.

    Tu devrais regarder BSD Owl et sa fonction subshell:

    % bmake subshell
    ===> Entering developper's subshell
    ...
    

    Cela ouvre un shell pour le développeur qui fait une partie de ce que tu veux: le shell est attaché à la racine du projet et le macros make fournies dans BSD Owl s'en souviennent pour lire la configuration globale permanente dans Makefile.config — typiquement générée par ./configure — et les amendements locaux (i.e. non versionnés) et temporaires dans Makefile.local. Cela permet bien de définir les variables contrôlant le nombre de processus de compilation, etc...

    Le but est bien d'ajouter une vision globale du projet au make typique qui se concentre sur les dossiers. Les fichiers que l'on écrit sont bien des simples Makefiles — c'est le but du projet: fournir un système de build solide qui se base sur un outil courant, make — la version BSD, pas GNU.

    Tu peux regarder quelques exemples de projets (C, LaTeX, OCaml, shell) dans le dossier test. Pour prendre un projet complexe en C le fichier Makefile principal ressemble à:

    PACKAGE= heat
    VERSION= 0.1-current
    OFFICER?= michipili@gmail.com
    MODULE= langc.lib:librational
    MODULE+= langc.lib:libfibonacci
    MODULE+= langc.prog:goldenratio
    .include "generic.project.mk"

    qui indique deux bibliothèques et un programme les utilisant. Le fichier Makefile pour une bibliothèque ressemble à

    LIBRARY= fibonacci
    SRCS= fibonacci.h
    SRCS+= fibonacci.c
    .include "langc.lib.mk"

    (Cela prépare même la page de man ! ☺)

    Le fichier pour la compilation du programme est du même tonneau!

    C'est porté sous Debian et Ubuntu (paquets non officiels mais il existent!), MacPorts et FreeBSD. J'espère que ça te plaira. Si tu as des questions n'hésite pas à me contacter sur le forum, l'issue tracker — ou par email si je ne réagit pas, il y a mon mail dans tous les fichiers ☺ — comme disent certains, c'est de la balounette en barre! ☺ Ça me fournirait un prétexte pour écrire des exemples plus détaillés pour le support du langage C — par exemple, et fermer les tickets correspondant!

    Le projet Anvil est un exemple de petit projet utilisant ces macros.