Come patchare un pacchetto

From Paldo

Jump to: navigation, search

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

Personal tools