[oe-commits] [openembedded-core] 03/05: staging: Handle files moving between dependencies

git at git.openembedded.org git at git.openembedded.org
Tue Nov 5 12:33:47 UTC 2019


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

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

commit b96e6f4c4a0b7037836384be847b2eb5f415ee08
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Mon Nov 4 17:27:52 2019 +0000

    staging: Handle files moving between dependencies
    
    Currently, if files move between recipes, do_prepare_sysroot can fail with a message like
    
    Exception: FileExistsError: [Errno 17] File exists:
    'TMPDIR/sysroots-components/core2-64/libx11/usr/include/X11/extensions/XKBgeom.h' ->
    'TMPDIR/work/core2-64-poky-linux/gtk+3/3.24.8-r0/recipe-sysroot/usr/include/X11/extensions/XKBgeom.h'
    
    This is because files are removed and then added per package. What needs to
    happen is all removes need to be processed, then all additions.
    
    This patch changes the code to process in two phases, removals first, then additions,
    which avoids the problem.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/staging.bbclass | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index 55a9b52..cca0b7e 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -449,6 +449,7 @@ python extend_recipe_sysroot() {
     msg_exists = []
     msg_adding = []
 
+    # Handle all removals first since files may move between recipes
     for dep in configuredeps:
         c = setscenedeps[dep][0]
         if c not in installed:
@@ -459,7 +460,6 @@ python extend_recipe_sysroot() {
         if os.path.exists(depdir + "/" + c):
             lnk = os.readlink(depdir + "/" + c)
             if lnk == c + "." + taskhash and os.path.exists(depdir + "/" + c + ".complete"):
-                msg_exists.append(c)
                 continue
             else:
                 bb.note("%s exists in sysroot, but is stale (%s vs. %s), removing." % (c, lnk, c + "." + taskhash))
@@ -470,6 +470,20 @@ python extend_recipe_sysroot() {
         elif os.path.lexists(depdir + "/" + c):
             os.unlink(depdir + "/" + c)
 
+    # Now handle installs
+    for dep in configuredeps:
+        c = setscenedeps[dep][0]
+        if c not in installed:
+            continue
+        taskhash = setscenedeps[dep][5]
+        taskmanifest = depdir + "/" + c + "." + taskhash
+
+        if os.path.exists(depdir + "/" + c):
+            lnk = os.readlink(depdir + "/" + c)
+            if lnk == c + "." + taskhash and os.path.exists(depdir + "/" + c + ".complete"):
+                msg_exists.append(c)
+                continue
+
         msg_adding.append(c)
 
         os.symlink(c + "." + taskhash, depdir + "/" + c)

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


More information about the Openembedded-commits mailing list