]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.1.18
authorfred <fred>
Mon, 29 Sep 1997 09:25:43 +0000 (09:25 +0000)
committerfred <fred>
Mon, 29 Sep 1997 09:25:43 +0000 (09:25 +0000)
bin/mf-deps.py [new file with mode: 0644]

diff --git a/bin/mf-deps.py b/bin/mf-deps.py
new file mode 100644 (file)
index 0000000..d0784ab
--- /dev/null
@@ -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()
+
+