From: "Bob Feng" <bob.c.feng@intel.com>
To: gaoliming <gaoliming@byosoft.com.cn>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Chen, Christine" <yuwei.chen@intel.com>,
"Liang, MingyueX" <mingyuex.liang@intel.com>
Subject: Re: [edk2-devel] 回复: [Patch 1/1] BaseTools: Fix the issue caused by tostring() removal on Py39
Date: Tue, 5 Jan 2021 09:09:32 +0000 [thread overview]
Message-ID: <DM6PR11MB4073860FABFF7BE8C3C5A73CC9D10@DM6PR11MB4073.namprd11.prod.outlook.com> (raw)
In-Reply-To: <006301d6e274$007e01b0$017a0510$@byosoft.com.cn>
Hi Liming,
The method in this patch is just to avoid converting the SectionData to a bytes string because there is no compatible way to generate a bytes string from a array.array.
So I can't do the bytes strings comparison between the new content and the content in the existing file.
Since the this block of code will only run in GenFds phase, the effect of the incremental save is small, I think it can be fine to save the new content anyway.
Thanks,
Bob
-----Original Message-----
From: gaoliming <gaoliming@byosoft.com.cn>
Sent: Monday, January 4, 2021 4:32 PM
To: Feng, Bob C <bob.c.feng@intel.com>; devel@edk2.groups.io
Cc: Chen, Christine <yuwei.chen@intel.com>; Liang, MingyueX <mingyuex.liang@intel.com>
Subject: 回复: [edk2-devel] 回复: [Patch 1/1] BaseTools: Fix the issue caused by tostring() removal on Py39
Original SaveFileOnChange() saves the file only when the file is updated. Can this patch keep the same behavior?
Thanks
Liming
> -----邮件原件-----
> 发件人: Feng, Bob C <bob.c.feng@intel.com>
> 发送时间: 2021年1月4日 10:27
> 收件人: devel@edk2.groups.io; gaoliming@byosoft.com.cn
> 抄送: Chen, Christine <yuwei.chen@intel.com>; Liang, MingyueX
> <mingyuex.liang@intel.com>
> 主题: RE: [edk2-devel] 回复: [Patch 1/1] BaseTools: Fix the issue caused
> by
> tostring() removal on Py39
>
> Yes. it will always update .ui file.
>
> Thanks,
> Bob
>
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> gaoliming
> Sent: Monday, January 4, 2021 8:51 AM
> To: Feng, Bob C <bob.c.feng@intel.com>; devel@edk2.groups.io
> Cc: Chen, Christine <yuwei.chen@intel.com>; Liang, MingyueX
> <mingyuex.liang@intel.com>
> Subject: [edk2-devel] 回复: [Patch 1/1] BaseTools: Fix the issue caused
> by
> tostring() removal on Py39
>
> Bob:
>
> > -----邮件原件-----
> > 发件人: Bob Feng <bob.c.feng@intel.com>
> > 发送时间: 2020年12月29日 20:15
> > 收件人: devel@edk2.groups.io
> > 抄送: Liming Gao <gaoliming@byosoft.com.cn>; Yuwei Chen
> > <yuwei.chen@intel.com>; Mingyue Liang <mingyuex.liang@intel.com>
> > 主题: [Patch 1/1] BaseTools: Fix the issue caused by tostring()
> > removal on
> > Py39
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3136
> >
> > Python 3.9 remove the array.array.tostring and
> > array.array.fromstring() function. This patch is to use other method
> > to replace tostring() and
> > fromstring()
> >
> > Signed-off-by: Bob Feng <bob.c.feng@intel.com>
> >
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Yuwei Chen <yuwei.chen@intel.com>
> > Cc: Mingyue Liang <mingyuex.liang@intel.com>
> > ---
> > .../Python/GenFds/GenFdsGlobalVariable.py | 23
> > ++++++++++++++++---
> > 1 file changed, 20 insertions(+), 3 deletions(-)
> >
> > diff --git a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
> > b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
> > index dc1727c4666d..3019ec63c3bb 100644
> > --- a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
> > +++ b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
> > @@ -25,14 +25,15 @@ from Common.Misc import SaveFileOnChange
> >
> > from Common.TargetTxtClassObject import TargetTxtDict from
> > Common.ToolDefClassObject import ToolDefDict from
> AutoGen.BuildEngine
> > import ToolBuildRule import Common.DataType as DataType -from
> > Common.Misc import PathClass
> > +from Common.Misc import PathClass,CreateDirectory
> > from Common.LongFilePathSupport import OpenLongFilePath as open
> from
> > Common.MultipleWorkspace import MultipleWorkspace as mws import
> > Common.GlobalData as GlobalData
> > +from Common.BuildToolError import *
> >
> > ## Global variables
> > #
> > #
> > class GenFdsGlobalVariable:
> > @@ -461,16 +462,32 @@ class GenFdsGlobalVariable:
> > Cmd += ("-o", Output)
> > if ' '.join(Cmd).strip() not in
> > GenFdsGlobalVariable.SecCmdList:
> > GenFdsGlobalVariable.SecCmdList.append('
> > '.join(Cmd).strip())
> > else:
> > SectionData = array('B', [0, 0, 0, 0])
> > - SectionData.fromstring(Ui.encode("utf_16_le"))
> > +
> > SectionData.fromlist(array('B',Ui.encode('utf-16-le')).tolist())
> > SectionData.append(0)
> > SectionData.append(0)
> > Len = len(SectionData)
> >
> > GenFdsGlobalVariable.SectionHeader.pack_into(SectionData, 0, Len &
> > 0xff, (Len >> 8) & 0xff, (Len >> 16) & 0xff, 0x15)
> > - SaveFileOnChange(Output, SectionData.tostring())
> > +
> > +
> > + DirName = os.path.dirname(Output)
> > + if not CreateDirectory(DirName):
> > + EdkLogger.error(None, FILE_CREATE_FAILURE,
> > "Could not create directory %s" % DirName)
> > + else:
> > + if DirName == '':
> > + DirName = os.getcwd()
> > + if not os.access(DirName, os.W_OK):
> > + EdkLogger.error(None,
> PERMISSION_FAILURE,
> > "Do not have write permission on directory %s" % DirName)
> > +
> > + try:
> > + with open(Output, "wb") as Fd:
> > + SectionData.tofile(Fd)
> > + Fd.flush()
> > + except IOError as X:
> > + EdkLogger.error(None, FILE_CREATE_FAILURE,
> > ExtraData='IOError %s' % X)
>
> Does this change always update the file time stamp even if the file
> content is not changed?
>
> Thanks
> Liming
> >
> > elif Ver:
> > Cmd += ("-n", Ver)
> > if BuildNumber:
> > Cmd += ("-j", BuildNumber)
> > --
> > 2.29.1.windows.1
>
>
>
>
>
>
>
next prev parent reply other threads:[~2021-01-05 9:10 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-29 12:14 [Patch 1/1] BaseTools: Fix the issue caused by tostring() removal on Py39 Bob Feng
2021-01-04 0:50 ` 回复: " gaoliming
2021-01-04 2:27 ` [edk2-devel] " Bob Feng
2021-01-04 8:31 ` 回复: " gaoliming
2021-01-05 9:09 ` Bob Feng [this message]
2021-01-05 13:27 ` gaoliming
2021-01-06 0:58 ` Bob Feng
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=DM6PR11MB4073860FABFF7BE8C3C5A73CC9D10@DM6PR11MB4073.namprd11.prod.outlook.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