Skip to contentSkip to conversation

sstate: Add postrm command support

PATCH New Richard Purdie 1 participant 1 message Sep 15, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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]

meta/classes/sstate.bbclass +0 -0
index 8b6ac50..0498a38 100644
@@ -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)) @@ -407,6 +409,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):
@@ -1011,6 +1020,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: