it-swarm.com.de

Wie schreibe ich ein Yocto/Bitbake-Rezept, um ein Verzeichnis in das targe-Root-Dateisystem zu kopieren?

Ich habe ein Verzeichnis mit binären Dateien (d. H. Nicht zu kompilieren) und möchte nur, dass sie auf meinem Zieldateisystem installiert werden.

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

Die gewünschte Funktionalität dieses Rezepts ist:

myRecipe/myFiles/-> myRootFs/dir/in/install

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
}

Ich kann mich nicht über die Yocto-Dokumentation beschweren, es ist wirklich gut! Kann so ein Beispiel einfach nicht finden!

8
Ben Turner

Sie müssen diese Dateien nur in Ihre Ziel-Root-Dateien kopieren. Vergessen Sie nicht, sie zu packen, 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"
8
john madieu

Achten Sie darauf, dass Sie bei einer einfachen rekursiven Kopie am Ende Host-Kontaminationswarnungen erhalten, sodass Sie mit den folgenden Parametern kopieren müssen:

do_install() {
     [...]
     cp --preserve=mode,timestamps -R ${S}${anydir}/Data/* ${D}${anyotherdir}/Data
     [...]
}

Wie andere Rezepte in poky, oder folgen Sie einfach den offiziellen Empfehlungen

1
urnenfeld

Für einen Rezeptordner wie diesen:

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

Sie können das folgende Rezept verwenden, um es in einem bestimmten Ordner in Ihren 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
PierreOlivier

Ich denke, dass es für Sie nicht funktioniert hat, weil Sie vergessen haben, den Moduswert nach "install -m" hinzuzufügen,

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

install -m [mode] src destination
0
ransh