sourceipk: fix race condition with compileconfigs/multi-kernel
authorchase maupin <chasemaupin03@gmail.com>
Mon, 31 Jan 2011 22:15:40 +0000 (22:15 +0000)
committerDenys Dmytriyenko <denis@denix.org>
Thu, 3 Feb 2011 01:31:14 +0000 (20:31 -0500)
* 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>
classes/sourceipk.bbclass

index 75e7a14..b37bbf9 100644 (file)
@@ -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"