我正在尝试将我的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"...
有没有人知道我在这里做错了什么?
我正在咬一些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) 是否有用户指南或标准做法,可帮助在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。
我试图在现有的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) 我有一个在 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 …
我有一个基于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,但我还没有这方面的任何成功.有没有办法改变这些安装变量,或者我是否以错误的方式考虑这个问题?
根据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) 我正在开发一个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]文件名太长
我需要使用此站点上的现有库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?
在映像中安装此库
我想强制重新编译一个包,就像那样:
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从编译开始执行所有操作吗?
我需要在Yocto构建的目标操作系统上运行脚本.
此脚本需要作为安装的一部分运行,因此必须只运行一次(在整个OS安装之后或首次启动时).它不能在主机系统上运行,因为它取决于仅存在于目标上的硬件IO.
另一个小的约束是rootfs是以只读方式挂载的,但我想这可以通过将脚本重新挂载为rw并在执行后再次重新安装为r或沿着这些行的某些内容来避免.
任何帮助表示赞赏.