Aktualizováno dne 11. března 2011 - Scribus – vložení tabulky z Writeru

Linux v praxi

Různé drobnosti


Vytvoření patche

Návod pro totální lamy, jako jsem třeba já :-)

Používám na správu fotek program digiKam. Jenže je v něm nastaveno prťavé písmo, které v mém případě bylo naprosto nečitelné. Hledal jsem, co s tím. Někteří rádci mi radili, abych si zvětšil písmo v systému, což by sice pomohlo, ale řešení to bylo neakceptovatelné. Až mi jeden dobrodinec programátor pomohl najít řešení. Jenže jsem musel upravovat zdrojáky digiKamu. S každou novou kompilací jsem jak pitomec vyhledával dané soubory a opravoval v nich pokaždé to samé.

Teď jsem se konečně dokopal k tomu, vytvořit si na to patche. Jen jsem nevěděl, jak. Nakonec jsem to s pomocí různých návodů na webu a nápovědy k programům diff a patch dal dokupy. :-)

Vytvoření patche

Před úpravou každého souboru jsem si ho zkopíroval do souboru, kterému jsem přidal příponu orig. Poté jsem v původním souboru udělal potřebné úpravy. Takhle jsem si nachystal všechny soubory, v nichž se provádí nějaká změna.

Přesunul jsem se do adresáře, ve kterém se budu nacházet, až budu patch aplikovat, v mém případě tedy do adresáře, v němž se spouští při kompilaci ./configure && make && make install. A pro každý patchovaný soubor jsem spustil nějaký takový příkaz (uvádím konkrétní případ):

diff -C1 digikam/digikam/albumiconview.cpp.orig digikam/digikam/albumiconview.cpp > patch-albumiconview.diff

Tím jsem vytvořil soubor patch-albumiconview.diff, který použiju pro patchování. Stejným způsobem si vytvořím další potřebné soubory.

Zmíněný konkrétní soubor pak vypadá takto:

*** digikam/digikam/albumiconview.cpp.orig      2008-07-16 21:05:55.000000000 +0200
--- digikam/digikam/albumiconview.cpp   2008-07-29 21:59:35.000000000 +0200
***************
*** 2055,2058 ****
      {
!         d->fnCom.setPointSize(fnSz-1);
!         d->fnXtra.setPointSize(fnSz-2);
      }
--- 2055,2058 ----
      {
!         d->fnCom.setPointSize(fnSz);
!         d->fnXtra.setPointSize(fnSz-1);
      }
***************
*** 2061,2064 ****
          fnSz = d->fnReg.pixelSize();
!         d->fnCom.setPixelSize(fnSz-1);
!         d->fnXtra.setPixelSize(fnSz-2);
      }
--- 2061,2064 ----
          fnSz = d->fnReg.pixelSize();
!         d->fnCom.setPixelSize(fnSz);
!         d->fnXtra.setPixelSize(fnSz-1);
      }

Aplikace patche

Vzhledem k tomu, že v patchsouboru máme cestu k patchovanému souboru, spočívá aplikace v následujícím příkazu, spuštěného ve stejném adresáři, kde jsme patch tvořili:

  patch -p0 < /cesta/k/patch-albumiconview.diff

Parametr -p říká, že se má použít cesta uvedená v patchsouboru. Bez něj by se vás program patch zeptal, který soubor má patchovat.

Výsledný PKGBUILD pro zmíněný digiKam pak vypadá nějak takto:

pkgname=digikam
pkgver=0.9.4
pkgrel=2
pkgdesc="Digital photo management application for kde"
arch=(i686 x86_64)
license=('GPL')
url="http://digikam.sourceforge.net"
depends=('sqlite3' 'libkipi>=0.1.6' 'libgphoto2' 'exiv2>=0.17.1' 'lcms' 'dcraw' 'libkexiv2>=0.1.7' 'jasper>=1.900.1' 'lcms' 'libkdcraw>=0.1.4')
makedepends=('pkgconfig')
source=(http://garr.dl.sourceforge.net/sourceforge/digikam/${pkgname}-${pkgver}.tar.bz2 \
      patch-albumiconview.diff \
      patch-themediconview.diff \
      patch-albumfiletip.diff \
      patch-histogramwidget.diff \
      patch-thumbbar.diff
)
replaces=('digikamimageplugins')
md5sums=('b0f3fa00bd054b0497146e6ce24dab7c')

build() {
  cd ${startdir}/src/${pkgname}-${pkgver}

    #Uprava velikosti pisma, ktere je necitelne drobne
    patch -p0 < ../patch-albumiconview.diff || return 1
    patch -p0 < ../patch-themediconview.diff || return 1
    patch -p0 < ../patch-albumfiletip.diff || return 1
    patch -p0 < ../patch-histogramwidget.diff || return 1
    patch -p0 < ../patch-thumbbar.diff || return 1

   #Optimisations which work for i686 only
   if [ "$CARCH" = "i686" ];
   then ./configure --prefix=/opt/kde --disable-debug --enable-gcc-hidden-visibility --without-included-sqlite3 --without-arts
   else ./configure --prefix=/opt/kde --disable-debug --without-included-sqlite3 --without-arts
   fi

   make || return 1
   make DESTDIR=${startdir}/pkg/ install
 }

Používáte browser CCBot/2.0 (http://commoncrawl.org/faq/)
„Láska vdaných žen je nejcennější na světě, manželé o tom ovšem nevědí.“ Oscar Wilde