Come patchare un pacchetto
From Paldo
Contents |
[edit] Come applicare le patch con Upkg
Scritta da Paolo Stivanin nel marzo 2009
[edit] Premessa
Questo howto ti spiegherà come patchare dei sorgenti usando upkg.
[edit] Un problema concreto
Io ho una scheda TV PCI nella mia Paldo-box. Purtroppo non c'è una applicazione gnome per guardare la tv nel main repo di Paldo quindi ho deciso di compilare e installare zapping . Purtroppo ho avuto un errore nel make:
In file included from io-v4l2k.c:55:
videodev2k.h:19:46: error: linux/compiler.h: No such file or directory
make[4]: *** [io-v4l2k.lo] Error 1
make[4]: Leaving directory `/home/pol/temp/zvbi-0.2.19.orig/src'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/pol/temp/zvbi-0.2.19.orig/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/pol/temp/zvbi-0.2.19.orig/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/pol/temp/zvbi-0.2.19.orig'
make: *** [all] Error 2
Sarebbe stato semplice commentare la linea del linux/compiler.h ma è meglio fare il giro lungo perchè prima o poi sarà necessario sapere applicare una patch ;-)
[edit] Creare il file diff
Innazitutto scaricate i sorgenti e scompattateli. Io ho aggiunto il suffisso ".orig" alla cartella e ho fatto una copia della suddetta senza il suffiso. Le mie directorys ora sono:
[pol@pol-laptop:~/temp]$ ls -la
[...]
drwxr-xr-x 9 nicolas users 4096 2006-03-29 17:01 zvbi-0.2.19
drwxr-xr-x 9 nicolas users 4096 2006-03-29 17:03 zvbi-0.2.19.orig
Entriamo nella cartella di lavoro, quella senza il suffisso, e fixiamo il bug. Usciamo dalla cartella di lavoro e creiamo il diff-file usando il comando diff. Nel mio esempio ho cambiato il file videodev2k.h che può essere trovato nella cartella src della mia cartella di lavoro (zvbi-0.2.19/src/videodev2k.h). Ora ho creato il diff-file col comando:
[pol@pol-laptop:~/temp]$ diff -puNr zvbi-0.2.19.orig zvbi-0.2.19 > zvbi-0.2.19-compiler.h-1.patch
[edit] Comprimere il file
Ora usiamo bzip2 per comprimere la patch e copiamo i sorgenti originali e l'archivio con la patch nel repository. Il mio repo ora sarà così:
[pol@pol-laptop:~/]$ ls -la PaldoRepo/sources/zvbi-0.2/
[...]
-rw-r--r-- 1 pol users 344 2006-03-29 16:30 zvbi-0.2.19-compiler.h-1.patch.bz2
-rw-r--r-- 1 pol users 722143 2006-03-29 15:55 zvbi-0.2.19.tar.bz2
[edit] Informare Upkg della patch
Ora creiamo un file spec. La parte importante è aggiungere patch-directive between la tag archive- tag (<patch name="zvbi-0.2.19-compiler.h-1"/>). Come puoi vedere non devi aggiungere il suffisso ".patch.bz2". In questo caso Upkg cercherà automaticamente il file zvbi-0.2.19-compiler.h-1.patch.bz2 e lo applicherà automagicamente durante il processo di installazione.
<?xml version="1.0"?>
<package name="zvbi-0.2">
<description>the vertical blanking interval (VBI) library</description>
<releases>
<release version="0.2.19" revision="1" branch="testing">
<deps>
<dep name="libpng"/>
</deps>
<build>
<script>
<archive name="zvbi-$VERSION">
<patch name="zvbi-$VERSION-compiler.h-1"/>
<cmd>./configure --prefix=/usr
--infodir=/usr/share/info
--mandir=/usr/share/man
--sysconfdir=/etc</cmd>
<cmd>make -j 2</cmd>
<cmd>make install</cmd>
</archive>
</script>
</build>
</release>
</releases>
</package>
[edit] Compilare ed installare
Ora siamo pronti a compilare ed installare (vedere guida precedente).
[pol@pol-laptop:~]# upkg-build zvbi-0.2
Generating script...
Writing script...
Executing script...
The following extra packages will be installed:
zvbi-0.2
The following packages will be built from source:
zvbi-0.2
Do you want to continue? [Y/n]
Building zvbi-0.2-0.2.19-1 (testing)...
[pol@pol-laptop:~]#
[edit] Ora potrai usare la tua applicazione.
Se vuoi vedere il file di log basta andare qui: /var/lib/upkg/logs/PACKAGE-VERSION.log.bz2. Nel mio caso: /var/lib/upkg/logs/zvbi-0.2-x86-glibc-2.4-gcc-4.1-1-0.2.19-1.log.bz2

