[edk2-devel] 回复: [Patch 1/1] BaseTools: Fix the issue caused by tostring() removal on Py39
gaoliming
gaoliming at byosoft.com.cn
Mon Jan 4 00:50:52 UTC 2021
Bob:
> -----邮件原件-----
> 发件人: Bob Feng <bob.c.feng at intel.com>
> 发送时间: 2020年12月29日 20:15
> 收件人: devel at edk2.groups.io
> 抄送: Liming Gao <gaoliming at byosoft.com.cn>; Yuwei Chen
> <yuwei.chen at intel.com>; Mingyue Liang <mingyuex.liang at 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 at intel.com>
>
> Cc: Liming Gao <gaoliming at byosoft.com.cn>
> Cc: Yuwei Chen <yuwei.chen at intel.com>
> Cc: Mingyue Liang <mingyuex.liang at 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
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#69517): https://edk2.groups.io/g/devel/message/69517
Mute This Topic: https://groups.io/mt/79414794/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list