标签: openembedded

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

使用bitbakes在openEmbedded环境下部署Jenkins

是否有用户指南或标准做法,可帮助在openEmbedded环境中部署Jenkins?

我可以让jenkins服务运行,它使用SSH凭证从构建服务器上的普通SCM复制回购。buildserver是一台远程机器,到目前为止,我们一直使用Linux发行版(Fedora core 16)上的“ buildmaster”帐户来触发手动构建。在buildmaster下,我们用来修改bitbake配方并执行bitbake命令来构建目标映像(标准ipk映像)。

具体来说,我正在尝试找出使jenkins看到openEmbedded环境的正确方法。

我的计划是

1)在jenkins-home(/ var / log / jenkins)下创建一组OE目录,这些目录象征性地指向buildmaster bitbake目录结构。

2)在用户詹金斯中设置环境变量。

3)为用户“ jenkins”提供所有特权,以执行位于“ buildmaster”帐户中的脚本。

我在想正确的方向吗?另外,请建议使用任何合适的jenkins-plugin(如果有),这可能有助于在处理上述复杂性时设置Jenkins。

c++ continuous-integration jenkins openembedded bitbake

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

bitbake没有找到更新的食谱

我试图在现有的OE环境中包含当前yocto版本的升级的autotools而不升级我现有的所有包,所以我在我的conf文件中添加了yocto作为一个层:

BBLAYERS += " \
...
        ${OEBASE}/sources/meta-yocto/meta \
...
        ${OEBASE}/sources/oe-core/meta \
Run Code Online (Sandbox Code Playgroud)

在最初的oe-core层,我有automake_1.12.3:

../sources/oe-core/meta/recipes-devtools/automake/
??? automake
?   ??? path_prog_fixes.patch
?   ??? prefer-cpio-over-pax-for-ustar-archives.patch
?   ??? py-compile-compile-only-optimized-byte-code.patch
?   ??? python-libdir.patch
??? automake_1.12.3.bb
??? automake.inc
Run Code Online (Sandbox Code Playgroud)

在yocto层:

../sources/meta-yocto/meta/recipes-devtools/automake/
??? automake
?   ??? buildtest.patch
?   ??? py-compile-compile-only-optimized-byte-code.patch
?   ??? python-libdir.patch
??? automake_1.14.1.bb
??? automake.inc
Run Code Online (Sandbox Code Playgroud)

但是,bitbake只找到版本1.12.3:

$ bitbake -s | grep automake
automake                                           :1.12.3-r2                          
automake-native                                    :1.12.3-r2                          
nativesdk-automake                                 :1.12.3-r2  
Run Code Online (Sandbox Code Playgroud)

但是,我确信图层配置和路径是正确的,因为如果我通过在yocto层中复制/重命名automake_1.14.1.bb来创建虚拟配方zz:

../sources/meta-yocto/meta/recipes-devtools/zz
??? automake
?   ??? buildtest.patch
?   ??? py-compile-compile-only-optimized-byte-code.patch
?   ??? python-libdir.patch
??? automake.inc
??? zz_1.14.1.bb
Run Code Online (Sandbox Code Playgroud)

然后,bitbake发现它很好:

$ …
Run Code Online (Sandbox Code Playgroud)

openembedded bitbake yocto

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

什么导致 BitBake 工作进程意外退出?

我有一个在 Docker 容器(CentOS 7)上运行的 BitBake 构建过程。在recipe gcc-cross-i586-5.2.0-r0: task do_compile我尝试的每次运行中,BitBake 都会失败。

的输出示例bitbake

NOTE: recipe gcc-cross-i586-5.2.0-r0: task do_compile: Started
ERROR: Worker process (367) exited unexpectedly (-9), shutting down...
ERROR: Worker process (367) exited unexpectedly (-9), shutting down...
ERROR: Worker process (367) exited unexpectedly (-9), shutting down...
ERROR: Worker process (367) exited unexpectedly (-9), shutting down...
NOTE: Tasks Summary: Attempted 1538 tasks of which 17 didn't need to be rerun and all succeeded.
Run Code Online (Sandbox Code Playgroud)

这是问题recipe gcc-cross-i586-5.2.0-r0: task do_compile …

linux openembedded bitbake docker yocto

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

如何更改基于autotools的Bitbake配方的安装路径?

