git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
## @file
 | 
						|
# This file is used to define common parser functions for meta-data
 | 
						|
#
 | 
						|
# Copyright (c) 2008, Intel Corporation
 | 
						|
# All rights reserved. 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 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
 | 
						|
 |