REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2102
GetDependencyList get the header file via re.findall in the whole header file. This patch is to pre-process the header file and to feed the shorter string to re.findall. This patch is to improve GetDependencyList() efficiency Cc: Liming Gao <liming....@intel.com> Signed-off-by: Bob Feng <bob.c.f...@intel.com> --- BaseTools/Source/Python/AutoGen/GenMake.py | 29 ++++++++++++---------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py index 47dae82e1aeb..5d02d9a05694 100755 --- a/BaseTools/Source/Python/AutoGen/GenMake.py +++ b/BaseTools/Source/Python/AutoGen/GenMake.py @@ -1690,26 +1690,29 @@ def GetDependencyList(AutoGenObject, FileCache, File, ForceList, SearchPathList) CurrentFileDependencyList = [] if F in DepDb: CurrentFileDependencyList = DepDb[F] else: try: - Fd = open(F.Path, 'rb') - FileContent = Fd.read() - Fd.close() + with open(F.Path, 'rb') as Fd: + FileContent = Fd.read(1) + Fd.seek(0) + if not FileContent: + continue + if FileContent[0] == 0xff or FileContent[0] == 0xfe: + FileContent2 = Fd.read() + FileContent2 = FileContent2.decode('utf-16') + IncludedFileList = gIncludePattern.findall(FileContent2) + else: + FileLines = Fd.readlines() + FileContent2 = [line for line in FileLines if str(line).lstrip("#\t ")[:8] == "include "] + simpleFileContent="".join(FileContent2) + + IncludedFileList = gIncludePattern.findall(simpleFileContent) except BaseException as X: EdkLogger.error("build", FILE_OPEN_FAILURE, ExtraData=F.Path + "\n\t" + str(X)) - if len(FileContent) == 0: + if not FileContent: continue - try: - if FileContent[0] == 0xff or FileContent[0] == 0xfe: - FileContent = FileContent.decode('utf-16') - else: - FileContent = FileContent.decode() - except: - # The file is not txt file. for example .mcb file - continue - IncludedFileList = gIncludePattern.findall(FileContent) for Inc in IncludedFileList: Inc = Inc.strip() # if there's macro used to reference header file, expand it HeaderList = gMacroPattern.findall(Inc) -- 2.20.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#47070): https://edk2.groups.io/g/devel/message/47070 Mute This Topic: https://groups.io/mt/34090062/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-