Patchwork archiver: create dir 'B' explicitly while WORKDIR changed

login
register
mail settings
Submitter wenzong.fan@windriver.com
Date June 16, 2014, 3:22 a.m.
Message ID <1402888977-658-1-git-send-email-wenzong.fan@windriver.com>
Download mbox | patch
Permalink /patch/73823/
State Accepted
Commit f2a104d777dc23db2a6fa7b0d9dcb942a830872f
Headers show

Comments

wenzong.fan@windriver.com - June 16, 2014, 3:22 a.m.
From: Hongxu Jia <hongxu.jia@windriver.com>

In the do_unpack_and_patch task of archiver, the changed 'WORKDIR' also
casued 'B' changed, create dir 'B' for the possibly requiring of the
tasks which executed in do_unpack_and_patch task.

Such as cut-ecgl's do_patch required 'B' existed:
...
| cp: target 'tmp/work/x86_64-wrs-linux/cut-ecgl/1.0-r0/archiver-work
/cut-ecgl-1.0' is not a directory
...
| ERROR: Function failed: do_patch (log file is located at tmp/work/
x86_64-wrs-linux/cut-ecgl/1.0-r0/temp/do_unpack_and_patch/
log.do_unpack_and_patch.11886)
...

The 'B' dir is implicitly created at the task executing time while the
task tag 'dirs' is not assigned. In the above cut-ecgl example, the 'B'
was created at the wrl_buildlink executing time which is the prefuncs of
task do_unpack. So the following do_patch could use 'B' correctly. But
wrl_buildlink is unnecessary and not invoked in the do_unpack_and_patch
task.

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/classes/archiver.bbclass |    5 +++++
 1 file changed, 5 insertions(+)

Patch

diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index bcbc37d..0a8a019 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -288,6 +288,11 @@  python do_unpack_and_patch() {
     # Change the WORKDIR to make do_unpack do_patch run in another dir.
     d.setVar('WORKDIR', d.getVar('ARCHIVER_WORKDIR', True))
 
+    # The changed 'WORKDIR' also casued 'B' changed, create dir 'B' for the
+    # possibly requiring of the following tasks (such as some recipes's
+    # do_patch required 'B' existed).
+    bb.utils.mkdirhier(d.getVar('B', True))
+
     # The kernel source is ready after do_validate_branches
     if bb.data.inherits_class('kernel-yocto', d):
         bb.build.exec_func('do_unpack', d)