Yocto bitbake .bbappend не устанавливает файл

Я пытаюсь добавить json в / etc на устройстве. Прочитал много ответов SO и не нашел решения. Новый файл json называется audio_config.json, он находится в папке files / того же каталога, что и .bbappend. Я использую append, потому что этот файл нужен только на одной модели устройства, в то время как основной рецепт есть на многих моделях.

Делая это:

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://audio_config.json"

do_install_append() {
   install -d ${D}${sysconfdir}
   install -m 644 ${B}/audio_config.json ${D}${sysconfdir}
}

Получает сообщение об ошибке, указывающее, что json отсутствует в рабочем каталоге. То же самое произойдет, если я использую $ {WORKDIR} вместо $ {B}. Другие рецепты в этом дереве следуют той же модели, но не уверены, в чем проблема.

Если я использую $ {THISDIR}, он говорит, что json не находится в каталоге базовых рецептов, чего не должно быть.

Из сообщений SO я пробовал

FILES_${PN}-audio_config.json = "${sysconfdir}/audio_config.json"

Но это, похоже, не повлияло.

TIA!


person Jason    schedule 10.06.2020    source источник
comment
Это xraudio_config.json или audio_config.json? Потому что ваша установка, кажется, делает install -m 644 ${B}/xraudio_config.json ${D}${sysconfdir}.   -  person Alexander Bollaert    schedule 10.06.2020
comment
Извините, это была опечатка, я исправил ее.   -  person Jason    schedule 10.06.2020
comment
Если audio_config.json находится в ${RECIPE_APPEND_DIR}/files/audio_config.json, он сможет его найти, а затем вы сможете сделать install -m 644 ${WORKDIR}/audio_config.json ${D}${sysconfdir}   -  person Alexander Bollaert    schedule 10.06.2020
comment
Вы пытались отладить проверку SRC_URI и FILESEXTRAPATHS с помощью bbdebug? Вы также можете использовать задачу devshell, чтобы убедиться, что файл присутствует на рабочем пути?   -  person ogs    schedule 11.06.2020


Ответы (3)


Согласно пользователям и документации, то, что у меня было выше, должно было сработать. Но этого не произошло. Что работало, так это:

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
AUDIO_CONFIG_FILES := "${THISDIR}/files"

do_install_append() {
   install -d ${D}${sysconfdir}
   install -m 644 ${AUDIO_CONFIG_FILES}/audio_config.json ${D}${sysconfdir}
}

Используя переменную для немедленного расширения $ THISDIR, правильно установите локальный путь, и установка произойдет.

person Jason    schedule 11.06.2020
comment
Сначала проверьте, где находится файл audio_config.json. Вы должны использовать что-то вроде ${S}/audio_config.json вместо ${AUDIO_CONFIG_FILES}/audio_config.json. S, вероятно, определен в файле рецептов bb - person ogs; 11.06.2020
comment
audio_config.json находится в файлах / в каталоге, где находится .bbappend. $ {S} - это исходный каталог для компонента, который может нуждаться или не нуждаться в json, поэтому я не мог поместить его туда. - person Jason; 11.06.2020
comment
Я никогда не видел, чтобы THISDIR использовался в процессе установки. Поскольку путь поиска, который используется при поиске файлов, был расширен, я бы добавил файл json к извлеченным файлам src, прежде чем перемещать его в каталог назначения. - person ogs; 11.06.2020

В do_unpack() файл копируется в ${WORKDIR}, а не в ${B} (каталог сборки) и не в ${S} (каталог источников). Этот рецепт подходит мне с Йокто Данфеллом:

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://audio_config.json"

do_install_append() {
   install -d ${D}${sysconfdir}
   install -m 644 ${WORKDIR}/audio_config.json ${D}${sysconfdir}
}

Обратите внимание на другой аргумент исходного пути во втором вызове install.

Я предполагаю, что вас затронула ошибка yocto / bitbake.

person schlimmchen    schedule 06.11.2020

Вы были правы, добавив ФАЙЛЫ _ $ {PN}, чтобы добавить файл к изображению. Но не добавляйте к нему никаких суффиксов, просто добавьте свой файл в переменную:

FILES_${PN} += "${sysconfdir}/audio_config.json"

Кроме того, вы должны использовать ${WORKDIR} в своей установке.

install -m 644 ${WORKDIR}/audio_config.json ${D}${sysconfdir}

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

person Pastecator    schedule 05.05.2021