-->

giovedì 27 giugno 2013

Packaging recipe: come aggiornare automaticamente il proprio PPA su Launchpad

Hai creato un nuovo programma open source e vuoi caricare i sorgenti online?
Su Launchpad ci sono principalmente due vie per farlo. La prima, caricando i sorgenti su una branch e la seconda, aprendo un PPA.
I vantaggi del PPA sono molteplici: gli utenti debian/ubuntuntiani possono aggiungerli al proprio sistema per scaricare sempre, senza alcuno sforzo, l'ultima versione disponibile del pacchetto.

Immaginiamo ora che i sorgenti del programma siano su una branch. Dopo alcune modifiche, si decide di rilasciare una nuova versione. Il maintainer quindi scarica la branch, la pacchettizza (aggiunge la cartella /debian) e la compila sul suo PC per tutte le release di Ubuntu che vuole supportare (es. Precise, Quantal, Raring ecc...). Infine, carica il tutto sul proprio PPA.

Tutto questo processo può esser svolto autonomamente e senza il minimo intervento umano da Launchpad, creando un Packaging recipe.

Crearlo non è difficile, basta avere una branch già pronta con i sorgenti del programma dentro (il mio consiglio è di creare una seconda branch che contenga solamente la cartella /debian, per evitare di confonderla con il resto del codice).



Ecco 5 piccoli passi che in poco tempo vi permetteranno di avere un Packaging recipe funzionante (nelle foto il pacchetto si chiama "numix-icon-theme"):

1. Fare click sulla propria branch principale (dove sono caricati i sorgenti del programma);



2. Selezionare l'opzione "Create packaging recipe";



3. Scegliere il nome (che verrà utilizzato nell'URL del recipe), la descrizione (opzionale), se il pacchetto dev'essere compilato automaticamente ogni giorno (in caso contrario la compilazione partirà solo su richiesta dell'utente). Specificare se creare un nuovo PPA per ospitare i pacchetti o utilizzarne uno già presente. Infine, selezionare le release di Ubuntu per le quali il pacchetto sarà disponibile.



4. Ora viene la parte più complessa. Nel box "Recipe text", in modo predefinito saranno presenti le
seguenti righe:

# bzr-builder format 0.3 deb-version {debupstream}-0~{revno}
lp:<nome_branch_principale>

La parte dopo "deb-version", indica come sarà calcolata la versione dei pacchetti da creare. In questo caso, sarà usata l'ultima versione presente nel changelog seguita da un -0~ e dal numero di revisione della branch dalla quale il codice sarà copiato.

È possibile scegliere fra i seguenti valori:

{date}
{debupstream}
{revno}
{revno:<branch name>}
{time}



Ad esempio, con la seguente riga:
bzr-builder format 0.3 deb-version {debupstream}~ppa+{date}
 la versione del pacchetto conterrà la versione del debian/changelog seguita da  ~ppa+ seguita dalla data in cui sono state caricate le modifiche (es. nomepacchetto - 4~ppa+201306270~saucy1).

Sotto la prima riga, viene indicata la branch principale dalla quale attingere per le modifiche (dovrebbe essere già stata aggiunta in modo predefinito). Se sulla branch principale sono presenti solo i sorgenti del programma, ma non la pacchettizzazione (/debian), è possibile specificare una seconda branch, da cui fare un merge prima della compilazione.

Ad esempio, se la pacchettizzazione è caricata sulla branch di nome "packaging" su lp:~paolorotolo/<pacchetto>/packaging, il recipe sarà di conseguenza:

# bzr-builder format 0.3 deb-version {debupstream}~ppa+{date}
lp:<pacchetto>
merge packaging lp:~paolorotolo/<pacchetto>/packaging
5. Fare click su "Create Recipe".


Avete finito! 

Ora non vi resta che attendere che i pacchetti vengano compilati sul PPA da voi indicati (potrebbe volerci anche delle ore). Se avete impostato tutto in modo corretto, Launchpad ogni giorno controllerà se ci sono nuove revisioni sulla branch e, se sì, caricherà una nuova versione del pacchetto sul PPA.