标签: bitbake

最后如何应用补丁?

我有一个仅包含 的 *.bbappend 文件SRC_URI。还有补丁,但它们会抛出错误,因为它说没有要补丁的文件。要修补的文件是在基本配方中获取的。

我怎样才能给SRC_URI's 下订单?我尝试了图层优先级和后缀append,但补丁总是由于丢失文件而失败。

bitbake yocto

4
推荐指数
1
解决办法
3593
查看次数

如何将专有库包含到 Yocto 生成的嵌入式 Linux 的工具链 (SDK) 中?

我正在寻找一个示例,展示如何将专有库包含到工具链中。

我们给图书馆打电话吧myLib。为此,我创建了一个食谱myLib.bb并添加了:

BBCLASSEXTEND = "native nativesdk"
Run Code Online (Sandbox Code Playgroud)

在我的“local.conf”中我添加了:

IMAGE_INSTALL_append = " myLib"
Run Code Online (Sandbox Code Playgroud)

构建 SDK 时:

$ bitbake myTarget -c populate_sdk
Run Code Online (Sandbox Code Playgroud)

它生成 SDK 的安装程序和两个清单文件。myLib仅包含在目标清单中,而不包含在主机上。如何包含myLib在主机系统上?


这个想法是,另一个人可以在他的系统上构建软件,而无需 Yocto 系统。只有使用工具链,他才能生成二进制文件,可以在评估板上传输和执行。

sdk cross-compiling toolchain bitbake yocto

4
推荐指数
1
解决办法
1535
查看次数

如何在启动输出或 /etc/issue 中包含镜像层的 git 修订版?

我正在为 SBC 创建 Poky 映像,并且希望用户能够查找用于创建映像的配方文件的 SHA1 ID。

菜谱内容如下:

SUMMARY = "Toradex Embedded Linux Console Sporian Yocto version"
DESCRIPTION = "A Yocto Poky build derived from core-image-minimal"

LICENSE = "MIT"

#start of the resulting deployable tarball name
export IMAGE_BASENAME = "Sporian-Console-Image-Yocto"
IMAGE_NAME_apalis-imx6 = "Apalis-iMX6_${IMAGE_BASENAME}"

require /home/rdepew/workspace/oe-core3/poky/meta/recipes-core/images/core-image-minimal.bb

IMAGE_INSTALL += " \
    packagegroup-core-ssh-openssh \
    sqlite3 \
    avro-c \
"
Run Code Online (Sandbox Code Playgroud)

以下是 SBC 启动时的控制台输出:

Poky (Yocto Project Reference Distro) 2.4.3 apalis-imx6 /dev/ttymxc0

apalis-imx6 login: root
root@apalis-imx6:~# uname -a
Linux apalis-imx6 4.1.44-2.7.4+gb1555bfbf388 #1 SMP Tue Oct …
Run Code Online (Sandbox Code Playgroud)

git bitbake yocto

4
推荐指数
1
解决办法
3851
查看次数

如何解决 Yocto 文件/目录已安装但未在任何软件包中发货的问题

我正在使用自定义配方在我的 rootfs 中安装软件包。我的食谱如下:

FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

DESCRIPTION = "VPU libraries provided by fsl"
SUMMARY = "Copy mksd.sh script to image deployment area"
LICENSE = "CLOSED"

SRC_URI = " \
         file://smf_vpn_config.ovpn \
         file://ifplugd.action \
         file://get_mac.sh \
         file://gen_mac.sh \
         file://IP_SETTINGS.sh \
         file://network_config.sh \
         file://update_network.sh \
         file://check_lte_connection.sh \
         file://check_vpn_connection.sh \
         file://get_ip_address_of_interface.sh \
          "

