public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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
> 
> 
> 
> 
> 
> 
> 




  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