1. Sync the code of FDF to the latest spec
authorhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 16 Aug 2007 07:52:14 +0000 (07:52 +0000)
committerhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 16 Aug 2007 07:52:14 +0000 (07:52 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@575 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Common/DataType.py
Source/Python/Common/DecClassObject.py
Source/Python/Common/DscClassObject.py
Source/Python/Common/EdkIIWorkspaceBuild.py
Source/Python/Common/InfClassObject.py
Source/Python/Common/String.py
Source/Python/CommonDataClass/CommonClass.py

index 323cd6e..613efe5 100644 (file)
@@ -262,6 +262,11 @@ TAB_INF_DEFINES_DEFINE = 'DEFINE'
 TAB_INF_DEFINES_SPEC = 'SPEC'\r
 TAB_INF_DEFINES_CUSTOM_MAKEFILE = 'CUSTOM_MAKEFILE'\r
 TAB_INF_DEFINES_MACRO_NAME = 'MacroName'               #TBD\r
+TAB_INF_FIXED_PCD = 'FixedPcd'\r
+TAB_INF_FEATURE_PCD = 'FeaturePcd'\r
+TAB_INF_PATCH_PCD = 'PatchPcd'\r
+TAB_INF_PCD = 'Pcd'\r
+TAB_INF_PCD_EX = 'PcdEx'\r
 \r
 #Dec Definitions\r
 TAB_DEC_DEFINES = TAB_COMMON_DEFINES\r
index 1edb4df..1a1eb62 100644 (file)
@@ -218,41 +218,65 @@ class Dec(DecObject):
         for Arch in DataType.ARCH_LIST:\r
             for Item in self.Contents[Arch].PcdsFixedAtBuild:\r
                 List = GetSplitValueList(Item)\r
-                if len(List) != 5:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsFixedAtBuild in file '%s', correct format is '<TokenCName>|<Token>|<CName>|<DatumType>|<Default>'" % (Item, self.Package.Header.FullPath) \r
+                if len(List) != 4:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsFixedAtBuild in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item, self.Package.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], List[3], List[4],TAB_PCDS_FIXED_AT_BUILD), Arch)\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsFixedAtBuild in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item[0], Type, self.Platform.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], List[2], List[3], TAB_PCDS_FIXED_AT_BUILD), Arch)\r
+            \r
             for Item in self.Contents[Arch].PcdsPatchableInModule:\r
                 List = GetSplitValueList(Item)\r
-                if len(List) != 5:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsPatchableInModule in file '%s', correct format is '<TokenCName>|<Token>|<CName>|<DatumType>|<Default>'" % (Item, self.Package.Header.FullPath) \r
+                if len(List) != 4:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsPatchableInModule in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item, self.Package.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsPatchableInModule in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item[0], Type, self.Platform.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], List[3], List[4], TAB_PCDS_PATCHABLE_IN_MODULE), Arch)\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], List[2], List[3], TAB_PCDS_PATCHABLE_IN_MODULE), Arch)\r
+            \r
             for Item in self.Contents[Arch].PcdsFeatureFlag:\r
                 List = GetSplitValueList(Item)\r
-                if len(List) != 5:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsFeatureFlag in file '%s', correct format is '<TokenCName>|<Token>|<CName>|<DatumType>|<Default>'" % (Item, self.Package.Header.FullPath) \r
+                if len(List) != 4:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsFeatureFlag in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item, self.Package.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsFeatureFlag in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item[0], Type, self.Platform.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], List[3], List[4], TAB_PCDS_FEATURE_FLAG), Arch)\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], List[2], List[3], TAB_PCDS_FEATURE_FLAG), Arch)\r
+            \r
             for Item in self.Contents[Arch].PcdsDynamicEx:\r
                 List = GetSplitValueList(Item)\r
-                if len(List) != 5:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsDynamicEx in file '%s', correct format is '<TokenCName>|<Token>|<CName>|<DatumType>|<Default>'" % (Item, self.Package.Header.FullPath) \r
+                if len(List) != 4:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsDynamicEx in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item, self.Package.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsDynamicEx in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item[0], Type, self.Platform.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], List[3], List[4], TAB_PCDS_DYNAMIC_EX), Arch)\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], List[2], List[3], TAB_PCDS_DYNAMIC_EX), Arch)\r
+            \r
             for Item in self.Contents[Arch].PcdsDynamic:\r
                 List = GetSplitValueList(Item)\r
-                if len(List) != 5:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsDynamic in file '%s', correct format is '<TokenCName>|<Token>|<CName>|<DatumType>|<Default>'" % (Item, self.Package.Header.FullPath) \r
+                if len(List) != 4:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsDynamic in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item, self.Package.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], List[3], List[4], TAB_PCDS_DYNAMIC), Arch)\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdsDynamic in file '%s', correct format is '<TokenSpcCName>.<TokenCName>|<Token>|<Value>|<DatumType>'" % (Item[0], Type, self.Platform.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], List[2], List[3], TAB_PCDS_DYNAMIC), Arch)\r
         for Key in Pcds.keys():\r
             Pcd = PcdClass()\r
