调试:站点文件 ['endian-little'、'bit-32'、'arm-common'、'arm-32'、'common-linux'、'common-glibc'、'arm-linux'、'arm-linux-gnueabi', 'common']

DEBUG: SITE files ['endian-little', 'bit-32', 'arm-common', 'arm-32', 'common-linux', 'common-glibc', 'arm-linux', 'arm-linux-gnueabi', 'common']

我正在尝试使用 Yocto 在我的 Beaglebone black 上安装 snappy player (https://wiki.gnome.org/Apps/Snappy)。到目前为止,我发现 Sanppy 需要 gstreamer 和 clutter。

我有 return 我的食谱如下:

k@k snappy-player]$ cat snappy-player_1.0.bb 
SUMMARY                         = "Snappy player for BBB"
DESCRIPTION                     = "Recipe to build Snappy player."
SECTION                         = "Multimedia"
PRIORITY                        = "optional"
LICENSE                         = "MIT"
LIC_FILES_CHKSUM                = "file://{COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI                         = "file://snappy-1.0.tar.xz"

S                               = "${WORKDIR}"

DEPENDS = "clutter-1.0 gstreamer1.0"

inherit autotools 

当我执行 bitbake core-image-sato 时,出现以下错误。

ERROR: snappy-player-1.0-r0 do_compile: oe_runmake failed
ERROR: snappy-player-1.0-r0 do_compile: Function failed: do_compile (log file is located at /home/k/YOCTO_KK/poky/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/snappy-player/1.0-r0/temp/log.do_compile.21220)
ERROR: Logfile of failure stored in: /home/k/YOCTO_KK/poky/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/snappy-player/1.0-r0/temp/log.do_compile.21220

***Log data follows:
| DEBUG: SITE files ['endian-little', 'bit-32', 'arm-common', 'arm-32', 'common-linux', 'common-glibc', 'arm-linux', 'arm-linux-gnueabi', 'common']
| DEBUG: Executing shell function do_compile
| NOTE: make -j 4
| make: *** No targets specified and no makefile found.  Stop.
| ERROR: oe_runmake failed
| WARNING: /home/k/YOCTO_KK/poky/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/snappy-player/1.0-r0/temp/run.do_compile.21220:1 exit 1 from 'exit 1'
| ERROR: Function failed: do_compile (log file is located at /home/k/YOCTO_KK/poky/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/snappy-player/1.0-r0/temp/log.do_compile.21220)***


ERROR: Task (/home/k/YOCTO_KK/poky/build/meta-customkernel-layer/recipes-apps/snappy-player/snappy-player_1.0.bb:do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 4813 tasks of which 4812 didn't need to be rerun and 1 failed.

Summary: 1 task failed:
  /home/k/YOCTO_KK/poky/build/meta-customkernel-layer/recipes-apps/snappy-player/snappy-player_1.0.bb:do_compile
Summary: There was 1 WARNING message shown.
Summary: There were 2 ERROR messages shown, returning a non-zero exit code.

我不确定我的配方中缺少哪些依赖项,因为 autotools 应该负责编译和安装,因为活泼的 tar 文件确实有 .ac 配置文件。

任何人都可以告诉我如何进行此操作吗?

仅供参考:已在此处附加 bitbake-cookerdaemon.log:https://pastebin.com/q1JGHNPv

嗨,我已经使用配方工具重新创建了配方 (snappy_1.0.bb),(因为它将包含适当的依赖文件)

recipetool create -d -o snappy_1.0.bb https://ftp.gnome.org/pub/gnome/sources/snappy/1.0/snappy-1.0.tar.xz

这是我的食谱文件内容:

[k@k snappy-player]$ cat snappy_1.0.bb

# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)

# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is
# your responsibility to verify that the values are complete and correct.
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=686e6cb566fd6382c9fcc7a557bf4544"

SRC_URI = "https://ftp.gnome.org/pub/gnome/sources/snappy/${PV}/snappy-${PV}.tar.xz"
SRC_URI[md5sum] = "17598504ba57d4d21382faa1038476d9"
SRC_URI[sha256sum] = "0d33a05c1ad3cc075b8b9bf38d45634ea5204159454597b0882dd6a8d9763f58"

# NOTE: unable to map the following pkg-config dependencies: clutter-gtk-1.0 clutter-win32-1.0 clutter-osx-1.0 clutter-gst-2.0
#       (this is based on recipes that have previously been built and packaged)
DEPENDS = "clutter-1.0 gtk+3 glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base libxtst"

# NOTE: if this software is not capable of being built in a separate build directory
# from the source, you should replace autotools with autotools-brokensep in the
# inherit line
inherit pkgconfig autotools

# Specify any options you want to pass to the configure script using EXTRA_OECONF:
EXTRA_OECONF = ""

这次除了之前的错误(SITE 文件...)我也遇到了依赖性问题。

checking for clutter-gst-2.0 >= 2.0.0... no
| configure: error: Package requirements (clutter-gst-2.0 >= 2.0.0) were not met:
| 
| No package 'clutter-gst-2.0' found

默认情况下,在 metarecipes 中我们有 clutter-gst-3.0,但 snappy 配置文件需要 2.0。那么我该如何解决这个问题呢?顺便说一句,我尝试创建一个新的 clutter-gst-2.0 recpie,尽管如此,我得到了相同的错误响应:-(.

请查看此处的错误日志https://pastebin.com/8wGxqh8x

有人可以指导我吗?

这里有两个问题:

1 尝试在错误的目录中构建

S 设置为 ${WORKDIR} 意味着将在 tarball 解压的目录中尝试构建(配置和制作任务)。然而,tarball 创建了一个顶级 snappy-1.0 目录,它位于应该执行构建的目录中。

尝试将 S 更改为:

S = "${WORKDIR}/snappy-${PV}"

您的第二个配方文件已更改名称 snappy_1.0.bb,并且未设置 S,因此它将使用 default value:

By default, this directory is ${WORKDIR}/${BPN}-${PV}, where ${BPN} is the base recipe name and ${PV} is the recipe version.

这正是我们在这种情况下想要的。

这允许配置任务 运行,并导致第二个问题...

2 未解决的依赖关系

snappy-1.0 需要 clutter-gst-2.0。你有 clutter-gst-3.0 并不重要,它们有不同的名称,因此就配置而言,它们是完全不同的东西。所以你有很多选择:

  • 构建 clutter-gst-2.0。你说你试过这个,但记住你需要添加 clutter-gst-2.0DEPENDS 否则 bitbake 不知道它必须先构建它。
  • 修补 snappy-1.0 以使用 clutter-gst-3.0
  • 看看有没有更高版本的snappy使用clutter-gst-3.0

巧合的是,snappy git repository 发生了一些变化,增加了对 clutter-gst-3.0 的支持,因此您可以尝试从 git 而不是 1.0 构建最新版本发布。为此,请将食谱中的 SRC_URI 行替换为:

SRCREV = "e73fabce4c397b40d490c74f6a6a0de000804f42"
SRC_URI = "git://git.gnome.org/snappy"
S = "${WORKDIR}/git"

您还需要设置 S,因为从 git 存储库检索时存储源的目录现在将称为 git,因此不匹配默认值。

试一试,看看下一个问题是什么,编写 Yocto 食谱是一个非常反复的过程!