From: fred Date: Mon, 29 Sep 1997 09:25:43 +0000 (+0000) Subject: lilypond-0.1.18 X-Git-Tag: release/1.5.59~6048 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=645f963b0adc9ea63a864a9ea4c15dfdb946abc8;p=lilypond.git lilypond-0.1.18 --- diff --git a/bin/mf-deps.py b/bin/mf-deps.py new file mode 100644 index 0000000000..d0784ab5c5 --- /dev/null +++ b/bin/mf-deps.py @@ -0,0 +1,72 @@ +#!@PYTHON@ + +"""look into metafont source for dependencies. + + fixme: python path + fixme: error reporting + fixem: why doesn't python have closures.. + +""" + +from regex import * ; +from regsub import * ; +import sys; +import os; + +input_re = compile('^ *input *\([^;]+\);') +postfixes = ['log', 'dvi', '2602gf', 'tfm'] + + +def print_one(x): + print x + +def line_concat(x,y): + return x + '\n' + y + +class Targetdeps: + """Dependencies for one toplevel sourcefile + + """ + + def __init__(self,nm): + split = os.path.splitext(nm) + self.basename=split[0]; + self.depfiles = [] + self.checkdep(nm) + + def checkdep(self, name): + split = os.path.splitext(name) + name = split[0] + '.mf'; + + if name not in self.depfiles: + self.get_filedeps(name) + + def get_filedeps(self,filename): +# print sys.stderr.write( 'checking ' + filename + '\n'); + try: + file = open(filename) + except IOError: +# print sys.stderr.write( 'can\'t open ' + filename + '\n') + return + + self.depfiles.append(filename) +_ lines = file.readlines() + file.close() + for line in lines: + if input_re.match ( line) <> -1: + self.checkdep( input_re.group(1)) + + def target_string(self): + targets = map (lambda x,y = self.basename: 'out/' + y + '.' + x, postfixes) + depstring = reduce(lambda x,y: x + ' ' + y, self.depfiles) + dependencies = map (lambda x, y=depstring: x + ': ' + y, targets) + + return reduce(line_concat, dependencies) + + + +for file in sys.argv[1:]: + t = Targetdeps(file) + print t.target_string() + +