]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/Fv.py
BaseTools: Handle the bytes and str difference
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / Fv.py
index b141d44dc48f7d898b0e20811d91d6fd23b47377..2ae991128ade5f55d87aadb3c1461fb5ff0fc512 100644 (file)
@@ -117,7 +117,7 @@ class FV (object):
             FfsFileList.append(FileName)\r
             # Add Apriori file name to Inf file\r
             if not Flag:\r
-                self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
+                self.FvInfFile.append("EFI_FILE_NAME = " + \\r
                                             FileName          + \\r
                                             TAB_LINE_BREAK)\r
 \r
@@ -131,12 +131,12 @@ class FV (object):
             FileName = FfsFile.GenFfs(MacroDict, FvParentAddr=BaseAddress, IsMakefile=Flag, FvName=self.UiFvName)\r
             FfsFileList.append(FileName)\r
             if not Flag:\r
-                self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
+                self.FvInfFile.append("EFI_FILE_NAME = " + \\r
                                             FileName          + \\r
                                             TAB_LINE_BREAK)\r
         if not Flag:\r
-            SaveFileOnChange(self.InfFileName, self.FvInfFile.getvalue(), False)\r
-            self.FvInfFile.close()\r
+            FvInfFile = ''.join(self.FvInfFile)\r
+            SaveFileOnChange(self.InfFileName, FvInfFile, False)\r
         #\r
         # Call GenFv tool\r
         #\r
@@ -208,14 +208,14 @@ class FV (object):
                 # PI FvHeader is 0x48 byte\r
                 FvHeaderBuffer = FvFileObj.read(0x48)\r
                 Signature = FvHeaderBuffer[0x28:0x32]\r
-                if Signature and Signature.startswith('_FVH'):\r
+                if Signature and Signature.startswith(b'_FVH'):\r
                     GenFdsGlobalVariable.VerboseLogger("\nGenerate %s FV Successfully" % self.UiFvName)\r
                     GenFdsGlobalVariable.SharpCounter = 0\r
 \r
                     FvFileObj.seek(0)\r
                     Buffer.write(FvFileObj.read())\r
                     # FV alignment position.\r
-                    FvAlignmentValue = 1 << (ord(FvHeaderBuffer[0x2E]) & 0x1F)\r
+                    FvAlignmentValue = 1 << (ord(FvHeaderBuffer[0x2E:0x2F]) & 0x1F)\r
                     if FvAlignmentValue >= 0x400:\r
                         if FvAlignmentValue >= 0x100000:\r
                             if FvAlignmentValue >= 0x1000000:\r
@@ -276,54 +276,54 @@ class FV (object):
         #\r
         self.InfFileName = os.path.join(GenFdsGlobalVariable.FvDir,\r
                                    self.UiFvName + '.inf')\r
-        self.FvInfFile = BytesIO()\r
+        self.FvInfFile = []\r
 \r
         #\r
         # Add [Options]\r
         #\r
-        self.FvInfFile.writelines("[options]" + TAB_LINE_BREAK)\r
+        self.FvInfFile.append("[options]" + TAB_LINE_BREAK)\r
         if BaseAddress is not None:\r
