一些食谱在更新到 Yocto 2.0 后失败 "Jethro"

Some recipes fail after update to Yocto 2.0 "Jethro"

我刚刚将我的 Yocto Poky 从 "Daisy" 升级到 "Jethro",现在一些过去工作正常的食谱在 "do_install" 任务上失败并出现类似的错误消息:

ERROR: oe_runmake failed
ERROR: Function failed: do_install (log file is located at /build/tmp/work/cortexa9hf/qpdf/6.0.0-r0/temp/log.do_install.31232)
ERROR: Logfile of failure stored in: /build/tmp/work/cortexa9hf/qpdf/6.0.0-r0/temp/log.do_install.31232
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_install
| NOTE: make -j 8 DESTDIR=/build/tmp/work/cortexa9hf/qpdf/6.0.0-r0/image install
| make: *** No rule to make target 'install'.  Stop.
| ERROR: oe_runmake failed
| ERROR: Function failed: do_install (log file is located at /build/tmp/work/cortexa9hf/qpdf/6.0.0-r0/temp/log.do_install.31232)
ERROR: Task 2 (/home/g0hl1n/git/meta-mine/recipes-foss/qpdf/qpdf_6.0.0.bb, do_install) failed with exit code '1'

我认为这是由于构建目录的分离造成的,但我搜索 answer/solution 没有成功。
产生上述错误消息的方法是:

DESCRIPTION = "PDF transformation/inspection software"
HOMEPAGE = "http://qpdf.sourceforge.net"
LICENSE = "Artistic-2.0"
SECTION = ""
DEPENDS = "libpcre"
PR = "r0"

SRC_URI = "https://github.com/qpdf/qpdf/archive/release-qpdf-${PV}.tar.gz"
LIC_FILES_CHKSUM = "file://Artistic-2.0;md5=7806296b9fae874361e6fb10072b7ee3"
SRC_URI[md5sum] = "a0601b0bc56d3f412fd3afecfce2721c"
SRC_URI[sha256sum] = "ce323ca692ddc6da31a90ef8a5f7fb7bc6c61c1c037e2eac14e5d0fcfe6a2797"

S="${WORKDIR}/${PN}-release-${PN}-${PV}"

inherit autotools gettext

# disable random file detection for cross-compile
EXTRA_OECONF = "--without-random"

PACKAGES =+ "libqpdf"

FILES_libqpdf = "${libdir}/libqpdf.so.*"

非常感谢任何帮助,谢谢!

我刚刚自己找到了答案。 (我应该在发帖之前做更多的研究...)

构建失败,因为 Yocto 1.7 更新中 autotools class 发生了变化。

A separate build directory is now used by default: The autotools class has been changed to use a directory for building (B), which is separate from the source directory (S). This is commonly referred to as B != S, or an out-of-tree build.

If the software being built is already capable of building in a directory separate from the source, you do not need to do anything. However, if the software is not capable of being built in this manner, you will need to either patch the software so that it can build separately, or you will need to change the recipe to inherit the autotools-brokensep class instead of the autotools or autotools_stage classes. [1]

因此从 inherit autotools 更改为 inherit autotools-brokensep 解决了 qpdf 构建的问题。

[1] https://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html#migration-1.7-autotools-class-changes