Differenze tra le versioni di "Patch"
Riga 62: | Riga 62: | ||
</pre> | </pre> | ||
− | e la applichiamo nella sezione '''%prep''' con: | + | e la applichiamo nella sezione '''%prep''' subito dopo che l'archivio sorgente viene scompattato con la macro '''%setup'''. Esempio: |
<pre> | <pre> | ||
+ | %prep | ||
+ | %setup -q | ||
%patch0 -p1 | %patch0 -p1 | ||
</pre> | </pre> |
Versione delle 09:29, 30 giu 2008
Una patch è normalmente costituita da un file che contiene, in uno specifico formato, informazioni circa le differenze da applicare ad uno o più file di codice sorgente.
La seguente patch modifica il codice sorgente di mpeg4ip per la compilazione con GCC 4:
--- mpeg4ip-1.5.0.1/common/video/iso-mpeg4/src/type_basic.cpp 2005-05-04 21:56:00.000000000 +0200 +++ mpeg4ip-1.5.0.1.patched/common/video/iso-mpeg4/src/type_basic.cpp 2008-06-06 01:35:06.000000000 +0200 @@ -317,13 +317,13 @@ iHalfY = m_vctTrueHalfPel.y - iMVY * 2; } -Void CMotionVector::setToZero (Void) +Void CMotionVector::setToZero () { memset (this, 0, sizeof (*this)); } // RRV insertion -Void CMotionVector::scaleup (Void) +Void CMotionVector::scaleup () { if(m_vctTrueHalfPel.x == 0){ m_vctTrueHalfPel_x2.x = 0;
Poiché il codice sorgente è stato scritto per versioni precedenti del compilatore GCC occore applicare (tra le altre) questa modifica.
Creazione di una patch
Supponendo di avere in locale i sorgenti del pacchetto RPM per il quale andiamo a creare ed applicare la patch, lo prepariamo nella cartella /usr/src/RPM/BUILD con il comando:
rpmbuild -bp mpeg4ip.spec
Effettuiamo una copia della cartella sorgente:
cd /usr/src/RPM/BUILD cp -a mpeg4ip-1.5.0.1 mpeg4ip-1.5.0.1.orig
Entriamo nella cartella mpeg4ip e modifichiamo il file common/video/iso-mpeg4/src/type_basic.cpp sostituendo
Void CMotionVector::setToZero (Void)
con
Void CMotionVector::setToZero ()
e
Void CMotionVector::scaleup (Void)
con
Void CMotionVector::scaleup ()
A questo punto torniamo nella cartella di build e creiamo la patch utilizzando il comando diff con l'opzione -Nru:
cd /usr/src/RPM/BUILD diff -Nru mpeg4ip-1.5.0.1.orig mpeg4ip-1.5.0.1 > ../SOURCES/mpeg4ip-1.5.0.1-gcc4.patch
Applicazione di una patch
Aggiungiamo nello specfile di mpeg4ip il nome del file contenente la patch:
Patch0: %{name}-1.5.0.1-gcc4.patch
e la applichiamo nella sezione %prep subito dopo che l'archivio sorgente viene scompattato con la macro %setup. Esempio:
%prep %setup -q %patch0 -p1