aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes/rm_work_and_downloads.bbclass
blob: 7c00bea597083fb86f6f3155afeffe85ea706652 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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}
}