-            Pcd.CName = Key[0]\r
-            Pcd.Token = Key[1]\r
-            Pcd.TokenSpaceGuidCName = Key[2]\r
+            Pcd.CName = Key[1]\r
+            Pcd.Token = Key[4]\r
+            Pcd.TokenSpaceGuidCName = Key[0]\r
             Pcd.DatumType = Key[3]\r
-            Pcd.DefaultValue = Key[4]\r
+            Pcd.DefaultValue = Key[2]\r
             Pcd.ItemType = Key[5]\r
             Pcd.SupArchList = Pcds[Key]\r
             self.Package.PcdDeclarations.append(Pcd)\r
@@ -293,17 +317,10 @@ class Dec(DecObject):
             print Item.LibraryClass, Item.RecommendedInstance, Item.SupModuleList, Item.SupArchList\r
         print '\nPcds =', m.PcdDeclarations\r
         for Item in m.PcdDeclarations:\r
-            print Item.CName, Item.TokenSpaceGuidCName, Item.DefaultValue, Item.ItemType, Item.Token, Item.DatumType, Item.SupArchList\r
+            print 'CName=', Item.CName, 'TokenSpaceGuidCName=', Item.TokenSpaceGuidCName, 'DefaultValue=', Item.DefaultValue, 'ItemType=', Item.ItemType, 'Token=', Item.Token, 'DatumType=', Item.DatumType, Item.SupArchList\r
 \r
 if __name__ == '__main__':\r
-    p = Dec()\r
-    directory = 'C:\Documents and Settings\\hchen30\\Desktop\\prototype\\dec'\r
-    fileList = []\r
-    for f in os.listdir(directory):\r
-        if os.path.splitext(os.path.normcase(f))[1] == '.dec':\r
-            fileList.append(os.path.join(directory, os.path.normcase(f)))\r
-            \r
-    for f in fileList:\r
-        p = Dec(f, True, True)\r
-        #p.ShowDec()\r
-        p.ShowPackage()\r
+    w = os.getenv('WORKSPACE')\r
+    f = os.path.join(w, 'Nt32Pkg/Nt32Pkg.dec')\r
+    p = Dec(os.path.normpath(f), True, True)\r
+    p.ShowPackage()\r
index f561047..0cb58d8 100644 (file)
@@ -252,7 +252,7 @@ class Dsc(DscObject):
         #Pcds\r
         self.GenPcds(DataType.TAB_PCDS_FIXED_AT_BUILD)\r
         self.GenPcds(DataType.TAB_PCDS_PATCHABLE_IN_MODULE)\r
-        self.GenPcds(DataType.TAB_PCDS_FEATURE_FLAG)\r
+        self.GenFeatureFlagPcds(DataType.TAB_PCDS_FEATURE_FLAG)\r
         self.GenDynamicDefaultPcds(DataType.TAB_PCDS_DYNAMIC_DEFAULT)\r
         self.GenDynamicDefaultPcds(DataType.TAB_PCDS_DYNAMIC_EX_DEFAULT)\r
         self.GenDynamicHiiPcds(DataType.TAB_PCDS_DYNAMIC_HII)\r
@@ -291,25 +291,51 @@ class Dsc(DscObject):
                 for Pcd in Pcds:\r
                     Type = Pcd[0]\r
                     List = GetSplitValueList(Pcd[1])\r
+                    \r
+                    #\r
+                    # For FeatureFlag\r
+                    #\r
                     if Type == DataType.TAB_PCDS_FEATURE_FLAG:\r
-                        if len(List) != 3:\r
-                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<Cname>|<TokenSpaceGuidCName>|<TrueFalse>'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
+                        if len(List) != 2:\r
+                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<PcdTokenName>|TRUE/FALSE'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
+                            raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                        \r
+                        TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                        if len(TokenInfo) != 2:\r
+                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<PcdTokenName>|TRUE/FALSE'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
                             raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
                         else:\r
-                            Component.PcdBuildDefinitions.append(PcdClass(List[0], '', List[1], '', '', List[2], Type, [], {}, []))\r
+                            Component.PcdBuildDefinitions.append(PcdClass(TokenInfo[1], '', TokenInfo[0], '', '', List[1], Type, [], {}, []))\r
+                    #\r
+                    # For FixedAtBuild or PatchableInModule\r
+                    #\r
                     if Type == DataType.TAB_PCDS_FIXED_AT_BUILD or Type == DataType.TAB_PCDS_PATCHABLE_IN_MODULE:\r
                         List.append('')\r
