diff --git a/ChangeLog b/ChangeLog index 644bcdf2a2..9f7366f17f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-03-14 Edward Hervey + + * codegen/codegen.py: + * codegen/override.py: + New --extendpath option for codegenerator so we can add + extra path to search for included override files. + 2006-03-13 Edward Hervey * gst/Makefile.am: diff --git a/codegen/codegen.py b/codegen/codegen.py index ca8a9da350..3ffc547e49 100644 --- a/codegen/codegen.py +++ b/codegen/codegen.py @@ -1227,17 +1227,24 @@ def register_types(parser): usage = 'usage: codegen.py [-o overridesfile] [-p prefix] defsfile' def main(argv): - o = override.Overrides() prefix = 'pygtk' outfilename = None errorfilename = None - opts, args = getopt.getopt(argv[1:], "o:p:r:t:D:", + extendpath = [] + opts, args = getopt.getopt(argv[1:], "o:p:r:t:D:x", ["override=", "prefix=", "register=", "outfilename=", - "load-types=", "errorfilename="]) + "load-types=", "errorfilename=", "extendpath="]) defines = {} # -Dkey[=val] options + + for opt, arg in opts: + if opt in ('-x', '--extendpath'): + extendpath.append(arg) + extendpath.insert(0, os.getcwd()) + o = override.Overrides(path=extendpath) + for opt, arg in opts: if opt in ('-o', '--override'): - o = override.Overrides(arg) + o = override.Overrides(arg, path=extendpath) elif opt in ('-p', '--prefix'): prefix = arg elif opt in ('-r', '--register'): diff --git a/codegen/override.py b/codegen/override.py index da84c38808..f3712f6acf 100644 --- a/codegen/override.py +++ b/codegen/override.py @@ -22,7 +22,7 @@ def class2cname(klass, method): import_pat = re.compile(r'\s*import\s+(\S+)\.([^\s.]+)\s+as\s+(\S+)') class Overrides: - def __init__(self, filename=None): + def __init__(self, filename=None, path=[]): self.modulename = None self.ignores = {} self.glob_ignores = [] @@ -38,13 +38,24 @@ class Overrides: self.imports = [] self.defines = {} self.functions = {} + self.path = path if filename: self.handle_file(filename) def handle_file(self, filename): oldpath = os.getcwd() + + fp = None + for path in self.path: + os.chdir(oldpath) + os.chdir(os.path.abspath(path)) + try: + fp = open(filename, 'r') + except: + continue + if not fp: + raise Exception, "Couldn't find file %s" % filename - fp = open(filename, 'r') dirname = os.path.dirname(os.path.abspath(filename)) if dirname != oldpath: