[LINUX] Ajouter une recette dans Yocto (ajouter une recette qui ne copie que les fichiers)

introduction

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.

Chose que tu veux faire

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.

Préparation environnementale

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"

Recette à créer

$ 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

Recette référencée

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.

Note

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?

Recommended Posts

Ajouter une recette dans Yocto (ajouter une recette qui ne copie que les fichiers)
Comment ajouter des numéros de page à un fichier PDF (en Python)
Extraire uniquement les éléments qui répondent à des conditions spécifiques en Python