do_install() {
install -d ${D}/etc/openvpn_config/
install -m 755 ${WORKDIR}/smf_vpn_config.ovpn ${D}/etc/openvpn_config/

install -d ${D}/etc/ifplugd/
install -m 755 ${WORKDIR}/ifplugd.action ${D}/etc/ifplugd/

install -d ${D}/usr/bin/
install -m 755 ${WORKDIR}/get_mac.sh ${D}/usr/bin/

install -d ${D}/usr/bin/
install …
Run Code Online (Sandbox Code Playgroud)

linux recipe raspberry-pi bitbake yocto

4
推荐指数
1
解决办法
3581
查看次数

如何将bitbake配方中的变量传递给makefile?

我正在尝试将我的bitbake(.bb)配方中的变量传递给我调用它的Makefile.

在我的食谱中我有:

export FOO="bar"
Run Code Online (Sandbox Code Playgroud)

当它运行do_compile()方法时,我让它调用我生成的Makefile.在我测试的Makefile中,通过以下方式正确设置了变量:

ifeq ($(FOO), "bar")
    echo $(FOO) >> ./test.txt
else
    echo "Didn't work" >> ./test.txt
endif
Run Code Online (Sandbox Code Playgroud)

当我烘焙食谱时,我只是在日志中看到"没有工作".我觉得这很奇怪,因为如果我FOO="bar"在我的Makefile中运行make,那么我会在测试文件中看到"bar".那么为什么它没有"正确"通过?

我又运行了一个测试验证,在我的Makefile中我只放了这行:

echo $(FOO) >> ./always_print.txt
Run Code Online (Sandbox Code Playgroud)

然后烘焙配方后,我看到bar打印在我的"always_print.txt"文件中,但我看到test.txt中打印出"Did not work"...

有没有人知道我在这里做错了什么?

makefile recipe openembedded bitbake

3
推荐指数
2
解决办法
5244
查看次数

构建python包

我正在咬一些python库并在添加第二个时收到此警告:

WARNING: The recipe is trying to install files into a shared area when those files already exist. Those files are:
   /home/ilya/beaglebone-dany/build/tmp/sysroots/beaglebone/usr/lib/python2.7/site-packages/site.py
   /home/ilya/beaglebone-dany/build/tmp/sysroots/beaglebone/usr/lib/python2.7/site-packages/site.pyo
Run Code Online (Sandbox Code Playgroud)

图书馆都使用inherit distutils.所以就bitbake而言这是可以的,但是当我尝试通过opkg安装第二个软件包时,我收到了这个错误:

# opkg install http://yocto.local:8080/python-requests_1.2.0-r0_armv7a-vfp-neon.ipk
Downloading http://yocto.local:8080/python-requests_1.2.0-r0_armv7a-vfp-neon.ipk.
Installing python-requests (1.2.0-r0) to root...
Configuring python-requests.

# opkg install http://yocto.local:8000/python-mylib_0.0.1-r0_armv7a-vfp-neon.ipk
Downloading http://yocto.local:8080/python-mylib_0.0.1-r0_armv7a-vfp-neon.ipk.
Installing python-mylib (0.0.1-r0) to root...
Collected errors:
 * check_data_file_clashes: Package mylib-python wants to install file /usr/lib/python2.7/site-packages/site.py
        But that file is already provided by package  * python-requests
 * check_data_file_clashes: Package mylib-python wants to install file …
Run Code Online (Sandbox Code Playgroud)

python openembedded bitbake

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

如何创建特定于机器的配方?

我想知道是否有机会仅通过文件名创建机器特定的配方,以便我有类似这样的层结构:

\-> recipes-example
     \-> example
         \-> example_1.0.bb_machine1
         \-> example_1.0.bb_machine2
Run Code Online (Sandbox Code Playgroud)

刚刚读过几乎完整的Yocto文档,并且认为我曾经偶然发现这个创建机器特定配方的机会,但无法重新修改它.

备选方案也很受欢迎,但我知道像这个例子的bash解决方案:

do_install() {
   case ${MACHINE} in
      < case statements [...] >
}
Run Code Online (Sandbox Code Playgroud)

recipe embedded-linux bitbake yocto

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

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
查看次数

在配方Yocto Project中使用pip install命令

我需要使用此站点上的现有库https://pypi.python.org/pypi/SpeechRecognition/

库目前格式压缩SpeechRecognition-3.4.3.tar.gz

我可以用吗

pip install SpeechRecognition
Run Code Online (Sandbox Code Playgroud)

在dorf函数中,如do_fetch,在配方文件中执行do_install?

在映像中安装此库

openembedded bitbake yocto

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

在烘焙食谱中创建符号链接

我有一个.bbappend配方,需要在系统中创建一个符号链接。

现在是这样的:

bernardo@bernardo-ThinkCentre-Edge72:~/yocto/genericx86-64-rocko-18.0.0/meta-datavision/recipes-devtools/oracle-java$ cat oracle-jse-jdk_1.7.0.bbappend 
FILES_${PN} += "/lib64/ld-linux-x86-64.so.2"

do_install_append() {
    install -d ${D}/lib64
    ln -s ${D}/lib/ld-2.26.so ${D}/lib64/ld-linux-x86-64.so.2 
}
Run Code Online (Sandbox Code Playgroud)

但是,在sysroot中仅创建目录/ lib64。没有生成符号链接/lib64/ld-linux-x86-64.so.2。

为了正确创建此符号链接,我应该在配方中进行哪些更改?

symlink bitbake yocto

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