summaryrefslogtreecommitdiff
path: root/BaseTools/Source/Python/Common
diff options
context:
space:
mode:
authorShi, Steven <steven.shi@intel.com>2019-08-22 10:43:59 +0800
committerFeng, Bob C <bob.c.feng@intel.com>2019-08-23 11:26:23 +0800
commit6dd9aa40193cc905cda5f97d07e30ffbd5299439 (patch)
tree11d1c4f3469e14e197d91fdeb2398cc86b3e6a4a /BaseTools/Source/Python/Common
parent1237517b21305ad96834f9a0514a8365dd8a1c41 (diff)
downloadedk2-6dd9aa40193cc905cda5f97d07e30ffbd5299439.zip
edk2-6dd9aa40193cc905cda5f97d07e30ffbd5299439.tar.gz
edk2-6dd9aa40193cc905cda5f97d07e30ffbd5299439.tar.bz2
BaseTools: Support long file path in windows for misc functions
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2103 Current CopyFileOnChange() and SaveFileOnChange() in BaseTools\Source\Python\Common\Misc.py don't use the dedicated long file path API to handle the file path strings and cannot support the long file path copy and save in windows. This patch enhances them to support the long file path copy and save correctly. Cc: Liming Gao <liming.gao@intel.com> Cc: Bob Feng <bob.c.feng@intel.com> Signed-off-by: Steven Shi <steven.shi@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/Common')
-rwxr-xr-xBaseTools/Source/Python/Common/Misc.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py
index 4799635..15ae6a9 100755
--- a/BaseTools/Source/Python/Common/Misc.py
+++ b/BaseTools/Source/Python/Common/Misc.py
@@ -34,6 +34,8 @@ from Common.BuildToolError import *
from CommonDataClass.DataClass import *
from Common.Parsing import GetSplitValueList
from Common.LongFilePathSupport import OpenLongFilePath as open
+from Common.LongFilePathSupport import CopyLongFilePath as CopyLong
+from Common.LongFilePathSupport import LongFilePath as LongFilePath
from Common.MultipleWorkspace import MultipleWorkspace as mws
from CommonDataClass.Exceptions import BadExpression
from Common.caching import cached_property
@@ -450,6 +452,9 @@ def RemoveDirectory(Directory, Recursively=False):
#
def SaveFileOnChange(File, Content, IsBinaryFile=True, FileLock=None):
+ # Convert to long file path format
+ File = LongFilePath(File)
+
if os.path.exists(File):
if IsBinaryFile:
try:
@@ -530,6 +535,11 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True, FileLock=None):
# @retval False No copy really happen
#
def CopyFileOnChange(SrcFile, Dst, FileLock=None):
+
+ # Convert to long file path format
+ SrcFile = LongFilePath(SrcFile)
+ Dst = LongFilePath(Dst)
+
if not os.path.exists(SrcFile):
return False
@@ -561,7 +571,7 @@ def CopyFileOnChange(SrcFile, Dst, FileLock=None):
# copy the src to a temp file in the dst same folder firstly, then
# replace or rename the temp file to the destination file.
with tempfile.NamedTemporaryFile(dir=DirName, delete=False) as tf:
- shutil.copy(SrcFile, tf.name)
+ CopyLong(SrcFile, tf.name)
tempname = tf.name
try:
if hasattr(os, 'replace'):