Funzionalità avanzate

Generare parzialmente un modulo

È possibile generare solo parti di un singolo modulo di KDE. Per esempio, potresti voler compilare solo un programma di un modulo. kdesrc-build ha delle funzionalità per facilitare questa scelta; ci sono diversi modi per farlo.

Rimuovere delle cartelle da una generazione

È possibile scaricare un intero deposito ma far trascurare al sistema alcune cartelle durante la generazione. Questo richiede che il modulo utilizzi CMake e che il sistema di generazione del modulo permetta che la cartella da rimuovere sia opzionale.

Questa azione è controllata con l'opzione do-not-compile.

Importante

Questa opzione richiede almeno che il sistema di generazione del modulo sia riconfigurato dopo averlo cambiato. Questo si fa usando il comando kdesrc-build --reconfigure modulo.

Per rimuovere la cartella python dal processo di generazione di kdebindings:

module kdebindings
  do-not-compile python
end module

Nota

Questa funzione dipende da alcune convenzioni comuni usate nella maggior parte dei moduli di KDE. Perciò potrebbe non funzionare con tutti i programmi.

Supporto per rami e tag in kdesrc-build

Cosa sono i rami e i tag?

Git supporta la gestione della cronologia del codice di KDE. KDE usa questo supporto per creare rami di sviluppo e per segnare il deposito ogni volta che c'è un nuovo rilascio.

Per esempio, gli sviluppatori di KMail potrebbero lavorare a una nuova funzionalità in un ramo diverso per non interferire con la versione usata dagli altri sviluppatori. Questo ramo contiene dei lavori in corso, mentre il ramo principale (detto master) potrebbe averne altri.

Un tag, invece, è un punto specificato nel codice sorgente in un certo momento. Ciò viene usato dalla squadra di amministrazione di KDE per segnare una versione del codice sorgente adatta al rilascio, lasciando allo stesso tempo che gli sviluppatori possano lavorare sul codice.

Come usare rami e tag

Il supporto per rami e tag viene gestito da una serie di opzioni, che vanno da una richiesta generica di una versione allo scaricamento di un URL specifico per gli utenti avanzati.

Il modo più semplice è usare le opzioni branch e tag. Devi solo usare l'opzione insieme al nome del ramo o tag voluto del modulo, e kdesrc-build cercherà di determinare la posizione giusta all'interno del deposito di KDE da cui scaricare. Per la maggior parte dei moduli di KDE funziona tutto bene.

Per scaricare kdelibs di KDE 4.6 (che è noto semplicemente come il ramo 4.6):

module kdelibs
  branch 4.6
  # altre opzioni...
end module

Oppure, per scaricare kdemultimedia per il rilascio KDE 4.6.1:

module kdemultimedia
  tag 4.6.1
  # altre opzioni...
end module

Suggerimento

Puoi specificare un valore globale per il ramo. Se lo fai, non dimenticarti di specificare un ramo diverso per i moduli che non dovrebbero usare quello globale!

Fermare prima la generazione

La generazione normalmente prosegue anche se si verificano problemi

kdesrc-build aggiornerà, genererà e installerà normalmente tutti i moduli presenti nell'elenco dei moduli specificato da generare, anche se un modulo restituisce un errore durante la generazione. Questa è di solito una comodità che ti permette di aggiornare i pacchetti software anche se viene fatto un semplice errore in uno dei depositi dei sorgenti durante lo sviluppo che causa la rottura della generazione.

Tuttavia, potresti voler fermare le attività di kdesrc-build quando un modulo non riesce a generare e installare. Questa operazione ti permette di risparmiare il tempo che perderesti nel tentare di fare progressi quando i moduli restanti nell'elenco di generazione non sono in grado di generare correttamente o, in special modo, se non hai ancora generato correttamente i moduli dell'elenco.

Non fermare prima con --no-stop-on-failure

Il metodo principale per eseguire questa operazione è usare l'opzione a riga di comando --no-stop-on-failure quando esegui kdesrc-build.

Questa opzione può essere impostata anche nel file di configurazione affinché diventi la modalità operativa normale.

