Patch
Da openmamba wiki.
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.
[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
[modifica] 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









