mirror of https://github.com/acidanthera/audk.git
BaseTool/Upt: Avoid UNI file name conflict
When creating a UNI file if there is a name conflict, add an index from 0 to the file name Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hess Chen <hesheng.chen@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
parent
0e025deac5
commit
06eb35402e
|
@ -65,6 +65,7 @@ from Library.DataType import TAB_SECTION_END
|
|||
from Library.DataType import TAB_SPLIT
|
||||
import Library.DataType as DT
|
||||
from Library.UniClassObject import FormatUniEntry
|
||||
from Library.String import GetUniFileName
|
||||
|
||||
def GenPcd(Package, Content):
|
||||
#
|
||||
|
@ -586,9 +587,9 @@ def GenPackageUNIEncodeFile(PackageObject, UniFileHeader = '', Encoding=TAB_ENCO
|
|||
|
||||
if not os.path.exists(os.path.dirname(PackageObject.GetFullPath())):
|
||||
os.makedirs(os.path.dirname(PackageObject.GetFullPath()))
|
||||
ContainerFile = os.path.normpath(os.path.join(os.path.dirname(PackageObject.GetFullPath()),
|
||||
(PackageObject.GetBaseName() + '.uni')))
|
||||
|
||||
ContainerFile = GetUniFileName(os.path.dirname(PackageObject.GetFullPath()), PackageObject.GetBaseName())
|
||||
|
||||
Content = UniFileHeader + '\r\n'
|
||||
Content += '\r\n'
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# This file contained the logical of transfer package object to INF files.
|
||||
#
|
||||
# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
|
@ -41,6 +41,7 @@ import Logger.Log as Logger
|
|||
from Library import DataType as DT
|
||||
from GenMetaFile import GenMetaFileMisc
|
||||
from Library.UniClassObject import FormatUniEntry
|
||||
from Library.String import GetUniFileName
|
||||
|
||||
|
||||
## Transfer Module Object to Inf files
|
||||
|
@ -225,8 +226,8 @@ def GenModuleUNIEncodeFile(ModuleObject, UniFileHeader='', Encoding=DT.TAB_ENCOD
|
|||
return
|
||||
else:
|
||||
ModuleObject.UNIFlag = True
|
||||
ContainerFile = os.path.normpath(os.path.join(os.path.dirname(ModuleObject.GetFullPath()),
|
||||
(ModuleObject.GetBaseName() + '.uni')))
|
||||
ContainerFile = GetUniFileName(os.path.dirname(ModuleObject.GetFullPath()), ModuleObject.GetBaseName())
|
||||
|
||||
if not os.path.exists(os.path.dirname(ModuleObject.GetFullPath())):
|
||||
os.makedirs(os.path.dirname(ModuleObject.GetFullPath()))
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# This file is used to define common string related functions used in parsing
|
||||
# process
|
||||
#
|
||||
# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
|
@ -957,3 +957,27 @@ def IsMatchArch(Arch1, Arch2):
|
|||
return True
|
||||
|
||||
return False
|
||||
|
||||
# Search all files in FilePath to find the FileName with the largest index
|
||||
# Return the FileName with index +1 under the FilePath
|
||||
#
|
||||
def GetUniFileName(FilePath, FileName):
|
||||
Files = os.listdir(FilePath)
|
||||
LargestIndex = -1
|
||||
for File in Files:
|
||||
if File.upper().startswith(FileName.upper()) and File.upper().endswith('.UNI'):
|
||||
Index = File.upper().replace(FileName.upper(), '').replace('.UNI', '')
|
||||
if Index:
|
||||
try:
|
||||
Index = int(Index)
|
||||
except Exception:
|
||||
Index = -1
|
||||
else:
|
||||
Index = 0
|
||||
if Index > LargestIndex:
|
||||
LargestIndex = Index + 1
|
||||
|
||||
if LargestIndex > -1:
|
||||
return os.path.normpath(os.path.join(FilePath, FileName + str(LargestIndex) + '.uni'))
|
||||
else:
|
||||
return os.path.normpath(os.path.join(FilePath, FileName + '.uni'))
|
||||
|
|
Loading…
Reference in New Issue