È anche possibile istruire kdesrc-build al tempo di esecuzione per fermare la generazione dopo il completamento del modulo corrente su cui sta lavorando. È l'opposto dell'interruzione di kdesrc-build con un comando come Ctrl+C, che interrompe kdesrc-build immediatamente, perdendo però l'avanzamento del modulo corrente.

Importante

L'interruzione di kdesrc-build durante l'installazione di un modulo, quando è abilitata l'opzione use-clean-install, significa che il modulo interrotto non sarà disponibile fino a quando kdesrc-build non sarà in grado di generare correttamente il modulo.

Se hai la necessità di interrompere kdesrc-build, in questa situazione, spegnendolo in modo non elegante, prova almeno a evitare di farlo mentre kdesrc-build sta installando un modulo.

Fermare kdesrc-build con eleganza quando stop-on-failure è «false»

Come detto sopra, è possibile spegnere prima kdesrc-build in modo elegante una volta che ha completato il modulo su cui sta lavorando. Per farlo, devi inviare il segnale HUP di POSIX a kdesrc-build.

Puoi farlo con un comando come pkill (nei sistemi Linux®), nel modo seguente:

$ pkill -HUP kdesrc-build

Una volta eseguito correttamente, nell'output di kdesrc-build comparirà un messaggio simile a:

[ build ] recv SIGHUP, will end after this module

Nota

kdesrc-build potrebbe mostrare più volte questo messaggio a seconda del numero di singoli processi di kdesrc-build attivi. Ciò è normale e non è un'indicazione di errore.

Una volta che kdesrc-build ha riconosciuto il segnale, fermerà l'elaborazione dopo che il modulo corrente è generato e installato. Se kdesrc-build sta ancora aggiornando il codice sorgente quando viene ricevuta la richiesta, kdesrc-build si fermerà dopo che viene completato l'aggiornamento del codice sorgente del modulo. Una volta che entrambi i processi di aggiornamento e generazione vengono fermati prima, kdesrc-build restituirà i risultati parziali e si chiuderà.

Come kdesrc-build cerca di far riuscire la generazione

Rigenerazioni automatiche

