Rebar: un makefile per Erlang

November 17, 2010 | 3 Minute Read

Se vi è capitato di creare progetti Erlang un minimo complessi, è molto probabile che abbiate usato un makefile, più o meno complesso, con cui compilare i sorgenti, creare la documentazione e magari funzionalità più complesse.

Ebbene, finalmente c’è uno strumento adatto a questo linguaggio e framework: Rebar. Si tratta di un progetto scritto naturalmente in Erlang, di fatto è uno script di circa 85k, il quale è in grado di eseguire le richieste più comuni, ovvero la compilazione, la generazione di documentazione, la pulizia del progetto ed il lancio dei test EUnit; è supportata anche la generazione di scheletri di applicazione, dato un file template che descriva cosa debba essere copiato.

In realtà, la funzionalità più utile è la possibilità di gestire le dipendenze: ciascuno dei comandi di cui sopra, infatti, controlla se esiste una sottocartella deps, e se esiste ciascuno dei progetti lì contenuti viene a sua volta compilato prima del progetto principale; unico vincolo: sia le dipendenze sia l’applicazione principale devono essere configurate utilizzando il behaviour application, ed in particolare la soluzione migliore rimane inserire nella directory sorgente un file del tipo:

{application, myapp,
 [{description, "Myapp description"},
  {vsn, "x.y"},
  {modules, []},
  {registered, []},
  {mod, {myapp_app, []}},
  {env, []},
  {applications, [kernel, stdlib, crypto]}]}.

con la configurazione dei moduli vuota, e questa viene automaticamente riempita dai moduli effettivamente compilati e copiata nella directory binaria in fase di compilazione; naturalmente, non è sufficiente avere tale file, servono anche i sorgenti correttamente configurati per utilizzare il behaviour. Unico bug: se una delle dipendenze non è un’applicazione, il sistema restituisce errore, mentre io personalmente avrei preferito che si limitasse ad un warning, o comunque a compilare i sorgenti da src a ebin; nulla di grave, la maggior parte dei progetti Erlang presenti online sono anche applicazioni, ed anche voi se scrivete un progetto conviene che utilizziate la medesima modalità, che vi permette anche di gestire le release e l’aggiornamento (automatico).

La configurazione avviene tramite un file rebar.config, in cui si possono specificare le directory del progetto ed alcune opzioni minori, peraltro tutte documentate nella pagina linkata sopra.

Non viene distribuito ufficialmente con Erlang, ma è decisamente un ottimo strumento, quantomeno costruito appositamente per questo linguaggio, rispetto a makefile che è sicuramente flessibile ma richiede qualche linea di codice in più per supportare bene queste applicazioni.