def get_sourcefiles_from_xml(self, sourcefilesTag, base_dir): sourcefiles = [] # get included sourcefiles for includedFiles in sourcefilesTag.findall("include"): sourcefiles += self.expand_filename_pattern(includedFiles.text, base_dir) # get sourcefiles from list in file for includesFilesFile in sourcefilesTag.findall("includesfile"): for file in self.expand_filename_pattern(includesFilesFile.text, base_dir): # check for code (if somebody confuses 'include' and 'includesfile') if util.is_code(file): logging.error( "'%s' seems to contain code instead of a set of source file names.\n" "Please check your benchmark definition file " "or remove bracket '{' from this file.", file, ) sys.exit() # read files from list fileWithList = open(file, "rt") for line in fileWithList: # strip() removes 'newline' behind the line line = line.strip() # ignore comments and empty lines if not util.is_comment(line): sourcefiles += self.expand_filename_pattern(line, os.path.dirname(file)) fileWithList.close() # remove excluded sourcefiles for excludedFiles in sourcefilesTag.findall("exclude"): excludedFilesList = self.expand_filename_pattern(excludedFiles.text, base_dir) for excludedFile in excludedFilesList: sourcefiles = util.remove_all(sourcefiles, excludedFile) for excludesFilesFile in sourcefilesTag.findall("excludesfile"): for file in self.expand_filename_pattern(excludesFilesFile.text, base_dir): # read files from list fileWithList = open(file, "rt") for line in fileWithList: # strip() removes 'newline' behind the line line = line.strip() # ignore comments and empty lines if not util.is_comment(line): excludedFilesList = self.expand_filename_pattern(line, os.path.dirname(file)) for excludedFile in excludedFilesList: sourcefiles = util.remove_all(sourcefiles, excludedFile) fileWithList.close() # add runs for cases without source files for run in sourcefilesTag.findall("withoutfile"): sourcefiles.append(run.text) # some runs need more than one sourcefile, # the first sourcefile is a normal 'include'-file, we use its name as identifier for logfile and result-category # all other files are 'append'ed. sourcefilesLists = [] appendFileTags = sourcefilesTag.findall("append") for sourcefile in sourcefiles: files = [sourcefile] for appendFile in appendFileTags: files.extend(self.expand_filename_pattern(appendFile.text, base_dir, sourcefile=sourcefile)) sourcefilesLists.append(files) return sourcefilesLists
def get_task_def_files_from_xml(self, sourcefilesTag, base_dir): """Get the task-definition files from the XML definition. Task-definition files are files for which we create a run (typically an input file or a YAML task definition). """ sourcefiles = [] # get included sourcefiles for includedFiles in sourcefilesTag.findall("include"): sourcefiles += self.expand_filename_pattern(includedFiles.text, base_dir) # get sourcefiles from list in file for includesFilesFile in sourcefilesTag.findall("includesfile"): for file in self.expand_filename_pattern(includesFilesFile.text, base_dir): # check for code (if somebody confuses 'include' and 'includesfile') if util.is_code(file): logging.error( "'%s' seems to contain code instead of a set of source file names.\n" "Please check your benchmark definition file " "or remove bracket '{' from this file.", file) sys.exit() # read files from list fileWithList = open(file, 'rt') for line in fileWithList: # strip() removes 'newline' behind the line line = line.strip() # ignore comments and empty lines if not util.is_comment(line): sourcefiles += self.expand_filename_pattern(line, os.path.dirname(file)) fileWithList.close() # remove excluded sourcefiles for excludedFiles in sourcefilesTag.findall("exclude"): excludedFilesList = self.expand_filename_pattern(excludedFiles.text, base_dir) for excludedFile in excludedFilesList: sourcefiles = util.remove_all(sourcefiles, excludedFile) for excludesFilesFile in sourcefilesTag.findall("excludesfile"): for file in self.expand_filename_pattern(excludesFilesFile.text, base_dir): # read files from list fileWithList = open(file, 'rt') for line in fileWithList: # strip() removes 'newline' behind the line line = line.strip() # ignore comments and empty lines if not util.is_comment(line): excludedFilesList = self.expand_filename_pattern(line, os.path.dirname(file)) for excludedFile in excludedFilesList: sourcefiles = util.remove_all(sourcefiles, excludedFile) fileWithList.close() return sourcefiles
def get_sourcefiles_from_xml(self, sourcefilesTag, base_dir): sourcefiles = [] # get included sourcefiles for includedFiles in sourcefilesTag.findall("include"): sourcefiles += self.expand_filename_pattern( includedFiles.text, base_dir) # get sourcefiles from list in file for includesFilesFile in sourcefilesTag.findall("includesfile"): for file in self.expand_filename_pattern(includesFilesFile.text, base_dir): # check for code (if somebody confuses 'include' and 'includesfile') if util.is_code(file): logging.error( "'%s' seems to contain code instead of a set of source file names.\n" "Please check your benchmark definition file " "or remove bracket '{' from this file.", file) sys.exit() # read files from list fileWithList = open(file, 'rt') for line in fileWithList: # strip() removes 'newline' behind the line line = line.strip() # ignore comments and empty lines if not util.is_comment(line): sourcefiles += self.expand_filename_pattern( line, os.path.dirname(file)) fileWithList.close() # remove excluded sourcefiles for excludedFiles in sourcefilesTag.findall("exclude"): excludedFilesList = self.expand_filename_pattern( excludedFiles.text, base_dir) for excludedFile in excludedFilesList: sourcefiles = util.remove_all(sourcefiles, excludedFile) for excludesFilesFile in sourcefilesTag.findall("excludesfile"): for file in self.expand_filename_pattern(excludesFilesFile.text, base_dir): # read files from list fileWithList = open(file, 'rt') for line in fileWithList: # strip() removes 'newline' behind the line line = line.strip() # ignore comments and empty lines if not util.is_comment(line): excludedFilesList = self.expand_filename_pattern( line, os.path.dirname(file)) for excludedFile in excludedFilesList: sourcefiles = util.remove_all( sourcefiles, excludedFile) fileWithList.close() # add runs for cases without source files for run in sourcefilesTag.findall("withoutfile"): sourcefiles.append(run.text) # some runs need more than one sourcefile, # the first sourcefile is a normal 'include'-file, we use its name as identifier for logfile and result-category # all other files are 'append'ed. sourcefilesLists = [] appendFileTags = sourcefilesTag.findall("append") for sourcefile in sourcefiles: files = [sourcefile] for appendFile in appendFileTags: files.extend( self.expand_filename_pattern(appendFile.text, base_dir, sourcefile=sourcefile)) sourcefilesLists.append(files) return sourcefilesLists