[ooo-build-commit] .: bin/check-deps.py

Kohei Yoshida kohei at kemper.freedesktop.org
Fri Jul 9 14:39:02 PDT 2010


 bin/check-deps.py |   80 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 78 insertions(+), 2 deletions(-)

New commits:
commit 9538ded108635ae43c209e4479b883fcad49a140
Author: Kohei Yoshida <kyoshida at novell.com>
Date:   Fri Jul 9 17:38:26 2010 -0400

    Introduce flat output mode.
    
    I need flat output mode in order to feed it into another text
    processor for further analysis.
    
    * bin/check-deps.py: -m or --output-mode to specify output format.

diff --git a/bin/check-deps.py b/bin/check-deps.py
index ff4b426..8cf959d 100755
--- a/bin/check-deps.py
+++ b/bin/check-deps.py
@@ -181,6 +181,53 @@ class DepsCheker(object):
         s += "}\n"
         return s
 
+    def print_flat_all (self):
+        s = ''
+        self.dep_set = DependSet() # reset
+
+        if len(self.selected) == 0:
+            mods = self.modules.keys()
+            for mod in mods:
+                deps = self.modules[mod].deps.keys()
+                for dep in deps:
+                    self.dep_set.insert_depend(mod, dep)
+        else:
+            # determine involved modules.
+            self.__processed_mods = {}
+            for selected in self.selected:
+                if not self.modules.has_key(selected):
+                    raise ParseError()
+
+                if len(self.modules[selected].deps) > 0:
+                    self.__trace_deps(self.modules[selected])
+
+        s += self.__print_flat_depset()
+        return s
+
+    def print_flat_single (self, mods):
+        s = ''
+        self.dep_set = DependSet() # reset
+
+        for mod in mods:
+
+            if not self.modules.has_key(mod):
+                continue
+
+            obj = self.modules[mod]
+
+            if len(obj.precs) == 0 and len(obj.deps) == 0:
+                # No dependencies.  Just print the module.
+                self.dep_set.insert_depend(mod, None)
+                continue
+
+            for prec in obj.precs.keys():
+                self.dep_set.insert_depend(prec, obj.name)
+            for dep in obj.deps.keys():
+                self.dep_set.insert_depend(obj.name, dep)
+
+        s += self.__print_flat_depset()
+        return s
+
     def __calc_missing_modules (self):
         if self.modules_missing != None:
             # already calculated.
@@ -216,6 +263,21 @@ class DepsCheker(object):
             self.dep_set.insert_depend(obj.name, dep_name)
             self.__trace_deps(self.modules[dep_name])
 
+    def __print_flat_depset (self):
+        s = ''
+        mods = self.dep_set.modules.keys()
+        mods.sort()
+        for mod in mods:
+            deps = self.dep_set.modules[mod].keys()
+            if len(deps) == 0:
+                # this module has no dependency.
+                s += "%s\n"%mod
+            else:
+                deps.sort()
+                for dep in deps:
+                    s += "%s:%s\n"%(mod, dep)
+        return s
+
     def __print_dot_depset (self):
         s = ''
         mods = self.dep_set.modules.keys()
@@ -288,6 +350,8 @@ if __name__ == '__main__':
     # Process commnad line arguments.
     parser = optparse.OptionParser()
     parser.usage += " " + arg_desc + "\n" + desc
+    parser.add_option("-m", "--outout-mode", dest="output_mode", default="dot", metavar="MODE",
+        help="Specify output format mode.  Supported modes are 'dot' and 'flat'.")
     parser.add_option("-s", "--single", action="store_true", dest="single", default=False,
         help="Print only immediate dependencies of specified modules.")
     parser.add_option("-g", "--gui", action="store_true", dest="gui", default=False,
@@ -301,6 +365,12 @@ if __name__ == '__main__':
         if not exec_exists('eog'):
             error("'eog' not found.  Make sure you have 'eog' in your path.")
 
+        # GUI mode requires dot-compatible output.
+        options.output_mode = 'dot'
+
+    if options.output_mode != 'dot' and options.output_mode != 'flat':
+        error("Unrecognized output mode: %s"%options.output_mode)
+
     checker = DepsCheker()
     s = ''
     if options.single:
@@ -308,11 +378,17 @@ if __name__ == '__main__':
             # single mode requires module names.
             raise SingleModeError()
         checker.run(args)
-        s = checker.print_dot_single(args)
+        if options.output_mode == 'dot':
+            s = checker.print_dot_single(args)
+        else:
+            s = checker.print_flat_single(args)
 
     else:
         checker.run(args)
-        s = checker.print_dot_all()
+        if options.output_mode == 'dot':
+            s = checker.print_dot_all()
+        else:
+            s = checker.print_flat_all()
 
     checker.print_missing_modules()
 


More information about the ooo-build-commit mailing list