mirror of
https://git.yoctoproject.org/poky
synced 2026-03-17 04:39:40 +01:00
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] (From OE-Core rev: 2268efd0cd3ddb40870c4c424d10444ba86d2849) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user