summaryrefslogtreecommitdiffstats
path: root/pym/portage/sets/dbapi.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage/sets/dbapi.py')
-rw-r--r--pym/portage/sets/dbapi.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/pym/portage/sets/dbapi.py b/pym/portage/sets/dbapi.py
index a5d7c7153..3ece6f642 100644
--- a/pym/portage/sets/dbapi.py
+++ b/pym/portage/sets/dbapi.py
@@ -21,7 +21,7 @@ class EverythingSet(PackageSet):
"atoms to match all installed packages"
_filter = None
- def __init__(self, vdbapi):
+ def __init__(self, vdbapi, **kwargs):
super(EverythingSet, self).__init__()
self._db = vdbapi
@@ -313,3 +313,26 @@ class AgeSet(EverythingSet):
return AgeSet(vardb=trees["vartree"].dbapi, mode=mode, age=age)
singleBuilder = classmethod(singleBuilder)
+
+class RebuiltBinaries(EverythingSet):
+ _operations = ('merge',)
+ _aux_keys = ('BUILD_TIME',)
+
+ def __init__(self, vardb, bindb=None):
+ super(RebuiltBinaries, self).__init__(vardb, bindb=bindb)
+ self._bindb = bindb
+
+ def _filter(self, atom):
+ cpv = self._db.match(atom)[0]
+ inst_build_time, = self._db.aux_get(cpv, self._aux_keys)
+ try:
+ bin_build_time, = self._bindb.aux_get(cpv, self._aux_keys)
+ except KeyError:
+ return False
+ return inst_build_time != bin_build_time
+
+ def singleBuilder(cls, options, settings, trees):
+ return RebuiltBinaries(trees["vartree"].dbapi,
+ bindb=trees["bintree"].dbapi)
+
+ singleBuilder = classmethod(singleBuilder)