]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/UPT/InstallPkg.py
BaseTools: Remove equality operator with None
[mirror_edk2.git] / BaseTools / Source / Python / UPT / InstallPkg.py
index 0e99d2f01f2651ccc1da9ddd37835782eee9d00f..c0d56b55aacde53df33d0ea1c6add11317aac3a2 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # Install distribution package.\r
 #\r
-# Copyright (c) 2011 - 2015, 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
@@ -91,7 +91,7 @@ def InstallNewPackage(WorkspaceDir, Path, CustomPath = False):
 # @param PathList:       The already installed standalone module Path list\r
 #\r
 def InstallNewModule(WorkspaceDir, Path, PathList = None):\r
-    if PathList == None:\r
+    if PathList is None:\r
         PathList = []\r
     Path = ConvertPath(Path)\r
     Path = os.path.normpath(Path)\r
@@ -133,16 +133,16 @@ def InstallNewFile(WorkspaceDir, File):
 #\r
 # UnZipDp\r
 #\r
-def UnZipDp(WorkspaceDir, DpPkgFileName):\r
+def UnZipDp(WorkspaceDir, DpPkgFileName, Index=1):\r
     ContentZipFile = None\r
     Logger.Quiet(ST.MSG_UZIP_PARSE_XML)\r
     DistFile = PackageFile(DpPkgFileName)\r
     \r
     DpDescFileName, ContentFileName = GetDPFile(DistFile.GetZipFile())\r
     \r
-    GlobalData.gUNPACK_DIR = os.path.normpath(os.path.join(WorkspaceDir, ".tmp"))\r
-    DistPkgFile = DistFile.UnpackFile(DpDescFileName,\r
-        os.path.normpath(os.path.join(GlobalData.gUNPACK_DIR, DpDescFileName)))\r
+    TempDir = os.path.normpath(os.path.join(WorkspaceDir, "Conf/.tmp%s" % str(Index)))\r
+    GlobalData.gUNPACK_DIR.append(TempDir)\r
+    DistPkgFile = DistFile.UnpackFile(DpDescFileName, os.path.normpath(os.path.join(TempDir, DpDescFileName)))\r
     if not DistPkgFile:\r
         Logger.Error("InstallPkg", FILE_NOT_FOUND, ST.ERR_FILE_BROKEN %DpDescFileName)\r
     \r
@@ -159,23 +159,15 @@ def UnZipDp(WorkspaceDir, DpPkgFileName):
     #\r
     # unzip contents.zip file\r
     #\r
-    ContentFile = DistFile.UnpackFile(ContentFileName,\r
-        os.path.normpath(os.path.join(GlobalData.gUNPACK_DIR, ContentFileName)))\r
+    ContentFile = DistFile.UnpackFile(ContentFileName, os.path.normpath(os.path.join(TempDir, ContentFileName)))\r
     if not ContentFile:\r
         Logger.Error("InstallPkg", FILE_NOT_FOUND,\r
             ST.ERR_FILE_BROKEN % ContentFileName)\r
 \r
-    FilePointer = __FileHookOpen__(ContentFile, "rb")\r
-    #\r
-    # Assume no archive comment.\r
-    #\r
-    FilePointer.seek(0, SEEK_SET)\r
-    FilePointer.seek(0, SEEK_END)\r
     #\r
     # Get file size\r
     #                \r
-    FileSize = FilePointer.tell()\r
-    FilePointer.close()\r
+    FileSize = os.path.getsize(ContentFile)\r
                \r
     if FileSize != 0:        \r
         ContentZipFile = PackageFile(ContentFile)\r
