diff --git a/src/__main__.py b/src/__main__.py index 1dc6eb0b2a5131ee66ea9342bbac3cde9fb4b966..3c8ba73d3e7eb7bc68b0a5896b88048bccee8156 100755 --- a/src/__main__.py +++ b/src/__main__.py @@ -53,7 +53,10 @@ def main(): default=None, help="remove all modules fetched for this one") parser.add_option("--list", action="store_true", dest="list", - default=None, help="List all modules togather with their files") + default=None, help="List all modules together with their files") + + parser.add_option("--list-files", action="store_true", dest="list_files", + default=None, help="List all files in a from of a space-separated string") parser.add_option("--ise-proj", action="store_true", dest="ise_proj", default=None, help="create/update an ise project including list of project files") @@ -126,6 +129,8 @@ use 0 for current version""", metavar="ISE") kernel.generate_remote_synthesis_makefile() elif options.list: kernel.list_modules() + elif options.list_files: + kernel.list_files() elif options.clean: kernel.clean_modules() else: diff --git a/src/dep_solver.py b/src/dep_solver.py index 5225c1a3b3bb4ef940a140e45c9794e61fc7ec55..9b15dc44bc3010b46f458ab3b880036e0881c302 100644 --- a/src/dep_solver.py +++ b/src/dep_solver.py @@ -23,11 +23,41 @@ import msg as p class IDependable: def __init__(self): - self.dep_fixed = False; self.dep_index = 0; - self.dep_provides = []; - self.dep_requires = []; - self.dep_depends_on = []; + self.__dep_fixed = False; + self.__dep_provides = []; + self.__dep_requires = []; + self.__dep_depends_on = []; + pass +## + #use proxy template here + def get_dep_provides(self): + if self.__dep_fixed == False: + self.__create_deps() + self.__dep_fixed = True + return self.__dep_provides + def set_dep_provides(self, what): + self.__dep_provides = what + dep_provides = property(get_dep_provides, set_dep_provides) +## + def get_dep_requires(self): + if self.__dep_fixed == False: + self.__create_deps() + self.__dep_fixed = True + return self.__dep_provides + + def set_dep_requires(self, what): + self.__dep_requires = what + dep_requires = property(get_dep_requires, set_dep_requires) +## + def get_dep_depends_on(self): + return self.__dep_depends_on + def set_dep_depends_on(self, what): + self.__dep_depends_on = what + dep_depends_on = property(get_dep_depends_on, set_dep_depends_on) +## + def __create_deps(self): + """Used solely for polymorphism""" class DependencySolver: def __init__(self): @@ -107,7 +137,7 @@ class DependencySolver: n_iter = n_iter+1 done = True for f in fset: - if not f.dep_fixed: + if not f.__dep_fixed: idx = fset.index(f) k = self.__lookup_post_provider(files=fset, start_index=idx, file=f); @@ -122,7 +152,7 @@ class DependencySolver: return None for f in fset: - if f.dep_fixed: + if f.__dep_fixed: f_nondep.append(copy.copy(f)) del f @@ -162,11 +192,11 @@ class DependencySolver: newobj.add(f_nondep); for f in fset: try: - if not f.dep_fixed: + if not f.__dep_fixed: newobj.add(f) except: newobj.add(f) for k in newobj: - p.vprint(str(k.dep_index) + " " + k.path + str(k.dep_fixed)) + p.vprint(str(k.dep_index) + " " + k.path + str(k.__dep_fixed)) return newobj diff --git a/src/hdlmake_kernel.py b/src/hdlmake_kernel.py index 7cbabdf90249c641521d8148c7e067102878edda..b0ad948eb7422072110bcd4999b0ae07c2434e60 100644 --- a/src/hdlmake_kernel.py +++ b/src/hdlmake_kernel.py @@ -70,7 +70,14 @@ class HdlmakeKernel(object): for f in m.files: print(" " + path.relpath(f.path, m.path)) print("") - + def list_files(self): + files_str = [] + for m in self.modules_pool: + if not m.isfetched: + continue + files_str.append(" ".join([f.path for f in m.files])) + print(" ".join(files_str)) + def fetch(self, unfetched_only = False): p.rawprint("Fetching needed modules...") self.modules_pool.fetch_all(unfetched_only) diff --git a/src/srcfile.py b/src/srcfile.py index 9b2bf34118e5840104f01247dd58b9f2c8c2bf5b..0788b275538eb3cf18b38d3241c968589c67baab 100644 --- a/src/srcfile.py +++ b/src/srcfile.py @@ -96,7 +96,7 @@ class SourceFile(IDependable, File): class VHDLFile(SourceFile): def __init__(self, path, library = None, vcom_opt = None): SourceFile.__init__(self, path, library); - self.__create_deps(); + ##self.__create_deps(); if not vcom_opt: self.vcom_opt = "" else: @@ -114,7 +114,7 @@ class VHDLFile(SourceFile): def __create_deps(self): if self.__check_encryption(): self.dep_index = SourceFile.gen_index(self) - self.dep_fixed = True + self.__dep_fixed = True else: self.dep_requires = list(self.__search_use_clauses()) self.dep_provides = list(self.__search_packages()) @@ -248,7 +248,7 @@ class CDCFile(File): class NGCFile(SourceFile): def __init__(self, path): SourceFile.__init__(self, path); - self.dep_fixed = True + self.__dep_fixed = True class WBGenFile(File): def __init__(self, path):