trovano in rpm/BUILD/xxx
-p pkg -m scbuild
In questo modo, l’esecuzione passa alla sezione %Build del file spec. Questo comando esegue l’opzione -scbuild dei rpm. Questa opzione assume che prima si sia eseguito il prep del pacchetto.
-p pkg -m scinstall
In questo modo, si esegue la sezione %Install del file spec. Questo comando esegue l’opzione -scinstall dei rpm. Questa opzione assume che prima siano stati eseguiti prep e scbuild del pacchetto.
-p pkg -m scdeploy
In questo modo, LTIB internamente esegue la sezione %Install del file spec del pacchetto, poi crea un rpm temporaneo e lo installa nell’area rootfs. Questo modo assume che sia stato eseguito prima il prep e poi scbuild del pacchetto.
-p pkg -m patchmerge
In questo modo, LTIB pu`o generare una patch delle differenze tra i sorgenti spacchettati (dopo aver eseguito make distclean) e i sorgenti di questo pac-chetto prima dei cambiamenti. Questa patch viene salvata in LPP e il file spec viene aggiornato con i riferimenti di questa nuova patch. Lo scopo `e di permettere ai sviluppatori di prelevare i cambiamenti per un pacchetto dopo che hanno completato il loro lavoro/test.
3.6 Alcuni esempi generali
3.6.1 Esempio di work-flow di installazione di un pacchetto
1. Spacchettare i sorgenti e applicare tutte le patch ./ltib -m prep -p <package>
2. Editare o aggiungere file sotto la directory rpm/BUILD/package/ 3. Costruire il pacchetto con eventuali cambiamenti
./ltib -m scbuild -p <package>
4. Una volta che il pacchetto `e stato costruito con successo, eseguire la fase di installazione
./ltib -m scinstall -p <package>
5. Testare il pacchetto prima di apportare i cambiamenti ./ltib -m scdeploy -p <package>
6. Ripetere i passi 2-5 fino a che non si ottiene i risultati desiderati 7. Generare una patch e aggiornare il file spec
./ltib -m patchmerge -p <package> 8. Manualmente eliminare i file di patch
9. Costruire e installare il pacchetto ./ltib --p <package>
10. Una volta ottenuto tutti i cambiamenti, caricare la patch in GPP http://www.bitshrine.org/cgi-bin/gpp upload.cgi
11. Caricare anche il file spec se si ha i permessi di scrivere in CVS cvs commit dist/lfs-5.1/<pkg>/<pkg>.spec
Se non si ha i permessi di scrivere in CVS, si pu`o spedire la patch alla mail list di LTIB.
3.6.2 Come aggiungere un nuovo pacchetto
Supponiamo di avere la nostra directory con i file sorgenti:
1. Pulire la directory dei sorgenti e poi costruire una tarball, per esempio: cd <pacchetto>-x.y
make clean cd ..
tar zcvf <pacchetto>-x.y.atr.gz <pacchetto>-x.y 2. Spostare il pacchetto tarball alla LPP cos`ı LTIB lo pu`o trovare
mv <pacchetto>-x.y.tar.gz /opt/freescale/pkgs/ 3. Creare un file spec usando il template esistente
mkdir dist/lfs-5.1/<pacchetto>
cp dist/lfs-5.1/template/template.spec dist/lfs-5.1/ <pacchetto>/<pacchetto>.spec
3.6. ALCUNI ESEMPI GENERALI 53 4. Editare il file e apportare le modifiche in base alle necessit`a. I campi
da modificare sono: Campo Descrizione
Summary Descrizione del pacchetto
Name Nome del pacchetto (`e il nome del tarball)
Version Versione del pacchetto (specificato x.y nel tarball) Release Inizia con 1 e viene modificato ogni
volta che il file spec viene modificato License Esempio GPL/LGPL/BSD
Group Se esiste su un rpm, copia da rpm -qi. Nel caso contrario, scegli qualcosa da /usr/share/doc/rpm-/GROUPS %Build Spesso `e richiesto di aggiungere
-host=$CFHOST -build=% build 5. Spacchettare il nuovo pacchetto
./ltib -m prep -p <pacchetto>
6. Eseguire qualche cambiamento se `e necessario per ottenere la compi-lazione corretta
7. Costruire il pacchetto con le modifiche ./ltib -m scbuild -p <pacchetto>
8. Quando il pacchetto compila in modo corretto, passare alla fase di installazione
./ltib -m scinstall -p <pacchetto>
9. Installare il pacchetto nella directory del root filesystem NFS ./ltib -m scdeploy -p <pacchetto>
10. Una volta che `e stato eseguito tutto correttamente, prelevare le modi-fiche
./ltib -m patchmerge <pacchetto>
Qualsiasi modifica che `e stata fatta pu`o essere messa in un file patch e copiata in /opt/freescale/pkgs.
11. Caricare i sorgenti in GPP per renderli disponibili al pubblico cvs add dist/lfs-5.1/<pacchetto>
cvs add dist/lfs-5.1/<pacchetto>/<pacchetto>.spec cvs commit -m "added new_package" dist/lfs-5.1/
<pacchetto>/<pacchetto>.spec
Per introdurre un nuovo pacchetto nel file di configurazione del sistema, si deve seguire i seguenti passi (esempio per il pacchetto strace):
1. Editare il file config/userspace/package.lkc, questo `e ordinato in modo alfabetico. Appena dopo PKG SKELL aggiungiamo l’entry:
config PKG_STRACE bool "strace"
2. Editare il file config/userspace/pkg map. Questo `e ordinato in base a come vengono costruiti i pacchetti (in base quindi anche alle dipen-denze dei pacchetti). Aggiungere quindi il pacchetto in base all’ordine che deve essere costruito e aggiungere una entry al file, per esempio:
PKG_GDB = gdb
PKG_STRACE = strace 3. Caricare i cambiamenti
cvs commit -m "add new_package"
3.6.3 Come aggiungere un demone all’avvio
1. Aggiungere il pacchetto che fornisce il servizio (come sopra)
2. Scrivere un script di avvio. La via pi`u semplice `e di prendere uno script gi`a esistente e di modificarlo. I script non devono avere dei prefissi numerici. Per esempio:
etc/rc.d/init.d/nome
3. Aggiungere una entry nel file config/userspace/sysconfig.lkc, per esem-pio:
config SYSCFG_START_NAMED depend PKG_NAMED
bool "start named (nameserver)" default y
3.7. CODICI SORGENTI 55