From: "Liming Gao" <liming.gao@intel.com>
To: "Feng, Bob C" <bob.c.feng@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [Patch 1/3] BaseTools: Improve GetDependencyList function
Date: Fri, 20 Sep 2019 05:39:51 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4FF286@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20190910091650.33060-1-bob.c.feng@intel.com>
Bob:
I find this patch will cause the dependent header files not be listed in module Makefile.
Then, it will cause the incremental build issue. I don't think this is a good fix.
I will send the patch to revert this change.
Thanks
Liming
> -----Original Message-----
> From: Feng, Bob C
> Sent: Tuesday, September 10, 2019 5:17 PM
> To: devel@edk2.groups.io
> Cc: Gao, Liming <liming.gao@intel.com>; Feng, Bob C <bob.c.feng@intel.com>
> Subject: [Patch 1/3] BaseTools: Improve GetDependencyList function
>
> 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.gao@intel.com>
> Signed-off-by: Bob Feng <bob.c.feng@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
prev parent reply other threads:[~2019-09-20 5:39 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-10 9:16 [Patch 1/3] BaseTools: Improve GetDependencyList function Bob Feng
2019-09-20 5:39 ` Liming Gao [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A89E2EF3DFEDB4C8BFDE51014F606A14E4FF286@SHSMSX104.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox