A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 54 lines 1.5 kB view raw
1#!/usr/bin/python 2import sys 3from subprocess import Popen, PIPE 4 5if len(sys.argv) != 3: 6 print ("""%s usage: 7 %s obj1 obj2 8 Calculate per-symbol and total size differences between obj1 and obj2, 9 which may be any files that nm can read""" % ((sys.argv[0],)*2)) 10 sys.exit(2) 11 12obj1 = sys.argv[1] 13obj2 = sys.argv[2] 14 15def getsyms(obj): 16 proc = Popen(args=['nm', '-S', '-t', 'd', obj], stdout=PIPE, stderr=PIPE) 17 out, err = proc.communicate() 18 if err: 19 print ("nm reported an error:\n") 20 print (err) 21 sys.exit(1) 22 d = {} 23 for l in out.splitlines(): 24 l = l.strip().split() 25 if len(l) == 4: 26 d[l[3]] = int(l[1]) 27 return d 28 29diff = 0 30 31d1 = getsyms(obj1) 32d2 = getsyms(obj2) 33l = [(k,v) for k,v in sorted(d1.items()) if k not in d2] 34if l: 35 print ("only in %s" % obj1) 36 print (''.join(" %6d %s\n" % (v,k)) for k,v in l) 37 diff -= sum(v for k,v in l) 38 39l = [(k,v) for k,v in sorted(d2.items()) if k not in d1] 40if l: 41 print ("only in %s" % obj2) 42 print (''.join("%6d %s\n" % (v,k)) for k,v in l) 43 diff += sum(v for k,v in l) 44 45l = [(k,v,d2[k]) for k,v in sorted(d1.items()) if k in d2 and d2[k] != v] 46if l: 47 print ("different sizes in %s and %s:" %(obj1, obj2)) 48 print (''.join(" %6d %6d %s\n" % (v1,v2,k)) for k,v1,v2 in l) 49 diff += sum(v2-v1 for k,v1,v2 in l) 50 51if diff: 52 print ("total size difference: %+d" % diff) 53else: 54 print ("total size difference: 0")