-                        if len(List) < 4:\r
-                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<Cname>|<TokenSpaceGuidCName>|<Value>[|<MaxDatumSize>]'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
+                        if len(List) < 3:\r
+                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<PcdTokenName>|<Value>[|<MaxDatumSize>]'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
+                            raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                        \r
+                        TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                        if len(TokenInfo) != 2:\r
+                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<PcdTokenName>|<Value>[|<MaxDatumSize>]'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
                             raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
                         else:\r
-                            Component.PcdBuildDefinitions.append(PcdClass(List[0], '', List[1], '', List[3], List[2], Type, [], {}, []))\r
+                            Component.PcdBuildDefinitions.append(PcdClass(TokenInfo[1], '', TokenInfo[0], '', List[2], List[1], Type, [], {}, []))\r
+                    \r
+                    #\r
+                    # For Dynamic or DynamicEx\r
+                    #\r
                     if Type == DataType.TAB_PCDS_DYNAMIC or Type == DataType.TAB_PCDS_DYNAMIC_EX:\r
-                        if len(List) != 3:\r
-                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<Cname>|<TokenSpaceGuidCName>'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
+                        if len(List) != 1:\r
+                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<PcdTokenName>'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
+                            raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                        \r
+                        TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                        if len(TokenInfo) != 2:\r
+                            ErrorMsg = "Wrong Pcds%s statement '%s' found in section Components in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<PcdTokenName>'" % (Type, Pcd[1], self.Platform.Header.FullPath) \r
                             raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
                         else:\r
-                            Component.PcdBuildDefinitions.append(PcdClass(List[0], '', List[1], '', '', List[2], Type, [], {}, []))                        \r
+                            Component.PcdBuildDefinitions.append(PcdClass(TokenInfo[1], '', TokenInfo[0], '', '', '', Type, [], {}, []))                        \r
                     \r
                 if GenInclude(Item[0], IncludeFiles, Arch):\r
                     continue\r
@@ -329,28 +355,57 @@ class Dsc(DscObject):
         \r
     #End of DscToPlatform\r
     \r
+    def GenFeatureFlagPcds(self, Type = ''):\r
+        Pcds = {}\r
+        Items = []\r
+        for Arch in DataType.ARCH_LIST:\r
+            if Type == DataType.TAB_PCDS_FEATURE_FLAG:\r
+                Items = self.Contents[Arch].PcdsFeatureFlag\r
+            else:\r
+                pass\r
+            \r
+            for Item in Items:\r
+                List = GetSplitValueList(Item)\r
+                if len(List) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section Pcds%s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|TRUE/FALSE'" % (Item, Type, self.Platform.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                \r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section Pcds%s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|TRUE/FALSE'" % (Item, Type, self.Platform.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                \r
+                MergeArches(Pcds, (TokenInfo[1], TokenInfo[0], List[1], Type), Arch)\r
+        for Key in Pcds:\r
+            Pcd = PcdClass(Key[0], '', Key[1], '', '', Key[2], Key[3], [], {}, [])\r
+            Pcd.SupArchList = Pcds[Key]\r
+            self.Platform.DynamicPcdBuildDefinitions.append(Pcd)\r
+    \r
     def GenPcds(self, Type = ''):\r
         Pcds = {}\r
         Items = []\r
         for Arch in DataType.ARCH_LIST:\r
-            if Type == DataType.TAB_PCDS_FIXED_AT_BUILD:\r
-                Items = self.Contents[Arch].PcdsFixedAtBuild\r
-            elif Type == DataType.TAB_PCDS_PATCHABLE_IN_MODULE:\r
+            if Type == DataType.TAB_PCDS_PATCHABLE_IN_MODULE:\r
                 Items = self.Contents[Arch].PcdsPatchableInModule\r
-            elif Type == DataType.TAB_PCDS_FEATURE_FLAG:\r
-                Items = self.Contents[Arch].PcdsFeatureFlag\r
+            elif Type == DataType.TAB_PCDS_FIXED_AT_BUILD:\r
+                Items = self.Contents[Arch].PcdsFixedAtBuild\r
             else:\r
                 pass\r
             \r
             for Item in Items:\r
-                List = GetSplitValueList(Item + DataType.TAB_VALUE_SPLIT)\r
+                List = GetSplitValueList(Item + DataType.TAB_VALUE_SPLIT * 2)\r
                 if len(List) < 4:\r
