[oe-commits] [openembedded-core] 05/20: archiver.bbclass: various fixes for original+diff mode

git at git.openembedded.org git at git.openembedded.org
Sun Jan 7 17:12:06 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch pyro
in repository openembedded-core.

commit 497795c5a9db8ddb29302780a94eabf6f9b05c9d
Author: Patrick Ohly <patrick.ohly at intel.com>
AuthorDate: Fri May 5 12:25:24 2017 +0200

    archiver.bbclass: various fixes for original+diff mode
    
    The diff.gz gets created in do_unpack_and_patch, but
    do_deploy_archives did not depend on it, so there was a race
    condition. For example, "bitbake linux-intel:do_deploy_archives"
    without a prior "bitbake linux-intel:do_kernel_configme" did not
    deploy the diff.gz.
    
    When do_unpack_and_patch ran first, it failed because the output
    directory didn't exist yet and the error was not detected because the
    result of the diff command wasn't checked.
    
    Changing the current working directory in create_diff_gz() without
    returning to the original directory caused warnings like this:
       WARNING: linux-intel-... do_unpack_and_patch: Task do_unpack_and_patch changed cwd to .../tmp-glibc/work-shared/intel-corei7-64
    
    (From OE-Core rev: 18aac553ca35049c80b6cc82ff0e69ce8a7a03a9)
    
    (From OE-Core rev: 58ae2be68c2eb4153c09386eebefe9b57400c777)
    
    Signed-off-by: Patrick Ohly <patrick.ohly at intel.com>
    Signed-off-by: Ross Burton <ross.burton at intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/archiver.bbclass | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index fb0c77d..0938c99 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -79,6 +79,11 @@ python () {
 
     if ar_src == "original":
         d.appendVarFlag('do_deploy_archives', 'depends', ' %s:do_ar_original' % pn)
+        # 'patched' and 'configured' invoke do_unpack_and_patch because
+        # do_ar_patched resp. do_ar_configured depend on it, but for 'original'
+        # we have to add it explicitly.
+        if d.getVarFlag('ARCHIVER_MODE', 'diff') == '1':
+            d.appendVarFlag('do_deploy_archives', 'depends', ' %s:do_unpack_and_patch' % pn)
     elif ar_src == "patched":
         d.appendVarFlag('do_deploy_archives', 'depends', ' %s:do_ar_patched' % pn)
     elif ar_src == "configured":
@@ -285,11 +290,16 @@ def create_diff_gz(d, src_orig, src, ar_outdir):
 
     dirname = os.path.dirname(src)
     basename = os.path.basename(src)
-    os.chdir(dirname)
-    out_file = os.path.join(ar_outdir, '%s-diff.gz' % d.getVar('PF'))
-    diff_cmd = 'diff -Naur %s.orig %s.patched | gzip -c > %s' % (basename, basename, out_file)
-    subprocess.call(diff_cmd, shell=True)
-    bb.utils.remove(src_patched, recurse=True)
+    bb.utils.mkdirhier(ar_outdir)
+    cwd = os.getcwd()
+    try:
+        os.chdir(dirname)
+        out_file = os.path.join(ar_outdir, '%s-diff.gz' % d.getVar('PF'))
+        diff_cmd = 'diff -Naur %s.orig %s.patched | gzip -c > %s' % (basename, basename, out_file)
+        subprocess.check_call(diff_cmd, shell=True)
+        bb.utils.remove(src_patched, recurse=True)
+    finally:
+        os.chdir(cwd)
 
 # Run do_unpack and do_patch
 python do_unpack_and_patch() {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list