def compute_dependence(self, moduleList, module, useDerived, fileName='.depends-bsv', targetFiles=[]): MODULE_PATH = get_build_path(moduleList, module) #allow caller to override dependencies. If the caller does #not, then we should use the baseline if (len(targetFiles) == 0): targetFiles = [ moduleList.env['DEFS']['ROOT_DIR_HW'] + '/' + module.buildPath + '/' + model.get_wrapper(module) ] if (module.name != moduleList.topModule.name): targetFiles.append(moduleList.env['DEFS']['ROOT_DIR_HW'] + '/' + module.buildPath + '/'+ model.get_log(module)) # We must depend on all sythesis boundaries. They can be instantiated anywhere. surrogate_children = moduleList.synthBoundaries() SURROGATE_BSVS = '' for child in surrogate_children: # Make sure module doesn't self-depend if (child.name != module.name): SURROGATE_BSVS += moduleList.env['DEFS']['ROOT_DIR_HW'] + '/' + child.buildPath +'/' + child.name + '.bsv ' if (useDerived and SURROGATE_BSVS != ''): DERIVED = ' -derived "' + SURROGATE_BSVS + '"' else: DERIVED = '' depends_bsv = MODULE_PATH + '/' + fileName moduleList.env.NoCache(depends_bsv) compile_deps = 'leap-bsc-mkdepend -ignore ' + MODULE_PATH + '/.ignore' + ' -bdir ' + self.TMP_BSC_DIR + DERIVED + ' -p +:' + self.ALL_LIB_DIR_PATHS + ' ' + ' '.join(targetFiles) + ' > ' + depends_bsv # Delete depends_bsv if it is empty under the assumption that something # went wrong when creating it. An empty dependence file would never be # rebuilt without this. try: if (os.path.getsize(depends_bsv) == 0): os.unlink(depends_bsv) except: None dep = moduleList.env.Command(depends_bsv, targetFiles + moduleList.topModule.moduleDependency['IFACE_HEADERS'], compile_deps) # Load an old .depends-bsv file if it exists. The file describes # the previous dependence among Bluespec files, giving a clue of whether # anything changed. The file describes dependence between derived objects # and sources. Here, we need to know about all possible source changes. # Scan the file looking for source file names. if os.path.isfile(depends_bsv): df = open(depends_bsv, 'r') dep_lines = df.readlines() # Match .bsv and .bsh files bsv_file_pattern = re.compile('\S+.[bB][sS][vVhH]$') all_bsc_files = [] for ln in dep_lines: all_bsc_files += [f for f in re.split('[:\s]+', ln) if (bsv_file_pattern.match(f))] # Sort dependence in case SCons cares for f in sorted(all_bsc_files): if os.path.exists(f): moduleList.env.Depends(dep, f) df.close() return dep
def GET(self): logs = model.get_log() return render.log(logs)
def compute_dependence(self, moduleList, module, useDerived, fileName='.depends-bsv', targetFiles=[]): MODULE_PATH = get_build_path(moduleList, module) #allow caller to override dependencies. If the caller does #not, then we should use the baseline if (len(targetFiles) == 0): targetFiles = [ moduleList.env['DEFS']['ROOT_DIR_HW'] + '/' + module.buildPath + '/' + model.get_wrapper(module) ] if (module.name != moduleList.topModule.name): targetFiles.append(moduleList.env['DEFS']['ROOT_DIR_HW'] + '/' + module.buildPath + '/' + model.get_log(module)) # We must depend on all sythesis boundaries. They can be instantiated anywhere. surrogate_children = moduleList.synthBoundaries() SURROGATE_BSVS = '' for child in surrogate_children: # Make sure module doesn't self-depend if (child.name != module.name): SURROGATE_BSVS += moduleList.env['DEFS'][ 'ROOT_DIR_HW'] + '/' + child.buildPath + '/' + child.name + '.bsv ' if (useDerived and SURROGATE_BSVS != ''): DERIVED = ' -derived "' + SURROGATE_BSVS + '"' else: DERIVED = '' depends_bsv = MODULE_PATH + '/' + fileName moduleList.env.NoCache(depends_bsv) compile_deps = 'leap-bsc-mkdepend -ignore ' + MODULE_PATH + '/.ignore' + ' -bdir ' + self.TMP_BSC_DIR + DERIVED + ' -p +:' + self.ALL_LIB_DIR_PATHS + ' ' + ' '.join( targetFiles) + ' > ' + depends_bsv # Delete depends_bsv if it is empty under the assumption that something # went wrong when creating it. An empty dependence file would never be # rebuilt without this. try: if (os.path.getsize(depends_bsv) == 0): os.unlink(depends_bsv) except: None dep = moduleList.env.Command( depends_bsv, targetFiles + moduleList.topModule.moduleDependency['IFACE_HEADERS'], compile_deps) # Load an old .depends-bsv file if it exists. The file describes # the previous dependence among Bluespec files, giving a clue of whether # anything changed. The file describes dependence between derived objects # and sources. Here, we need to know about all possible source changes. # Scan the file looking for source file names. if os.path.isfile(depends_bsv): df = open(depends_bsv, 'r') dep_lines = df.readlines() # Match .bsv and .bsh files bsv_file_pattern = re.compile('\S+.[bB][sS][vVhH]$') all_bsc_files = [] for ln in dep_lines: all_bsc_files += [ f for f in re.split('[:\s]+', ln) if (bsv_file_pattern.match(f)) ] # Sort dependence in case SCons cares for f in sorted(all_bsc_files): if os.path.exists(f): moduleList.env.Depends(dep, f) df.close() return dep