From c62f1874f4df469e620dd72a9d31b51d9d99be27 Mon Sep 17 00:00:00 2001 From: Yonghong Zhu Date: Wed, 30 Nov 2016 15:57:00 +0800 Subject: BaseTools: Support QuotedString for PREBUILD/POSTBUILD in DSC file If the prebuild/postbuild script statement start with double quotations, current tool report error, while DSC spec allow this usage. so update tool to support it. Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu Reviewed-by: Liming Gao --- BaseTools/Source/Python/Workspace/WorkspaceDatabase.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py index 46179a39e9..e7bc87dc6b 100644 --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py @@ -231,9 +231,21 @@ class DscBuildData(PlatformBuildClassObject): EdkLogger.error('build', ErrorCode, File=self.MetaFile, Line=Record[-1], ExtraData=ErrorInfo) elif Name == TAB_DSC_PREBUILD: - self._Prebuild = PathClass(NormPath(Record[2], self._Macros), GlobalData.gWorkspace) + PrebuildValue = Record[2] + if Record[2][0] == '"': + if Record[2][-1] != '"': + EdkLogger.error('build', FORMAT_INVALID, 'Missing double quotes in the end of %s statement.' % TAB_DSC_PREBUILD, + File=self.MetaFile, Line=Record[-1]) + PrebuildValue = Record[2][1:-1] + self._Prebuild = PathClass(NormPath(PrebuildValue, self._Macros), GlobalData.gWorkspace) elif Name == TAB_DSC_POSTBUILD: - self._Postbuild = PathClass(NormPath(Record[2], self._Macros), GlobalData.gWorkspace) + PostbuildValue = Record[2] + if Record[2][0] == '"': + if Record[2][-1] != '"': + EdkLogger.error('build', FORMAT_INVALID, 'Missing double quotes in the end of %s statement.' % TAB_DSC_POSTBUILD, + File=self.MetaFile, Line=Record[-1]) + PostbuildValue = Record[2][1:-1] + self._Postbuild = PathClass(NormPath(PostbuildValue, self._Macros), GlobalData.gWorkspace) elif Name == TAB_DSC_DEFINES_SUPPORTED_ARCHITECTURES: self._SupArchList = GetSplitValueList(Record[2], TAB_VALUE_SPLIT) elif Name == TAB_DSC_DEFINES_BUILD_TARGETS: -- cgit v1.2.3