-                    ErrorMsg = "Wrong statement '%s' found in section %s in file '%s', correct format is '<PcdTokenName>|<PcdTokenSpaceGuidCName>|<Value>[|<MaximumDatumSize>]'" % (Item, Type, self.Platform.Header.FullPath) \r
+                    ErrorMsg = "Wrong statement '%s' found in section Pcds%s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|<Value>[|<Type>|<MaximumDatumSize>]'" % (Item, Type, self.Platform.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                \r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section Pcds%s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|<Value>[|<Type>|<MaximumDatumSize>]'" % (Item, Type, self.Platform.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
                 else:\r
-                    MergeArches(Pcds, (List[0], List[1], List[2], List[3], Type), Arch)\r
+                    MergeArches(Pcds, (TokenInfo[1], TokenInfo[0], List[1], List[2], List[3], Type), Arch)\r
         for Key in Pcds:\r
-            Pcd = PcdClass(Key[0], '', Key[1], '', Key[3], Key[2], Key[4], [], {}, [])\r
+            Pcd = PcdClass(Key[0], '', Key[1], Key[3], Key[4], Key[2], Key[5], [], {}, [])\r
             Pcd.SupArchList = Pcds[Key]\r
             self.Platform.DynamicPcdBuildDefinitions.append(Pcd)\r
     \r
@@ -380,17 +435,22 @@ class Dsc(DscObject):
             \r
             for Item in Items:\r
                 List = GetSplitValueList(Item[0] + DataType.TAB_VALUE_SPLIT)\r
-                if len(List) < 4:\r
-                    ErrorMsg = "Wrong statement '%s' found in section %s in file '%s', correct format is '<PcdTokenName>|<PcdTokenSpaceGuidCName>|<Value>[|<MaximumDatumSize>]'" % (Item, Type, self.Platform.Header.FullPath) \r
+                if len(List) < 3:\r
+                    ErrorMsg = "Wrong statement '%s' found in section Pcds%s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|<Value>'" % (Item[0], Type, self.Platform.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                \r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section Pcds%s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|<Value>'" % (Item[0], Type, self.Platform.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
                 else:\r
-                    MergeArches(Pcds, (List[0], List[1], List[2], List[3], Type), Arch)\r
+                    MergeArches(Pcds, (TokenInfo[1], TokenInfo[0], List[1], List[2], Type), Arch)\r
         for Key in Pcds:\r
             (Status, SkuInfoList) = self.GenSkuInfoList(Item[1], self.Platform.SkuInfos.SkuInfoList, '', '', '', '', '', Key[2])\r
             if Status == False:\r
                 ErrorMsg = "SKUID '%s' of '%s' not defined in file '%s'" % (SkuInfoList, Type, self.Platform.Header.FullPath) \r
                 raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-            Pcd = PcdClass(Key[0], '', Key[1], '', Key[3], '', Key[4], [], SkuInfoList, [])\r
+            Pcd = PcdClass(Key[0], '', Key[1], '', Key[3], Key[2], Key[4], [], SkuInfoList, [])\r
             Pcd.SupArchList = Pcds[Key]\r
             self.Platform.DynamicPcdBuildDefinitions.append(Pcd)\r
          \r
@@ -407,18 +467,23 @@ class Dsc(DscObject):
                 pass\r
             \r
             for Item in Items:\r
-                List = GetSplitValueList(Item[0] + DataType.TAB_VALUE_SPLIT)\r
-                if len(List) < 7:\r
-                    ErrorMsg = "Wrong statement '%s' found in section %s in file '%s', correct format is '<PcdTokenName>|<PcdTokenSpaceGuidCName>|<String>|<VariableGuidCName>|<VariableOffset>|<DefaultValue>[|<MaximumDatumSize>]'" % (Item, Type, self.Platform.Header.FullPath) \r
+                List = GetSplitValueList(Item[0] + DataType.TAB_VALUE_SPLIT * 2)\r
+                if len(List) < 6:\r
+                    ErrorMsg = "Wrong statement '%s' found in section %s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|<String>|<VariableGuidCName>|<VariableOffset>[|<DefaultValue>[|<MaximumDatumSize>]]'" % (Item[0], Type, self.Platform.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                \r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section %s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|<String>|<VariableGuidCName>|<VariableOffset>[|<DefaultValue>[|<MaximumDatumSize>]]'" % (Item[0], Type, self.Platform.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
                 else:\r
-                    MergeArches(Pcds, (List[0], List[1], List[2], List[3], List[4], List[5], List[6], Type), Arch)\r
+                    MergeArches(Pcds, (TokenInfo[1], TokenInfo[0], List[1], List[2], List[3], List[4], List[5], Type), Arch)\r
         for Key in Pcds:\r
             (Status, SkuInfoList) = self.GenSkuInfoList(Item[1], self.Platform.SkuInfos.SkuInfoList, Key[2], Key[3], Key[4], Key[5], '', '')\r
             if Status == False:\r
                 ErrorMsg = "SKUID '%s' of '%s' not defined in file '%s'" % (SkuInfoList, Type, self.Platform.Header.FullPath) \r
                 raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-            Pcd = PcdClass(Key[0], '', Key[1], '', Key[3], '', Key[7], [], SkuInfoList, [])\r
+            Pcd = PcdClass(Key[0], '', Key[1], '', Key[6], Key[5], Key[7], [], SkuInfoList, [])\r
             Pcd.SupArchList = Pcds[Key]\r
             self.Platform.DynamicPcdBuildDefinitions.append(Pcd)\r
     \r
@@ -436,13 +501,18 @@ class Dsc(DscObject):
             \r
             for Item in Items:\r
                 List = GetSplitValueList(Item[0] + DataType.TAB_VALUE_SPLIT)\r
-                if len(List) < 4:\r
-                    ErrorMsg = "Wrong statement '%s' found in section %s in file '%s', correct format is '<PcdTokenName>|<PcdTokenSpaceGuidCName>|<DefaultValue>[|<MaximumDatumSize>]'" % (Item, Type, self.Platform.Header.FullPath) \r
+                if len(List) < 3:\r
+                    ErrorMsg = "Wrong statement '%s' found in section %s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|<VpdOffset>[|<MaximumDatumSize>]'" % (Item[0], Type, self.Platform.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                \r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section %s in file '%s', correct format is '<PcdTokenSpaceGuidCName>.<TokenCName>|<VpdOffset>[|<MaximumDatumSize>]'" % (Item[0], Type, self.Platform.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
                 else:\r
-                    MergeArches(Pcds, (List[0], List[1], List[2], List[3], Type), Arch)\r
+                    MergeArches(Pcds, (TokenInfo[1], TokenInfo[0], List[1], List[2], Type), Arch)\r
         for Key in Pcds:\r
-            (Status, SkuInfoList) = self.GenSkuInfoList(Item[1], self.Platform.SkuInfos.SkuInfoList, '', '', '', '', List[2], '')\r
+            (Status, SkuInfoList) = self.GenSkuInfoList(Item[1], self.Platform.SkuInfos.SkuInfoList, '', '', '', '', Key[2], '')\r
             if Status == False:\r
                 ErrorMsg = "SKUID '%s' of '%s' not defined in file '%s'" % (SkuInfoList, Type, self.Platform.Header.FullPath) \r
                 raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
@@ -478,38 +548,31 @@ class Dsc(DscObject):
         print 'Fdf =', m.FlashDefinitionFile.FilePath\r
         print '\nBuildOptions =', m.BuildOptions, m.BuildOptions.IncludeFiles\r
         for Item in m.BuildOptions.BuildOptionList:\r
-            print Item.ToolChainFamily, Item.ToolChain, Item.Option, Item.SupArchList\r
+            print '\t', Item.ToolChainFamily, Item.ToolChain, Item.Option, Item.SupArchList\r
         print '\nSkuIds =', m.SkuInfos.SkuInfoList, m.SkuInfos.IncludeFiles\r
         print '\nLibraries =', m.Libraries, m.Libraries.IncludeFiles\r
         for Item in m.Libraries.LibraryList:\r
-            print Item.FilePath, Item.SupArchList, Item.Define\r
+            print '\t', Item.FilePath, Item.SupArchList, Item.Define\r
         print '\nLibraryClasses =', m.LibraryClasses, m.LibraryClasses.IncludeFiles\r
         for Item in m.LibraryClasses.LibraryList:\r
-            print Item.Name, Item.FilePath, Item.ModuleType, Item.SupArchList, Item.Define\r
+            print '\t', Item.Name, Item.FilePath, Item.ModuleType, Item.SupArchList, Item.Define\r
         print '\nPcds =', m.DynamicPcdBuildDefinitions\r
         for Item in m.DynamicPcdBuildDefinitions:\r
-            print Item.CName, Item.TokenSpaceGuidCName, Item.DefaultValue, Item.Token, Item.ItemType, Item.MaxDatumSize, Item.SupArchList, Item.SkuInfoList\r
+            print '\tCname=', Item.CName, 'TSG=', Item.TokenSpaceGuidCName, 'Value=', Item.DefaultValue, 'Token=', Item.Token, 'Type=', Item.ItemType, 'Datum=', Item.DatumType, 'Size=', Item.MaxDatumSize, 'Arch=', Item.SupArchList, Item.SkuInfoList\r
             for Sku in Item.SkuInfoList.values():\r
-                print str(Sku)\r
+                print '\t\t', str(Sku)\r
         print '\nComponents =', m.Modules.ModuleList, m.Modules.IncludeFiles\r
         for Item in m.Modules.ModuleList:\r
-            print Item.FilePath, Item.ExecFilePath, Item.SupArchList\r
+            print '\t', Item.FilePath, Item.ExecFilePath, Item.SupArchList\r
             for Lib in Item.LibraryClasses.LibraryList:\r
-                print Lib.Name, Lib.FilePath\r
+                print '\t\tLib:', Lib.Name, Lib.FilePath\r
             for Bo in Item.ModuleSaBuildOption.BuildOptionList:\r
-                print Bo.ToolChainFamily, Bo.ToolChain, Bo.Option\r
+                print '\t\tBuildOption:', Bo.ToolChainFamily, Bo.ToolChain, Bo.Option\r
             for Pcd in Item.PcdBuildDefinitions:\r
-                print Pcd.CName, Pcd.TokenSpaceGuidCName, Pcd.MaxDatumSize, Pcd.DefaultValue, Pcd.ItemType\r
+                print '\t\tPcd:', Pcd.CName, Pcd.TokenSpaceGuidCName, Pcd.MaxDatumSize, Pcd.DefaultValue, Pcd.ItemType\r
     \r
 if __name__ == '__main__':\r
-    p = Dsc()\r
-    directory = 'C:\MyWorkspace\Nt32Pkg'\r
-    fileList = []\r
-    for f in os.listdir(directory):\r
-        if os.path.splitext(os.path.normcase(f))[1] == '.dsc':\r
-            fileList.append(os.path.join(directory, os.path.normcase(f)))\r
-            \r
-    for f in fileList:\r
-        p = Dsc(f, True, True)\r
-        #p.ShowDsc()\r
-        p.ShowPlatform()\r
+    w = os.getenv('WORKSPACE')\r
+    f = os.path.join(w, 'Nt32Pkg/Nt32Pkg.dsc')\r
+    p = Dsc(os.path.normpath(f), True, True)\r
+    p.ShowPlatform()\r
index 0ae12d3..fa01269 100644 (file)
@@ -42,15 +42,15 @@ class PcdClassObject(object):
         self.Phase = "DXE"\r
         \r
     def __str__(self):\r
-        rtn = str(self.TokenCName) + DataType.TAB_VALUE_SPLIT + \\r
-              str(self.TokenSpaceGuidCName) + DataType.TAB_VALUE_SPLIT + \\r
-              str(self.Type) + DataType.TAB_VALUE_SPLIT + \\r
-              str(self.DatumType) + DataType.TAB_VALUE_SPLIT + \\r
-              str(self.DefaultValue) + DataType.TAB_VALUE_SPLIT + \\r
-              str(self.TokenValue) + DataType.TAB_VALUE_SPLIT + \\r
-              str(self.MaxDatumSize) + DataType.TAB_VALUE_SPLIT\r
+        rtn = '\tTokenCName=' + str(self.TokenCName) + ', ' + \\r
+              'TokenSpaceGuidCName=' + str(self.TokenSpaceGuidCName) + ', ' + \\r
+              'Type=' + str(self.Type) + ', ' + \\r
+              'DatumType=' + str(self.DatumType) + ', ' + \\r
+              'DefaultValue=' + str(self.DefaultValue) + ', ' + \\r
+              'TokenValue=' + str(self.TokenValue) + ', ' + \\r
+              'MaxDatumSize=' + str(self.MaxDatumSize) + ', '\r
         for Item in self.SkuInfoList.values():\r
-            rtn = rtn + Item.SkuId + DataType.TAB_VALUE_SPLIT + Item.SkuIdName + DataType.TAB_VALUE_SPLIT\r
+            rtn = rtn + 'SkuId=' + Item.SkuId + ', ' + 'SkuIdName=' + Item.SkuIdName\r
         rtn = rtn + str(self.IsOverrided)\r
         \r
         return rtn\r
@@ -871,8 +871,8 @@ class WorkspaceBuild(object):
         #\r
         # Last get information from PcdsSet defined by FDF\r
         #\r
-        if Guid in PcdsSet.keys():\r
-            Value = PcdsSet[Guid]\r
+        if (Name, Guid) in PcdsSet:\r
+            Value = PcdsSet[(Name, Guid)]\r
 \r
         return PcdClassObject(Name, Guid, Type, DatumType, Value, Token, MaxDatumSize, SkuInfoList, IsOverrided)\r
     \r
@@ -1028,5 +1028,5 @@ if __name__ == '__main__':
     # Nothing to do here. Could do some unit tests.\r
     w = os.getenv('WORKSPACE')\r
     ewb = WorkspaceBuild('Nt32Pkg/Nt32Pkg.dsc', w)\r
-    ewb.GenBuildDatabase({'gEfiMdeModulePkgTokenSpaceGuid' : 'KKKKKKKKKKKKKKKKKKKKK'})\r
+    ewb.GenBuildDatabase({('PcdDevicePathSupportDevicePathFromText, gEfiMdeModulePkgTokenSpaceGuid') : 'KKKKKKKKKKKKKKKKKKKKK'})\r
     ewb.ShowWorkspaceBuild()\r
index 6641a5d..dd87e2f 100644 (file)
@@ -71,11 +71,11 @@ class InfContents(InfObject):
         self.Libraries = []\r
         self.LibraryClasses = []\r
         self.Packages = []\r
-        self.PcdsFixedAtBuild = []\r
-        self.PcdsPatchableInModule = []\r
-        self.PcdsFeatureFlag = []\r
-        self.PcdsDynamic = []\r
-        self.PcdsDynamicEx = []\r
+        self.FixedPcd = []\r
+        self.PatchPcd = []\r
+        self.FeaturePcd = []\r
+        self.Pcd = []\r
+        self.PcdEx = []\r
         self.Depex = []\r
         self.Nmake = []\r
         \r
@@ -92,8 +92,7 @@ class Inf(InfObject):
 \r
         self.KeyList = [\r
             TAB_SOURCES, TAB_BUILD_OPTIONS, TAB_BINARIES, TAB_INCLUDES, TAB_GUIDS, TAB_PROTOCOLS, TAB_PPIS, TAB_LIBRARY_CLASSES, TAB_PACKAGES, TAB_LIBRARIES, \\r
-            TAB_PCDS_FIXED_AT_BUILD_NULL, TAB_PCDS_PATCHABLE_IN_MODULE_NULL, TAB_PCDS_FEATURE_FLAG_NULL, \\r
-            TAB_PCDS_DYNAMIC_NULL, TAB_PCDS_DYNAMIC_EX_NULL, TAB_DEPEX, TAB_NMAKE\r
+            TAB_INF_FIXED_PCD, TAB_INF_PATCH_PCD, TAB_INF_FEATURE_PCD, TAB_INF_PCD, TAB_INF_PCD_EX, TAB_DEPEX, TAB_NMAKE\r
         ]\r
                 \r
         if Filename != None:\r
@@ -316,45 +315,69 @@ class Inf(InfObject):
         #Pcds\r
         Pcds = {}\r
         for Arch in DataType.ARCH_LIST:\r
-            for Item in self.Contents[Arch].PcdsFixedAtBuild:\r
+            for Item in self.Contents[Arch].FixedPcd:\r
                 Item = Item + DataType.TAB_VALUE_SPLIT\r
                 List = GetSplitValueList(Item)\r
-                if len(List) <= 2:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsFixedAtBuild in file '%s', correct format is '<TokenName>|<TSGuidName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                if len(List) < 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section FixedPcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], TAB_PCDS_FIXED_AT_BUILD), Arch)\r
-            for Item in self.Contents[Arch].PcdsPatchableInModule:\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section FixedPcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], TAB_PCDS_FIXED_AT_BUILD), Arch)\r
+            \r
+            for Item in self.Contents[Arch].PatchPcd:\r
                 Item = Item + DataType.TAB_VALUE_SPLIT\r
                 List = GetSplitValueList(Item)\r
-                if len(List) <= 2:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsPatchableInModule in file '%s', correct format is '<TokenName>|<TSGuidName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                if len(List) < 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PatchPcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section FixedPcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], TAB_PCDS_PATCHABLE_IN_MODULE), Arch)\r
-            for Item in self.Contents[Arch].PcdsFeatureFlag:\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], TAB_PCDS_PATCHABLE_IN_MODULE), Arch)\r
+            \r
+            for Item in self.Contents[Arch].FeaturePcd:\r
                 Item = Item + DataType.TAB_VALUE_SPLIT\r
                 List = GetSplitValueList(Item)\r
