Allgemein: Patchen, Rejects & Co

  • Hi,


    in den diversen Foren hier sieht man ja immer wieder mal, dass Patches zu Sammelpatches zusammengebaut werden, dass Menschen (Götter in spe? ;) in der Lage sind, rejects manuell zu beseitigen etc.


    Wie geht Ihr dabei vor? Ich hab eben bspw. versucht, nach dem Einspielen eines ElchiAIO in den 1.2.5 auch noch den recording-length-patch einzupatchen (und ungefähr zwei Minuten nach diesem Posting festgestellt, dass der ja schon im aio drin ist, was natürlich an der Fragestellung nix ändert). Mit jeder Menge rejects. Kann mir mal jemand netterweise erklären, wie ich da jetzt vorgehen muß um das manuell aufzulösen? Mir würde es prima gefallen wenn ich da mal ne eher allgemeine Vorgehensweise erklärt bekäme. Oder ist das realitätsfern?


    Grüße


    campari

  • Wenn ich jetzt einen Patch hätte der Rejects produziert könnte ich es an einem Beispiel konkret erklären ;)


    Im Allgemeinen schaust Du Dir halt den Reject an, darin steht an welchen Stellen das Patchen fehlgeschlagen ist, also die Stelle die gepatcht hätte werden sollen (der Code der erwartet wurde), und der Code, der diesen ersetzen sollte.


    Da der Patch-Befehl nur begrenzte Eigenintelligenz besitzt scheitert er, wenn nicht kommt was er erwartet.


    Meist ist das allerdings dann nur eine vertauschte, fehlende oder eine Zeile zuviel in den zu patchenden Sourcen, man muss also in diesem Fall die Stelle im Source suchen, die gepatcht werden sollte, den Patch selber analysieren um zu sehen was gemacht werden sollte und das halt dann per Hand nachholen ;)


    Wie gesagt, mit einem Beispiel wäre es einfacher zu erklären....

  • ich versuche mal zu erklären :P


    wir haben folgendes

    Code
    zeile1
    zeile2
    zeile3
    zeile4


    und diesen patch

    Code
    zeile1
    zeile2
    +zeile2,5
    zeile3
    zeile4


    nach dem patchen sieht das dann so aus:

    Code
    zeile1
    zeile2
    zeile2,5
    zeile3
    zeile4


    willst du jetzt nich einen patch dieser art

    Code
    zeile2
    zeile3
    +zeile3,5
    zeile4


    hinzufügen dann geht das nicht weil nicht die passenden zeilen 2 und 3 gefunden werden. dann gibt es einen reject.


    um den aufzuzlösen kann man dann im source eine suche nach zeile3 (nur zeile3, nicht 2 und 3) machen und danach die zeile 3,5 manuell einfügen.

  • Hi


    also ich brauchte viele Lesestunden bis ich gemerkt habe, dass man bei Patch-Fehlern noch etwas mache kann, und solche rejectdateien erstellt werden. Dies scheint aber bei Linux normal zu sein. Muss man aber zuerst wissen und ist mindestens für mich nicht so offensichtlich, wenn man wie ich keine Ahnung von Linux hat.


    Also:
    Beim Patchen werden Meldugen ausgegeben.


    In diesen Meldungen stehen:
    Welche Dateien gepatcht wurden.
    In welchen Zeilen der Datei Veränderungen gemacht wurden.
    Konnte die Datei (aus Gründen wie oben beschrieben) nicht gepatcht werden, so zeigt die Meldung an welche Zeilen geändert wurden.
    Bei jeder Datei gibt es eine Zusammenfassung an wievielen Stellen etwas verändert wurde und gegebenfalls wieviele Stellen nicht bearbeitet werden konnten.
    Aus diesen Meldungen kannst du sehen bei welchen Dateien das Patch erfolgreich war und bei welchen du nachbessern musst.


    Nehmen wir an du hast eine Meldung das in der Datei config.c nicht alle Veränderungen durchführt werden konnten.


    Das Patch erzeugt nun folgende Dateien:
    Eine Datei config.c (die nicht komplett gepatchte Datei)
    Eine Datei config.c.rej (Die Informationen was nicht gepatcht werden konnte)
    Eine Datei config.c.orig (die ursprüngliche nicht gepatchte Datei)


    Wenn du nun mit einem Editor die config.c.rej öffnest siehst Zeilen mit einem + Zeichen davor. Diese Zeilen konnten vom Patch nicht in die Datei config.c eingefügt werden. Meistens hast du noch eine Angaben in welchen Zeilen das sein soll. Was bei mir jedoch nicht immer so richtig passte. Jetzt musst du die Zeilen aus der config.c.rej mit dem + Zeichen an die passende Stelle in die config.c reinkopieren. Wichtig: Das + Zeichen ist in der config.c zu entfernen.


    Hast du nun diese Fleissarbeit durchgeführt solltest du eine sauber gepatchte config.c Datei haben. Dies machst du nun mit allen Dateien welche laut Meldungen nicht komplett gepatcht werden konnten.


    So, nun solltest du das ganze compilieren.
    make clean
    make plugins-clean
    make +(optionen z.B. VFAT=1)
    make plugins


    Jetzt kann es sein, dass du Fehlermeldungen beim compilieren bekommst. In der Fehlermeldung steht in welcher Zeile der Fehler ist. Nun musst du hingehen die Datei config.c wieder öffnen und in die Zeile gehen wo er eine Fehlermeldung bringt. Bei mir waren es dann Fehler die ich beim ergänzen des Codes gemacht habe wie z.B. vergessen das + Zeichen zu löschen.


    Irgendwann solltest du dann das Programm ohne Fehler compilieren können.



    P.S. Da ich nur ein Anfänger bin währe ich froh, dass wenn ich da einen Mist erzählt habe, mich jemand korrigieren würde. So wüsste ich wenigstens ob ich das ganze nach den langen Lesestunden auch richtig verstanden habe.
    Vielen Dank.


    Gruss Pitt

    Hardware: Mainboard P4C800, Chipset Intel 875 P MCH, RAM 512 MB, CPU Intel P4 2,4 GHz, Platte WD 1200, Matrox G550, Plextor DVD-Brenner, WinTV Nexus-S Rev. 2.1, Onboard Audio AD1985, Verstärker Yamaha DSP-A1.
    Software: SUSE 9.0 pro, VDR 1.2.6, VCD 0.0.6c, DVD 0.3.4-rc10, Bitstreamout 0.49, MP3 0.8.2, MPlayer 0.8.2, Remote 0.2.0, Graphlcd 0.0.7, AudioCD 0.0.4

Jetzt mitmachen!

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