Premesso che a parte un pacchetto reperibile su slackbuilds (schedtool) non ho avuto alcun problema di sorta, volevo capire alcune cose per ridurre un po i tempi (16 ore anche se un bel po' del tempo l'ha passata a compilare solo webkit).
Per chi non lo sapesse/avesse mai fatto e per chiarire meglio, il sorgente android una volta scaricato con gli appositi tool si presenta come un source tree enorme con sorgenti che vanno da librerie di sistema al framework java fino ad arrivare alle singole applicazioni.
La compilazione avviene sfruttando dei 'semplici' makefile, di fatto per far partire la compilazione full, una volta fatti alcuni semplici passi basta dare un
Codice: Seleziona tutto
make {nome in codice del device}
Dopo questa premessa passiamo ai chiarimenti. Sui vari wiki ufficiali e non i passi per velocizzare il tutto (fermo restando che la prima volta sarà sempre biblicamente lenta) sono quelli che piu' o meno da pacchettizzatore conoscevo già ma ovviamente la cosa piu' complessa che io abbia mai compilato è stata la openjdk.
Il primo suggerimento è quello di aumentare il parallelismo dei task (make -jnum_jobs) e in base a varie fonti si suggerisce di usare la seguente formula
Codice: Seleziona tutto
numero_dei_core+1
Codice: Seleziona tutto
numero_dei_core+2
E qui scatta la prima domanda....visto che di default android sembra compilare con un numero di jobs pari a 2(come il numero di core che ha il mio portatile) ha veramente senso aumentarli!??! In base alla mia esperienza anche come programmatore ho appreso (soprattutto empiricamente) che alla fine conta il numero di core 'fisici'.. qualsiasi task asincrono ulteriore non viene effettivamente eseguito in parallelo, quindi tecnicamente anche a metterne 8 sempre realmente 2 per volta ne fa.
Un altro suggerimento è quello di usare ccache per la compilazione delle parti in c/c++. Ora dato il soggetto della compilazione usarlo mi porta alla valutazione legata alla quantità di spazio necessaria (io sto facendo un port su diversi dispositivi quindi mi troverò nella situazione di dover rifare la compilazione per architetture leggermente differenti e quindi la cache generata per uno smartphone potrebbe non essere utile all'altro)
Quindi la seconda domanda è.. in base alla vostra esperienza quanto in media si riesce ad ottimizzare considerando che comunque data la natura del make dopo la prima compilazione (che sarebbe lunga anche usando ccache) viene aggiornato solo il delta!?!?
Questa domanda scaturisce dal fatto che se il guadagno non è eccessivo a sto punto preferisco duplicare il source tree e sfruttare la compilazione per delta piuttosto che buttare un sacco di gb per poi risparmiare 'solo' 2-3 ore su 16.
Grazie a tutti in anticipo