-                if len(List) <= 2:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsFeatureFlag in file '%s', correct format is '<TokenName>|<TSGuidName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                if len(List) < 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section FeaturePcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section FixedPcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], TAB_PCDS_FEATURE_FLAG), Arch)\r
-            for Item in self.Contents[Arch].PcdsDynamicEx:\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], TAB_PCDS_FEATURE_FLAG), Arch)\r
+            \r
+            for Item in self.Contents[Arch].PcdEx:\r
                 Item = Item + DataType.TAB_VALUE_SPLIT\r
                 List = GetSplitValueList(Item)\r
-                if len(List) <= 2:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsDynamicEx in file '%s', correct format is '<TokenName>|<TSGuidName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                if len(List) < 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section PcdEx in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], TAB_PCDS_DYNAMIC_EX), Arch)\r
-            for Item in self.Contents[Arch].PcdsDynamic:\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section FixedPcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], TAB_PCDS_DYNAMIC_EX), Arch)\r
+            \r
+            for Item in self.Contents[Arch].Pcd:\r
                 Item = Item + DataType.TAB_VALUE_SPLIT\r
                 List = GetSplitValueList(Item)\r
-                if len(List) <= 2:\r
-                    ErrorMsg = "Wrong statement '%s' found in section PcdsDynamic in file '%s', correct format is '<TokenName>|<TSGuidName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                if len(List) < 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section Pcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
+                    raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
+                TokenInfo = GetSplitValueList(List[0], DataType.TAB_SPLIT)\r
+                if len(TokenInfo) != 2:\r
+                    ErrorMsg = "Wrong statement '%s' found in section FixedPcd in file '%s', correct format is '<TokenSpaceGuidCName>.<PcdCName>[|<Value>]'" % (Item[0:-1], self.Module.Header.FullPath) \r
                     raise ParserError(PARSER_ERROR, msg = ErrorMsg)\r
