# This file is used to define class objects of INF file [Binaries] section. \r
# It will consumed by InfParser. \r
#\r
-# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2011 - 2014, 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
self.CommonType = ''\r
self.TagName = ''\r
self.Family = ''\r
+ self.GuidValue = ''\r
InfBianryItem.__init__(self)\r
CurrentLine.__init__(self)\r
\r
self.Family = Family\r
def GetFamily(self):\r
return self.Family\r
+ \r
+ def SetGuidValue(self, GuidValue):\r
+ self.GuidValue = GuidValue\r
+ def GetGuidValue(self):\r
+ return self.GuidValue\r
\r
##\r
#\r
if len(VerContent) < 2:\r
Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID % (VerContent[0]),\r
+ ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID % (VerContent[0], 2),\r
File=VerCurrentLine.GetFileName(),\r
Line=VerCurrentLine.GetLineNo(),\r
ExtraData=VerCurrentLine.GetLineString())\r
CurrentLineOfItem = Item[2]\r
GlobalData.gINF_CURRENT_LINE = CurrentLineOfItem\r
InfBianryCommonItemObj = None\r
- if len(ItemContent) < 2:\r
- Logger.Error("InfParser",\r
- ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID % (ItemContent[0]),\r
- File=CurrentLineOfItem.GetFileName(),\r
- Line=CurrentLineOfItem.GetLineNo(),\r
- ExtraData=CurrentLineOfItem.GetLineString())\r
- return False\r
- if len(ItemContent) > 6:\r
+ if ItemContent[0] == 'SUBTYPE_GUID':\r
+ if len(ItemContent) < 3:\r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
+ ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID % (ItemContent[0], 3),\r
+ File=CurrentLineOfItem.GetFileName(),\r
+ Line=CurrentLineOfItem.GetLineNo(),\r
+ ExtraData=CurrentLineOfItem.GetLineString())\r
+ return False\r
+ else:\r
+ if len(ItemContent) < 2:\r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
+ ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID % (ItemContent[0], 2),\r
+ File=CurrentLineOfItem.GetFileName(),\r
+ Line=CurrentLineOfItem.GetLineNo(),\r
+ ExtraData=CurrentLineOfItem.GetLineString())\r
+ return False\r
+ \r
+ if len(ItemContent) > 7:\r
Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID_MAX % (ItemContent[0], 6),\r
+ ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID_MAX % (ItemContent[0], 7),\r
File=CurrentLineOfItem.GetFileName(),\r
Line=CurrentLineOfItem.GetLineNo(),\r
ExtraData=CurrentLineOfItem.GetLineString())\r
BinaryFileType = ItemContent[0].strip()\r
if BinaryFileType == 'RAW' or BinaryFileType == 'ACPI' or BinaryFileType == 'ASL':\r
BinaryFileType = 'BIN'\r
-\r
+ \r
if BinaryFileType not in DT.BINARY_FILE_TYPE_LIST:\r
Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
\r
InfBianryCommonItemObj.SetType(BinaryFileType)\r
InfBianryCommonItemObj.SetCommonType(ItemContent[0])\r
+ FileName = ''\r
+ if BinaryFileType == 'FREEFORM':\r
+ InfBianryCommonItemObj.SetGuidValue(ItemContent[1])\r
+ if len(ItemContent) >= 3:\r
+ FileName = ItemContent[2]\r
+ else:\r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
+ ST.ERR_INF_PARSER_BINARY_ITEM_FILENAME_NOT_EXIST,\r
+ File=CurrentLineOfItem.GetFileName(),\r
+ Line=CurrentLineOfItem.GetLineNo(),\r
+ ExtraData=CurrentLineOfItem.GetLineString())\r
+ else:\r
+ FileName = ItemContent[1]\r
#\r
# Verify File exist or not\r
#\r
FullFileName = os.path.normpath(os.path.realpath(os.path.join(GlobalData.gINF_MODULE_DIR,\r
- ItemContent[1])))\r
- if not (ValidFile(FullFileName) or ValidFile(ItemContent[1])):\r
+ FileName)))\r
+ if not (ValidFile(FullFileName) or ValidFile(FileName)):\r
Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_BINARY_ITEM_FILE_NOT_EXIST % (ItemContent[1]),\r
+ ST.ERR_INF_PARSER_BINARY_ITEM_FILE_NOT_EXIST % (FileName),\r
File=CurrentLineOfItem.GetFileName(),\r
Line=CurrentLineOfItem.GetLineNo(),\r
ExtraData=CurrentLineOfItem.GetLineString())\r
#\r
# Validate file exist/format.\r
#\r
- if IsValidPath(ItemContent[1], GlobalData.gINF_MODULE_DIR):\r
+ if IsValidPath(FileName, GlobalData.gINF_MODULE_DIR):\r
IsValidFileFlag = True\r
else:\r
Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_FILE_NOT_EXIST_OR_NAME_INVALID % (ItemContent[1]),\r
+ ST.ERR_INF_PARSER_FILE_NOT_EXIST_OR_NAME_INVALID % (FileName),\r
File=CurrentLineOfItem.GetFileName(),\r
Line=CurrentLineOfItem.GetLineNo(),\r
ExtraData=CurrentLineOfItem.GetLineString())\r
return False\r
if IsValidFileFlag:\r
ItemContent[0] = ConvPathFromAbsToRel(ItemContent[0], GlobalData.gINF_MODULE_DIR)\r
- InfBianryCommonItemObj.SetFileName(ItemContent[1])\r
+ InfBianryCommonItemObj.SetFileName(FileName)\r
if len(ItemContent) >= 3:\r
#\r
# Add Target information\r
#\r
- InfBianryCommonItemObj.SetTarget(ItemContent[2])\r
+ if BinaryFileType != 'FREEFORM':\r
+ InfBianryCommonItemObj.SetTarget(ItemContent[2])\r
+ \r
if len(ItemContent) >= 4:\r
#\r
# Add Family information\r
#\r
- InfBianryCommonItemObj.SetFamily(ItemContent[3])\r
+ if BinaryFileType != 'FREEFORM':\r
+ InfBianryCommonItemObj.SetFamily(ItemContent[3])\r
+ else:\r
+ InfBianryCommonItemObj.SetTarget(ItemContent[3])\r
+ \r
if len(ItemContent) >= 5:\r
#\r
# TagName entries are build system specific. If there \r
# system specific content cannot be distributed using \r
# the UDP\r
#\r
- if ItemContent[4].strip() != '':\r
- Logger.Error("InfParser",\r
- ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_TAGNAME_NOT_PERMITTED % (ItemContent[4]),\r
- File=CurrentLineOfItem.GetFileName(),\r
- Line=CurrentLineOfItem.GetLineNo(),\r
- ExtraData=CurrentLineOfItem.GetLineString())\r
- if len(ItemContent) == 6:\r
+ if BinaryFileType != 'FREEFORM':\r
+ if ItemContent[4].strip() != '':\r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
+ ST.ERR_INF_PARSER_TAGNAME_NOT_PERMITTED % (ItemContent[4]),\r
+ File=CurrentLineOfItem.GetFileName(),\r
+ Line=CurrentLineOfItem.GetLineNo(),\r
+ ExtraData=CurrentLineOfItem.GetLineString())\r
+ else:\r
+ InfBianryCommonItemObj.SetFamily(ItemContent[4])\r
+ \r
+ if len(ItemContent) >= 6:\r
#\r
# Add FeatureFlagExp\r
#\r
- if ItemContent[5].strip() == '':\r
+ if BinaryFileType != 'FREEFORM':\r
+ if ItemContent[5].strip() == '':\r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
+ ST.ERR_INF_PARSER_FEATURE_FLAG_EXP_MISSING,\r
+ File=CurrentLineOfItem.GetFileName(),\r
+ Line=CurrentLineOfItem.GetLineNo(),\r
+ ExtraData=CurrentLineOfItem.GetLineString())\r
+ #\r
+ # Validate Feature Flag Express \r
+ #\r
+ FeatureFlagRtv = IsValidFeatureFlagExp(ItemContent[5].strip())\r
+ if not FeatureFlagRtv[0]:\r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
+ ST.ERR_INF_PARSER_FEATURE_FLAG_EXP_SYNTAX_INVLID % (FeatureFlagRtv[1]),\r
+ File=CurrentLineOfItem.GetFileName(),\r
+ Line=CurrentLineOfItem.GetLineNo(),\r
+ ExtraData=CurrentLineOfItem.GetLineString())\r
+ InfBianryCommonItemObj.SetFeatureFlagExp(ItemContent[5])\r
+ else:\r
+ if ItemContent[5].strip() != '':\r
+ Logger.Error("InfParser",\r
+ ToolError.FORMAT_INVALID,\r
+ ST.ERR_INF_PARSER_TAGNAME_NOT_PERMITTED % (ItemContent[5]),\r
+ File=CurrentLineOfItem.GetFileName(),\r
+ Line=CurrentLineOfItem.GetLineNo(),\r
+ ExtraData=CurrentLineOfItem.GetLineString())\r
+ \r
+ if len(ItemContent) == 7:\r
+ if ItemContent[6].strip() == '':\r
Logger.Error("InfParser",\r
- ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_FEATURE_FLAG_EXP_MISSING,\r
- File=CurrentLineOfItem.GetFileName(),\r
- Line=CurrentLineOfItem.GetLineNo(),\r
- ExtraData=CurrentLineOfItem.GetLineString())\r
+ ToolError.FORMAT_INVALID,\r
+ ST.ERR_INF_PARSER_FEATURE_FLAG_EXP_MISSING,\r
+ File=CurrentLineOfItem.GetFileName(),\r
+ Line=CurrentLineOfItem.GetLineNo(),\r
+ ExtraData=CurrentLineOfItem.GetLineString())\r
#\r
# Validate Feature Flag Express \r
#\r
- FeatureFlagRtv = IsValidFeatureFlagExp(ItemContent[5].strip())\r
+ FeatureFlagRtv = IsValidFeatureFlagExp(ItemContent[6].strip())\r
if not FeatureFlagRtv[0]:\r
Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
File=CurrentLineOfItem.GetFileName(),\r
Line=CurrentLineOfItem.GetLineNo(),\r
ExtraData=CurrentLineOfItem.GetLineString())\r
- InfBianryCommonItemObj.SetFeatureFlagExp(ItemContent[5])\r
+ InfBianryCommonItemObj.SetFeatureFlagExp(ItemContent[6])\r
\r
InfBianryCommonItemObj.SetSupArchList(__SupArchList)\r
\r
if len(UiContent) < 2:\r
Logger.Error("InfParser",\r
ToolError.FORMAT_INVALID,\r
- ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID % (UiContent[0]),\r
+ ST.ERR_INF_PARSER_BINARY_ITEM_FORMAT_INVALID % (UiContent[0], 2),\r
File=UiCurrentLine.GetFileName(),\r
Line=UiCurrentLine.GetLineNo(),\r
ExtraData=UiCurrentLine.GetLineString())\r