Na, wenn du schon einen funktionierenden externen Patch hast zum verifizieren, wäre das nicht
die Gelegenheit es "zu Fuß" selbst zu machen?
Das ist kein Hexenwerk und IMHO enfacher als zum Patchen sed zu verwenden.
Gerade die durch gcc4.3 oft notwendigen #inlude Änderungen sind ein gutes Testobject.
Was mit gcc4.3 nicht mehr vom Compiler zur Verfügung(?) gestellt wird läßt sich meist durch die
Manpage in der Dev-Sektion (3) finden. Bei free z.B.:
man 3 free
ergibt: Funktion ist in der stdlib.h, für cpp also cstdlib includen.
Ich gehe da immer so vor (vom Prinzip):
Ich habe 3 x den ausgepackten tarball in src
src/tarball (was makepg immer wieder überschreibt, wenn nicht mit Option -e gearbeitet wird)
src/tarball.new
src/tarball.org
Die beiden letzteren sind der reine auspepackte tarball, also ohne das configure/make da
elaufen ist.
Testen/verändert wird jetzt in src/tarball (zum Compilieren kann man makepgg -e oder einfach make
im /src/tarball verwenden.
Wenn eine Änderung an einer Datei erfolgreich war, dann trage ich diese in die entsprechende
Datei von /src/tarball.new ein. Wenn jetzt alle Änderungen gemacht (und halt in traball.new übernommen
wurden) dann gilt es jetzt die Unterschiede zwischen tarball.new und tarball.org zu bekommen.
Das macht diff. Im src-Dir dann:
diff -aur tarball.org tarball.new > patchname.patch
patchname.patch jetzt ins Verzeichniss mit dem PKGBUILD kopieren und ins PKGBUILD aufnehmen
in die source-Zeile und auch eine md5-Prüfsumme erstellen.
Der Ort zum Anwenden des Patches in der build-Funktion ist dort direkt nach dem Wechsel ins
src/paketname.
patch -Np1 <../patchname.patch
p1 ist hier auf die Position des Slashes im Patchfile bei den Dateinamen bezogen. Damit die zu
patchende Datei gefunden wird muß meist verschiedenes vom Pfad im Patch abgeschnitten werden.
Durch -p1 wird der Teil src/ überall ignoriert, somit stimmen alle Pfade wieder (wir sind ja mit makepg
in src/pkgname)
Ein kleines Beispiel:
cd /tmp
mkdir {new,org}
echo "Ein test mit padch" | tee {org,new}/hallo >/dev/null
(Jetzt etwas in new/hallo verändern, z.B. korrigieren zu Ein Test mit patch")
diff -aur org/ new/
diff -aur org/ new/ > patchfile
cd org
patch -Np1 <../patchfile
cat hallo (ist jetzt gepatcht)
Das -p1 sorgt hierbei daß patch hie im patchfile verwendeten Pfadangaben org/hallo bzw. new/hallo
alles bis einschließlich des ersten Slahes ignoriert, somit die Datei hallo im 'aktuellen Verzeichniss
org findet.