-                MergeArches(Pcds, (List[0], List[1], List[2], TAB_PCDS_DYNAMIC), Arch)\r
+                MergeArches(Pcds, (TokenInfo[0], TokenInfo[1], List[1], TAB_PCDS_DYNAMIC), Arch)\r
         for Key in Pcds.keys():\r
             Pcd = PcdClass()\r
-            Pcd.CName = Key[0]\r
-            Pcd.TokenSpaceGuidCName = Key[1]\r
+            Pcd.CName = Key[1]\r
+            Pcd.TokenSpaceGuidCName = Key[0]\r
             Pcd.DefaultValue = Key[2]\r
             Pcd.ItemType = Key[3]\r
             Pcd.SupArchList = Pcds[Key]\r
@@ -554,7 +577,7 @@ class Inf(InfObject):
             print Item.Name, Item.Value, Item.SupArchList\r
         print '\nPcds =', m.PcdCodes\r
         for Item in m.PcdCodes:\r
-            print Item.CName, Item.TokenSpaceGuidCName, Item.DefaultValue, Item.ItemType, Item.SupArchList\r
+            print '\tCName=', Item.CName, 'TokenSpaceGuidCName=', Item.TokenSpaceGuidCName, 'DefaultValue=', Item.DefaultValue, 'ItemType=', Item.ItemType, Item.SupArchList\r
         print '\nSources =', m.Sources\r
         for Source in m.Sources:\r
             print Source.SourceFile, Source.ToolChainFamily, Source.FeatureFlag, Source.TagName, Source.ToolCode, Source.SupArchList\r
