mirror of https://github.com/acidanthera/audk.git
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
|
|
|