## @file\r
# This file is used to define a class object to describe a distribution package\r
#\r
-# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>\r
#\r
# This program and the accompanying materials are licensed and made available \r
# under the terms and conditions of the BSD License which accompanies this \r
from Object.POM.CommonObject import IdentificationObject\r
from Object.POM.CommonObject import CommonHeaderObject\r
from Object.POM.CommonObject import MiscFileObject\r
+from Common.MultipleWorkspace import MultipleWorkspace as mws\r
\r
## DistributionPackageHeaderClass\r
#\r
#\r
self.PackageSurfaceArea = Sdict() \r
#\r
- # {(Guid, Version, Path) : ModuleObj}\r
+ # {(Guid, Version, Name, Path) : ModuleObj}\r
#\r
self.ModuleSurfaceArea = Sdict() \r
self.Tools = MiscFileObject()\r
# @param ModuleList: A list of all modules\r
#\r
def GetDistributionPackage(self, WorkspaceDir, PackageList, ModuleList):\r
+ # Backup WorkspaceDir\r
+ Root = WorkspaceDir\r
+\r
#\r
# Get Packages\r
#\r
if PackageList:\r
for PackageFile in PackageList:\r
- PackageFileFullPath = \\r
- os.path.normpath(os.path.join(WorkspaceDir, PackageFile))\r
- DecObj = DecPomAlignment(PackageFileFullPath, WorkspaceDir, CheckMulDec = True)\r
+ PackageFileFullPath = mws.join(Root, PackageFile)\r
+ WorkspaceDir = mws.getWs(Root, PackageFile)\r
+ DecObj = DecPomAlignment(PackageFileFullPath, WorkspaceDir, CheckMulDec=True)\r
PackageObj = DecObj\r
#\r
# Parser inf file one bye one\r
# Inf class in InfPomAlignment.\r
#\r
try:\r
- ModuleObj = InfPomAlignment(Filename, WorkspaceDir, \\r
- PackageObj.GetPackagePath())\r
+ ModuleObj = InfPomAlignment(Filename, WorkspaceDir, PackageObj.GetPackagePath())\r
\r
#\r
# Add module to package\r
ModuleDict = PackageObj.GetModuleDict()\r
ModuleDict[(ModuleObj.GetGuid(), \\r
ModuleObj.GetVersion(), \\r
+ ModuleObj.GetName(), \\r
ModuleObj.GetCombinePath())] = ModuleObj\r
PackageObj.SetModuleDict(ModuleDict)\r
- except FatalError, ErrCode:\r
+ except FatalError as ErrCode:\r
if ErrCode.message == EDK1_INF_ERROR:\r
Logger.Warn("UPT",\r
ST.WRN_EDK1_INF_FOUND%Filename)\r
#\r
if ModuleList:\r
for ModuleFile in ModuleList:\r
- ModuleFileFullPath = \\r
- os.path.normpath(os.path.join(WorkspaceDir, ModuleFile))\r
+ ModuleFileFullPath = mws.join(Root, ModuleFile)\r
+ WorkspaceDir = mws.getWs(Root, ModuleFile)\r
+\r
try:\r
- ModuleObj = InfPomAlignment(ModuleFileFullPath, \r
- WorkspaceDir)\r
- self.ModuleSurfaceArea[(ModuleObj.GetGuid(), \\r
- ModuleObj.GetVersion(), \\r
- ModuleObj.GetCombinePath())] = \\r
- ModuleObj\r
- except FatalError, ErrCode:\r
+ ModuleObj = InfPomAlignment(ModuleFileFullPath, WorkspaceDir)\r
+ ModuleKey = (ModuleObj.GetGuid(), \r
+ ModuleObj.GetVersion(), \r
+ ModuleObj.GetName(), \r
+ ModuleObj.GetCombinePath())\r
+ self.ModuleSurfaceArea[ModuleKey] = ModuleObj\r
+ except FatalError as ErrCode:\r
if ErrCode.message == EDK1_INF_ERROR:\r
Logger.Error("UPT",\r
EDK1_INF_ERROR,\r
ST.WRN_EDK1_INF_FOUND%ModuleFileFullPath, \r
ExtraData=ST.ERR_NOT_SUPPORTED_SA_MODULE)\r
else:\r
- raise \r
+ raise\r
+\r
+ # Recover WorkspaceDir\r
+ WorkspaceDir = Root\r
\r
## Get all files included for a distribution package, except tool/misc of \r
# distribution level\r
#\r
def GetDistributionFileList(self):\r
MetaDataFileList = []\r
+ SkipModulesUniList = []\r
\r
for Guid, Version, Path in self.PackageSurfaceArea:\r
Package = self.PackageSurfaceArea[Guid, Version, Path]\r
SearchPath = os.path.normpath(os.path.join(os.path.dirname(FullPath), IncludePath))\r
AddPath = os.path.normpath(os.path.join(PackagePath, IncludePath))\r
self.FileList += GetNonMetaDataFiles(SearchPath, ['CVS', '.svn'], False, AddPath)\r
- \r
+ #\r
+ # Add the miscellaneous files on DEC file\r
+ #\r
+ for MiscFileObj in Package.GetMiscFileList():\r
+ for FileObj in MiscFileObj.GetFileList():\r
+ MiscFileFullPath = os.path.normpath(os.path.join(PackagePath, FileObj.GetURI()))\r
+ if MiscFileFullPath not in self.FileList:\r
+ self.FileList.append(MiscFileFullPath)\r
+ \r
Module = None\r
ModuleDict = Package.GetModuleDict()\r
- for Guid, Version, Path in ModuleDict:\r
- Module = ModuleDict[Guid, Version, Path]\r
+ for Guid, Version, Name, Path in ModuleDict:\r
+ Module = ModuleDict[Guid, Version, Name, Path]\r
ModulePath = Module.GetModulePath()\r
FullPath = Module.GetFullPath()\r
PkgRelPath = os.path.normpath(os.path.join(PackagePath, ModulePath))\r
MetaDataFileList.append(Path)\r
- self.FileList += GetNonMetaDataFiles(os.path.dirname(FullPath), ['CVS', '.svn'], False, PkgRelPath)\r
- \r
- for Guid, Version, Path in self.ModuleSurfaceArea:\r
- Module = self.ModuleSurfaceArea[Guid, Version, Path]\r
+ SkipList = ['CVS', '.svn']\r
+ NonMetaDataFileList = []\r
+ if Module.UniFileClassObject:\r
+ for UniFile in Module.UniFileClassObject.IncFileList:\r
+ OriPath = os.path.normpath(os.path.dirname(FullPath))\r
+ UniFilePath = os.path.normpath(os.path.join(PkgRelPath, UniFile.Path[len(OriPath) + 1:]))\r
+ if UniFilePath not in SkipModulesUniList:\r
+ SkipModulesUniList.append(UniFilePath)\r
+ for IncludeFile in Module.UniFileClassObject.IncludePathList:\r
+ if IncludeFile not in SkipModulesUniList:\r
+ SkipModulesUniList.append(IncludeFile)\r
+ NonMetaDataFileList = GetNonMetaDataFiles(os.path.dirname(FullPath), SkipList, False, PkgRelPath)\r
+ for NonMetaDataFile in NonMetaDataFileList:\r
+ if NonMetaDataFile not in self.FileList:\r
+ self.FileList.append(NonMetaDataFile)\r
+ for Guid, Version, Name, Path in self.ModuleSurfaceArea:\r
+ Module = self.ModuleSurfaceArea[Guid, Version, Name, Path]\r
ModulePath = Module.GetModulePath()\r
FullPath = Module.GetFullPath()\r
MetaDataFileList.append(Path)\r
- self.FileList += GetNonMetaDataFiles(os.path.dirname(FullPath), ['CVS', '.svn'], False, ModulePath)\r
- \r
+ SkipList = ['CVS', '.svn']\r
+ NonMetaDataFileList = []\r
+ if Module.UniFileClassObject:\r
+ for UniFile in Module.UniFileClassObject.IncFileList:\r
+ OriPath = os.path.normpath(os.path.dirname(FullPath))\r
+ UniFilePath = os.path.normpath(os.path.join(ModulePath, UniFile.Path[len(OriPath) + 1:]))\r
+ if UniFilePath not in SkipModulesUniList:\r
+ SkipModulesUniList.append(UniFilePath)\r
+ NonMetaDataFileList = GetNonMetaDataFiles(os.path.dirname(FullPath), SkipList, False, ModulePath)\r
+ for NonMetaDataFile in NonMetaDataFileList:\r
+ if NonMetaDataFile not in self.FileList:\r
+ self.FileList.append(NonMetaDataFile)\r
+ \r
+ for SkipModuleUni in SkipModulesUniList:\r
+ if SkipModuleUni in self.FileList:\r
+ self.FileList.remove(SkipModuleUni)\r
+\r
return self.FileList, MetaDataFileList\r
\r
\r