Patchwork [2/9] classes/buildhistory: ensure old package info is removed

login
register
mail settings
Submitter Paul Eggleton
Date Aug. 2, 2012, 9:23 a.m.
Message ID <eda59b1ce105699700744ab9124efb74c161c7ad.1343899228.git.paul.eggleton@linux.intel.com>
Download mbox | patch
Permalink /patch/33643/
State Accepted
Commit 223b183197b363edef0c11a25bad33555fca5a15
Headers show

Comments

Paul Eggleton - Aug. 2, 2012, 9:23 a.m.
If a package is removed from PACKAGES, ensure that the package info file
and directory are removed from buildhistory so that we don't have stale
data lying around.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 meta/classes/buildhistory.bbclass |   18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

Patch

diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index f5494cd..c3555da 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -149,6 +149,19 @@  python buildhistory_emit_pkghistory() {
     pr = d.getVar('PR', True)
     packages = squashspaces(d.getVar('PACKAGES', True))
 
+    packagelist = packages.split()
+    if not os.path.exists(pkghistdir):
+        os.makedirs(pkghistdir)
+    else:
+        # Remove files for packages that no longer exist
+        for item in os.listdir(pkghistdir):
+            if item != "latest":
+                if item not in packagelist:
+                    subdir = os.path.join(pkghistdir, item)
+                    for subfile in os.listdir(subdir):
+                        os.unlink(os.path.join(subdir, subfile))
+                    os.rmdir(subdir)
+
     rcpinfo = RecipeInfo(pn)
     rcpinfo.pe = pe
     rcpinfo.pv = pv
@@ -159,7 +172,7 @@  python buildhistory_emit_pkghistory() {
 
     # Apparently the version can be different on a per-package basis (see Python)
     pkgdest = d.getVar('PKGDEST', True)
-    for pkg in packages.split():
+    for pkg in packagelist:
         pe = getpkgvar(pkg, 'PE') or "0"
         pv = getpkgvar(pkg, 'PV')
         pr = getpkgvar(pkg, 'PR')
@@ -206,9 +219,6 @@  def write_recipehistory(rcpinfo, d):
 
     pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE', True)
 
-    if not os.path.exists(pkghistdir):
-        os.makedirs(pkghistdir)
-
     infofile = os.path.join(pkghistdir, "latest")
     f = open(infofile, "w")
     try: