-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathdastatus
executable file
·74 lines (63 loc) · 2.34 KB
/
dastatus
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/python
import dabuildsys
from dabuildsys import reprepro
import argparse
import sys
def show_results(results):
broken = []
missing = []
out_of_date = []
for result in results:
pkg, gitver, aptver = result
if aptver and gitver:
out_of_date.append(result)
elif gitver and not aptver:
missing.append(result)
else:
broken.append(result)
if out_of_date:
out_of_date.sort()
print "== Out-of-date packages =="
for pkg, gitver, aptver in out_of_date:
if reprepro.find_source_version(pkg, gitver):
print "* %s %s (APT version: %s) [possibly repo version skew]" % (pkg, str(gitver), str(aptver))
else:
print "* %s %s (APT version: %s)" % (pkg, str(gitver), str(aptver))
print
if missing:
missing.sort()
print "== Packages missing in APT =="
for pkg, gitver, aptver in missing:
print "* %s %s" % (pkg, str(gitver))
print
if broken:
broken.sort()
print "== Packages broken in Git =="
for pkg, gitver, err in broken:
print "* %s (%s)" % (pkg, str(err))
print
def show_missing(apt_repo):
missing = [(pkg, pkginfo.version) for pkg, pkginfo in apt_repo.sources.iteritems()
if not dabuildsys.lookup_by_package_name(pkg) and not pkg.startswith('debathena-manual-')]
if missing:
missing.sort()
print "== Packages missing in Git =="
for pkg, version in missing:
print "* %s %s" % (pkg, str(version))
print
def main():
argparser = argparse.ArgumentParser(description="Compares the packages in Git and in APT")
argparser.add_argument('--update', '-u', action='store_true', help="Fetch new checkout data from remotes")
argparser.add_argument('release', choices=dabuildsys.releases, help="Release to compare against from APT")
args = argparser.parse_args()
_, _, apt_repo = dabuildsys.get_release(args.release)
show_results( dabuildsys.compare_against_git(apt_repo, args.update) )
show_missing( apt_repo )
if __name__ == '__main__':
if not dabuildsys.claim_lock():
print >>sys.stderr, "The lock is in place; unable to proceed"
sys.exit(1)
try:
main()
finally:
dabuildsys.release_lock()