Tooling · SAÉ 3.2 · Java

Projet en action

Bake

Une copie pédagogique de GNU Make, refaite à la main en Java : Bake lit un Makefile, construit son graphe de dépendances, ordonne le build et détecte les cycles avant de compiler.

JavaMakefileDépendances circulaires
MODE DE DÉMOINTERACTIFReconstitution fidèle de l’exécution

Le projet, derrière l’écran

Le projet
sans détour.

Le sujet, le fonctionnement, le point difficile et les choix de code : tout ce qu’il faut pour comprendre le projet rapidement.

LE SUJETSAÉ 3.2 · BUT Informatique · projet en groupe

Le sujet demandait de comprendre le fonctionnement d’un outil de build en réalisant une version simplifiée de GNU Make.

LE BESOINPourquoi je l’ai fait

L’objectif était de ne pas traiter un Makefile comme une simple liste de commandes : il fallait comprendre les relations entre cibles, dépendances, dates de modification et ordre de compilation.

EN DÉMOCe que vous pouvez tester

Le parcours principal est jouable ici. Le dépôt GitHub garde la version complète du projet et ses fichiers.

LE FONCTIONNEMENTComment l’idée devient un programme

Bake lit un Bakefile, construit les règles, résout le graphe, vérifie les dépendances circulaires puis exécute les commandes nécessaires. Le dépôt comporte aussi une batterie de 32 scénarios de test : fichiers absents, variables, .PHONY, sous-répertoires, commentaires et cycles.

LE POINT DÉLICATCe qui demande de la rigueur

Faire coexister parsing, graphe de dépendances, timestamps et exécution sans laisser passer une dépendance circulaire.

DANS LE CODEComment les responsabilités sont rangées

Le code sépare le parsing, le moteur de build, la résolution des dépendances, l’exécution des commandes et la gestion des timestamps. Les diagrammes et le rapport accompagnent l’implémentation.

LE CHEMIN DU PROJETMakefile Build ordonné
ENTRÉEMakefile
01Lirerègles et variables
02Construiregraphe de dépendances
03Vérifiercycles et cibles
RÉSULTATBuild ordonné

Démonstration

Voir le projet
prendre vie.

Explorez les fonctionnalités, les interactions et le parcours principal du projet.

Bake / Java · Bakefile · GNU Make inspiré

Le projet Java lancé depuis un faux terminal

DÉMO LOCALE
bash — BakefileJAVA / DEPENDENCY GRAPH
moncef@portfolio:~/Bake/tests$

Lance le programme Java pour observer Bake parcourir le graphe.

DEPENDENCY GRAPHDAG / ordre valide
acyclic
TARGETmain
OBJECTmain.o
depends on
SOURCEmain.c
OBJECTmodule.o
depends on
SOURCEmodule.c

Bake part des sources, remonte les dépendances, puis ne reconstruit que ce qui doit l’être.

Bake est une copie pédagogique de GNU Make, refaite à la main en Java. Le projet lit un Bakefile, transforme ses cibles en graphe de dépendances, calcule l’ordre d’exécution et détecte les dépendances circulaires avant de lancer les commandes de compilation.

Reconstitution fidèle de l’exécutionVoir le dépôt GitHub
i
Pour aller plus loin

La démo montre le résultat. Le dépôt GitHub contient le code complet et les fichiers du projet.