#\r
# This file is the main entry for UPT \r
#\r
-# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2011 - 2017, 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
\r
## import modules\r
#\r
-from Core import FileHook\r
+import locale\r
import sys\r
+encoding = locale.getdefaultlocale()[1]\r
+if encoding:\r
+ reload(sys)\r
+ sys.setdefaultencoding(encoding)\r
+from Core import FileHook\r
import os.path\r
from sys import platform\r
import platform as pf\r
import RmPkg\r
import InventoryWs\r
import ReplacePkg\r
+import TestInstall\r
from Library.Misc import GetWorkspace\r
from Library import GlobalData\r
from Core.IpiDb import IpiDatabase\r
Logger.Error("UPT", OPTION_CONFLICT, ExtraData=ST.ERR_I_R_EXCLUSIVE)\r
elif Opt.PackFileToCreate and Opt.PackFileToRemove:\r
Logger.Error("UPT", OPTION_CONFLICT, ExtraData=ST.ERR_C_R_EXCLUSIVE)\r
+ elif Opt.TestDistFiles and (Opt.PackFileToCreate or Opt.PackFileToInstall \\r
+ or Opt.PackFileToRemove or Opt.PackFileToReplace):\r
+ Logger.Error("UPT", OPTION_CONFLICT, ExtraData=ST.ERR_C_R_EXCLUSIVE)\r
\r
if Opt.CustomPath and Opt.UseGuidedPkgPath:\r
Logger.Warn("UPT", ST.WARN_CUSTOMPATH_OVERRIDE_USEGUIDEDPATH)\r
Logger.SetLevel(Logger.VERBOSE)\r
elif Opt.opt_quiet:\r
Logger.SetLevel(Logger.QUIET + 1)\r
- elif Opt.debug_level != None:\r
+ elif Opt.debug_level is not None:\r
if Opt.debug_level < 0 or Opt.debug_level > 9:\r
Logger.Warn("UPT", ST.ERR_DEBUG_LEVEL)\r
Logger.SetLevel(Logger.INFO)\r
\r
Parser.add_option("-q", "--quiet", action="store_true", dest="opt_quiet", help=ST.HLP_RETURN_AND_DISPLAY)\r
\r
- Parser.add_option("-i", "--install", action="store", type="string", dest="Install_Distribution_Package_File",\r
+ Parser.add_option("-i", "--install", action="append", type="string", dest="Install_Distribution_Package_File",\r
help=ST.HLP_SPECIFY_PACKAGE_NAME_INSTALL)\r
\r
Parser.add_option("-c", "--create", action="store", type="string", dest="Create_Distribution_Package_File",\r
\r
Parser.add_option("--use-guided-paths", action="store_true", dest="Use_Guided_Paths", help=ST.HLP_USE_GUIDED_PATHS)\r
\r
+ Parser.add_option("-j", "--test-install", action="append", type="string",\r
+ dest="Test_Install_Distribution_Package_Files", help=ST.HLP_TEST_INSTALL)\r
+\r
Opt = Parser.parse_args()[0]\r
\r
Var2Var = [\r
("PackFileToReplace", Opt.Replace_Distribution_Package_File),\r
("PackFileToBeReplaced", Opt.Original_Distribution_Package_File),\r
("UseGuidedPkgPath", Opt.Use_Guided_Paths),\r
+ ("TestDistFiles", Opt.Test_Install_Distribution_Package_Files)\r
]\r
\r
for Var in Var2Var:\r
\r
try:\r
GlobalData.gWORKSPACE, GlobalData.gPACKAGE_PATH = GetWorkspace()\r
- except FatalError, XExcept:\r
+ except FatalError as XExcept:\r
if Logger.GetLevel() <= Logger.DEBUG_9:\r
Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())\r
return XExcept.args[0]\r
\r
- # Start *********************************************\r
# Support WORKSPACE is a long path\r
- # Only work well on windows\r
- # Linux Solution TBD\r
+ # Only works for windows system\r
if pf.system() == 'Windows':\r
- os.system('@echo off\nsubst b: /D')\r
- os.system('subst b: "%s"' % GlobalData.gWORKSPACE)\r
- GlobalData.gWORKSPACE = 'B:\\'\r
- # End ***********************************************\r
+ Vol = 'B:'\r
+ for Index in range(90, 65, -1):\r
+ Vol = chr(Index) + ':'\r
+ if not os.path.isdir(Vol):\r
+ os.system('subst %s "%s"' % (Vol, GlobalData.gWORKSPACE))\r
+ break\r
+ GlobalData.gWORKSPACE = '%s\\' % Vol\r
\r
WorkspaceDir = GlobalData.gWORKSPACE\r
\r
RunModule = MkPkg.Main\r
\r
elif Opt.PackFileToInstall:\r
- if not Opt.PackFileToInstall.endswith('.dist'):\r
- Logger.Error("InstallPkg", FILE_TYPE_MISMATCH, ExtraData=ST.ERR_DIST_EXT_ERROR % Opt.PackFileToInstall)\r
+ AbsPath = []\r
+ for Item in Opt.PackFileToInstall:\r
+ if not Item.endswith('.dist'):\r
+ Logger.Error("InstallPkg", FILE_TYPE_MISMATCH, ExtraData=ST.ERR_DIST_EXT_ERROR % Item)\r
\r
- AbsPath = GetFullPathDist(Opt.PackFileToInstall, WorkspaceDir)\r
- if not AbsPath:\r
- Logger.Error("InstallPkg", FILE_NOT_FOUND, ST.ERR_INSTALL_DIST_NOT_FOUND % Opt.PackFileToInstall)\r
+ AbsPath.append(GetFullPathDist(Item, WorkspaceDir))\r
+ if not AbsPath:\r
+ Logger.Error("InstallPkg", FILE_NOT_FOUND, ST.ERR_INSTALL_DIST_NOT_FOUND % Item)\r
\r
Opt.PackFileToInstall = AbsPath\r
setattr(Opt, 'PackageFile', Opt.PackFileToInstall)\r
Opt.PackFileToReplace = AbsPath\r
RunModule = ReplacePkg.Main\r
\r
+ elif Opt.Test_Install_Distribution_Package_Files:\r
+ for Dist in Opt.Test_Install_Distribution_Package_Files:\r
+ if not Dist.endswith('.dist'):\r
+ Logger.Error("TestInstall", FILE_TYPE_MISMATCH, ExtraData=ST.ERR_DIST_EXT_ERROR % Dist)\r
+\r
+ setattr(Opt, 'DistFiles', Opt.Test_Install_Distribution_Package_Files)\r
+ RunModule = TestInstall.Main\r
+\r
else:\r
Parser.print_usage()\r
return OPTION_MISSING\r
\r
ReturnCode = RunModule(Opt)\r
- except FatalError, XExcept:\r
+ except FatalError as XExcept:\r
ReturnCode = XExcept.args[0]\r
if Logger.GetLevel() <= Logger.DEBUG_9:\r
Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + \\r
else:\r
GlobalData.gDB.Commit()\r
Mgr.commit()\r
- except StandardError:\r
+ except Exception:\r
Logger.Quiet(ST.MSG_RECOVER_FAIL)\r
GlobalData.gDB.CloseDb()\r
+\r
if pf.system() == 'Windows':\r
- os.system('subst b: /D')\r
+ os.system('subst %s /D' % GlobalData.gWORKSPACE.replace('\\',''))\r
\r
return ReturnCode\r
\r