aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchase maupin <chasemaupin03@gmail.com>2011-01-31 22:15:40 +0000
committerDenys Dmytriyenko <denis@denix.org>2011-02-02 20:31:14 -0500
commit67b511de871b2cfcbb6efd99b8b315282bbc29e9 (patch)
treed389e2851d3c600e6aa7488dff55bdef628c78ee
parent5225c735fe8c4d918daea415a404e45d1a3d5270 (diff)
downloadopenembedded-67b511de871b2cfcbb6efd99b8b315282bbc29e9.tar.gz
sourceipk: fix race condition with compileconfigs/multi-kernel
* This patch adds an empty compileconfigs function to the sourceipk class. * This is required because when making a sourceipk of a package using the multi-kernel.inc functionality you will have a race condition between the compileconfigs of the multi-kernel file building the kernel and sourceipk trying to copy and patch the sources. The resulting conditions can then occur: - You will package some interim build files, yielding a sourceipk that is not consistent between builds - You will try to copy interim build files as they are being deleted which will result in an error and break the build. * The empty compileconfigs function is overwritten by the real compileconfigs function when the multi-kernel.inc file is used. Signed-off-by: Chase Maupin <Chase.Maupin@ti.com> Signed-off-by: Denys Dmytriyenko <denis@denix.org>
-rw-r--r--classes/sourceipk.bbclass13
1 files changed, 12 insertions, 1 deletions
diff --git a/classes/sourceipk.bbclass b/classes/sourceipk.bbclass
index 75e7a1443b..b37bbf9aa9 100644
--- a/classes/sourceipk.bbclass
+++ b/classes/sourceipk.bbclass
@@ -144,7 +144,18 @@ EXPORT_FUNCTIONS do_create_srcipk
do_create_srcipk[deptask] = "do_patch"
-addtask create_srcipk after do_patch before do_configure
+# Add a blank compileconfigs task. This allows the sourceipk to schedule
+# its copy of the sources for kernels using the multi-kernel functionality
+# before the compileconfigs task. Failure to do this results in a race
+# condition where in the best case the sources packaged may contain binary
+# builds and in the worst case binary files being cleaned cause an error
+# in the copy command for the sourceipk.
+do_compileconfigs() {
+ :
+}
+addtask compileconfigs after do_patch before do_configure
+
+addtask create_srcipk after do_patch before do_compileconfigs
#Add source packages to list of packages OE knows about
PACKAGES_DYNAMIC += "${PN}-src"