File: depcheck.py

package info (click to toggle)
sagemath 9.5-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid
  • size: 144,264 kB
  • sloc: python: 1,113,444; cpp: 37,499; ansic: 4,606; sh: 4,105; makefile: 1,097; javascript: 326; lisp: 5
file content (30 lines) | stat: -rwxr-xr-x 1,120 bytes parent folder | download
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
#!/usr/bin/python3

import debian.deb822
import re
import subprocess

pkgdeps = []
for paragraph in debian.deb822.Deb822.iter_paragraphs(open('debian/control')):
    for item in paragraph.items():
        if item[0] == 'Build-Depends':
            pkgdeps = pkgdeps + [x.strip() for x in item[1].split(',')]
        if item[0] == 'Depends':
            pkgdeps = pkgdeps + [x.strip() for x in item[1].split(',')]
pkgdeps = [x for x in pkgdeps if not (re.match(r'\$.*', x) or x == '')]
pkgdeps = sorted(set([re.sub(r' .*', r'', x) for x in pkgdeps]))

sagedeps = subprocess.run([
    '/bin/sh', '-c',
    'for dt in sage/build/pkgs/*/distros/debian.txt; do cat $dt; done'
],stdout=subprocess.PIPE).stdout.decode().split('\n')
sagedeps = sorted(set(' '.join([re.sub(r'#.*', r'', x) for x in sagedeps]).split()))

onlypkg = [x for x in pkgdeps if not x in sagedeps]
onlysage = [x for x in sagedeps if not x in pkgdeps]

print("Package dependencies that do not appear in debian.txt files:")
print(' '.join(onlypkg))

print("Entries in debian.txt files that do not appear in package dependencies:")
print(' '.join(onlysage))