[Patch] BaseTools: use shutil.copyfile instead shutil.copy2


Bob Feng
 

In Split tool, the copy file actions only need to
copy file content but not need to copy file metadata.

copy2() copies the file metadata that causes split
unit test failed under edk2-basetools CI environment.

So this patch changes the call of copy2() to copyfile().

Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Yuwei Chen <yuwei.chen@intel.com>
---
BaseTools/Source/Python/Split/Split.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/BaseTools/Source/Python/Split/Split.py b/BaseTools/Source/Pyth=
on/Split/Split.py
index e223a72a94..e70d5c22c4 100644
--- a/BaseTools/Source/Python/Split/Split.py
+++ b/BaseTools/Source/Python/Split/Split.py
@@ -146,18 +146,18 @@ def splitFile(inputfile, position, outputdir=3DNone, =
outputfile1=3DNone, outputfile2
logger.error("Can't make dir: %s" % outputfolder)=0D
raise(e)=0D
=0D
if position <=3D 0:=0D
if outputfile2 !=3D os.path.abspath(inputfile):=0D
- shutil.copy2(os.path.abspath(inputfile), outputfile2)=0D
+ shutil.copyfile(os.path.abspath(inputfile), outputfile2)=0D
with open(outputfile1, "wb") as fout:=0D
fout.write(b'')=0D
else:=0D
inputfilesize =3D getFileSize(inputfile)=0D
if position >=3D inputfilesize:=0D
if outputfile1 !=3D os.path.abspath(inputfile):=0D
- shutil.copy2(os.path.abspath(inputfile), outputfile1)=0D
+ shutil.copyfile(os.path.abspath(inputfile), outputfile1)=0D
with open(outputfile2, "wb") as fout:=0D
fout.write(b'')=0D
else:=0D
try:=0D
tempdir =3D tempfile.mkdtemp()=0D
@@ -169,12 +169,12 @@ def splitFile(inputfile, position, outputdir=3DNone, =
outputfile1=3DNone, outputfile2
fout1.write(content1)=0D
=0D
content2 =3D fin.read(inputfilesize - position)=0D
with open(tempfile2, "wb") as fout2:=0D
fout2.write(content2)=0D
- shutil.copy2(tempfile1, outputfile1)=0D
- shutil.copy2(tempfile2, outputfile2)=0D
+ shutil.copyfile(tempfile1, outputfile1)=0D
+ shutil.copyfile(tempfile2, outputfile2)=0D
except Exception as e:=0D
logger.error("Split file failed")=0D
raise(e)=0D
finally:=0D
if os.path.exists(tempdir):=0D
--=20
2.29.1.windows.1


Yuwei Chen
 

Reviewed-by: Yuwei Chen<yuwei.chen@intel.com>

-----Original Message-----
From: Feng, Bob C <bob.c.feng@intel.com>
Sent: Wednesday, July 28, 2021 7:45 PM
To: devel@edk2.groups.io
Cc: Liming Gao <gaoliming@byosoft.com.cn>; Chen, Christine
<yuwei.chen@intel.com>
Subject: [Patch] BaseTools: use shutil.copyfile instead shutil.copy2

In Split tool, the copy file actions only need to copy file content but not need
to copy file metadata.

copy2() copies the file metadata that causes split unit test failed under edk2-
basetools CI environment.

So this patch changes the call of copy2() to copyfile().

Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Yuwei Chen <yuwei.chen@intel.com>
---
BaseTools/Source/Python/Split/Split.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/BaseTools/Source/Python/Split/Split.py
b/BaseTools/Source/Python/Split/Split.py
index e223a72a94..e70d5c22c4 100644
--- a/BaseTools/Source/Python/Split/Split.py
+++ b/BaseTools/Source/Python/Split/Split.py
@@ -146,18 +146,18 @@ def splitFile(inputfile, position, outputdir=None,
outputfile1=None, outputfile2
logger.error("Can't make dir: %s" % outputfolder) raise(e) if
position <= 0: if outputfile2 != os.path.abspath(inputfile):-
shutil.copy2(os.path.abspath(inputfile), outputfile2)+
shutil.copyfile(os.path.abspath(inputfile), outputfile2) with
open(outputfile1, "wb") as fout: fout.write(b'') else:
inputfilesize = getFileSize(inputfile) if position >= inputfilesize: if
outputfile1 != os.path.abspath(inputfile):-
shutil.copy2(os.path.abspath(inputfile), outputfile1)+
shutil.copyfile(os.path.abspath(inputfile), outputfile1) with
open(outputfile2, "wb") as fout: fout.write(b'') else: try:
tempdir = tempfile.mkdtemp()@@ -169,12 +169,12 @@ def splitFile(inputfile,
position, outputdir=None, outputfile1=None, outputfile2
fout1.write(content1) content2 =
fin.read(inputfilesize - position) with open(tempfile2, "wb") as
fout2: fout2.write(content2)- shutil.copy2(tempfile1,
outputfile1)- shutil.copy2(tempfile2, outputfile2)+
shutil.copyfile(tempfile1, outputfile1)+ shutil.copyfile(tempfile2,
outputfile2) except Exception as e: logger.error("Split file
failed") raise(e) finally: if os.path.exists(tempdir):--
2.29.1.windows.1


Philippe Mathieu-Daudé
 

On 7/28/21 1:45 PM, Bob Feng wrote:
In Split tool, the copy file actions only need to
copy file content but not need to copy file metadata.

copy2() copies the file metadata that causes split
unit test failed under edk2-basetools CI environment.

So this patch changes the call of copy2() to copyfile().

Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Yuwei Chen <yuwei.chen@intel.com>
---
BaseTools/Source/Python/Split/Split.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com>