kdesrc-build includeva delle funzionalità per cercare automaticamente di rigenerare un modulo dopo un errore (e a volte questo tentativo funzionava, a causa di imperfezioni nel sistema di generazione del tempo). Grazie al passaggio a CMake, il sistema di generazione non presenta più questi problemi, e quindi kdesrc-build non cercherà di generare un modulo più di una volta. Ci sono tuttavia situazioni in cui kdesrc-build cercherà autonomamente di fare qualcosa:

  • Se cambi le opzioni configure-flags o cmake-options di un modulo, kdesrc-build se ne accorgerà e rieseguirà automaticamente configure o cmake per quel modulo.

  • Se il sistema di generazione non esiste (anche se kdesrc-build non l'ha eliminato), kdesrc-build lo ricreerà automaticamente. Ciò è utile per poter effettuare un --refresh-build completo per un modulo particolare senza doverlo fare su altri.

Rigenerare un modulo manualmente

Se cambi le impostazioni di un'opzione di un modulo, o cambia il codice sorgente del modulo in un modo che kdesrc-build non riconosce, potresti dover rigenerare il modulo a mano.

Per farlo basta eseguire kdesrc-build --refresh-build modulo.

Se volessi invece che kdesrc-build rigenerasse il modulo automaticamente durante il prossimo aggiornamento normale della generazione, puoi creare un file speciale. Ogni modulo ha una cartella di generazione. Se crei un file di nome refresh-me nella cartella di generazione di un modulo, kdesrc-build rigenererà il modulo la prossima volta che partirà il processo di generazione, anche se normalmente avrebbe effettuato la più veloce generazione incrementale.

Suggerimento

Come impostazione predefinita, la cartella di generazione è ~/kde/build/modulo/. Se cambi l'impostazione dell'opzione build-dir, usa quella invece di ~/kde/build.

Rigenerazione usando refresh-me per il modulo kdelibs:

% touch ~/kdesrc/build/kdelibs.refresh-me
% kdesrc-build

Cambiare le impostazioni delle variabili d'ambiente

Normalmente kdesrc-build usa l'ambiente presente all'avvio quando esegue i programmi per effettuare aggiornamenti e generazioni. Ciò è utile per quando si esegue kdesrc-build dalla riga di comando.

Tuttavia, potresti voler cambiare le impostazioni delle variabili d'ambiente per cui kdesrc-build non fornisce direttamente un'opzione (per esempio, per configurare delle variabili d'ambiente richieste se chiami kdesrc-build da un programma come Cron). Ciò è possibile con l'opzione set-env.

Al contrario della maggior parte delle opzioni, può essere impostata più volte, e accetta due voci, separate da spazi. La prima è il nome della variabile d'ambiente da impostare, e il resto della riga è il suo valore.

Impostare DISTRO=BSD per tutti i moduli:

global
  set-env DISTRO BSD
end global

Riprendere le generazioni

Riprendere una generazione non riuscita o annullata

Puoi dire a kdesrc-build di iniziare a generare da un modulo diverso da quello che sceglierebbe normalmente. Ciò può essere utile quando una serie di moduli non è riuscita, o se hai annullato una generazione a metà. Puoi controllare questo comportamento con le opzioni --resume-from e --resume-after.

Nota

Alcune versioni precedenti di kdesrc-build saltavano l'aggiornamento del sorgente alla ripresa di una generazione. Questa non è più l'impostazione predefinita, ma puoi sempre usare l'opzione da riga di comando --no-src per saltare l'aggiornamento.

Riavvio della generazione a partire da kdebase:

% kdesrc-build --resume-from=kdebase

Riprendere la generazione dopo kdebase (nel caso che hai corretto il problema manualmente e hai installato il modulo da te):

% kdesrc-build --resume-after=kdebase

Se l'ultima generazione di kdesrc-build si è conclusa con un errore, puoi usare anche l'opzione --resume, che riprende l'ultima generazione a partire dal modulo che ha provocato l'errore. Gli aggiornamenti di codice sorgente e metadati vengono saltati (ma se ti servono, è di solito meglio usare --resume-from).

Ignorare dei moduli in una generazione

Analogamente a come si può riprendere la generazione di un modulo, si può invece scegliere di aggiornare e generare tutto normalmente, ma ignorando una serie di moduli.

Puoi farlo usando l'opzione --ignore-modules. Questa opzione dice a kdesrc-build di ignorare tutti i moduli sulla riga di comando durante l'aggiornamento e la generazione.

Ignorare extragear/multimedia e kdereview in un'esecuzione completa:

% kdesrc-build --ignore-modules extragear/multimedia kdereview

Cambiare le opzioni dalla riga di comando

Cambiare le opzioni globali

Puoi cambiare le impostazioni delle opzioni lette dal file di configurazione direttamente dalla riga di comando. Questa modifica si sostituirà alle impostazioni del file di configurazione, ma solo temporaneamente. Ha effetto solo fintanto che è presente sulla riga di comando.

kdesrc-build ti permette di cambiare opzioni con un nome come nome-opzione passando un argomento sulla riga di comando nella forma --nome-opzione=valore. kdesrc-build capirà se l'opzione non è tra le proprie, e ne cercherà il nome nel suo elenco di opzioni. Se non lo troverà, ti avvertirà, altrimenti ricorderà il valore impostato e sostituirà qualsiasi impostazione del file di configurazione.

Impostare l'opzione source-dir a /dev/null per fare una prova:

% kdesrc-build --pretend --source-dir=/dev/null

Cambiare le opzioni dei moduli

È anche possibile cambiare le opzioni solo per un modulo specifico. La sintassi è simile: --modulo,nome-opzione=valore.

Questa modifica si sostituisce a qualsiasi impostazione simile per il modulo trovata nel file di configurazione, e si applica solo quando l'opzione viene passata dalla riga di comando.

Usare una diversa cartella di generazione per il modulo kdeedu:

% kdesrc-build --kdeedu,build-dir=diversa