build-analysis/check-deps.py |  387 -------------------------------------------
 1 file changed, 387 deletions(-)

New commits:
commit d8449e2df68fde94a6e5a5af011ff90ab24f3323
Author: David Tardon <dtar...@redhat.com>
Date:   Sat Sep 5 10:07:12 2015 +0200

    drop obsolete tool

diff --git a/build-analysis/check-deps.py b/build-analysis/check-deps.py
deleted file mode 100755
index c4256d6..0000000
--- a/build-analysis/check-deps.py
+++ /dev/null
@@ -1,387 +0,0 @@
-#!/usr/bin/env python
-########################################################################
-#
-#  Copyright (c) 2010 Kohei Yoshida
-#  
-#  Permission is hereby granted, free of charge, to any person
-#  obtaining a copy of this software and associated documentation
-#  files (the "Software"), to deal in the Software without
-#  restriction, including without limitation the rights to use,
-#  copy, modify, merge, publish, distribute, sublicense, and/or sell
-#  copies of the Software, and to permit persons to whom the
-#  Software is furnished to do so, subject to the following
-#  conditions:
-#  
-#  The above copyright notice and this permission notice shall be
-#  included in all copies or substantial portions of the Software.
-#  
-#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-#  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-#  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-#  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-#  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-#  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-#  OTHER DEALINGS IN THE SOFTWARE.
-#
-########################################################################
-
-import sys, os, os.path, optparse, subprocess
-
-class ParseError(Exception): pass
-
-class SingleModeError(Exception): pass
-
-class ViewerError(Exception): pass
-
-arg_desc = "module1 module2 ..."
-
-desc = """
-Execute this script at the root directory of your OOo build tree.  It parses
-all build.lst files found in the modules and outputs module dependency data 
-in the dot compatible format.
-
-When no arguments are given, it prints dependencies of all discovered 
-modules.  When module names are given as arguments, it only traces 
-dependencies of those modules.
-
-Sometimes modules are referenced in the build.lst but are absent from the 
-source tree.  Those missing modules are displayed red in the dependency 
graph."""
-
-err_missing_modules = """
-The following modules are mentioned but not present in the source tree:"""
-
-class Module(object):
-
-    def __init__ (self, name):
-        self.name = name
-        self.deps  = {} # dependents
-        self.precs = {} # precedents
-
-# Store all unique dependency set, with no duplicates.
-class DependSet(object):
-
-    def __init__ (self):
-        self.modules = {}
-
-    def insert_depend (self, prec, dep):
-        if not self.modules.has_key(prec):
-            self.modules[prec] = {}
-        if dep != None:
-            self.modules[prec][dep] = True
-
-class DepsCheker(object):
-
-    def __init__ (self):
-        self.modules = {}         # all mentioned modules, whether present or 
not.
-        self.modules_present = {} # modules actually present in the source 
tree.
-        self.modules_used = {}    # modules displayed in the graph.
-        self.selected = []        # selected modules from the command line 
args.
-
-        self.modules_missing = None
-
-    def __normalize_name (self, name):
-        # Replace prohibited characters with someone sane.
-        name = name.replace('-', '_')
-        return name
-    
-    def __insert_depend (self, mod, dep):
-
-        # precedent to dependent
-        if not self.modules.has_key(mod):
-            self.modules[mod] = Module(mod)
-        obj = self.modules[mod]
-        obj.deps[dep] = True
-
-        # dependent to precedent
-        if not self.modules.has_key(dep):
-            self.modules[dep] = Module(dep)
-        obj = self.modules[dep]
-        obj.precs[mod] = True
-
-    def __parse_build_lst (self, build_lst):
-    
-        # Read only the first line
-        file = open(build_lst, 'r')
-        while True:
-            line = file.readline().strip()
-            if line[0] != '#':
-                break
-        file.close()
-    
-        words = line.split()
-        n = len(words)
-    
-        # Check line format to make sure it's formatted as expected.
-        if n < 4:
-            raise ParseError()
-        if words[2] != ':' and words[2] != '::':
-            raise ParseError()
-        if words[-1] != 'NULL':
-            raise ParseError()
-    
-        mod_name = self.__normalize_name(words[1])
-        depends = words[3:]
-        for dep in depends:
-            if dep == 'NULL':
-                break
-    
-            names = dep.split(':')
-            if len(names) > 2:
-                raise ParseError()
-            elif len(names) == 2:
-                dep = names[1]
-    
-            dep = self.__normalize_name(dep)
-            self.__insert_depend(mod_name, dep)
-
-    def run (self, selected):
-    
-        # modules we want to print dependency on.
-        self.selected = selected
-
-        # Find all build.lst files.
-        for mod in os.listdir(os.getcwd()):
-            if not os.path.isdir(mod):
-                # not a directory
-                continue
-            
-            build_lst = mod + '/prj/build.lst'
-            if not os.path.isfile(build_lst):
-                # no build.lst found
-                continue
-
-            self.modules_present[self.__normalize_name(mod)] = True
-            self.__parse_build_lst(build_lst)
-            
-    def __build_depset_all (self):
-        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])
-
-    def __build_depset_single (self, mods):
-        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)
-
-    def print_dot_all (self):
-        self.__build_depset_all()
-        s = "digraph modules {\n"
-        s += self.__print_dot_depset()
-        s += self.__print_dot_selected()
-        s += self.__print_dot_missing_modules()
-        s += "}\n"
-        return s
-
-    def print_dot_single (self, mods):
-        self.__build_depset_single(mods)
-        s = "digraph modules {\n"
-        s += self.__print_dot_depset()
-        s += self.__print_dot_selected()
-        s += self.__print_dot_missing_modules()
-        s += "}\n"
-        return s
-
-    def print_flat_all (self):
-        self.__build_depset_all()
-        return self.__print_flat_depset()
-
-    def print_flat_single (self, mods):
-        self.__build_depset_single(mods)
-        return self.__print_flat_depset()
-
-    def __calc_missing_modules (self):
-        if self.modules_missing != None:
-            # already calculated.
-            return
-
-        present = self.modules_present.keys()
-        self.modules_missing = {}
-        for mod in self.modules.keys():
-            if not self.modules_present.has_key(mod):
-                self.modules_missing[mod] = True
-
-    def print_missing_modules (self):
-        self.__calc_missing_modules()
-
-        if len(self.modules_missing) == 0:
-            return
-
-        sys.stderr.write(err_missing_modules + "\n")
-        keys = self.modules_missing.keys()
-        keys.sort()
-        for mod in keys:
-            sys.stderr.write("    " + mod + "\n")
-
-    def __trace_deps (self, obj):
-        if self.__processed_mods.has_key(obj.name):
-            return
-
-        self.__processed_mods[obj.name] = True
-
-        for dep_name in obj.deps.keys():
-            if not self.modules.has_key(dep_name):
-                raise ParseError()
-            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()
-        for mod in mods:
-            deps = self.dep_set.modules[mod].keys()
-            if len(deps) == 0:
-                # this module has no dependency.
-                s += self.__print_dot_dep_line(mod, None)
-            else:
-                for dep in deps:
-                    s += self.__print_dot_dep_line(mod, dep)
-        return s
-
-    def __print_dot_selected (self):
-        s = ''
-        for mod in self.selected:
-            if not self.modules_used.has_key(mod):
-                continue
-            s += "    %s [color=lightblue,style=filled];\n"%mod
-        return s
-
-
-    def __print_dot_missing_modules (self):
-        self.__calc_missing_modules()
-        s = ''
-        for mod in self.modules_missing.keys():
-            if not self.modules_used.has_key(mod):
-                continue
-            s += "    %s [color=red,style=filled];\n"%mod
-
-        return s
-
-
-    def __print_dot_dep_line (self, prec, dep):
-        if prec == None:
-            raise ParseError()
-
-        self.modules_used[prec] = True
-        if dep == None:
-            # this module has no dependency.  I still need to mention the 
module name.
-            return "    %s;\n"%prec
-        self.modules_used[dep] = True
-        return "    %s -> %s;\n"%(prec, dep)
-
-def exec_exists (cmd):
-    retcode = subprocess.call("which %s >/dev/null 2>/dev/null"%cmd, 
shell=True)
-    return retcode == 0
-
-def error (msg):
-    sys.stderr.write(msg + "\n")
-    sys.exit(1)
-
-def launch_viewer (code):
-    tmpfile = '/tmp/check-deps.tmp'
-    tmpimage = '/tmp/check-deps-image.png'
-    file = open(tmpfile, 'w')
-    file.write(code)
-    file.close()
-    retcode = subprocess.call("dot -Tpng %s -o %s"%(tmpfile, tmpimage), 
shell=True)
-    if retcode != 0:
-        raise ViewerError()
-
-    retcode = subprocess.call("eog %s"%tmpimage, shell=True)
-    if retcode != 0:
-        raise ViewerError()
-
-
-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,
-        help="Display dependency graph in image viewer.")
-    options, args = parser.parse_args()
-
-    if options.gui:
-        # Check to make sure 'dot' and 'eog' are present.
-        if not exec_exists('dot'):
-            error("'dot' not found.  Make sure you have 'dot' in your path.")
-        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:
-        if len(args) == 0:
-            # single mode requires module names.
-            raise SingleModeError()
-        checker.run(args)
-        if options.output_mode == 'dot':
-            s = checker.print_dot_single(args)
-        else:
-            s = checker.print_flat_single(args)
-
-    else:
-        checker.run(args)
-        if options.output_mode == 'dot':
-            s = checker.print_dot_all()
-        else:
-            s = checker.print_flat_all()
-
-    checker.print_missing_modules()
-
-    if options.gui:
-        launch_viewer(s)
-    else:
-        print (s)
-
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to