aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Mommertz <2kmm@gmx.de>2016-06-24 08:40:56 -0700
committerZac Medico <zmedico@gentoo.org>2016-06-24 14:40:28 -0700
commit824953dd70d650ee0b2c057b0dfb44efb8f56a9b (patch)
tree8adc7b0e56d1cb04f701a02071ceed2b57e8d999
parenteclean: Apply handle binpkgs with .xpak suffix patch from bug 586658 (diff)
downloadgentoolkit-824953dd70d650ee0b2c057b0dfb44efb8f56a9b.tar.gz
gentoolkit-824953dd70d650ee0b2c057b0dfb44efb8f56a9b.tar.bz2
gentoolkit-824953dd70d650ee0b2c057b0dfb44efb8f56a9b.zip
eclean: Keep only packages with BUILD_TIME equal to installed one
X-Gentoo-bug: 586658 X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=586658 Acked-by: Paul Varner <fuzzyray@gentoo.org>
-rw-r--r--pym/gentoolkit/eclean/search.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/pym/gentoolkit/eclean/search.py b/pym/gentoolkit/eclean/search.py
index 7b261b8..ce796f5 100644
--- a/pym/gentoolkit/eclean/search.py
+++ b/pym/gentoolkit/eclean/search.py
@@ -562,24 +562,28 @@ def findPackages(
if stat.S_ISLNK(st[stat.ST_MODE]):
clean_me[cpv].append(os.path.realpath(path))
# keep only obsolete ones
- if destructive:
- dbapi = var_dbapi
- if package_names:
- cp_all = dict.fromkeys(dbapi.cp_all())
- else:
- cp_all = {}
+ if destructive and package_names:
+ cp_all = dict.fromkeys(var_dbapi.cp_all())
else:
- dbapi = port_dbapi
cp_all = {}
for cpv in list(clean_me):
if exclDictMatchCP(exclude,portage.cpv_getkey(cpv)):
# exclusion because of the exclude file
del clean_me[cpv]
continue
- if dbapi.cpv_exists(cpv):
- # exclusion because pkg still exists (in porttree or vartree)
+ if not destructive and port_dbapi.cpv_exists(cpv):
+ # exclusion because pkg still exists (in porttree)
del clean_me[cpv]
continue
+ if destructive and var_dbapi.cpv_exists(cpv):
+ buildtime = var_dbapi.aux_get(cpv, ['BUILD_TIME'])[0].encode('utf-8').strip()
+ clean_me[cpv] = [path for path in clean_me[cpv]
+ # only keep path if BUILD_TIME is identical with vartree
+ if portage.xpak.tbz2(path).getfile('BUILD_TIME').strip() != buildtime]
+ if not clean_me[cpv]:
+ # nothing we can clean for this package
+ del clean_me[cpv]
+ continue
if portage.cpv_getkey(cpv) in cp_all and port_dbapi.cpv_exists(cpv):
# exlusion because of --package-names
del clean_me[cpv]