2016-11-21 4 views
5

Ich habe ein Verzeichnis von 'binären' (dh nicht zu kompilierenden) Dateien und möchte nur, dass sie auf meiner Ziel-Root-Datei installiert werden System.Wie schreibe ich ein yocto/bitbake Rezept zum Kopieren eines Verzeichnisses in das Ziel-Root-Dateisystem

Ich habe mehrere Artikel angeschaut, von denen keiner für mich zu funktionieren scheint.

Die gewünschte Funktionalität dieses Rezept ist:

MyRecipe/myFiles/-> myRootFs/dir/to/installieren

Mein aktueller Versuch ist:

SRC_URI += "file://myDir" 

do_install() { 
     install -d ${D}/path/to/dir/on/fs 
     install -m ${WORKDIR}/myDir ${D}/path/to/dir/on/fs 
} 

kann ich nicht beschweren Sie sich über die Yocto-Dokumentation insgesamt, es ist wirklich gut! Kann einfach kein Beispiel für so etwas finden!

+0

Für ein gutes Beispiel dafür sehen psplash_git.bb -> do_install_append – Stephano

+0

diese Zeile -m $ {WORKDIR}/myDir $ {D}/path/to/dir/auf/fs Ändern „installieren "to" install -m $ {WORKDIR}/myDir/* $ {D}/Pfad/zu/dir/on/fs " –

Antwort

6

Sie müssen nur diese Dateien in Ihr Ziel rootfs kopieren. Vergessen Sie nicht, sie zu paketieren, wenn sie nicht an Standardstandorten installiert sind.

SRC_URI += "file://myDir" 

do_install() { 
    install -d ${D}/path/to/dir/on/fs 
    cp -r ${WORKDIR}/myDir ${D}/path/to/dir/on/fs 
} 
FILES_${PN} += "/path/to/dir/on/fs" 
+0

Dies scheint das Verzeichnis zu kopieren, aber keine der Dateien oder andere Verzeichnisse darin. Ich gehe davon aus, dass ich dann alle explizit angeben muss. Gibt es einen vernünftigen, schnellen Weg, dies zu tun? –

+0

Natürlich tut es das. Deshalb habe ich 'cp -r' für rekursive Kopien verwendet. –

+0

Ich habe cp -r verwendet, es kopiert das Verzeichnis 'myDir' in den FS, aber keinen Inhalt ... –

0

Für eine Rezeptmappe wie folgt aus:

. 
├── files 
│   ├── a.txt 
│   ├── b.c 
│   └── Makefile 
└── myrecipe.bb 

Sie das folgende Rezept verwenden können, es auf einen bestimmten Ordner in Ihrem rootfs zu installieren:

SRC_URI = " file://*" 
do_install() { 
    install -d ${WORKDIR}/my/dir/on/rootfs 
    install -m 0755 ${S}/* ${WORKDIR}/my/dir/on/rootfs/* 
} 
FILES_${PN} = "/my/dir/on/rootfs/* " 
0

glaube ich es nicht tat arbeiten für Sie, weil Sie vergessen haben, den Moduswert hinzuzufügen, nach "install -m",

siehe man Seite des Installationsbefehls : https://linux.die.net/man/1/install

install -m [mode] src destination 
Verwandte Themen