]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/Capsule.py
BaseTools: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / Capsule.py
index 27932ef0020c6ee9d5489c03750dc75a3f0c8a0b..f4bfc74e551c822e0eb9551a109ad5cb420357dd 100644 (file)
@@ -3,34 +3,25 @@
 #\r
 #  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
 #\r
-#  This program and the accompanying materials\r
-#  are licensed and made available under the terms and conditions of the BSD License\r
-#  which accompanies this distribution.  The full text of the license may be found at\r
-#  http://opensource.org/licenses/bsd-license.php\r
-#\r
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 \r
 ##\r
 # Import Modules\r
 #\r
 from __future__ import absolute_import\r
-from .GenFdsGlobalVariable import GenFdsGlobalVariable\r
+from .GenFdsGlobalVariable import GenFdsGlobalVariable, FindExtendTool\r
 from CommonDataClass.FdfClass import CapsuleClassObject\r
 import Common.LongFilePathOs as os\r
-import subprocess\r
 from io import BytesIO\r
-from Common.Misc import SaveFileOnChange\r
-from Common.Misc import PackRegistryFormatGuid\r
+from Common.Misc import SaveFileOnChange, PackGUID\r
 import uuid\r
 from struct import pack\r
 from Common import EdkLogger\r
-from Common.BuildToolError import *\r
-\r
+from Common.BuildToolError import GENFDS_ERROR\r
+from Common.DataType import TAB_LINE_BREAK\r
 \r
-T_CHAR_LF = '\n'\r
-WIN_CERT_REVISION      = 0x0200\r
+WIN_CERT_REVISION = 0x0200\r
 WIN_CERT_TYPE_EFI_GUID = 0x0EF1\r
 EFI_CERT_TYPE_PKCS7_GUID = uuid.UUID('{4aafd29d-68df-49ee-8aa9-347d375665a7}')\r
 EFI_CERT_TYPE_RSA2048_SHA256_GUID = uuid.UUID('{a7717414-c616-4977-9420-844712a735bf}')\r
@@ -38,7 +29,7 @@ EFI_CERT_TYPE_RSA2048_SHA256_GUID = uuid.UUID('{a7717414-c616-4977-9420-844712a7
 ## create inf file describes what goes into capsule and call GenFv to generate capsule\r
 #\r
 #\r
-class Capsule (CapsuleClassObject) :\r
+class Capsule (CapsuleClassObject):\r
     ## The constructor\r
     #\r
     #   @param  self        The object pointer\r
@@ -65,12 +56,11 @@ class Capsule (CapsuleClassObject) :
         #     UINT32            CapsuleImageSize;\r
         # } EFI_CAPSULE_HEADER;\r
         #\r
-        from .GenFds import FindExtendTool\r
         Header = BytesIO()\r
         #\r
         # Use FMP capsule GUID: 6DCBD5ED-E82D-4C44-BDA1-7194199AD92A\r
         #\r
-        Header.write(PackRegistryFormatGuid('6DCBD5ED-E82D-4C44-BDA1-7194199AD92A'))\r
+        Header.write(PackGUID('6DCBD5ED-E82D-4C44-BDA1-7194199AD92A'.split('-')))\r
         HdrSize = 0\r
         if 'CAPSULE_HEADER_SIZE' in self.TokensDict:\r
             Header.write(pack('=I', int(self.TokensDict['CAPSULE_HEADER_SIZE'], 16)))\r
@@ -185,7 +175,7 @@ class Capsule (CapsuleClassObject) :
         #\r
         # The real capsule header structure is 28 bytes\r
         #\r
-        Header.write('\x00'*(HdrSize-28))\r
+        Header.write(b'\x00'*(HdrSize-28))\r
         Header.write(FwMgrHdr.getvalue())\r
         Header.write(Content.getvalue())\r
         #\r
@@ -201,9 +191,8 @@ class Capsule (CapsuleClassObject) :
     #   @retval string      Generated Capsule file path\r
     #\r
     def GenCapsule(self):\r
-        from .GenFds import GenFds\r
-        if self.UiCapsuleName.upper() + 'cap' in GenFds.ImageBinDict:\r
-            return GenFds.ImageBinDict[self.UiCapsuleName.upper() + 'cap']\r
+        if self.UiCapsuleName.upper() + 'cap' in GenFdsGlobalVariable.ImageBinDict:\r
+            return GenFdsGlobalVariable.ImageBinDict[self.UiCapsuleName.upper() + 'cap']\r
 \r
         GenFdsGlobalVariable.InfLogger( "\nGenerate %s Capsule" %self.UiCapsuleName)\r
         if ('CAPSULE_GUID' in self.TokensDict and\r
@@ -211,18 +200,17 @@ class Capsule (CapsuleClassObject) :
             return self.GenFmpCapsule()\r
 \r
         CapInfFile = self.GenCapInf()\r
-        CapInfFile.writelines("[files]" + T_CHAR_LF)\r
+        CapInfFile.append("[files]" + TAB_LINE_BREAK)\r
         CapFileList = []\r
-        for CapsuleDataObj in self.CapsuleDataList :\r
+        for CapsuleDataObj in self.CapsuleDataList:\r
             CapsuleDataObj.CapsuleName = self.CapsuleName\r
             FileName = CapsuleDataObj.GenCapsuleSubItem()\r
             CapsuleDataObj.CapsuleName = None\r
             CapFileList.append(FileName)\r
-            CapInfFile.writelines("EFI_FILE_NAME = " + \\r
+            CapInfFile.append("EFI_FILE_NAME = " + \\r
                                    FileName      + \\r
-                                   T_CHAR_LF)\r
-        SaveFileOnChange(self.CapInfFileName, CapInfFile.getvalue(), False)\r
-        CapInfFile.close()\r
+                                   TAB_LINE_BREAK)\r
+        SaveFileOnChange(self.CapInfFileName, ''.join(CapInfFile), False)\r
         #\r
         # Call GenFv tool to generate capsule\r
         #\r
@@ -237,7 +225,7 @@ class Capsule (CapsuleClassObject) :
 \r
         GenFdsGlobalVariable.VerboseLogger( "\nGenerate %s Capsule Successfully" %self.UiCapsuleName)\r
         GenFdsGlobalVariable.SharpCounter = 0\r
-        GenFds.ImageBinDict[self.UiCapsuleName.upper() + 'cap'] = CapOutputFile\r
+        GenFdsGlobalVariable.ImageBinDict[self.UiCapsuleName.upper() + 'cap'] = CapOutputFile\r
         return CapOutputFile\r
 \r
     ## Generate inf file for capsule\r
@@ -248,15 +236,15 @@ class Capsule (CapsuleClassObject) :
     def GenCapInf(self):\r
         self.CapInfFileName = os.path.join(GenFdsGlobalVariable.FvDir,\r
                                    self.UiCapsuleName +  "_Cap" + '.inf')\r
-        CapInfFile = BytesIO() #open (self.CapInfFileName , 'w+')\r
+        CapInfFile = []\r
 \r
-        CapInfFile.writelines("[options]" + T_CHAR_LF)\r
+        CapInfFile.append("[options]" + TAB_LINE_BREAK)\r
 \r
         for Item in self.TokensDict:\r
-            CapInfFile.writelines("EFI_"                    + \\r
+            CapInfFile.append("EFI_"                    + \\r
                                   Item                      + \\r
                                   ' = '                     + \\r
                                   self.TokensDict[Item]     + \\r
-                                  T_CHAR_LF)\r
+                                  TAB_LINE_BREAK)\r
 \r
         return CapInfFile\r