git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10850 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # This file is used to define common parser functions for meta-data
 | |
| #
 | |
| # Copyright (c) 2008, Intel Corporation. All rights reserved.<BR>
 | |
| # This program and the accompanying materials
 | |
| # are licensed and made available under the terms and conditions of the BSD License
 | |
| # which accompanies this distribution.  The full text of the license may be found at
 | |
| # http://opensource.org/licenses/bsd-license.php
 | |
| #
 | |
| # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| #
 | |
| 
 | |
| import os
 | |
| from CommonDataClass.DataClass import *
 | |
| 
 | |
| 
 | |
| ## Get the inlcude path list for a source file
 | |
| #
 | |
| # 1. Find the source file belongs to which inf file
 | |
| # 2. Find the inf's package
 | |
| # 3. Return the include path list of the package
 | |
| #
 | |
| def GetIncludeListOfFile(WorkSpace, Filepath, Db):
 | |
|     IncludeList = []
 | |
|     Filepath = os.path.normpath(Filepath)
 | |
|     SqlCommand = """
 | |
|                 select Value1, FullPath from Inf, File where Inf.Model = %s and Inf.BelongsToFile in(
 | |
|                     select distinct B.BelongsToFile from File as A left join Inf as B
 | |
|                         where A.ID = B.BelongsToFile and B.Model = %s and (A.Path || '%s' || B.Value1) = '%s')
 | |
|                         and Inf.BelongsToFile = File.ID""" \
 | |
|                 % (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]))
 | |
|         (DecPath, DecName) = os.path.split(DecFullPath)
 | |
|         (InfPath, InfName) = os.path.split(InfFullPath)
 | |
|         SqlCommand = """select Value1 from Dec where BelongsToFile =
 | |
|                            (select ID from File where FullPath = '%s') and Model = %s""" \
 | |
|                     % (DecFullPath, MODEL_EFI_INCLUDE)
 | |
|         NewRecordSet = Db.TblDec.Exec(SqlCommand)
 | |
|         if InfPath not in IncludeList:
 | |
|             IncludeList.append(InfPath)
 | |
|         for NewRecord in NewRecordSet:
 | |
|             IncludePath = os.path.normpath(os.path.join(DecPath, NewRecord[0]))
 | |
|             if IncludePath not in IncludeList:
 | |
|                 IncludeList.append(IncludePath)
 | |
| 
 | |
|     return IncludeList
 | |
| 
 | |
| ## Get the file list
 | |
| #
 | |
| # Search table file and find all specific type files
 | |
| #
 | |
| def GetFileList(FileModel, Db):
 | |
|     FileList = []
 | |
|     SqlCommand = """select FullPath from File where Model = %s""" % str(FileModel)
 | |
|     RecordSet = Db.TblFile.Exec(SqlCommand)
 | |
|     for Record in RecordSet:
 | |
|         FileList.append(Record[0])
 | |
| 
 | |
|     return FileList
 | |
| 
 | |
| ## Get the table list
 | |
| #
 | |
| # Search table file and find all small tables
 | |
| #
 | |
| def GetTableList(FileModelList, Table, Db):
 | |
|     TableList = []
 | |
|     SqlCommand = """select ID from File where Model in %s""" % str(FileModelList)
 | |
|     RecordSet = Db.TblFile.Exec(SqlCommand)
 | |
|     for Record in RecordSet:
 | |
|         TableName = Table + str(Record[0])
 | |
|         TableList.append(TableName)
 | |
| 
 | |
|     return TableList
 | |
| 
 |