@@ -578,15 +601,7 @@ class Inf(InfObject):
             print Binary.FileType, Binary.Target, Binary.BinaryFile, Binary.FeatureFlag\r
         \r
 if __name__ == '__main__':\r
-    m = Inf()\r
-    directory = 'C:\MyWorkspace\MdePkg\Library\BaseLib'\r
-    fileList = []\r
-    \r
-    for f in os.listdir(directory):\r
-        if os.path.splitext(os.path.normcase(f))[1] == '.inf':\r
-            fileList.append(os.path.join(directory, os.path.normcase(f)))\r
-            \r
-    for f in fileList:\r
-        m = Inf(f, True, True)\r
-        #m.ShowInf()\r
-        m.ShowModule()\r
+    w = os.getenv('WORKSPACE')\r
+    f = os.path.join(w, 'MdeModulePkg/Application/HelloWorld/HelloWorld.inf')\r
+    p = Inf(os.path.normpath(f), True, True)\r
+    p.ShowModule()\r
index daf9256..e4208ca 100644 (file)
@@ -121,7 +121,7 @@ def GetComponents(Lines, Key, KeyValues, CommentCharacter):
                 ListItem = CleanString(Line.rsplit('{', 1)[0], CommentCharacter)\r
 \r
         if findBlock:    \r
