From ce2f5940060c20261a7d22f5ce5c767bb8f298b0 Mon Sep 17 00:00:00 2001 From: Hess Chen Date: Thu, 25 Jun 2015 08:05:42 +0000 Subject: BaseTools/Ecc: Fix a bug in parser Fix a bug to not break when parsing a macro and not find its value Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hess Chen Reviewed-by: YangX Li git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17709 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/Python/Common/String.py | 5 +++-- BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'BaseTools') diff --git a/BaseTools/Source/Python/Common/String.py b/BaseTools/Source/Python/Common/String.py index 4dc8e9b116..6c9671d514 100644 --- a/BaseTools/Source/Python/Common/String.py +++ b/BaseTools/Source/Python/Common/String.py @@ -1,7 +1,7 @@ ## @file # This file is used to define common string related functions used in parsing process # -# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
+# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -272,7 +272,8 @@ def ReplaceMacro(String, MacroDefinitions={}, SelfReplacement=False, RaiseError= if SelfReplacement: String = String.replace("$(%s)" % Macro, '') continue - String = String.replace("$(%s)" % Macro, MacroDefinitions[Macro]) + if "$(%s)" % Macro not in MacroDefinitions[Macro]: + String = String.replace("$(%s)" % Macro, MacroDefinitions[Macro]) # in case there's macro not defined if String == LastString: break diff --git a/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py b/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py index fc75db38e0..734912f0f1 100644 --- a/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py @@ -1312,6 +1312,9 @@ class DscParser(MetaFileParser): File=self._FileWithError, ExtraData=' '.join(self._ValueList), Line=self._LineIndex+1) Result = Excpt.result + except BadExpression, Exc: + EdkLogger.debug(EdkLogger.DEBUG_5, str(Exc), self._ValueList[1]) + Result = False if self._ItemType in [MODEL_META_DATA_CONDITIONAL_STATEMENT_IF, MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF, -- cgit v1.2.3