Quilt: Umstellung der Patchverwaltung meines Git-Debian-Paketes auf Quilt
Mein Git-Debian-Paket verwendet bislang keine vernünftige Patchverwaltung. Stattdessen werden bei der Erzeugung des Paketes einfach alle Patches unterhalb von debian/diff der Reihe nach angewandt. Blöderweise fallen so gescheiterte Patchanwendungen nicht auf, außerdem werden im Source-Paket teilweise Original-Dateien modifiziert – vermutlich weil einige Patches nicht sauber zurückgerollt werden.
Also: Ich will Quilt haben!
Sichtung des Debian-Paketes von Subversion
- Patches liegen unter debian/patches und nicht unter debian/diff
- Es gibt eine Datei namens debian/patches/series, die alle Patches auflistet
- In debian/rules sind einige Änderungen vorzunehmen
Die ersten beiden Punkte sind schnell erledigt:
mv debian/diff debian/patches
cd debian/patches; (ls|grep -v series) >series
Bleibt noch die Anpassung von debian/rules!
Anpassungen an “debian/rules”
An der Datei “debian/rules” müssen qualitativ diese Änderungen vorgenommen werden:
- Einbinden der Datei /usr/share/quilt/quilt.make
- Ziele “patch” und “patch-stamp” entfernen
- Ziele “debian/stamp-autogen” und “debian/stamp-configure” neu aufnehmen Bei “debian/stamp-configure” wird ein Verweis auf “patches” angelegt
- Verweise auf “patch-stamp” ersetzen durch “$(QUILT_STAMPFN)”
- Im Ziel “clean” diese Änderungen vornehmen:
- Neue Abhängigkeit zu “unpatch” festlegen
- Neuer Aufruf: dh_testdir
- Neuer Aufruf: dh_clean
- Verweis auf “patches” löschen
- Manuelle Logik zum Zurücknehmen der Patches entfernen
Die Änderungen sind im nachfolgenden DIFF zusammengefasst.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
|
Neuerzeugung des Paketes
Nun kann versucht werden, das Paket neu zu erzeugen mit dpkg-buildpackage
.
Erwartungsgemäß scheitert die Erzeugung, weil einige Patches nicht sauber
durchlaufen. Korrigiert habe ich das so:
- In “debian/patches/series” folgende Patches deaktiviert:
- 0005-gitk-use-symbolic-font-names-sans-and-monospace-when-.diff
- 0006-gitk-Skip-over-AUTHOR-COMMIT_DATE-when-searching-all-.diff
- Bei allen übrigen Patches:
quilt push -f
quilt refresh
dpkg-buildpackage
- … so oft wiederholen, bis es durchläuft