-            self.FvInfFile.writelines("EFI_BASE_ADDRESS = " + \\r
+            self.FvInfFile.append("EFI_BASE_ADDRESS = " + \\r
                                        BaseAddress          + \\r
                                        TAB_LINE_BREAK)\r
 \r
         if BlockSize is not None:\r
-            self.FvInfFile.writelines("EFI_BLOCK_SIZE = " + \\r
+            self.FvInfFile.append("EFI_BLOCK_SIZE = " + \\r
                                       '0x%X' %BlockSize    + \\r
                                       TAB_LINE_BREAK)\r
             if BlockNum is not None:\r
-                self.FvInfFile.writelines("EFI_NUM_BLOCKS   = "  + \\r
+                self.FvInfFile.append("EFI_NUM_BLOCKS   = "  + \\r
                                       ' 0x%X' %BlockNum    + \\r
                                       TAB_LINE_BREAK)\r
         else:\r
             if self.BlockSizeList == []:\r
                 if not self._GetBlockSize():\r
                     #set default block size is 1\r
-                    self.FvInfFile.writelines("EFI_BLOCK_SIZE  = 0x1" + TAB_LINE_BREAK)\r
+                    self.FvInfFile.append("EFI_BLOCK_SIZE  = 0x1" + TAB_LINE_BREAK)\r
 \r
             for BlockSize in self.BlockSizeList:\r
                 if BlockSize[0] is not None:\r
-                    self.FvInfFile.writelines("EFI_BLOCK_SIZE  = "  + \\r
+                    self.FvInfFile.append("EFI_BLOCK_SIZE  = "  + \\r
                                           '0x%X' %BlockSize[0]    + \\r
                                           TAB_LINE_BREAK)\r
 \r
                 if BlockSize[1] is not None:\r
-                    self.FvInfFile.writelines("EFI_NUM_BLOCKS   = "  + \\r
+                    self.FvInfFile.append("EFI_NUM_BLOCKS   = "  + \\r
                                           ' 0x%X' %BlockSize[1]    + \\r
                                           TAB_LINE_BREAK)\r
 \r
         if self.BsBaseAddress is not None:\r
-            self.FvInfFile.writelines('EFI_BOOT_DRIVER_BASE_ADDRESS = ' + \\r
+            self.FvInfFile.append('EFI_BOOT_DRIVER_BASE_ADDRESS = ' + \\r
                                        '0x%X' %self.BsBaseAddress)\r
         if self.RtBaseAddress is not None:\r
-            self.FvInfFile.writelines('EFI_RUNTIME_DRIVER_BASE_ADDRESS = ' + \\r
+            self.FvInfFile.append('EFI_RUNTIME_DRIVER_BASE_ADDRESS = ' + \\r
                                       '0x%X' %self.RtBaseAddress)\r
         #\r
         # Add attribute\r
         #\r
-        self.FvInfFile.writelines("[attributes]" + TAB_LINE_BREAK)\r
+        self.FvInfFile.append("[attributes]" + TAB_LINE_BREAK)\r
 \r
-        self.FvInfFile.writelines("EFI_ERASE_POLARITY   = "       + \\r
+        self.FvInfFile.append("EFI_ERASE_POLARITY   = "       + \\r
                                           ' %s' %ErasePloarity    + \\r
                                           TAB_LINE_BREAK)\r
         if not (self.FvAttributeDict is None):\r
@@ -332,13 +332,13 @@ class FV (object):
                     if self.FvAttributeDict[FvAttribute].upper() in ('TRUE', '1'):\r
                         self.UsedSizeEnable = True\r
                     continue\r
-                self.FvInfFile.writelines("EFI_"            + \\r
+                self.FvInfFile.append("EFI_"            + \\r
                                           FvAttribute       + \\r
                                           ' = '             + \\r
                                           self.FvAttributeDict[FvAttribute] + \\r
                                           TAB_LINE_BREAK )\r
         if self.FvAlignment is not None:\r
-            self.FvInfFile.writelines("EFI_FVB2_ALIGNMENT_"     + \\r
+            self.FvInfFile.append("EFI_FVB2_ALIGNMENT_"     + \\r
                                        self.FvAlignment.strip() + \\r
                                        " = TRUE"                + \\r
                                        TAB_LINE_BREAK)\r
@@ -351,7 +351,7 @@ class FV (object):
                 GenFdsGlobalVariable.ErrorLogger("FV Extension Header Entries declared for %s with no FvNameGuid declaration." % (self.UiFvName))\r
         else:\r
             TotalSize = 16 + 4\r
-            Buffer = ''\r
+            Buffer = bytearray()\r
             if self.UsedSizeEnable:\r
                 TotalSize += (4 + 4)\r
                 ## define EFI_FV_EXT_TYPE_USED_SIZE_TYPE 0x03\r
@@ -378,7 +378,7 @@ class FV (object):
                 #\r
                 Buffer += (pack('HH', (FvUiLen + 16 + 4), 0x0002)\r
                            + PackGUID(Guid)\r
-                           + self.UiFvName)\r
+                           + self.UiFvName.encode('utf-8'))\r
 \r
             for Index in range (0, len(self.FvExtEntryType)):\r
                 if self.FvExtEntryType[Index] == 'FILE':\r
@@ -425,11 +425,11 @@ class FV (object):
                 if Changed:\r
                   if os.path.exists (self.InfFileName):\r
                     os.remove (self.InfFileName)\r
-                self.FvInfFile.writelines("EFI_FV_EXT_HEADER_FILE_NAME = "      + \\r
+                self.FvInfFile.append("EFI_FV_EXT_HEADER_FILE_NAME = "      + \\r
                                            FvExtHeaderFileName                  + \\r
                                            TAB_LINE_BREAK)\r
 \r
         #\r
         # Add [Files]\r
         #\r
-        self.FvInfFile.writelines("[files]" + TAB_LINE_BREAK)\r
+        self.FvInfFile.append("[files]" + TAB_LINE_BREAK)\r