[gnome-continuous-yocto/gnomeostree-3.28-rocko: 4107/8267] rm_work_and_downloads.bbclass: more aggressively minimize disk usage



commit ce84432d983dde8f5616727712ac7231e20c4d1b
Author: Patrick Ohly <patrick ohly intel com>
Date:   Fri Jan 13 15:52:32 2017 +0100

    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>

 meta/classes/rm_work_and_downloads.bbclass |   33 ++++++++++++++++++++++++++++
 1 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/meta/classes/rm_work_and_downloads.bbclass b/meta/classes/rm_work_and_downloads.bbclass
new file mode 100644
index 0000000..7c00bea
--- /dev/null
+++ b/meta/classes/rm_work_and_downloads.bbclass
@@ -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}
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]