diff options
author | 2016-06-24 08:40:56 -0700 | |
---|---|---|
committer | 2016-06-24 14:40:28 -0700 | |
commit | 824953dd70d650ee0b2c057b0dfb44efb8f56a9b (patch) | |
tree | 8adc7b0e56d1cb04f701a02071ceed2b57e8d999 | |
parent | eclean: Apply handle binpkgs with .xpak suffix patch from bug 586658 (diff) | |
download | gentoolkit-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.py | 22 |
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] |