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
|
from Library.DataType import TAB_SPLIT
|
||||||
import Library.DataType as DT
|
import Library.DataType as DT
|
||||||
from Library.UniClassObject import FormatUniEntry
|
from Library.UniClassObject import FormatUniEntry
|
||||||
|
from Library.String import GetUniFileName
|
||||||
|
|
||||||
def GenPcd(Package, Content):
|
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())):
|
if not os.path.exists(os.path.dirname(PackageObject.GetFullPath())):
|
||||||
os.makedirs(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 = UniFileHeader + '\r\n'
|
||||||
Content += '\r\n'
|
Content += '\r\n'
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# This file contained the logical of transfer package object to INF files.
|
# 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
|
# This program and the accompanying materials are licensed and made available
|
||||||
# under the terms and conditions of the BSD License which accompanies this
|
# 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 Library import DataType as DT
|
||||||
from GenMetaFile import GenMetaFileMisc
|
from GenMetaFile import GenMetaFileMisc
|
||||||
from Library.UniClassObject import FormatUniEntry
|
from Library.UniClassObject import FormatUniEntry
|
||||||
|
from Library.String import GetUniFileName
|
||||||
|
|
||||||
|
|
||||||
## Transfer Module Object to Inf files
|
## Transfer Module Object to Inf files
|
||||||
|
@ -225,8 +226,8 @@ def GenModuleUNIEncodeFile(ModuleObject, UniFileHeader='', Encoding=DT.TAB_ENCOD
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
ModuleObject.UNIFlag = True
|
ModuleObject.UNIFlag = True
|
||||||
ContainerFile = os.path.normpath(os.path.join(os.path.dirname(ModuleObject.GetFullPath()),
|
ContainerFile = GetUniFileName(os.path.dirname(ModuleObject.GetFullPath()), ModuleObject.GetBaseName())
|
||||||
(ModuleObject.GetBaseName() + '.uni')))
|
|
||||||
if not os.path.exists(os.path.dirname(ModuleObject.GetFullPath())):
|
if not os.path.exists(os.path.dirname(ModuleObject.GetFullPath())):
|
||||||
os.makedirs(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
|
# This file is used to define common string related functions used in parsing
|
||||||
# process
|
# 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
|
# This program and the accompanying materials are licensed and made available
|
||||||
# under the terms and conditions of the BSD License which accompanies this
|
# under the terms and conditions of the BSD License which accompanies this
|
||||||
|
@ -957,3 +957,27 @@ def IsMatchArch(Arch1, Arch2):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
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