我有一个仅包含 的 *.bbappend 文件SRC_URI。还有补丁,但它们会抛出错误,因为它说没有要补丁的文件。要修补的文件是在基本配方中获取的。
我怎样才能给SRC_URI's 下订单?我尝试了图层优先级和后缀append,但补丁总是由于丢失文件而失败。
我正在寻找一个示例,展示如何将专有库包含到工具链中。
我们给图书馆打电话吧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 系统。只有使用工具链,他才能生成二进制文件,可以在评估板上传输和执行。
我正在为 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) 我正在使用自定义配方在我的 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) 我正在尝试将我的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) 我想知道是否有机会仅通过文件名创建机器特定的配方,以便我有类似这样的层结构:
\-> 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) 我有一个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 …
我需要使用此站点上的现有库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?
在映像中安装此库
我有一个.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。
为了正确创建此符号链接,我应该在配方中进行哪些更改?