小编aic*_*ell的帖子

Bitbake附加文件以重新配置内核

我正在尝试重新配置一些.config变量,以生成启用了wifi支持的修改内核。内核的本机层/配方位于以下目录中:

    meta-layer/recipes-kernel/linux/linux-yocto_3.19.bb
Run Code Online (Sandbox Code Playgroud)

首先,我重新配置本机内核以添加wifi支持(例如,添加CONFIG_WLAN = y):

    $ bitbake linux-yocto -c menuconfig
Run Code Online (Sandbox Code Playgroud)

之后,我生成一个“ fragment.cfg”文件:

    $ bitbake linux-yocto -c diffconfig
Run Code Online (Sandbox Code Playgroud)

我已经将此目录创建到我的自定义层中:

    custom-layer/recipes-kernel/linux/linux-yocto/
Run Code Online (Sandbox Code Playgroud)

我已将“ fragment.cfg文件复制到此目录中:

    $ cp fragment.cfg custom-layer/recipes-kernel/linux/linux-yocto/
Run Code Online (Sandbox Code Playgroud)

我创建了一个附加文件以自定义本机内核配方:

    custom-layer/recipes-kernel/linux/linux-yocto_3.19.bbappend
Run Code Online (Sandbox Code Playgroud)

这是此附加文件的内容:

    FILESEXTRAPATHS_prepend:="${THISDIR}/${PN}:"
    SRC_URI += "file://fragment.cfg"
Run Code Online (Sandbox Code Playgroud)

之后,我执行内核编译:

    $ bitbake linux-yocto -c compile -f
Run Code Online (Sandbox Code Playgroud)

执行此命令后,可以在此工作目录中找到“ fragment.cfg”文件:

    tmp/work/platform/linux-yocto/3.19-r0
Run Code Online (Sandbox Code Playgroud)

但是,.config文件上没有任何预期的变量处于活动状态(例如,未设置CONFIG_WLAN)。

如何调试此问题?我应该怎么做错了?

configuration linux-kernel bitbake

5
推荐指数
3
解决办法
5196
查看次数

如何在 Yocto 中为特定机器启用/禁用特定 bbappend

我试图了解 Yocto 提供的为特定机器启用/禁用特定 bbappend 的机制。我读了这个链接(修改变量以支持不同的机器):

https://www.yoctoproject.org/docs/1.5/dev-manual/dev-manual.html#best-practices-to-follow-when-creating-layers

还找到了一些关于堆栈溢出的相关信息:

yocto 中的机器特定层

我尝试将所有这些信息付诸实践,但没有成功。这是我的特殊问题:

“x”平台的 BSP 层提供了一个 qtbase_%.bbappend,它修改了 meta-qt5 中的 qtbase 配方。我只需要在为 MACHINE="x" 构建时才需要这个 qtbase_%.bbappend,而不是其他不同的机器。

这是在 x-bsp-layer 上定义的原始 qtbase_%.bbappend 的内容:

PACKAGECONFIG_GL   = "gles2"
PACKAGECONFIG_FONTS = "fontconfig"
PACKAGECONFIG_APPEND = " \
${@bb.utils.contains("DISTRO_FEATURES", "wayland", "xkbcommon-evdev", \
   bb.utils.contains("DISTRO_FEATURES", "x11", " ", "libinput eglfs gbm", d), d)} \
"
PACKAGECONFIG_append = " ${PACKAGECONFIG_APPEND} kms accessibility sm"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PACKAGECONFIG_remove = "evdev"
Run Code Online (Sandbox Code Playgroud)

每当我尝试为不同于“x”的平台构建图像时,编译都会被破坏:

| ERROR: Feature 'opengles2' was enabled, but the pre-condition 'config.win32 || (!config.watchos && !features.opengl-desktop && …
Run Code Online (Sandbox Code Playgroud)

overriding recipe layer yocto

5
推荐指数
1
解决办法
4028
查看次数

Bitbake配方未按预期应用补丁

我有一个tarball src.tar.gz,其内容被解压缩到src /中,并使用此命令生成此源代码的补丁:

$ diff -Nurp src/ src_mod/ > my.patch
Run Code Online (Sandbox Code Playgroud)

补丁头以这三行开头:

 diff -Nurp src/path/to/file src_PATCHED/path/to/file
 --- src/path/to/file  2012-10-22 05:52:59.000000000 +0200
 +++ src_PATCHED/path/to/file  2016-03-14 12:27:52.892802283 +0100
Run Code Online (Sandbox Code Playgroud)

我的bitbake配方使用此SRC_URI引用路径和tarball文件:

SRC_URI = " \
    file://my.patch \
    file://src.tar.gz \
"
Run Code Online (Sandbox Code Playgroud)

do_fetch和do_unpack任务按预期工作,将my.patch和src /留在$ {S}目录中,即:

${S}/my.path
${S}/src.tar.gz
Run Code Online (Sandbox Code Playgroud)

但是do_patch任务失败并显示此ERROR消息:

ERROR: Command Error: exit status: 1  Output:
Applying patch my.patch
can't find file to patch at input line 4
Perhaps you used the wrong -p or --strip option?
Run Code Online (Sandbox Code Playgroud)

我测试了不同的替代方案,例如设置"patchdir"属性,如下所示:

SRC_URI = " \
    file://my.patch;patchdir=${S}/src \
    file://src.tar.gz \
"
Run Code Online (Sandbox Code Playgroud)

我希望"patchdir"与使用"patch …

patch recipe bitbake

3
推荐指数
1
解决办法
5551
查看次数