J'utilise Yocto, je me suis demandé "Comment écrire une recette qui copie simplement le fichier vers root fs?", Et je vais décrire la recette que j'ai faite.
Je veux copier des fichiers et des répertoires vers root fs. Les fichiers et répertoires mentionnés ici ne sont pas le code construit par la recette. Juste une copie du fichier.
Utilisez zeus. https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=zeus
Activité de publication de référence
conf/local.conf
MACHINE peut être n'importe quoi, mais sélectionnez l'environnement pour qemu. Ici, l'environnement arm64 est utilisé.
MACHINE ?= "qemuarm64"
$ tree meta-mylayer/
meta-mylayer/
├── COPYING.MIT
├── README
├── conf
│ └── layer.conf
└── recipes-myhellobin
└── myhellobin
├── myhellobin
│ ├── hello.bin <-------Dossier approprié(Fichiers juste à copier)
│ └── hoge.tar.gz <-------Dossier approprié(Fichiers juste à copier)
└── myhellobin.bb
hoge.tar.gz
Le contenu de hoge.tar.gz est le suivant. Il n'existe qu'un fichier texte approprié.
$ tree hoge
hoge
├── hoge01.txt
└── hoge02.txt
Lorsque j'ai recherché une recette existante, il y avait une recette qui copiait le fichier dans / etc, alors j'y ai fait référence. base-files_3.0.14.bb
myhellobin.bb
[base-files_3.0.14.bb](https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/recipes-core/base-files/base-files_3.0.14.bb?h= Voici myhellobin.bb basé sur zeus).
Hello.bin dans / home / root Copiez simplement le répertoire hoge dans / home / root, / etc, / usr / lib.
SUMMARY = "copy files"
SECTION = "BASE"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file://hello.bin \
file://hoge.tar.gz \
"
S = "${WORKDIR}"
INHIBIT_DEFAULT_DEPS = "1"
do_install() {
install -d ${D}/home/root
install -d ${D}/etc
install -d ${D}/usr/lib
install -m 0755 ${WORKDIR}/hello.bin ${D}/home/root
cp -r ${WORKDIR}/hoge ${D}/home/root
cp -r ${WORKDIR}/hoge ${D}/etc
cp -r ${WORKDIR}/hoge ${D}/usr/lib
}
FILES_${PN} = "/"
Au départ, copiez le répertoire hoge avec la commande tar
tar vxf ${WORKDIR}/hoge.tar.gz -C ${D}/home/root
J'ai pensé qu'il serait préférable de l'écrire, mais j'ai utilisé la commande cp car elle est développée dans le répertoire de travail par l'opération par défaut (?) De bitbake.
INHIBIT_DEFAULT_DEPS
https://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html#var-INHIBIT_DEFAULT_DEPS
Prevents the default dependencies, namely the C compiler and standard C library (libc), from being added to DEPENDS. > This variable is usually used within recipes that do not require any compilation using the C compiler.
Set the variable to "1" to prevent the default dependencies from being added.
Cela signifie-t-il définir 1 pour les recettes qui n'utilisent pas de compilateur?