• Non ci sono risultati.

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

Documenti correlati