blob: 0d547476e9f39861a9c1b61f8ff54fda0cbd9195 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#!/usr/bin/python2
import sys
from entropy.server.interfaces import Server
from entropy.const import etpUi
etpUi['quiet'] = True
import entropy.dep
import portage
def print_help():
sys.stderr.write("get_package_changes <added|removed>\n")
if __name__ == "__main__":
args = sys.argv[1:]
if not args:
print_help()
raise SystemExit(1)
cmd = args.pop(0)
if cmd not in ("added", "removed"):
print_help()
raise SystemExit(1)
srv = Server()
repositories = srv.repositories()
pkg_keys = set()
for repository_id in repositories:
repo = srv.open_repository(repository_id)
for atom, package_id, branch in repo.listAllPackages():
pkg_keys.add(entropy.dep.dep_getkey(atom))
portdb = portage.db["/"]['porttree']
def _match_filter(atom):
best_visible = portdb.dbapi.xmatch("bestmatch-visible", atom)
if best_visible:
return True
return False
portage_pkg_keys = set(portdb.getallnodes())
if cmd == "added":
added = sorted(filter(_match_filter, portage_pkg_keys - pkg_keys))
for pkg_key in added:
sys.stdout.write(pkg_key + "\n")
sys.stdout.flush()
elif cmd == "removed":
removed = sorted(pkg_keys - portage_pkg_keys)
for pkg_key in removed:
sys.stdout.write(pkg_key + "\n")
sys.stdout.flush()
srv.shutdown()
raise SystemExit(0)
|