## @file\r
# This file is used to provide method for process AsBuilt INF file. It will consumed by InfParser\r
#\r
-# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
#\r
-# This program and the accompanying materials are licensed and made available \r
-# under the terms and conditions of the BSD License which accompanies this \r
-# distribution. The full text of the license may be found at \r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
'''\r
InfAsBuiltProcess\r
'''\r
import os\r
import re\r
from Library import GlobalData\r
-\r
import Logger.Log as Logger\r
from Logger import StringTable as ST\r
from Logger import ToolError\r
\r
-from Library.String import GetSplitValueList\r
+from Library.StringUtils import GetSplitValueList\r
from Library.Misc import GetHelpStringByRemoveHashKey\r
from Library.Misc import ValidFile\r
from Library.Misc import ProcessLineExtender\r
FileGuidString = ""\r
VerString = ""\r
\r
- OrignalString = String\r
+ OriginalString = String\r
String = String.strip()\r
if not String:\r
return None, None\r
if VersionMatchedObj:\r
Guid = GuidMatchedObj.group().strip()\r
Version = VersionMatchedObj.group().strip()\r
- return GetGuidVerFormLibInstance(Guid, Version, WorkSpace, CurrentInfFileName)\r
+ return Guid, Version\r
\r
#\r
# To deal with library instance specified by file name\r
#\r
- FileLinesList = GetFileLineContent(String, WorkSpace, LineNo, OrignalString)\r
+ FileLinesList = GetFileLineContent(String, WorkSpace, LineNo, OriginalString)\r
\r
\r
ReFindFileGuidPattern = re.compile("^\s*FILE_GUID\s*=.*$")\r
# @param WorkSpace. The WorkSpace directory used to combined with INF file path.\r
#\r
# @return GUID, Version\r
-def GetPackageListInfo(FileNameString, WorkSpace, LineNo): \r
+def GetPackageListInfo(FileNameString, WorkSpace, LineNo):\r
PackageInfoList = []\r
DefineSectionMacros = {}\r
PackageSectionMacros = {}\r
- \r
+\r
FileLinesList = GetFileLineContent(FileNameString, WorkSpace, LineNo, '')\r
- \r
+\r
RePackageHeader = re.compile('^\s*\[Packages.*\].*$')\r
ReDefineHeader = re.compile('^\s*\[Defines].*$')\r
- \r
+\r
PackageHederFlag = False\r
DefineHeaderFlag = False\r
LineNo = -1\r
for Line in FileLinesList:\r
LineNo += 1\r
Line = Line.strip()\r
- \r
+\r
if Line.startswith('['):\r
PackageHederFlag = False\r
- DefineHeaderFlag = False \r
- \r
+ DefineHeaderFlag = False\r
+\r
if Line.startswith("#"):\r
continue\r
- \r
+\r
if not Line:\r
- continue \r
- \r
+ continue\r
+\r
#\r
- # Found [Packages] section \r
+ # Found [Packages] section\r
#\r
if RePackageHeader.match(Line):\r
PackageHederFlag = True\r
continue\r
- \r
+\r
#\r
# Found [Define] section\r
#\r
if ReDefineHeader.match(Line):\r
DefineHeaderFlag = True\r
continue\r
- \r
+\r
if DefineHeaderFlag:\r
#\r
# Find Macro\r
Name, Value = MacroParser((Line, LineNo),\r
FileNameString,\r
DT.MODEL_META_DATA_HEADER,\r
- DefineSectionMacros) \r
- \r
- if Name != None:\r
- DefineSectionMacros[Name] = Value \r
+ DefineSectionMacros)\r
+\r
+ if Name is not None:\r
+ DefineSectionMacros[Name] = Value\r
continue\r
- \r
+\r
if PackageHederFlag:\r
\r
#\r
FileNameString,\r
DT.MODEL_META_DATA_PACKAGE,\r
DefineSectionMacros)\r
- if Name != None:\r
- PackageSectionMacros[Name] = Value \r
+ if Name is not None:\r
+ PackageSectionMacros[Name] = Value\r
continue\r
- \r
+\r
#\r
# Replace with Local section Macro and [Defines] section Macro.\r
- # \r
+ #\r
Line = InfExpandMacro(Line, (FileNameString, Line, LineNo), DefineSectionMacros, PackageSectionMacros, True)\r
- \r
+\r
Line = GetSplitValueList(Line, "#", 1)[0]\r
Line = GetSplitValueList(Line, "|", 1)[0]\r
PackageInfoList.append(Line)\r
- \r
- return PackageInfoList \r
- \r
+\r
+ return PackageInfoList\r
+\r
def GetFileLineContent(FileName, WorkSpace, LineNo, OriginalString):\r
- \r
+\r
if not LineNo:\r
LineNo = -1\r
\r
#\r
FullFileName = os.path.normpath(os.path.realpath(os.path.join(WorkSpace, FileName)))\r
if not (ValidFile(FullFileName)):\r
- Logger.Error("InfParser", \r
- ToolError.FORMAT_INVALID,\r
- ST.ERR_FILELIST_EXIST%(FileName),\r
- File=GlobalData.gINF_MODULE_NAME,\r
- Line=LineNo, \r
- ExtraData=OriginalString)\r
- \r
+ return []\r
+\r
#\r
# Validate file exist/format.\r
#\r
if not IsValidPath(FileName, WorkSpace):\r
- Logger.Error("InfParser", \r
- ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_FILE_NOT_EXIST_OR_NAME_INVALID%(FileName),\r
- File=GlobalData.gINF_MODULE_NAME, \r
- Line=LineNo, \r
- ExtraData=OriginalString)\r
- \r
+ return []\r
+\r
FileLinesList = []\r
- \r
+\r
try:\r
FullFileName = FullFileName.replace('\\', '/')\r
- Inputfile = open(FullFileName, "rb", 0)\r
+ Inputfile = open(FullFileName, "r")\r
try:\r
FileLinesList = Inputfile.readlines()\r
except BaseException:\r
ToolError.FILE_READ_FAILURE,\r
ST.ERR_FILE_OPEN_FAILURE,\r
File=FullFileName)\r
- \r
+\r
FileLinesList = ProcessLineExtender(FileLinesList)\r
- \r
+\r
return FileLinesList\r
\r
##\r
continue\r
InfFile = InfFile.replace('\\', '/')\r
if InfFile not in GlobalData.gLIBINSTANCEDICT:\r
- InfFileObj = open(InfFile, "rb", 0)\r
+ InfFileObj = open(InfFile, "r")\r
GlobalData.gLIBINSTANCEDICT[InfFile] = InfFileObj\r
else:\r
InfFileObj = GlobalData.gLIBINSTANCEDICT[InfFile]\r