2016-06-29 4 views
0

Рецепт модуля ядра Linux, который отлично работал в версии Yocto версии Freescale/NXP SDK v1.8, приводит к ошибке в do_package_qa при использовании версии Yocto версии Freescale/NXP SDK версии 2.0. Как следует ошибка:Yocto linux module recipe do_package_qa error

ERROR: QA Issue: FILES in kernel-module-r8168 recipe should not contain the ${D} variable as it references the local build directory not the target filesystem, best solution is to remove the ${D} reference [expanded-d]
ERROR: QA run found fatal errors. Please consider fixing them.
ERROR: Function failed: do_package_qa

Рецепт самого модуля ядра не содержат $ {D}, но она используется в module.bbclass, от которого моего модуля рецепт наследуется

Как следует моему модуль рецепт:

SUMMARY = "Realtek r8168 family driver Linux kernel module" 
LICENSE = "GPLv2" 
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" 

inherit module 

PN = "r8168" 
PV = "8.041.01" 

SRC_URI = "file://r8168-8.041.01.tgz \ 
      file://COPYING \ 
      " 

SRC_URI[md5sum] = "f3fd1530132ed1b64345698f89beea0f" 

S = "${WORKDIR}" 

KERNEL_MODULE_AUTOLOAD += "r8168" 

Я обнаружил, что проверка переменной $ {D} была добавлена ​​в версии версии Yano версии SDK 2.0 для insane.bbclass по сравнению с версией SDK 1.8 Yocto.

У меня есть следующие вопросы:

  1. Является ли это ошибка в Yocto?
  2. Как я могу обойти это или исправить?

log.do_package_qa.526:

DEBUG: Executing python function sstate_task_prefunc 
DEBUG: Python function sstate_task_prefunc finished 
DEBUG: Executing python function do_package_qa 
NOTE: DO PACKAGE QA 
DEBUG: Executing python function read_subpackage_metadata 
DEBUG: Python function read_subpackage_metadata finished 
NOTE: Checking Package: r8168 
NOTE: Checking Package: r8168-doc 
NOTE: Checking Package: r8168-dbg 
NOTE: Checking Package: r8168-staticdev 
NOTE: Checking Package: r8168-locale 
NOTE: Checking Package: r8168-dev 
NOTE: Checking Package: kernel-module-r8168 
NOTE: arm-fsl-linux-gnueabi-objdump -p /local/ctrommel/QorIQ-SDK-V2.0-20160527-yocto/build_ls1021atwr/tmp/work/ls1021at 
wr-fsl-linux-gnueabi/r8168/8.041.01-r0/packages-split/kernel-module-r8168/lib/modules/4.1.8-rt8+gbd51baf/local/ctrommel 
/QorIQ-SDK-V2.0-20160527-yocto/build_ls1021atwr/tmp/work/ls1021atwr-fsl-linux-gnueabi/r8168/8.041.01-r0/image/r8168.ko 
ERROR: QA Issue: FILES in kernel-module-r8168 recipe should not contain the ${D} variable as it references the local bu 
ild directory not the target filesystem, best solution is to remove the ${D} reference [expanded-d] 
ERROR: QA run found fatal errors. Please consider fixing them. 
DEBUG: Python function do_package_qa finished 
ERROR: Function failed: do_package_qa 
+0

Не могли бы вы предоставить нам ссылку на Freescale NXP SDK? Предпочтительно git repo, если он доступен. Нет никакой проблемы, стоит строить внешние модули ядра в стандартной версии YP 2.0, о которой я знаю. – Anders

+0

Не могли бы вы также предоставить содержимое файла журнала: log.do_package_qa для соответствующего рецепта? – iksajotien

+0

SDK QorIQ можно загрузить с веб-сайта NXP после того, как вы зарегистрировались в NXP. Я не могу предоставить ссылку, вам нужно найти «QorIQ SDK», чтобы найти загружаемую страницу. –

ответ

0

Где-то вы найдете там ссылку на ${D} в значении FILES для одного из пакетов - это неправильно. FILES предназначен для указания путей, которые будут отображаться на целевом объекте, поэтому вы не будете префикс их временным каталогом установки ${D}.

Я не могу точно сказать, где это было бы - это вряд ли будет частью метаданных проекта Yocto Project, но битбака -e yourrecipe | меньше, а затем выполните поиск (используя «/») для \$\{D\}, и вы должны быть способны точно определить, где находится значение нарушения.

+0

$ {D} используется в модуле.bbclass, который наследуется моим r8168_8.041.01.bb. module.bbclass - стандартный класс poky (не определенный для NXP SDK). –

+0

Эти проблемы могут быть воспроизведены с помощью «YP Core - Krogoth 2.1». Поэтому $ {D} должен быть каким-то образом представлен метаданными Yocto, но я не могу понять, как это сделать. Вывод «битбака-е» не помог. –

0

Добавление следующей строки в рецепте модуль будет работать вокруг этого вопроса:

INSANE_SKIP_kernel-module-${PN} = "expanded-d" 

Поскольку сборка прошла успешно (модуль был добавлен к изображению) после пропуска проверки QA я более уверен, что это Жук.

+0

Нет, это не проблема вокруг, просто спрячьте это. – Anders

+0

Мое определение «работа вокруг»: решение, которое скрывает проблему, но позволяет достичь цели, которую вы хотите выполнить. Потому что это приводит к тому, что изображение с функциональным драйвером «работает», что работает для меня. Поэтому я согласен с тем, что это скрывает проблему, но я не согласен с тем, что она не работает :) –

+0

Справедливо, что я хотел написать (хотя я почему-то не сделал этого), было то, что это не было решением ... И то, что скрывает такие проблемы, очень хорошо может дать вам проблемы. – Anders

0

Это не ошибка Yocto. Это была проблема в Makefile добавленного модуля. Этот Makefile является модифицированной версией файла Makefile драйвера, предоставляемого поставщиком устройства. В исходном Makefile содержался флаг make INSTALL_MOD_DIR, и значение было изменено на INSTALL_MOD_DIR = $ (INSTALL_MOD_PATH). Предполагалось, что INSTALL_MOD_PATH - это путь установки целевого модуля, но это путь установки хост-модуля, который содержит $ {D}. Таким образом, ошибка, вызванная Yocto, была правильной. Удаление флага make из Makefile устраняет проблему.

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