1. Add a checkpoint to check duplicated PCD defined in one DEC file.
authorhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 3 Jul 2008 06:13:42 +0000 (06:13 +0000)
committerhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 3 Jul 2008 06:13:42 +0000 (06:13 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@1274 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Ecc/Check.py
Source/Python/Ecc/EccToolError.py

index 52f2900..5ce464e 100644 (file)
@@ -596,12 +596,30 @@ class Check(object):
                          and A.Value2 = B.Value2\r
                          and A.Enabled > -1\r
                          and B.Enabled > -1\r
+                         group by A.ID\r
                          """% (MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER)\r
             RecordSet = EccGlobalData.gDb.TblDsc.Exec(SqlCommand)\r
             for Record in RecordSet:\r
                 EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg = "The PCD '%s' is defined in both FDF file and DSC file" % (Record[1]), BelongsToTable = 'Dsc', BelongsToItem = Record[0])\r
                 EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg = "The PCD '%s' is defined in both FDF file and DSC file" % (Record[3]), BelongsToTable = 'Fdf', BelongsToItem = Record[2])\r
 \r
+            EdkLogger.quiet("Checking for duplicate PCDs defined in DEC files ...")\r
+            SqlCommand = """\r
+                         select A.ID, A.Value2 from Dec as A, Dec as B \r
+                         where A.Model >= %s and A.Model < %s \r
+                         and B.Model >= %s and B.Model < %s \r
+                         and A.Value2 = B.Value2\r
+                         and ((A.Model != 'COMMON' \r
+                         and B.Model = 'COMMON') or (A.Model = B.Model))\r
+                         and A.ID != B.ID\r
+                         and A.Enabled > -1\r
+                         and B.Enabled > -1\r
+                         and A.BelongsToFile = B.BelongsToFile\r
+                         group by A.ID\r
+                         """% (MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER)\r
+            RecordSet = EccGlobalData.gDb.TblDsc.Exec(SqlCommand)\r
+            for Record in RecordSet:\r
+                EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg = "The PCD '%s' is defined duplicated in DEC file" % (Record[1]), BelongsToTable = 'Dec', BelongsToItem = Record[0])\r
     #\r
     # Check whether PCD settings in the FDF file can only be related to flash.\r
     #\r
index 6974309..7107e76 100644 (file)
@@ -161,7 +161,7 @@ gEccErrorMessage = {
     ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_ORDER : "The library Instances specified by the LibraryClasses sections should be listed in order of dependencies",\r
     ERROR_META_DATA_FILE_CHECK_LIBRARY_NO_USE : "There should be no unnecessary inclusion of library classes in the INF file",\r
     ERROR_META_DATA_FILE_CHECK_BINARY_INF_IN_FDF : "An INF file is specified in the FDF file, but not in the DSC file, therefore the INF file must be for a Binary module only",\r
-    ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE : "Duplicate PCDs found in both FDF and DSC files",\r
+    ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE : "Duplicate PCDs found",\r
     ERROR_META_DATA_FILE_CHECK_PCD_FLASH : "PCD settings in the FDF file should only be related to flash",\r
     ERROR_META_DATA_FILE_CHECK_PCD_NO_USE : "There should be no PCDs declared in INF files that are not specified in in either a DSC or FDF file",\r
     ERROR_META_DATA_FILE_CHECK_DUPLICATE_GUID : "Duplicate GUID found",\r