if ValueList[2] == '-1':\r
EdkLogger.error('build', FORMAT_INVALID, "Pcd format incorrect.", File=self.MetaFile, Line=LineNo,\r
ExtraData="%s.%s|%s" % (TokenSpaceGuid, PcdCName, Setting))\r
- if ValueList[Index] and PcdType not in [MODEL_PCD_FEATURE_FLAG, MODEL_PCD_FIXED_AT_BUILD]:\r
+ if ValueList[Index]:\r
+ DatumType = self._DecPcds[PcdCName, TokenSpaceGuid].DatumType\r
try:\r
- ValueList[Index] = ValueExpression(ValueList[Index], GlobalData.gPlatformPcds)(True)\r
- except WrnExpression, Value:\r
- ValueList[Index] = Value.result\r
+ ValueList[Index] = ValueExpressionEx(ValueList[Index], DatumType, self._GuidDict)(True)\r
except BadExpression, Value:\r
- EdkLogger.error('Parser', FORMAT_INVALID, Value, File=self.MetaFile, Line=self._LineIndex + 1)\r
+ EdkLogger.error('Parser', FORMAT_INVALID, Value, File=self.MetaFile, Line=LineNo,\r
+ ExtraData="PCD [%s.%s] Value \"%s\" " % (\r
+ TokenSpaceGuid, PcdCName, ValueList[Index]))\r
except EvaluationException, Excpt:\r
if hasattr(Excpt, 'Pcd'):\r
if Excpt.Pcd in GlobalData.gPlatformOtherPcds:\r
else:\r
EdkLogger.error('Parser', FORMAT_INVALID, "Invalid expression: %s" % str(Excpt),\r
File=self.MetaFile, Line=LineNo)\r
+\r
if ValueList[Index]:\r
- DatumType = self._DecPcds[PcdCName, TokenSpaceGuid].DatumType\r
- try:\r
- ValueList[Index] = ValueExpressionEx(ValueList[Index], DatumType, self._GuidDict)(True)\r
- except BadExpression, Value:\r
- EdkLogger.error('Parser', FORMAT_INVALID, Value, File=self.MetaFile, Line=LineNo,\r
- ExtraData="PCD [%s.%s] Value \"%s\" " % (TokenSpaceGuid, PcdCName, ValueList[Index]))\r
Valid, ErrStr = CheckPcdDatum(self._DecPcds[PcdCName, TokenSpaceGuid].DatumType, ValueList[Index])\r
if not Valid:\r
EdkLogger.error('build', FORMAT_INVALID, ErrStr, File=self.MetaFile, Line=LineNo,\r
if self._DecPcds[PcdCName, TokenSpaceGuid].DatumType.strip() != ValueList[1].strip():\r
EdkLogger.error('build', FORMAT_INVALID, ErrStr , File=self.MetaFile, Line=LineNo,\r
ExtraData="%s.%s|%s" % (TokenSpaceGuid, PcdCName, Setting))\r
+ if (TokenSpaceGuid + '.' + PcdCName) in GlobalData.gPlatformPcds:\r
+ if GlobalData.gPlatformPcds[TokenSpaceGuid + '.' + PcdCName] != ValueList[Index]:\r
+ GlobalData.gPlatformPcds[TokenSpaceGuid + '.' + PcdCName] = ValueList[Index]\r
return ValueList\r
\r
def _FilterPcdBySkuUsage(self,Pcds):\r