Revision: 18581
          http://sourceforge.net/p/edk2/code/18581
Author:   lgao4
Date:     2015-10-08 09:28:51 +0000 (Thu, 08 Oct 2015)
Log Message:
-----------
BaseTools: Update ECC tool to support multiple workspaces

Update ECC to refer MultipleWorkspace class to convert
the file path from WORKSPACE and PACKAGES_PATH.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Li YangX <[email protected]>
Reviewed-by: Liming Gao <[email protected]>

Modified Paths:
--------------
    trunk/edk2/BaseTools/Source/Python/Ecc/Check.py
    trunk/edk2/BaseTools/Source/Python/Ecc/Ecc.py
    trunk/edk2/BaseTools/Source/Python/Ecc/MetaDataParser.py

Modified: trunk/edk2/BaseTools/Source/Python/Ecc/Check.py
===================================================================
--- trunk/edk2/BaseTools/Source/Python/Ecc/Check.py     2015-10-08 09:28:15 UTC 
(rev 18580)
+++ trunk/edk2/BaseTools/Source/Python/Ecc/Check.py     2015-10-08 09:28:51 UTC 
(rev 18581)
@@ -19,6 +19,7 @@
 import EccGlobalData
 import c
 from Common.LongFilePathSupport import OpenLongFilePath as open
+from Common.MultipleWorkspace import MultipleWorkspace as mws
 
 ## Check
 #
@@ -380,9 +381,7 @@
             for Key in RecordDict:
                 if len(RecordDict[Key]) > 1:
                     for Item in RecordDict[Key]:
-                        Path = Item[1].replace(EccGlobalData.gWorkspace, '')
-                        if Path.startswith('\\') or Path.startswith('/'):
-                            Path = Path[1:]
+                        Path = mws.relpath(Item[1], EccGlobalData.gWorkspace)
                         if not 
EccGlobalData.gException.IsException(ERROR_INCLUDE_FILE_CHECK_NAME, Path):
                             
EccGlobalData.gDb.TblReport.Insert(ERROR_INCLUDE_FILE_CHECK_NAME, OtherMsg="The 
file name for [%s] is duplicate" % Path, BelongsToTable='File', 
BelongsToItem=Item[0])
 
@@ -653,7 +652,7 @@
                 if LibraryClass[1].upper() == 'NULL' or 
LibraryClass[1].startswith('!ifdef') or LibraryClass[1].startswith('!ifndef') 
or LibraryClass[1].endswith('!endif'):
                     continue
                 else:
-                    LibraryIns = 
os.path.normpath(os.path.join(EccGlobalData.gWorkspace, LibraryClass[2]))
+                    LibraryIns = 
os.path.normpath(mws.join(EccGlobalData.gWorkspace, LibraryClass[2]))
                     SqlCommand = """select Value3 from Inf where BelongsToFile 
=
                                     (select ID from File where lower(FullPath) 
= lower('%s'))
                                     and Value2 = '%s'""" % (LibraryIns, 
'LIBRARY_CLASS')
@@ -729,7 +728,7 @@
             for Record in RecordSet:
                 FdfID = Record[0]
                 FilePath = Record[1]
-                FilePath = 
os.path.normpath(os.path.join(EccGlobalData.gWorkspace, FilePath))
+                FilePath = os.path.normpath(mws.join(EccGlobalData.gWorkspace, 
FilePath))
                 SqlCommand = """select ID from Inf where Model = %s and 
BelongsToFile = (select ID from File where FullPath like '%s')
                                 """ % (MODEL_EFI_SOURCE_FILE, FilePath)
                 NewRecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)
@@ -913,9 +912,7 @@
         RecordSet = Table.Exec(SqlCommand)
         Path = ""
         for Record in RecordSet:
-            Path = Record[0].replace(EccGlobalData.gWorkspace, '')
-            if Path.startswith('\\') or Path.startswith('/'):
-                Path = Path[1:]
+            Path = mws.relpath(Record[0], EccGlobalData.gWorkspace)
         return Path
 
     # Check whether two module INFs under one workspace has the same FILE_GUID 
value

Modified: trunk/edk2/BaseTools/Source/Python/Ecc/Ecc.py
===================================================================
--- trunk/edk2/BaseTools/Source/Python/Ecc/Ecc.py       2015-10-08 09:28:15 UTC 
(rev 18580)
+++ trunk/edk2/BaseTools/Source/Python/Ecc/Ecc.py       2015-10-08 09:28:51 UTC 
(rev 18581)
@@ -38,6 +38,7 @@
 import re, string
 from Exception import *
 from Common.LongFilePathSupport import OpenLongFilePath as open
+from Common.MultipleWorkspace import MultipleWorkspace as mws
 
 ## Ecc
 #
@@ -70,8 +71,13 @@
         #
         WorkspaceDir = 
os.path.normcase(os.path.normpath(os.environ["WORKSPACE"]))
         os.environ["WORKSPACE"] = WorkspaceDir
+        
+        # set multiple workspace
+        PackagesPath = os.getenv("PACKAGES_PATH")
+        mws.setWs(WorkspaceDir, PackagesPath)
+        
         if "ECP_SOURCE" not in os.environ:
-            os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, 
GlobalData.gEdkCompatibilityPkg)
+            os.environ["ECP_SOURCE"] = mws.join(WorkspaceDir, 
GlobalData.gEdkCompatibilityPkg)
         if "EFI_SOURCE" not in os.environ:
             os.environ["EFI_SOURCE"] = os.environ["ECP_SOURCE"]
         if "EDK_SOURCE" not in os.environ:

Modified: trunk/edk2/BaseTools/Source/Python/Ecc/MetaDataParser.py
===================================================================
--- trunk/edk2/BaseTools/Source/Python/Ecc/MetaDataParser.py    2015-10-08 
09:28:15 UTC (rev 18580)
+++ trunk/edk2/BaseTools/Source/Python/Ecc/MetaDataParser.py    2015-10-08 
09:28:51 UTC (rev 18581)
@@ -14,6 +14,7 @@
 import Common.LongFilePathOs as os
 from CommonDataClass.DataClass import *
 from EccToolError import *
+from Common.MultipleWorkspace import MultipleWorkspace as mws
 import EccGlobalData
 import re
 ## Get the inlcude path list for a source file
@@ -33,8 +34,8 @@
                 % (MODEL_META_DATA_PACKAGE, MODEL_EFI_SOURCE_FILE, '\\', 
Filepath)
     RecordSet = Db.TblFile.Exec(SqlCommand)
     for Record in RecordSet:
-        DecFullPath = os.path.normpath(os.path.join(WorkSpace, Record[0]))
-        InfFullPath = os.path.normpath(os.path.join(WorkSpace, Record[1]))
+        DecFullPath = os.path.normpath(mws.join(WorkSpace, Record[0]))
+        InfFullPath = os.path.normpath(mws.join(WorkSpace, Record[1]))
         (DecPath, DecName) = os.path.split(DecFullPath)
         (InfPath, InfName) = os.path.split(InfFullPath)
         SqlCommand = """select Value1 from Dec where BelongsToFile =


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to