From 25918452ed5e9d12ea56b3bb2193df9ab96666b1 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Wed, 23 May 2012 08:27:14 +0000 Subject: Sync BaseTools Trunk (version r2524) to EDKII main trunk. Signed-off-by: Liming Gao Reviewed-by: Liu Yingke Reviewed-by: Yurui Zeng git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13353 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/Python/AutoGen/AutoGen.py | 6 ++--- BaseTools/Source/Python/BPDG/GenVpd.py | 2 +- BaseTools/Source/Python/Common/BuildVersion.py | 2 +- BaseTools/Source/Python/Common/Expression.py | 9 ++++--- .../Source/Python/CommonDataClass/FdfClass.py | 1 + BaseTools/Source/Python/GenFds/FdfParser.py | 29 +++++++++++++--------- BaseTools/Source/Python/GenFds/GuidSection.py | 7 ++++-- BaseTools/Source/Python/UPT/BuildVersion.py | 2 +- .../Source/Python/Workspace/WorkspaceDatabase.py | 15 +++++++++++ BaseTools/Source/Python/build/BuildReport.py | 11 ++++---- 10 files changed, 56 insertions(+), 28 deletions(-) (limited to 'BaseTools/Source/Python') diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index 2f38c6afd5..3261892bc5 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -292,12 +292,12 @@ class WorkspaceAutoGen(AutoGen): for Arch in self.ArchList: Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain] - DecPcds = set() + DecPcds = {} PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch) Pkgs = PGen.PackageList for Pkg in Pkgs: - for Pcd in Pkg.Pcds.keys(): - DecPcds.add((Pcd[0], Pcd[1])) + for Pcd in Pkg.Pcds: + DecPcds[Pcd[0], Pcd[1]] = Pkg.Pcds[Pcd] Platform.IsPlatformPcdDeclared(DecPcds) Platform.SkuName = self.SkuId diff --git a/BaseTools/Source/Python/BPDG/GenVpd.py b/BaseTools/Source/Python/BPDG/GenVpd.py index bbe44eefa4..cc4985062e 100644 --- a/BaseTools/Source/Python/BPDG/GenVpd.py +++ b/BaseTools/Source/Python/BPDG/GenVpd.py @@ -226,7 +226,7 @@ class PcdEntry: for Index in xrange(len(ValueList)): Value = None - if ValueList[Index].startswith('0x'): + if ValueList[Index].lower().startswith('0x'): # translate hex value try: Value = int(ValueList[Index], 16) diff --git a/BaseTools/Source/Python/Common/BuildVersion.py b/BaseTools/Source/Python/Common/BuildVersion.py index c5dae6daa4..0323fafa3c 100644 --- a/BaseTools/Source/Python/Common/BuildVersion.py +++ b/BaseTools/Source/Python/Common/BuildVersion.py @@ -13,4 +13,4 @@ # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # -gBUILD_VERSION = "Build 2518" +gBUILD_VERSION = "Build 2524" diff --git a/BaseTools/Source/Python/Common/Expression.py b/BaseTools/Source/Python/Common/Expression.py index a4853b78a4..80fad7563d 100644 --- a/BaseTools/Source/Python/Common/Expression.py +++ b/BaseTools/Source/Python/Common/Expression.py @@ -256,9 +256,12 @@ class ValueExpression(object): if self.__IsNumberToken(): return self._Expr - Token = self._GetToken() - if type(Token) == type('') and Token.startswith('{') and Token.endswith('}') and self._Idx >= self._Len: - return self._Expr + try: + Token = self._GetToken() + if type(Token) == type('') and Token.startswith('{') and Token.endswith('}') and self._Idx >= self._Len: + return self._Expr + except BadExpression: + pass self._Idx = 0 self._Token = '' diff --git a/BaseTools/Source/Python/CommonDataClass/FdfClass.py b/BaseTools/Source/Python/CommonDataClass/FdfClass.py index a459cad8ba..996468d6aa 100644 --- a/BaseTools/Source/Python/CommonDataClass/FdfClass.py +++ b/BaseTools/Source/Python/CommonDataClass/FdfClass.py @@ -249,6 +249,7 @@ class GuidSectionClassObject (SectionClassObject) : self.SectionType = None self.ProcessRequired = False self.AuthStatusValid = False + self.ExtraHeaderSize = -1 self.FvAddr = [] self.FvParentAddr = None self.IncludeFvSection = False diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py b/BaseTools/Source/Python/GenFds/FdfParser.py index dc5c4fa034..c9c620d853 100644 --- a/BaseTools/Source/Python/GenFds/FdfParser.py +++ b/BaseTools/Source/Python/GenFds/FdfParser.py @@ -2867,6 +2867,7 @@ class FdfParser: GuidSectionObj.SectionType = "GUIDED" GuidSectionObj.ProcessRequired = AttribDict["PROCESSING_REQUIRED"] GuidSectionObj.AuthStatusValid = AttribDict["AUTH_STATUS_VALID"] + GuidSectionObj.ExtraHeaderSize = AttribDict["EXTRA_HEADER_SIZE"] # Recursive sections... while True: IsLeafSection = self.__GetLeafSection(GuidSectionObj) @@ -2894,23 +2895,26 @@ class FdfParser: AttribDict = {} AttribDict["PROCESSING_REQUIRED"] = "NONE" AttribDict["AUTH_STATUS_VALID"] = "NONE" - if self.__IsKeyword("PROCESSING_REQUIRED") or self.__IsKeyword("AUTH_STATUS_VALID"): + AttribDict["EXTRA_HEADER_SIZE"] = -1 + while self.__IsKeyword("PROCESSING_REQUIRED") or self.__IsKeyword("AUTH_STATUS_VALID") \ + or self.__IsKeyword("EXTRA_HEADER_SIZE"): AttribKey = self.__Token if not self.__IsToken("="): raise Warning("expected '='", self.FileName, self.CurrentLineNumber) - if not self.__GetNextToken() or self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"): - raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber) - AttribDict[AttribKey] = self.__Token - - if self.__IsKeyword("PROCESSING_REQUIRED") or self.__IsKeyword("AUTH_STATUS_VALID"): - AttribKey = self.__Token - - if not self.__IsToken("="): - raise Warning("expected '='") - - if not self.__GetNextToken() or self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"): + if not self.__GetNextToken(): + raise Warning("expected TRUE(1)/FALSE(0)/Number", self.FileName, self.CurrentLineNumber) + elif AttribKey == "EXTRA_HEADER_SIZE": + Base = 10 + if self.__Token[0:2].upper() == "0X": + Base = 16 + try: + AttribDict[AttribKey] = int(self.__Token, Base) + continue + except ValueError: + raise Warning("expected Number", self.FileName, self.CurrentLineNumber) + elif self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"): raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber) AttribDict[AttribKey] = self.__Token @@ -3712,6 +3716,7 @@ class FdfParser: GuidSectionObj.SectionType = "GUIDED" GuidSectionObj.ProcessRequired = AttribDict["PROCESSING_REQUIRED"] GuidSectionObj.AuthStatusValid = AttribDict["AUTH_STATUS_VALID"] + GuidSectionObj.ExtraHeaderSize = AttribDict["EXTRA_HEADER_SIZE"] # Efi sections... while True: diff --git a/BaseTools/Source/Python/GenFds/GuidSection.py b/BaseTools/Source/Python/GenFds/GuidSection.py index bd95f56720..36ad4f58ef 100644 --- a/BaseTools/Source/Python/GenFds/GuidSection.py +++ b/BaseTools/Source/Python/GenFds/GuidSection.py @@ -193,7 +193,10 @@ class GuidSection(GuidSectionClassObject) : Attribute = [] HeaderLength = None - if self.ProcessRequired == "NONE": + if self.ExtraHeaderSize != -1: + HeaderLength = str(self.ExtraHeaderSize) + + if self.ProcessRequired == "NONE" and HeaderLength == None: if TempFileSize > InputFileSize and TempFileSize % 4 == 0: FileHandleIn.seek(0) BufferIn = FileHandleIn.read() @@ -218,7 +221,7 @@ class GuidSection(GuidSectionClassObject) : if self.ProcessRequired in ("TRUE", "1"): if 'PROCESSING_REQUIRED' not in Attribute: Attribute.append('PROCESSING_REQUIRED') - HeaderLength = None + if self.AuthStatusValid in ("TRUE", "1"): Attribute.append('AUTH_STATUS_VALID') GenFdsGlobalVariable.GenerateSection(OutputFile, [TempFile], Section.Section.SectionType['GUIDED'], diff --git a/BaseTools/Source/Python/UPT/BuildVersion.py b/BaseTools/Source/Python/UPT/BuildVersion.py index 1510430fe5..e2dca6130f 100644 --- a/BaseTools/Source/Python/UPT/BuildVersion.py +++ b/BaseTools/Source/Python/UPT/BuildVersion.py @@ -17,4 +17,4 @@ Build version information ''' -gBUILD_VERSION = "Build 2518" +gBUILD_VERSION = "Build 2524" diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py index 16766d32dc..e5fb41a8e0 100644 --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py @@ -852,6 +852,21 @@ class DscBuildData(PlatformBuildClassObject): EdkLogger.error('build', PARSER_ERROR, "Pcd (%s.%s) defined in DSC is not declared in DEC files." % (TokenSpaceGuid, PcdCName), File=self.MetaFile, Line=Dummy4) + PcdValue = '' + if PcdType in (MODEL_PCD_DYNAMIC_VPD, MODEL_PCD_DYNAMIC_EX_VPD): + if DecPcds[PcdCName, TokenSpaceGuid].DatumType == "VOID*": + PcdValue = AnalyzeVpdPcdData(Setting)[2] + else: + PcdValue = AnalyzeVpdPcdData(Setting)[1] + elif PcdType in (MODEL_PCD_DYNAMIC_HII, MODEL_PCD_DYNAMIC_EX_HII): + PcdValue = AnalyzeHiiPcdData(Setting)[3] + else: + PcdValue = AnalyzePcdData(Setting)[0] + if PcdValue: + Valid, ErrStr = CheckPcdDatum(DecPcds[PcdCName, TokenSpaceGuid].DatumType, PcdValue) + if not Valid: + EdkLogger.error('build', FORMAT_INVALID, ErrStr, File=self.MetaFile, Line=Dummy4, + ExtraData="%s.%s" % (TokenSpaceGuid, PcdCName)) _Macros = property(_GetMacros) Arch = property(_GetArch, _SetArch) diff --git a/BaseTools/Source/Python/build/BuildReport.py b/BaseTools/Source/Python/build/BuildReport.py index e20131a312..d5ea3bd3e5 100644 --- a/BaseTools/Source/Python/build/BuildReport.py +++ b/BaseTools/Source/Python/build/BuildReport.py @@ -39,6 +39,7 @@ from Common.DataType import TAB_SLASH from Common.DataType import TAB_SPACE_SPLIT from Common.DataType import TAB_BRG_PCD from Common.DataType import TAB_BRG_LIBRARY +from Common.DataType import TAB_BACK_SLASH ## Pattern to extract contents in EDK DXS files gDxsDependencyPattern = re.compile(r"DEPENDENCY_START(.+)DEPENDENCY_END", re.DOTALL) @@ -191,11 +192,11 @@ def FileLinesSplit(Content=None, MaxLength=None): while len(Line.rstrip()) > MaxLength: LineSpaceIndex = Line.rfind(TAB_SPACE_SPLIT, 0, MaxLength) LineSlashIndex = Line.rfind(TAB_SLASH, 0, MaxLength) - LineBreakIndex = MaxLength - if LineSpaceIndex > LineSlashIndex: - LineBreakIndex = LineSpaceIndex - elif LineSlashIndex > LineSpaceIndex: - LineBreakIndex = LineSlashIndex + LineBackSlashIndex = Line.rfind(TAB_BACK_SLASH, 0, MaxLength) + if max(LineSpaceIndex, LineSlashIndex, LineBackSlashIndex) > 0: + LineBreakIndex = max(LineSpaceIndex, LineSlashIndex, LineBackSlashIndex) + else: + LineBreakIndex = MaxLength NewContentList.append(Line[:LineBreakIndex]) Line = Line[LineBreakIndex:] if Line: -- cgit v1.2.3