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
# @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
#\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
+ ModuleObj = InfPomAlignment(ModuleFileFullPath, WorkspaceDir)\r
ModuleKey = (ModuleObj.GetGuid(), \r
ModuleObj.GetVersion(), \r
ModuleObj.GetName(), \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
from Library.Misc import CreateDirectory\r
from Library.Misc import RemoveDirectory\r
from Core.FileHook import __FileHookOpen__\r
+from Common.MultipleWorkspace import MultipleWorkspace as mws\r
\r
\r
class PackageFile:\r
# @param Files: the files to pack \r
#\r
def PackFiles(self, Files):\r
- for File1 in Files:\r
- self.PackFile(File1)\r
+ for File in Files:\r
+ Cwd = os.getcwd()\r
+ os.chdir(mws.getWs(mws.WORKSPACE, File))\r
+ self.PackFile(File)\r
+ os.chdir(Cwd)\r
\r
## Pack the file\r
# \r
# The workspace directory \r
#\r
gWORKSPACE = '.'\r
+gPACKAGE_PATH = None\r
\r
#\r
# INF module directory\r
# Used by Library instance parser\r
# {FilePath: FileObj}\r
#\r
-gLIBINSTANCEDICT = {}
\ No newline at end of file
+gLIBINSTANCEDICT = {}\r
from Library.ParserValidate import IsValidPath\r
from Object.POM.CommonObject import TextObject\r
from Core.FileHook import __FileHookOpen__\r
+from CommonDataClass.CommonClass import MultipleWorkspace as mws\r
\r
## Convert GUID string in xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx style to C \r
# structure style\r
\r
if WorkspaceDir[-1] == ':':\r
WorkspaceDir += os.sep\r
- return WorkspaceDir\r
+\r
+ PackagesPath = os.environ.get("PACKAGES_PATH")\r
+ mws.setWs(WorkspaceDir, PackagesPath)\r
+\r
+ return WorkspaceDir, mws.PACKAGES_PATH\r
\r
## Get relative path\r
#\r
from Library.String import GetSplitValueList\r
from Library.ExpressionValidate import IsValidBareCString\r
from Library.ExpressionValidate import IsValidFeatureFlagExp\r
+from CommonDataClass.CommonClass import MultipleWorkspace as mws\r
\r
## __HexDigit() method\r
#\r
\r
Path = os.path.normpath(Path).replace('\\', '/')\r
Root = os.path.normpath(Root).replace('\\', '/')\r
- FullPath = os.path.normpath(os.path.join(Root, Path)).replace('\\', '/')\r
+ FullPath = mws.join(Root, Path)\r
\r
if not os.path.exists(FullPath):\r
return False\r
def GetWorkspacePackage():\r
DecFileList = []\r
WorkspaceDir = GlobalData.gWORKSPACE\r
- for Root, Dirs, Files in os.walk(WorkspaceDir):\r
- if 'CVS' in Dirs:\r
- Dirs.remove('CVS')\r
- if '.svn' in Dirs:\r
- Dirs.remove('.svn')\r
- for Dir in Dirs:\r
- if Dir.startswith('.'):\r
- Dirs.remove(Dir)\r
- for FileSp in Files:\r
- if FileSp.startswith('.'):\r
- continue\r
- Ext = os.path.splitext(FileSp)[1]\r
- if Ext.lower() in ['.dec']:\r
- DecFileList.append\\r
- (os.path.normpath(os.path.join(Root, FileSp)))\r
+ PackageDir = GlobalData.gPACKAGE_PATH\r
+ for PkgRoot in [WorkspaceDir] + PackageDir:\r
+ for Root, Dirs, Files in os.walk(PkgRoot):\r
+ if 'CVS' in Dirs:\r
+ Dirs.remove('CVS')\r
+ if '.svn' in Dirs:\r
+ Dirs.remove('.svn')\r
+ for Dir in Dirs:\r
+ if Dir.startswith('.'):\r
+ Dirs.remove(Dir)\r
+ for FileSp in Files:\r
+ if FileSp.startswith('.'):\r
+ continue\r
+ Ext = os.path.splitext(FileSp)[1]\r
+ if Ext.lower() in ['.dec']:\r
+ DecFileList.append\\r
+ (os.path.normpath(os.path.join(Root, FileSp)))\r
#\r
# abstract package guid, version info from DecFile List\r
#\r
\r
from Core.DistributionPackageClass import DistributionPackageClass\r
from Core.PackageFile import PackageFile\r
+from Common.MultipleWorkspace import MultipleWorkspace as mws\r
\r
## CheckForExistingDp\r
#\r
# write().\r
#\r
FromFile = os.path.normpath(FileObject.GetURI()).encode('utf_8')\r
- FileFullPath = os.path.normpath(os.path.join(WorkspaceDir, FromFile))\r
+ FileFullPath = mws.join(WorkspaceDir, FromFile)\r
if FileFullPath in RePkgDict:\r
(DpGuid, DpVersion, DpName, Repackage) = RePkgDict[FileFullPath]\r
if not Repackage:\r
DistPkg.Header.RePackage = True\r
\r
Cwd = getcwd()\r
- chdir(WorkspaceDir) \r
+ chdir(WorkspaceDir)\r
ContentFile.PackFiles(FileList)\r
chdir(Cwd)\r
\r
ErrorStringExt % Item)\r
\r
Item = os.path.normpath(Item)\r
- Path = os.path.normpath(os.path.join(WorkspaceDir, Item))\r
+ Path = mws.join(WorkspaceDir, Item)\r
if not os.path.exists(Path):\r
Logger.Error("\nMkPkg", FILE_NOT_FOUND, ST.ERR_NOT_FOUND % Item)\r
elif Item == Path:\r
from PomAdapter.InfPomAlignmentMisc import GenBinaryData\r
from Parser import InfParser\r
from PomAdapter.DecPomAlignment import DecPomAlignment\r
-\r
+from Common.MultipleWorkspace import MultipleWorkspace as mws\r
\r
## InfPomAlignment\r
#\r
PackageDependency.SetSupArchList(ConvertArchList(PackageItemObj.GetSupArchList()))\r
PackageDependency.SetFeatureFlag(PackageItemObj.GetFeatureFlagExp())\r
\r
- PkgInfo = GetPkgInfoFromDec(os.path.normpath(os.path.join(self.WorkSpace,\r
- NormPath(PackageItemObj.GetPackageName()))))\r
+ PkgInfo = GetPkgInfoFromDec(mws.join(self.WorkSpace, NormPath(PackageItemObj.GetPackageName())))\r
if PkgInfo[1] and PkgInfo[2]:\r
PackageDependency.SetGuid(PkgInfo[1])\r
PackageDependency.SetVersion(PkgInfo[2])\r
from Logger.ToolError import OPTION_CONFLICT\r
from Logger.ToolError import FatalError\r
from Logger.ToolError import UPT_ALREADY_INSTALLED_ERROR\r
+from Common.MultipleWorkspace import MultipleWorkspace as mws\r
\r
import MkPkg\r
import InstallPkg\r
setattr(Opt, Var[0], Var[1])\r
\r
try:\r
- GlobalData.gWORKSPACE = GetWorkspace()\r
+ GlobalData.gWORKSPACE, GlobalData.gPACKAGE_PATH = GetWorkspace()\r
except FatalError, XExcept:\r
if Logger.GetLevel() <= Logger.DEBUG_9:\r
Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())\r