我有一个基于autotools的BitBake配方,我希望安装二进制文件/usr/local/bin和安装库/usr/local/lib(而不是/usr/bin/usr/lib,它们是默认的目标目录).

这是autotools.bbclass我发现重要文件的一部分.

CONFIGUREOPTS = " --build=${BUILD_SYS} \
                  --host=${HOST_SYS} \
                  --target=${TARGET_SYS} \
                  --prefix=${prefix} \
                  --exec_prefix=${exec_prefix} \
                  --bindir=${bindir} \
                  --sbindir=${sbindir} \
                  --libexecdir=${libexecdir} \
                  --datadir=${datadir} \
                  --sysconfdir=${sysconfdir} \
                  --sharedstatedir=${sharedstatedir} \
                  --localstatedir=${localstatedir} \
                  --libdir=${libdir} \
                  ...
Run Code Online (Sandbox Code Playgroud)

我认为,最简单的方法来完成我想要做的是简单地改变${bindir}${libdir},或者改变${prefix}/usr/local,但我还没有这方面的任何成功.有没有办法改变这些安装变量,或者我是否以错误的方式考虑这个问题?


更新:

策略1

根据Ross Burton的建议,我尝试将以下内容添加到我的食谱中:

prefix="/usr/local"
exec_prefix="/usr/local"
Run Code Online (Sandbox Code Playgroud)

但这会导致构建在该配方的do_configure()任务期间失败,并返回以下内容:

| checking for GLIB... no
| configure: error: Package requirements (glib-2.0 >= 2.12.3) were not met:
| 
| No package …
Run Code Online (Sandbox Code Playgroud)

openembedded bitbake yocto

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

错误文件名太长Yocto Project

我正在开发一个Yocto项目,版本:poky-jethro

我想为Raspberry Pi构建一个版本的发行版poky

Build Configuration:
BB_VERSION        = "1.28.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Ubuntu-14.04"
TARGET_SYS        = "arm-poky-linux-gnueabi"
MACHINE           = "raspberrypi"
DISTRO            = "poky"
DISTRO_VERSION    = "2.0.1"
TUNE_FEATURES     = "arm armv6 vfp arm1176jzfs callconvention-hard"
TARGET_FPU        = "vfp"
meta              
meta-yocto        = "jethro:3b223f75eec1738fbc913858e8e11c8305e3edcb"
meta-oe           
meta-multimedia   
meta-networking   
meta-python       = "jethro:c305ac5d2f5285d5eec8952a4ca7f3b4f89aed96"
meta-qt5          = "jethro:9bfcf79fcd824efb9f2a9bd72ecbedfee1315c96"
meta-raspberrypi  = "jethro:f2cff839f52a6e6211337fc45c7c3eabf0fac113"
meta-rpi          = "jethro:3ef71867eeb3669da40019469385a437843e8245"
Run Code Online (Sandbox Code Playgroud)

我成功地在另一个操作系统"Ubuntu-14.0403"上构建系统但是当我尝试在另一个版本"Ubuntu-14.0404"上构建系统时

出现此错误

[Errno 36]文件名太长

[Errno 36]文件名太长

embedded-linux openembedded bitbake ubuntu-14.04 yocto

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

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

Bitbake:强制执行一个配方任务,然后执行所有操作

我想强制重新编译一个包,就像那样:

bitbake -f -c compile mypackage
Run Code Online (Sandbox Code Playgroud)

不过,我也希望被执行的所有以下任务(如install,package等),就像我曾呼吁bitbake mypackage从一个完全干净的状态.这可以在完成一个步骤,而不是下面的两个?

bitbake -f -c compile mypackage
bitbake mypackage
Run Code Online (Sandbox Code Playgroud)

或者作为替代解决方案,我可以以某种方式"污染"编译任务,以便bitbake mypackage从编译开始执行所有操作吗?

openembedded bitbake yocto

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

在Yocto构建的linux上安装后脚本

我需要在Yocto构建的目标操作系统上运行脚本.

此脚本需要作为安装的一部分运行,因此必须只运行一次(在整个OS安装之后或首次启动时).它不能在主机系统上运行,因为它取决于仅存在于目标上的硬件IO.

另一个小的约束是rootfs是以只读方式挂载的,但我想这可以通过将脚本重新挂载为rw并在执行后再次重新安装为r或沿着这些行的某些内容来避免.

任何帮助表示赞赏.

openembedded angstrom-linux yocto imx6

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