2016-03-22 4 views
1

Я пытаюсь написать рецепт, который бы просто скопировал два файла (MyfileA, MyfileB) в конкретный каталог, когда построено общее изображение. Это то, что моя структура каталогов выглядит следующим образом:рецепт bitbake - простая копия изображения

MyDir/MyRecipe.bb 
MyDir/files/MyfileA 
MyDir/files/MyfileB 

Я хотел бы два файла, которые будут скопированы в папку в доме (который не будет существовать изначально, следовательно, каталоги должны быть созданы) Папка позволяет сказать, что называется " Testfolder» Это то, что мой файл BitBake выглядит

DESCRIPTION = "Testing Bitbake file" 
PR = "r0" 

SRC_URI = "file://MyfileA \ 
      file://MyfileB " 

do_install() { 
     install -d MyfileA ~/TestFolder/ 
} 

Пожалуйста, дайте мне знать, если я делаю что-то здесь не так? Когда я бегу BitBake на это я получаю следующее

The BBPATH variable is not set and bitbake did not find a conf/bblayers.conf file in the expected location. 
Maybe you accidentally invoked bitbake from the wrong directory? 
DEBUG: Removed the following variables from the environment: LANG, LS_COLORS, LESSCLOSE, XDG_RUNTIME_DIR, SHLVL, SSH_TTY, OLDPWD, LESSOPEN, SSH_CLIENT, MAIL, SSH_CONNECTION, XDG_SESSION_ID, _, BUILDDIR 

Любая помощь в этой связи будут оценены.

ответ

6

Прежде всего, чтобы создать свой собственный мета-слой, вы должны запустить команду yocto-layer create MyRecipe в своей среде Yocto. Это делается для того, чтобы у вас был весь необходимый элемент в вашем мета-слое. Убедитесь в том, чтобы поставить новый мета-слой в конф/bblayers.conf

Создание HelloWorld Рецепт видео можно найти here

Во-вторых, чтобы скопировать файл из одного в другой директорий.

DESCRIPTION = "Testing Bitbake file" 
SECTION = "TESTING" 
LICENSE = "MIT" 
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" 
PR = "r0" 

SRC_URI = "file://MyfileA \ 
      file://MyfileB " 

#specify where to get the files 
S = "${WORKDIR}" 

inherit allarch 

#create the folder in target machine 
#${D} is the directory of the target machine 
#move the file from working directory to the target machine 

do_install() { 
     install -d ${D}/TestFolder 
     install -m ${WORKDIR}/MyfileA ${D}/TestFolder 
} 

Чтобы получить более подробную информацию, это мое понимание того, как файлы перемещаются в Yocto.

У вас есть каталог, в котором хранятся метаданные в /sourced/meta-mylayer/recipes-myRecipe/. В этом каталоге будет папка с тем же именем, что и рецепт. И.Е. myRecipe/myRecipe_001.bb.

Вы бы хранить файлы, которые связаны с myRecipe.bb (обычно это патч) в myRecipe/ так что SRC_URI получит в этот myRecipe/ каталог, чтобы захватить файлы. И.Е. myFileA, myFileB

Затем вы указываете S. Это местоположение в каталоге сборки, в котором хранится исходный код распакованного рецепта. Таким образом, myFileA и myFileB перемещаются/копируются туда, когда myRecipe строит.

Обычно S равно ${WORKDIR}, это эквивалентно ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}

Фактический каталог зависит от нескольких вещей:

TmpDir: верхнего уровня выходной сборки каталог

MULTIMACH_TARGET_SYS: Идентификатор целевой системы

PN: Название рецепта

EXTENDPE: эпоха - (если РЕ не указан, что обычно имеет место для большинства рецептов, то EXTENDPE пустой)

П.В.: Рецепт версия

PR: редакция Рецепта

После этого мы inherit allarch. This class is used for architecture independent recipes/data files (usually scripts).

Тогда последнее, что нам нужно сделать, это скопировать файлы.

${D} - это место в каталоге сборки, в котором компоненты устанавливаются задачей do_install. Это место по умолчанию равно ${WORKDIR}/image

${WORKDIR}/image также можно назвать каталогом / в целевой системе.

Перейти к ${D} директории и создать вызов папки TestFolder Затем скопируйте myFileA из ${WORKDIR} в ${D}/TestFolder

P.S. Пожалуйста, добавьте комментарий для исправления. Здесь может быть ошибочная информация, потому что я все это узнал сам.

+0

Не могли бы вы рассказать мне, что такое значение переменной WORKDIR? - Нужно ли быть абсолютным или относительным путем? –

+0

Также вы могли бы рассказать мне, что такое $ {D}? Где назначается значение D? –

+0

WORKDIR определяется следующим образом: '$ {TMPDIR}/work/$ {MULTIMACH_TARGET_SYS}/$ {PN}/$ {EXTENDPE} $ {PV} - $ {PR}'. путь должен быть абсолютным. TMPDIR находится в '/ yocto-environment/build/tmp /'. [Http://www.yoctoproject.org/docs/2.0/ref-manual/ref-manual.html#var-WORKDIR] –

 Смежные вопросы

  • Нет связанных вопросов^_^