Gentoo Archives: gentoo-commits

From: "Marius Mauch (genone)" <genone@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11540 - main/trunk/pym/portage/sets
Date: Thu, 25 Sep 2008 15:25:31
Message-Id: E1Kisie-0000Dt-JO@stork.gentoo.org
1 Author: genone
2 Date: 2008-09-25 15:25:27 +0000 (Thu, 25 Sep 2008)
3 New Revision: 11540
4
5 Modified:
6 main/trunk/pym/portage/sets/dbapi.py
7 Log:
8 Add a new AgeSet class to select installed packages that have been installed more/less than n days ago
9
10 Modified: main/trunk/pym/portage/sets/dbapi.py
11 ===================================================================
12 --- main/trunk/pym/portage/sets/dbapi.py 2008-09-25 13:30:33 UTC (rev 11539)
13 +++ main/trunk/pym/portage/sets/dbapi.py 2008-09-25 15:25:27 UTC (rev 11540)
14 @@ -248,3 +248,34 @@
15 return rValue
16 multiBuilder = classmethod(multiBuilder)
17
18 +class AgeSet(EverythingSet):
19 + _operations = ["merge", "unmerge"]
20 +
21 + def __init__(self, vardb, mode="older", age=7):
22 + super(AgeSet, self).__init__(vardb)
23 + self._mode = mode
24 + self._age = age
25 +
26 + def _filter(self, atom):
27 + import time, os
28 +
29 + cpv = self._db.match(atom)[0]
30 + path = self._db.getpath(cpv, filename="COUNTER")
31 + age = (time.time() - os.stat(path).st_mtime) / (3600 * 24)
32 + if ((self._mode == "older" and age <= self._age) \
33 + or (self._mode == "newer" and age >= self._age)):
34 + return False
35 + else:
36 + return True
37 +
38 + def singleBuilder(cls, options, settings, trees):
39 + mode = options.get("mode", "older")
40 + if str(mode).lower() not in ["newer", "older"]:
41 + raise SetConfigError("invalid 'mode' value %s (use either 'newer' or 'older')" % mode)
42 + try:
43 + age = int(options.get("age", "7"))
44 + except ValueError, e:
45 + raise SetConfigError("value of option 'age' is not an integer")
46 + return AgeSet(vardb=trees["vartree"].dbapi, mode=mode, age=age)
47 +
48 + singleBuilder = classmethod(singleBuilder)