@@ -202,8 +194,8 @@ def GetPackageList(DistPkg, Dep, WorkspaceDir, Options, ContentZipFile, ModuleLi
         PackagePath = Path\r
         Package = DistPkg.PackageSurfaceArea[Guid, Version, Path]\r
         Logger.Info(ST.MSG_INSTALL_PACKAGE % Package.GetName())\r
-        if Dep.CheckPackageExists(Guid, Version):\r
-            Logger.Info(ST.WRN_PACKAGE_EXISTED %(Guid, Version))\r
+        if Dep.CheckPackageExists(Guid, Version):\r
+            Logger.Info(ST.WRN_PACKAGE_EXISTED %(Guid, Version))\r
         if Options.UseGuidedPkgPath:\r
             GuidedPkgPath = "%s_%s_%s" % (Package.GetName(), Guid, Version)\r
             NewPackagePath = InstallNewPackage(WorkspaceDir, GuidedPkgPath, Options.CustomPath)\r
@@ -509,29 +501,40 @@ def GenToolMisc(DistPkg, WorkspaceDir, ContentZipFile):
 # @param  Options: command Options\r
 #\r
 def Main(Options = None):\r
-    ContentZipFile, DistFile = None, None\r
-\r
     try:\r
         DataBase = GlobalData.gDB\r
         WorkspaceDir = GlobalData.gWORKSPACE\r
         if not Options.PackageFile:\r
             Logger.Error("InstallPkg", OPTION_MISSING, ExtraData=ST.ERR_SPECIFY_PACKAGE)\r
         \r
-        #\r
-        # unzip dist.pkg file\r
-        #\r
-        DistPkg, ContentZipFile, DpPkgFileName, DistFile = UnZipDp(WorkspaceDir, Options.PackageFile)\r
+        # Get all Dist Info\r
+        DistInfoList = []\r
+        DistPkgList = []\r
+        Index = 1\r
+        for ToBeInstalledDist in Options.PackageFile:\r
+            #\r
+            # unzip dist.pkg file\r
+            #\r
+            DistInfoList.append(UnZipDp(WorkspaceDir, ToBeInstalledDist, Index))\r
+            DistPkgList.append(DistInfoList[-1][0])\r
+            Index += 1\r
 \r
-        #\r
-        # check dependency\r
-        #\r
-        Dep = DependencyRules(DataBase)\r
-        CheckInstallDpx(Dep, DistPkg)\r
+            #\r
+            # Add dist\r
+            #\r
+            GlobalData.gTO_BE_INSTALLED_DIST_LIST.append(DistInfoList[-1][0])\r
 \r
-        #\r
-        # Install distribution\r
-        #\r
-        InstallDp(DistPkg, DpPkgFileName, ContentZipFile, Options, Dep, WorkspaceDir, DataBase)\r
+        # Check for dependency\r
+        Dep = DependencyRules(DataBase, DistPkgList)\r
+\r
+        for ToBeInstalledDist in DistInfoList:\r
+            CheckInstallDpx(Dep, ToBeInstalledDist[0], ToBeInstalledDist[2])\r
+\r
+            #\r
+            # Install distribution\r
+            #\r
+            InstallDp(ToBeInstalledDist[0], ToBeInstalledDist[2], ToBeInstalledDist[1],\r
+                      Options, Dep, WorkspaceDir, DataBase)\r
         ReturnCode = 0\r
         \r
     except FatalError, XExcept:\r
@@ -556,16 +559,16 @@ def Main(Options = None):
         Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(),\r
             platform) + format_exc())\r
     finally:\r
-        if ReturnCode != UPT_ALREADY_INSTALLED_ERROR:\r
-            Logger.Quiet(ST.MSG_REMOVE_TEMP_FILE_STARTED)\r
-            if DistFile:\r
-                DistFile.Close()\r
-            if ContentZipFile:\r
-                ContentZipFile.Close()\r
-            if GlobalData.gUNPACK_DIR:\r
-                rmtree(GlobalData.gUNPACK_DIR)\r
-                GlobalData.gUNPACK_DIR = None\r
-            Logger.Quiet(ST.MSG_REMOVE_TEMP_FILE_DONE)\r
+        Logger.Quiet(ST.MSG_REMOVE_TEMP_FILE_STARTED)\r
+        for ToBeInstalledDist in DistInfoList:\r
+            if ToBeInstalledDist[3]:\r
+                ToBeInstalledDist[3].Close()\r
+            if ToBeInstalledDist[1]:\r
+                ToBeInstalledDist[1].Close()\r
+        for TempDir in GlobalData.gUNPACK_DIR:\r
+            rmtree(TempDir)\r
+        GlobalData.gUNPACK_DIR = []\r
+        Logger.Quiet(ST.MSG_REMOVE_TEMP_FILE_DONE)\r
     if ReturnCode == 0:\r
         Logger.Quiet(ST.MSG_FINISH)\r
     return ReturnCode\r
@@ -609,14 +612,15 @@ def BackupDist(DpPkgFileName, Guid, Version, WorkspaceDir):
 #   @param  Dep: the DependencyRules instance that used to check dependency\r
 #   @param  DistPkg: the distribution object\r
 #\r
-def CheckInstallDpx(Dep, DistPkg):\r
+def CheckInstallDpx(Dep, DistPkg, DistPkgFileName):\r
     #\r
     # Check distribution package installed or not\r
     #\r
     if Dep.CheckDpExists(DistPkg.Header.GetGuid(),\r
         DistPkg.Header.GetVersion()):\r
-        Logger.Error("InstallPkg", UPT_ALREADY_INSTALLED_ERROR,\r
-            ST.WRN_DIST_PKG_INSTALLED)\r
+        Logger.Error("InstallPkg",\r
+                     UPT_ALREADY_INSTALLED_ERROR,\r
+                     ST.WRN_DIST_PKG_INSTALLED % os.path.basename(DistPkgFileName))\r
     #\r
     # Check distribution dependency (all module dependency should be\r
     # satisfied)\r