[gelöst] [Suche] Automatisiertes Patch-Skript

  • Hi!


    Habe gerade auf vdr-1.5.13 umgestellt und da stellt sich ja immer die Aufgabe dass man eine ganze Menge Patches einspielen muss. Zumindest wenn man keinen Fertigpatch verwendet.


    Wie macht ihr das so?


    Ich arbeite mich da immer manuell durch und löse die ggf. vorhandenen Patches auf. Hatte auch schon mal versucht die Diffs von Klaus einzuspielen. Dabei gibt es aber immer das Problem dass ev. manche Patches neu sind und man daher erst den alten rausnehmen müsste und den neuen rein. Da habe ich irgendwie immer das Gefühl dass das etwas unsauber wird ...


    Hat jemand ein Skript das die Patches eines Verzeichnisses einspielt (probiert mit -p0 und -p1). D.h. alle Patches on Rejects werden eingespielt und dann eine Liste der Patches mit Rejects ausgegeben. Die muss man dann eben manuell einpflegen.
    Habs nicht so mit dem Scripten, deshalb hätte ich gehofft dass das jemandem schon mal zu viel Arbeit war. Ich denke da an die Distri- bzw. Package-Bauer.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

    Einmal editiert, zuletzt von Brougs78 ()

  • Ich verwende ein wildes, lange gewachsenes Entpacker-Skript, um reproduzierbar 'meine' Quellen zu generieren. Ist aber nicht so ohne weiteres in einer veröffentlichbaren Form.


    Prinzipiell kann so ein Skript aber ganz simpel sein:


    Der Umgang mit den wechselnden Versionsnummern in Pfadnamen in tars kann schwierig sein. Entweder man macht sowas wie ein tar xf "vdr-$VERSION.tar" und cd "vdr-$VERSION", oder man macht das tar um eine Ebene 'flacher' mit tar --strip-components=1, und legt selbst ein Unterverzeichnis an.


    Gruß,


    Udo

  • Hi!


    Danke für den Tipp.


    Du wirst nicht zufällig eine Zeile (Schleife) für mich haben wie ich alle Patches eines Verzeichnisses (ohne Unterverzeichnis) anwenden kann? ;)


    Um einen Patch zu testen müsste das Ideal sein oder?

    Code
    patch -p1 -f -s --dry-run | wc -l


    Dann kann ich anhand der Fehlerzeilen feststellen ob der Patch funktioniert, oder wäre da die Option "-t" besser?


    BTW, gabs nicht eine Option für patch, wo die rej-Files erstellt wurden ohne das File wirklich zu patchen? Das wäre recht net um zu sehen was falsch laufen würde und ob sich der Auwand lohnt ...


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hi!


    Ok, habe mich ein wenig gespielt und das Skript scheint das zu machen was ich möchte. Tests natürlich nur auf eigene Gefahr ... habs auch nur kurz getestet. Am Stil sieht man auch sicherlich dass ich mit dem Skripten normalerweise nichts am Hut habe. ;)


    Im Skript muss man angeben wo die Patches liegen. Bei mir liegen die immer im VDR-Verzeichnis PATCHES das ich von einer Version zur nächsten mitziehe.
    Alle Dateien die in dem Verzeichnis liegen werden als Patches interpretiert, wobei nur unkomprimierte Patches funktionieren.
    Jeder Patch wird mit der Option -p0 und -p1 versucht. Wenn das nicht klappt wird zu erst eine Liste der nicht funktionierenden Patches erstellt und diese dann wieder versucht anzuwenden. Es kann ja sein dass ein Patch auf einen anderen aufbaut und damit man sich nicht um die Reihenfolge kümmern muss probiert das Skript einfach so lange, so lange sich noch Patches anwenden lassen.


    Eine Ausgabe kann dann so aussehen:


    Man sieht hier, dass z.B. der lieemikuutio-Patch nicht anwendbar war, obwohl er auf vdr-1.5.13 angepasst ist. Das liegt dann daran, dass er nicht als erstes angewendet wurde und ein anderer Patch sich mit dem überschneidet. Zieht man in manuell vor, dann scheitert ein anderer (in dem Fall der hlcutter).


    Feedback willkommen und natürlich auch jegliche Verbesserung. ;)


    EDIT: Noch mal wegen patch. Kennt jemand eine Option dass die Dateien zwar nicht gepatcht werden (--dry-run) aber doch die Reject-Files erstellt werden? Habe da leider nichts gefunden. Auch kein anderes Tool.


    Gruß,
    Brougs78

    Dateien

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

    Einmal editiert, zuletzt von Brougs78 ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!