Wie können Sie Patches in Buildroot auf ein Paket anwenden?

8

Ich arbeite an einem eingebetteten System, das buildroot als Werkzeug zum Erstellen des Kernels und des Root-Dateisystems verwendet. Ich möchte einige Patches auf diesen Kernel-Quellcode-Baum anwenden. Kann mir jemand sagen, wie buildroot Patches anwendet?

    
pradeepchhetri 17.06.2011, 08:03
quelle

4 Antworten

3

Nachdem ich die buildroot-Architektur studiert hatte, erfuhr ich, dass buildroot ein Quilt-Tool zum Anwenden der Patches verwendet. Quilt verfolgt alle Patches in der Datei "series", die sich im Verzeichnis "patches" befindet. Sie müssen Ihre Patches in diesem Verzeichnis behalten. Und fügen Sie Ihren Patch-Eintrag in der Reihendatei in der Reihenfolge hinzu, in der die Patches angewendet werden sollen, wobei der Patch zuerst oben angelegt wird.

Wenn Sie das Buildroot-Makefile ausführen, werden automatisch die in der Reihendatei aufgeführten Patches angewendet.

    
pradeepchhetri 27.06.2011, 14:13
quelle
5

Um auf @ Pradeepchhentris Antwort zu erweitern. Quilt sucht nach einer Datei, die sich im selben Ordner wie die * .mk-Datei befindet. Um die entsprechende Datei zu erstellen:

  1. Teilen Sie das Quellpaket vom Original in eine Datei mit dem Namen

    Paketname - Nummer - Beschreibung .patch

    wo

    Paketname - muss identisch mit dem Paketnamen sein

    Nummer - ist die Reihenfolge, in der die Patches angewendet werden sollen, wenn Sie mehr als einen Patch anwenden müssen (andernfalls wird er in alphabetischer Reihenfolge angewendet)

    Beschreibung - kann ein beliebiger freier Text sein

  2. Fügen Sie diese Datei in das Paket auf derselben Ebene ein wie die Dateien [Paketname] .mk und die Datei package / Config.in.

Vergiss nicht, deine Build-Dateien wegzublasen oder mach ein [Paket] -rebuild, wenn du das tust. Sie sollten eine "Patchen ..." Nachricht sehen, wenn dies richtig gemacht wird.

    
tudor 06.05.2014 05:57
quelle
2

BR2_GLOBAL_PATCH_DIR Out-of-Tree-Patches

Verzeichnisstruktur:

  • .git/
  • buildroot/ Buildroot Submodul wie unter Ссылка erwähnt
  • global_patch_dir/packagename/0001-my-test.patch

Zur Konfiguration hinzufügen:

%Vor%

Dann build mit:

%Vor%

Der Patch sollte vor dem Build auf output/build/packagename-1.0.0/ angewendet werden.

Generiere die Patches mit *_OVERRIDE_SRCDIR

Wenn Sie die Pakete direkt unter output/build/ hacken, haben Sie nichts zu tun.

Verwenden Sie stattdessen den *_OVERRIDE_SRCDIR -Mechanismus, mit dem Sie auf ein Git-Repo Ihrer Wahl verweisen können: Wie ändere ich die Quelle von Buildroot-Paketen für die Paketentwicklung? , die Sie dann als git-Submodul verfolgen sollten.

    
quelle
1

einige Details zu Patch-Dateien im buildroot -Projekt:

  1. Sie müssen

    %Vor%

steht genau über dem extrahierten Speicherort Ihres Pakets tar.gz , das in

definiert ist %Vor%

bedeutet, dass Ihr Pfad zu der Datei den Namen des extrahierten Paketordners enthalten muss.

  1. falls Sie sich fragen, ob der "old_file" Pfad von dem ursprünglichen Pfad abweicht - keine Sorge, der wichtigste ist der "neue_Datei" Pfad und Name - es sollte mit Ihrem Paket übereinstimmen.

  2. Benennungskonvention für die bereits in buildroot verwendeten / definierten Patches (alle Teile sind durch '-' -Zeichen getrennt):

    • 4-stellige Patch-Priorität (ab 0001)
    • Zieldateiname
    • Grund für das Patchen
    • .patch Erweiterung

Beispiel:

%Vor%
  1. Ablage-Patch-Datei in buildroot / package / "Ihr Paketname" / Ordner.

Es ist nicht notwendig, Konfigurationsdateien zu ändern, alle Patches werden automatisch für die Anwendung ausprobiert.

  1. Im Falle eines Fehlers wird die Ablehnungs-Patch-Datei (ähnlich wie die Datei, die Sie patchen möchten, aber mit der Erweiterung .rej ) im extrahierten Paketordner abgelegt.
Oleg Kokorin 16.05.2017 18:33
quelle