Reviewed-by: Liming Gao 发件人: devel@edk2.groups.io 代表 Joey Vagedes via groups.io 发送时间: 2023年7月13日 23:27 收件人: Kinney, Michael D 抄送: devel@edk2.groups.io; Rebecca Cran ; Gao, Liming ; Feng, Bob C ; Chen, Christine 主题: Re: [edk2-devel] [PATCH v1 1/1] BaseTools: BinToPcd: Resolve xdrlib deprecation Thank you for the review Michael. @Rebecca Cran , @Liming Gao have you had time to take a look at this? It is a fairly simple change, following the same logic as xdrlib with a few modifications to use some newer python functionality. Thanks, Joey On Tue, Jun 27, 2023 at 10:21 AM Kinney, Michael D > wrote: Thank you for fixing this. Reviewed-by: Michael D Kinney > > -----Original Message----- > From: Joey Vagedes > > Sent: Tuesday, June 27, 2023 9:27 AM > To: devel@edk2.groups.io > Cc: Rebecca Cran >; Gao, Liming > >; Feng, Bob C >; Chen, > Christine >; Kinney, Michael D > > > Subject: [PATCH v1 1/1] BaseTools: BinToPcd: Resolve xdrlib deprecation > > Removes the dependency on xdrlib and replaces it with custom logic to > pack a per the xdr requirements. Necessary as xdrlib is being deprecated > in python 3.13. > > Cc: Rebecca Cran > > Cc: Liming Gao > > Cc: Bob Feng > > Cc: Yuwei Chen > > Cc: Michael D Kinney > > Signed-off-by: Joey Vagedes > > --- > BaseTools/Scripts/BinToPcd.py | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/BaseTools/Scripts/BinToPcd.py b/BaseTools/Scripts/BinToPcd.py > index 3bc557b8412c..460c08b7f7cd 100644 > --- a/BaseTools/Scripts/BinToPcd.py > +++ b/BaseTools/Scripts/BinToPcd.py > @@ -14,6 +14,9 @@ import sys > import argparse > > import re > > import xdrlib > > +import io > > +import struct > > +import math > > > > # > > # Globals for help information > > @@ -46,16 +49,24 @@ if __name__ == '__main__': > raise argparse.ArgumentTypeError (Message) > > return Argument > > > > + def XdrPackBuffer (buffer): > > + packed_bytes = io.BytesIO() > > + for unpacked_bytes in buffer: > > + n = len(unpacked_bytes) > > + packed_bytes.write(struct.pack('>L',n)) > > + data = unpacked_bytes[:n] > > + n = math.ceil(n/4)*4 > > + data = data + (n - len(data)) * b'\0' > > + packed_bytes.write(data) > > + return packed_bytes.getvalue() > > + > > def ByteArray (Buffer, Xdr = False): > > if Xdr: > > # > > # If Xdr flag is set then encode data using the Variable- > Length Opaque > > # Data format of RFC 4506 External Data Representation > Standard (XDR). > > # > > - XdrEncoder = xdrlib.Packer () > > - for Item in Buffer: > > - XdrEncoder.pack_bytes (Item) > > - Buffer = bytearray (XdrEncoder.get_buffer ()) > > + Buffer = bytearray (XdrPackBuffer (Buffer)) > > else: > > # > > # If Xdr flag is not set, then concatenate all the data > > -- > 2.41.0.windows.1