rm_work_and_downloads.bbclass: more aggressively minimize disk usage
rm_work.bbclass never deletes downloaded files, even if they are not going to be needed again during the build. rm_work_and_downloads.bbclass is more aggressive in minimizing the used disk space during a build, but has other disadvantages: - sources required by different recipes need to be fetched once per recipe, not once per build - incremental builds do not work reliably because sources get removed without ensuring that sources gets fetched again That makes rm_work_and_downloads.bbclass useful for one-time builds in a constrained environment (like a CI system), but not for general use. (From OE-Core rev: ca23a07fc6677720508197f2b44573bfd6b52f28) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
3ba8917c4d
commit
ce84432d98
|
@ -0,0 +1,33 @@
|
|||
# Author: Patrick Ohly <patrick.ohly@intel.com>
|
||||
# Copyright: Copyright (C) 2015 Intel Corporation
|
||||
#
|
||||
# This file is licensed under the MIT license, see COPYING.MIT in
|
||||
# this source distribution for the terms.
|
||||
|
||||
# This class is used like rm_work:
|
||||
# INHERIT += "rm_work_and_downloads"
|
||||
#
|
||||
# In addition to removing local build directories of a recipe, it also
|
||||
# removes the downloaded source. This is achieved by making the DL_DIR
|
||||
# recipe-specific. While reducing disk usage, it increases network usage (for
|
||||
# example, compiling the same source for target and host implies downloading
|
||||
# the source twice).
|
||||
#
|
||||
# Because the "do_fetch" task does not get re-run after removing the downloaded
|
||||
# sources, this class is also not suitable for incremental builds.
|
||||
#
|
||||
# Where it works well is in well-connected build environments with limited
|
||||
# disk space (like TravisCI).
|
||||
|
||||
inherit rm_work
|
||||
|
||||
# This would ensure that the existing do_rm_work() removes the downloads,
|
||||
# but does not work because some recipes have a circular dependency between
|
||||
# WORKDIR and DL_DIR (via ${SRCPV}?).
|
||||
# DL_DIR = "${WORKDIR}/downloads"
|
||||
|
||||
# Instead go up one level and remove ourself.
|
||||
DL_DIR = "${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}/${PN}/downloads"
|
||||
do_rm_work_append () {
|
||||
rm -rf ${DL_DIR}
|
||||
}
|
Loading…
Reference in New Issue