[oe-commits] [openembedded-core] 01/25: sstate: Add postrm command support

git at git.openembedded.org git at git.openembedded.org
Thu Sep 15 21:57:25 UTC 2016


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

commit 2268efd0cd3ddb40870c4c424d10444ba86d2849
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Thu Sep 15 11:45:14 2016 +0100

    sstate: Add postrm command support
    
    There are some issues in sstate which can't be handled by file removal
    alone. Currently there is no way to execute a command against sstate and
    doing so is potentially problematic for things like dependencies. This
    patch adds a mechanism where any "postrm" script is executed if its present
    allowing some openjade/sgml issues to be resolved.
    
    [YOCTO #8273]
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/sstate.bbclass | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 216e133..ac9d77d 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -175,6 +175,8 @@ def sstate_install(ss, d):
     if os.access(manifest, os.R_OK):
         bb.fatal("Package already staged (%s)?!" % manifest)
 
+    d.setVar("SSTATE_INST_POSTRM", manifest + ".postrm")
+
     locks = []
     for lock in ss['lockfiles-shared']:
         locks.append(bb.utils.lockfile(lock, True))
@@ -408,6 +410,13 @@ def sstate_clean_manifest(manifest, d):
         except OSError:
             pass
 
+    postrm = manifest + ".postrm"
+    if os.path.exists(manifest + ".postrm"):
+        import subprocess
+        os.chmod(postrm, 0o755)
+        subprocess.call(postrm, shell=True)
+        oe.path.remove(postrm)
+
     oe.path.remove(manifest)
 
 def sstate_clean(ss, d):
@@ -1012,6 +1021,8 @@ python sstate_eventhandler2() {
         for r in toremove:
             (stamp, manifest, workdir) = r.split()
             for m in glob.glob(manifest + ".*"):
+                if m.endswith(".postrm"):
+                    continue
                 sstate_clean_manifest(m, d)
             bb.utils.remove(stamp + "*")
             if removeworkdir:

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


More information about the Openembedded-commits mailing list