更新到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'

我认为这是以某种方式从构建目录的分离,但我搜索答案/解决方案不成功。 产生上述错误消息的方法是:

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.*"

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

I've just upgraded my Yocto Poky from "Daisy" to "Jethro" and now some recipes which used to work fine fail on the "do_install" task with similar error messages:

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'

I think this comes somehow from the separation of the build directory, but my searches for an answer/solution weren't successful. The recipe which produces the error message above is:

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.*"

Any help is much appreciated, thanks!

最满意答案

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

由于Yocto 1.7更新中autotools类的更改,构建失败。

现在默认使用单独的构建目录:autotools类已更改为使用构建(B)的目录,该目录与源目录(S)分开。 这通常称为B!= S,或称为树外构建。

如果正在构建的软件已经能够在与源不同的目录中构建,则无需执行任何操作。 但是,如果软件无法以这种方式构建,则需要对软件进行修补以使其可以单独构建,或者您需要更改配方以继承autotools-brokensep类而不是autotools或autotools_stage类。 [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

I just found out the answer myself. (I should have done more research before posting here...)

The build fails because of a change in the autotools class in the Yocto 1.7 update.

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]

So changing from inherit autotools to inherit autotools-brokensep fixed the problem with the qpdf build.

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

更新到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'

我认为这是以某种方式从构建目录的分离,但我搜索答案/解决方案不成功。 产生上述错误消息的方法是:

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.*"

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

I've just upgraded my Yocto Poky from "Daisy" to "Jethro" and now some recipes which used to work fine fail on the "do_install" task with similar error messages:

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'

I think this comes somehow from the separation of the build directory, but my searches for an answer/solution weren't successful. The recipe which produces the error message above is:

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.*"

Any help is much appreciated, thanks!

最满意答案

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

由于Yocto 1.7更新中autotools类的更改,构建失败。

现在默认使用单独的构建目录:autotools类已更改为使用构建(B)的目录,该目录与源目录(S)分开。 这通常称为B!= S,或称为树外构建。

如果正在构建的软件已经能够在与源不同的目录中构建,则无需执行任何操作。 但是,如果软件无法以这种方式构建,则需要对软件进行修补以使其可以单独构建,或者您需要更改配方以继承autotools-brokensep类而不是autotools或autotools_stage类。 [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

I just found out the answer myself. (I should have done more research before posting here...)

The build fails because of a change in the autotools class in the Yocto 1.7 update.

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]

So changing from inherit autotools to inherit autotools-brokensep fixed the problem with the qpdf build.

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