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!
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.