Einfachster Weg zu einem gepatchten Port?

SolarCatcher

Well-Known Member
Ein developer von www/h2o hat vermutlich eine Lösung für einen Bug gefunden, der mich seit Wochen plagt. Die Änderung ist minimal und betrifft eine einzige Zeile. Was ist der einfachste Weg, den ansonsten gut funktionierenden Port (bei mir) zu patchen? Erstmal um es zu probieren... und dann - falls es tatsächlich mein Problem löst - bis zum nächsten Release (Releases kommen mittlerweile leider sehr selten).
 
Um den Port zu patchen, mache Folgendes:

Code:
# cd /usr/ports/www/h2o
# make patch
# cd work/h2o*
# cp foo foo.orig
# $EDITOR foo
# cd /usr/ports/www/h2o
# make makepatch
# make clean
# make install

Mit dem "make makepatch" wird automatisch ein diff zwischen foo und foo.orig nach files/foo.patch erstellt und beim Bauen des Ports angewendet.
 
@lme Vielen Dank! Genau so eine Beschreibung hatte ich gesucht!!!

Ich habe es heute morgen dann doch auch manuell hinbekommen mit Sourcen-Runterladen, Entpacken, Datei ändern, Diffen und das Ergebnis im port unter files/ ablegen. Gerade läuft poudriere...

Eine Frage noch: Ich wollte die Verwendung von makepatch und make patch nachlesen. In anderen Anleitungen (z.B. im Porters' Handbook) habe ich letzteres nicht gefunden. Ich vermute es lädt den Dist-File herunter und entpackt ihn im Ordner work...?
 
@KobRheTilla Danke für die Erklärung. Ich hab's dann mal ausprobiert und stellte fest, dass dabei aber auch alle Build-Abhängigkeiten gebaut werden. Ich habe es dann bei gmake abgebrochen, als es versuchte, die ganze build chain zu bauen... Da der von mir zu patchende Port noch keine Patch-Files hatte, wäre es in diesem Fall also auch gar nicht nötig gewesen. Trotzdem sehr gut, es zu wissen!
 
Du kannst die abhängigen Ports als Binärpakete installieren mit "make install-missing-packages". Das funktioniert aber noch nicht fehlerfrei. Wenn flavored Ports im Spiel sind, z.B. Python-Module, werden da immer alle vorhandenen Flavors installiert. Also z.B. py27-foo und py36-foo. Das ist nicht unbedingt ein Beinbruch, aber es landen ggf einige unnötige Pakete auf deinem System.
 
Zurück
Oben