]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/StrGather.py
BaseTools: Use absolute import in AutoGen
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / StrGather.py
index 73af1214eb0acf7e6a5938d226a3c07a3de94dd3..361d499076850042adfd03f6587457a1876700b4 100644 (file)
@@ -1,5 +1,5 @@
 ## @file\r
-# This file is used to parse a strings file and create or add to a string database \r
+# This file is used to parse a strings file and create or add to a string database\r
 # file.\r
 #\r
 # Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
 ##\r
 # Import Modules\r
 #\r
+from __future__ import absolute_import\r
 import re\r
 import Common.EdkLogger as EdkLogger\r
 from Common.BuildToolError import *\r
-from UniClassObject import *\r
-from StringIO import StringIO\r
+from .UniClassObject import *\r
+from io import BytesIO\r
 from struct import pack, unpack\r
 from Common.LongFilePathSupport import OpenLongFilePath as open\r
 \r
@@ -94,7 +95,7 @@ PRINTABLE_LANGUAGE_NAME_STRING_NAME = '$PRINTABLE_LANGUAGE_NAME'
 # @retval:       The formatted hex string\r
 #\r
 def DecToHexStr(Dec, Digit = 8):\r
-    return '0x{0:0{1}X}'.format(Dec,Digit)\r
+    return '0x{0:0{1}X}'.format(Dec, Digit)\r
 \r
 ## Convert a dec number to a hex list\r
 #\r
@@ -109,7 +110,7 @@ def DecToHexStr(Dec, Digit = 8):
 # @retval:       A list for formatted hex string\r
 #\r
 def DecToHexList(Dec, Digit = 8):\r
-    Hex = '{0:0{1}X}'.format(Dec,Digit)\r
+    Hex = '{0:0{1}X}'.format(Dec, Digit)\r
     return ["0x" + Hex[Bit:Bit + 2] for Bit in range(Digit - 2, -1, -2)]\r
 \r
 ## Convert a acsii string to a hex list\r
@@ -144,7 +145,7 @@ def CreateHFileContent(BaseName, UniObjectClass, IsCompatibleMode, UniGenCFlag):
     Str = WriteLine(Str, Line)\r
     UnusedStr = ''\r
 \r
-    #Group the referred/Unused STRING token together. \r
+    #Group the referred/Unused STRING token together.\r
     for Index in range(2, len(UniObjectClass.OrderedStringList[UniObjectClass.LanguageDef[0][0]])):\r
         StringItem = UniObjectClass.OrderedStringList[UniObjectClass.LanguageDef[0][0]][Index]\r
         Name = StringItem.StringName\r
@@ -258,29 +259,29 @@ def GetFilteredLanguage(UniLanguageList, LanguageFilterList):
         # first check for exact match\r
         if Language in UniLanguageList:\r
             if Language not in UniLanguageListFiltered:\r
-                UniLanguageListFiltered += [Language]\r
+                UniLanguageListFiltered.append(Language)\r
         # find the first one with the same/equivalent primary tag\r
         else:\r
             if Language.find('-') != -1:\r
                 PrimaryTag = Language[0:Language.find('-')].lower()\r
             else:\r
                 PrimaryTag = Language\r
-            \r
+\r
             if len(PrimaryTag) == 3:\r
                 PrimaryTag = LangConvTable.get(PrimaryTag)\r
-            \r
+\r
             for UniLanguage in UniLanguageList:\r
                 if UniLanguage.find('-') != -1:\r
                     UniLanguagePrimaryTag = UniLanguage[0:UniLanguage.find('-')].lower()\r
                 else:\r
                     UniLanguagePrimaryTag = UniLanguage\r
-                \r
+\r
                 if len(UniLanguagePrimaryTag) == 3:\r
                     UniLanguagePrimaryTag = LangConvTable.get(UniLanguagePrimaryTag)\r
 \r
                 if PrimaryTag == UniLanguagePrimaryTag:\r
                     if UniLanguage not in UniLanguageListFiltered:\r
-                        UniLanguageListFiltered += [UniLanguage]\r
+                        UniLanguageListFiltered.append(UniLanguage)\r
                     break\r
             else:\r
                 # Here is rule 3 for "get best language"\r