-            if Line.find('<LibraryClass>') != -1:\r
+            if Line.find('<LibraryClasses>') != -1:\r
                 (findLibraryClass, findBuildOption, findPcdsFeatureFlag, findPcdsPatchableInModule, findPcdsFixedAtBuild, findPcdsDynamic, findPcdsDynamicEx) = (True, False, False, False, False, False, False)\r
                 continue\r
             if Line.find('<BuildOptions>') != -1:\r
index 63b572f..ab333d6 100644 (file)
@@ -101,14 +101,14 @@ class SkuInfoClass(object):
         self.DefaultValue = DefaultValue\r
         \r
     def __str__(self):\r
-        rtn = rtn = 'SkuInfo = ' + str(self.SkuId) + "," + \\r
-                    str(self.SkuIdName) + "," + \\r
-                    str(self.VariableName) + "," + \\r
-                    str(self.VariableGuid) + "," + \\r
-                    str(self.VariableOffset) + "," + \\r
-                    str(self.HiiDefaultValue) + "," + \\r
-                    str(self.VpdOffset) + "," + \\r
-                    str(self.DefaultValue) + ","\r
+        rtn = rtn = 'SkuId = ' + str(self.SkuId) + "," + \\r
+                    'SkuIdName = ' + str(self.SkuIdName) + "," + \\r
+                    'VariableName = ' + str(self.VariableName) + "," + \\r
+                    'VariableGuid = ' + str(self.VariableGuid) + "," + \\r
+                    'VariableOffset = ' + str(self.VariableOffset) + "," + \\r
+                    'HiiDefaultValue = ' + str(self.HiiDefaultValue) + "," + \\r
+                    'VpdOffset = ' + str(self.VpdOffset) + "," + \\r
+                    'DefaultValue = ' + str(self.DefaultValue) + ","\r
         return rtn\r
 \r
 class PcdClass(CommonClass):\r