@@ -808,6 +808,8 @@ Below are some of the packages with this scenario at the time of writing this.
The `deb` packages are built using `dpkg-buildpackage`, so the sources should contain the `debian` directory with necessary meta information. This way is the default way of adding software that needs to be compiled from source. The bbclass for this approach is called `dpkg`.
+For large applications that are not cross-compiled, it may be needed to extend the default build timeout of 150 minutes to a greater value: set `DPKG_BUILD_TIMEOUT` in your recipe to that effect.
+
**NOTE:** If the sources do not contain a `debian` directory your recipe can fetch, create, or ship that. You might want to read the the next section before returning here.
#### Example
@@ -4,6 +4,12 @@
inherit dpkg-base
inherit dpkg-source
+# maximum time (in minutes for the build), override for packages requiring
+# much more time (e.g. when cross-compiling isn't an option / supported and
+# the package large)
+DPKG_BUILD_TIMEOUT ?= "150"
+dpkg_runbuild[vardepsexclude] += "${DPKG_BUILD_TIMEOUT}"
+
DPKG_PREBUILD_ENV_FILE="${WORKDIR}/dpkg_prebuild.env"
# bitbake variables that should be passed into sbuild env
@@ -94,6 +100,7 @@ dpkg_runbuild() {
${@ expand_sbuild_pt_additions(d)}
echo '$apt_keep_downloaded_packages = 1;' >> ${SBUILD_CONFIG}
+ echo '$stalled_pkg_timeout = ${DPKG_BUILD_TIMEOUT};' >> ${SBUILD_CONFIG}
DEB_SOURCE_NAME=$(dpkg-parsechangelog --show-field Source --file ${WORKDIR}/${PPS}/debian/changelog)
DSC_FILE=$(find ${WORKDIR} -name "${DEB_SOURCE_NAME}*.dsc" -maxdepth 1 -print)
Some builds (especially those under qemu) can take a very long time and fail only because they did not complete within 2.5 hours. Let recipes budget some more time by setting DPKG_BUILD_TIMEOUT to a larger value (defaults to 150 minutes like sbuild). Signed-off-by: Cedric Hombourger <cedric.hombourger@siemens.com> --- doc/user_manual.md | 2 ++ meta/classes/dpkg.bbclass | 7 +++++++ 2 files changed, 9 insertions(+)