## @file\r
-# This file is used to define class objects of INF file [Packages] section. \r
-# It will consumed by InfParser. \r
+# This file is used to define class objects of INF file [Packages] section.\r
+# 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
+# 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
from Logger import StringTable as ST\r
from Logger import ToolError\r
import Logger.Log as Logger\r
-from Library import GlobalData \r
+from Library import GlobalData\r
\r
from Library.Misc import Sdict\r
from Library.ParserValidate import IsValidPath\r
-from Library.ExpressionValidate import IsValidFeatureFlagExp \r
+from Library.ExpressionValidate import IsValidFeatureFlagExp\r
\r
class InfPackageItem():\r
- def __init__(self, \r
+ def __init__(self,\r
PackageName = '',\r
FeatureFlagExp = '',\r
HelpString = ''):\r
self.FeatureFlagExp = FeatureFlagExp\r
self.HelpString = HelpString\r
self.SupArchList = []\r
- \r
+\r
def SetPackageName(self, PackageName):\r
self.PackageName = PackageName\r
def GetPackageName(self):\r
return self.PackageName\r
- \r
+\r
def SetFeatureFlagExp(self, FeatureFlagExp):\r
self.FeatureFlagExp = FeatureFlagExp\r
def GetFeatureFlagExp(self):\r
return self.FeatureFlagExp\r
- \r
+\r
def SetHelpString(self, HelpString):\r
self.HelpString = HelpString\r
def GetHelpString(self):\r
return self.HelpString\r
- \r
+\r
def SetSupArchList(self, SupArchList):\r
self.SupArchList = SupArchList\r
def GetSupArchList(self):\r
return self.SupArchList\r
\r
- \r
+\r
## INF package section\r
#\r
#\r
# Macro defined in this section should be only used in this section.\r
#\r
self.Macros = {}\r
- \r
+\r
def SetPackages(self, PackageData, Arch = None):\r
IsValidFileFlag = False\r
SupArchList = []\r
for ArchItem in Arch:\r
#\r
# Validate Arch\r
- # \r
+ #\r
if (ArchItem == '' or ArchItem is None):\r
ArchItem = 'COMMON'\r
- SupArchList.append(ArchItem) \r
- \r
+ SupArchList.append(ArchItem)\r
+\r
for PackageItem in PackageData:\r
PackageItemObj = InfPackageItem()\r
HelpStringObj = PackageItem[1]\r
PackageItem = PackageItem[0]\r
if HelpStringObj is not None:\r
HelpString = HelpStringObj.HeaderComments + HelpStringObj.TailComments\r
- PackageItemObj.SetHelpString(HelpString) \r
+ PackageItemObj.SetHelpString(HelpString)\r
if len(PackageItem) >= 1:\r
#\r
# Validate file exist/format.\r
if IsValidPath(PackageItem[0], ''):\r
IsValidFileFlag = True\r
elif IsValidPath(PackageItem[0], GlobalData.gINF_MODULE_DIR):\r
- IsValidFileFlag = True \r
+ IsValidFileFlag = True\r
elif IsValidPath(PackageItem[0], GlobalData.gWORKSPACE):\r
IsValidFileFlag = True\r
else:\r
- Logger.Error("InfParser", \r
+ Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
ST.ERR_INF_PARSER_FILE_NOT_EXIST_OR_NAME_INVALID%(PackageItem[0]),\r
- File=CurrentLineOfPackItem[2], \r
- Line=CurrentLineOfPackItem[1], \r
+ File=CurrentLineOfPackItem[2],\r
+ Line=CurrentLineOfPackItem[1],\r
ExtraData=CurrentLineOfPackItem[0])\r
return False\r
- if IsValidFileFlag: \r
+ if IsValidFileFlag:\r
PackageItemObj.SetPackageName(PackageItem[0])\r
if len(PackageItem) == 2:\r
#\r
# Validate Feature Flag Express\r
#\r
if PackageItem[1].strip() == '':\r
- Logger.Error("InfParser", \r
- ToolError.FORMAT_INVALID, \r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
ST.ERR_INF_PARSER_FEATURE_FLAG_EXP_MISSING,\r
- File=CurrentLineOfPackItem[2], \r
- Line=CurrentLineOfPackItem[1], \r
+ File=CurrentLineOfPackItem[2],\r
+ Line=CurrentLineOfPackItem[1],\r
ExtraData=CurrentLineOfPackItem[0])\r
#\r
- # Validate FFE \r
+ # Validate FFE\r
#\r
FeatureFlagRtv = IsValidFeatureFlagExp(PackageItem[1].strip())\r
if not FeatureFlagRtv[0]:\r
- Logger.Error("InfParser", \r
+ Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
ST.ERR_INF_PARSER_FEATURE_FLAG_EXP_SYNTAX_INVLID%(FeatureFlagRtv[1]),\r
- File=CurrentLineOfPackItem[2], \r
- Line=CurrentLineOfPackItem[1], \r
+ File=CurrentLineOfPackItem[2],\r
+ Line=CurrentLineOfPackItem[1],\r
ExtraData=CurrentLineOfPackItem[0])\r
- \r
+\r
PackageItemObj.SetFeatureFlagExp(PackageItem[1].strip())\r
- \r
+\r
if len(PackageItem) > 2:\r
#\r
- # Invalid format of Package statement \r
+ # Invalid format of Package statement\r
#\r
- Logger.Error("InfParser", \r
- ToolError.FORMAT_INVALID, \r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
ST.ERR_INF_PARSER_PACKAGE_SECTION_CONTENT_ERROR,\r
- File=CurrentLineOfPackItem[2], \r
- Line=CurrentLineOfPackItem[1], \r
+ File=CurrentLineOfPackItem[2],\r
+ Line=CurrentLineOfPackItem[1],\r
ExtraData=CurrentLineOfPackItem[0])\r
PackageItemObj.SetSupArchList(SupArchList)\r
- \r
+\r
#\r
# Determine package file name duplicate. Follow below rule:\r
#\r
- # A package filename must not be duplicated within a [Packages] \r
- # section. Package filenames may appear in multiple architectural \r
- # [Packages] sections. A package filename listed in an \r
+ # A package filename must not be duplicated within a [Packages]\r
+ # section. Package filenames may appear in multiple architectural\r
+ # [Packages] sections. A package filename listed in an\r
# architectural [Packages] section must not be listed in the common\r
# architectural [Packages] section.\r
- # \r
+ #\r
# NOTE: This check will not report error now.\r
- # \r
+ #\r
for Item in self.Packages:\r
if Item.GetPackageName() == PackageItemObj.GetPackageName():\r
ItemSupArchList = Item.GetSupArchList()\r
# ST.ERR_INF_PARSER_ITEM_DUPLICATE_COMMON\r
#\r
pass\r
- \r
+\r
if (PackageItemObj) in self.Packages:\r
PackageList = self.Packages[PackageItemObj]\r
PackageList.append(PackageItemObj)\r
PackageList = []\r
PackageList.append(PackageItemObj)\r
self.Packages[PackageItemObj] = PackageList\r
- \r
+\r
return True\r
- \r
+\r
def GetPackages(self, Arch = None):\r
if Arch is None:\r
return self.Packages\r