@@ -292,10 +293,10 @@ def GetFilteredLanguage(UniLanguageList, LanguageFilterList):
                     for UniLanguage in UniLanguageList:\r
                         if UniLanguage.startswith('en-') or UniLanguage.startswith('eng-'):\r
                             if UniLanguage not in UniLanguageListFiltered:\r
-                                UniLanguageListFiltered += [UniLanguage]\r
+                                UniLanguageListFiltered.append(UniLanguage)\r
                             break\r
                     else:\r
-                        UniLanguageListFiltered += [DefaultTag]\r
+                        UniLanguageListFiltered.append(DefaultTag)\r
     return  UniLanguageListFiltered\r
 \r
 \r
@@ -307,7 +308,7 @@ def GetFilteredLanguage(UniLanguageList, LanguageFilterList):
 # @param UniObjectClass   A UniObjectClass instance\r
 # @param IsCompatibleMode Compatible mode\r
 # @param UniBinBuffer     UniBinBuffer to contain UniBinary data.\r
-# @param FilterInfo       Platform language filter information \r
+# @param FilterInfo       Platform language filter information\r
 #\r
 # @retval Str:           A string of .c file content\r
 #\r
@@ -325,14 +326,14 @@ def CreateCFileContent(BaseName, UniObjectClass, IsCompatibleMode, UniBinBuffer,
     else:\r
         # EDK module is using ISO639-2 format filter, convert to the RFC4646 format\r
         LanguageFilterList = [LangConvTable.get(F.lower()) for F in FilterInfo[1]]\r
-    \r
+\r
     UniLanguageList = []\r
     for IndexI in range(len(UniObjectClass.LanguageDef)):\r
         UniLanguageList += [UniObjectClass.LanguageDef[IndexI][0]]\r
 \r
     UniLanguageListFiltered = GetFilteredLanguage(UniLanguageList, LanguageFilterList)\r
\r
-        \r
+\r
+\r
     #\r
     # Create lines for each language's strings\r
     #\r
@@ -340,8 +341,8 @@ def CreateCFileContent(BaseName, UniObjectClass, IsCompatibleMode, UniBinBuffer,
         Language = UniObjectClass.LanguageDef[IndexI][0]\r
         if Language not in UniLanguageListFiltered:\r
             continue\r
-        \r
-        StringBuffer = StringIO()\r
+\r
+        StringBuffer = BytesIO()\r
         StrStringValue = ''\r
         ArrayLength = 0\r
         NumberOfUseOtherLangDef = 0\r
@@ -403,7 +404,7 @@ def CreateCFileContent(BaseName, UniObjectClass, IsCompatibleMode, UniBinBuffer,
         # Add an EFI_HII_SIBT_END at last\r
         #\r
         Str = WriteLine(Str, '  ' + EFI_HII_SIBT_END + ",")\r
-        \r
+\r
         #\r
         # Create binary UNI string\r
         #\r
@@ -458,7 +459,7 @@ def CreateCFileEnd():
 # @param BaseName:        The basename of strings\r
 # @param UniObjectClass   A UniObjectClass instance\r
 # @param IsCompatibleMode Compatible Mode\r
-# @param FilterInfo       Platform language filter information \r
+# @param FilterInfo       Platform language filter information\r
 #\r
 # @retval CFile:          A string of complete .c file\r
 #\r
@@ -544,7 +545,7 @@ def SearchString(UniObjectClass, FileList, IsCompatibleMode):
 # This function is used for UEFI2.1 spec\r
 #\r
 #\r
-def GetStringFiles(UniFilList, SourceFileList, IncludeList, IncludePathList, SkipList, BaseName, IsCompatibleMode = False, ShellMode = False, UniGenCFlag = True, UniGenBinBuffer = None, FilterInfo = [True, []]):  \r
+def GetStringFiles(UniFilList, SourceFileList, IncludeList, IncludePathList, SkipList, BaseName, IsCompatibleMode = False, ShellMode = False, UniGenCFlag = True, UniGenBinBuffer = None, FilterInfo = [True, []]):\r
     if len(UniFilList) > 0:\r
         if ShellMode:\r
             #\r