2016-11-21 2 views
5

J'ai un répertoire de fichiers 'binaires' (ie ne pas compiler) et je veux juste qu'ils soient installés sur mon fichier racine cible système.Comment écrire une recette yocto/bitbake pour copier un répertoire dans le système de fichiers racine targe

J'ai regardé plusieurs articles, dont aucun ne semble fonctionner pour moi.

La fonctionnalité souhaitée de cette recette:

myRecipe/myFiles/-> myRootFs/dir/à/installer

Ma tentative actuelle est:

SRC_URI += "file://myDir" 

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

Je ne peux pas se plaindre de la documentation du Yocto dans l'ensemble, c'est vraiment bien! Juste ne peut pas trouver un exemple de quelque chose comme ça!

+0

Pour un bon exemple de ce sujet, voir psplash_git.bb -> do_install_append – Stephano

+0

Modifier cette ligne « install -m $ {} WORKDIR/myDir $ {D}/chemin/vers/dir/sur/fs "pour" installer -m $ {WORKDIR}/myDir/* $ {D}/chemin/vers/dir/on/fs " –

Répondre

6

Il vous suffit de copier ces fichiers dans votre rootfs cible. Ne pas oublier de les pakage s'ils ne sont pas installés dans des endroits standards.

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

Cela semble copier le répertoire, mais aucun des fichiers ou autres répertoires qu'il contient. Je suppose que je dois énoncer explicitement tous ces éléments. Y a-t-il un moyen raisonnable et rapide de faire cela? –

+0

Bien sûr que oui. C'est pourquoi j'ai utilisé 'cp -r' pour une copie récursive. –

+0

J'ai utilisé cp -r, il copie le répertoire 'myDir' vers le FS mais pas son contenu ... –

0

Pour un dossier de recette comme ceci:

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

Vous pouvez utiliser la recette suivante pour l'installer sur un dossier spécifique dans votre rootfs:

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

Je pense qu'il n'a pas travailler pour vous car vous avez oublié d'ajouter la valeur du mode, après "installer -m",

voir la page man de la commande d'installation : https://linux.die.net/man/1/install

install -m [mode] src destination