Fix the bug to support PI not compressed compression section.
[efi/basetools/.git] / Source / Python / GenFds / CompressSection.py
index 9b94464..7e12667 100755 (executable)
@@ -1,40 +1,74 @@
+## @file\r
+# process compress section generation\r
+#\r
+#  Copyright (c) 2007, Intel Corporation\r
+#\r
+#  All rights reserved. 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
+#\r
+\r
+##\r
+# Import Modules\r
+#\r
 from Ffs import Ffs\r
 import Section\r
 import subprocess\r
 import os\r
 from GenFdsGlobalVariable import GenFdsGlobalVariable\r
-from CommonDataClass.FdfClassObject import CompressSectionClassObject\r
+from CommonDataClass.FdfClass import CompressSectionClassObject\r
 \r
+## generate compress section\r
+#\r
+#\r
 class CompressSection (CompressSectionClassObject) :\r
+\r
+    ## compress types: PI standard and non PI standard\r
     CompTypeDict = {\r
-        'PI_STD'     : ' -c PI_STD ',\r
-        'NON_PI_STD' : ' -c NON_PI_STD '\r
+        'PI_STD'  : 'PI_STD',\r
+        'PI_NONE' : 'PI_NONE'\r
     }\r
-    \r
+\r
+    ## The constructor\r
+    #\r
+    #   @param  self        The object pointer\r
+    #\r
     def __init__(self):\r
         CompressSectionClassObject.__init__(self)\r
-        \r
 \r
+    ## GenSection() method\r
+    #\r
+    #   Generate compressed section\r
+    #\r
+    #   @param  self        The object pointer\r
+    #   @param  OutputPath  Where to place output file\r
+    #   @param  ModuleName  Which module this section belongs to\r
+    #   @param  SecNum      Index of section\r
+    #   @param  KeyStringList  Filter for inputs of section generation\r
+    #   @param  FfsInf      FfsInfStatement object that contains this section data\r
+    #   @param  Dict        dictionary contains macro and its value\r
+    #   @retval tuple       (Generated file name, section alignment)\r
+    #\r
     def GenSection(self, OutputPath, ModuleName, SecNum, KeyStringList, FfsInf = None, Dict = {}):\r
-        #\r
-        # Generate all section\r
-        #\r
+\r
         if FfsInf != None:\r
-            self.CompType = FfsInf.__ExtendMarco__(self.CompType)\r
-            self.Alignment = FfsInf.__ExtendMarco__(self.Alignment)\r
-            \r
-        SectFiles = ''\r
+            self.CompType = FfsInf.__ExtendMacro__(self.CompType)\r
+            self.Alignment = FfsInf.__ExtendMacro__(self.Alignment)\r
+\r
+        SectFiles = tuple()\r
         Index = 0\r
         for Sect in self.SectionList:\r
             Index = Index + 1\r
             SecIndex = '%s.%d' %(SecNum, Index)\r
-            ReturnSectList, align = Sect.GenSection(OutputPath, ModuleName, SecIndex, KeyStringList, FfsInf, Dict)\r
+            ReturnSectList, AlignValue = Sect.GenSection(OutputPath, ModuleName, SecIndex, KeyStringList, FfsInf, Dict)\r
             if ReturnSectList != []:\r
-                for file in ReturnSectList:\r
-                   SectFiles = SectFiles + \\r
-                               ' '       + \\r
-                               file\r
-                        \r
+                for FileData in ReturnSectList:\r
+                   SectFiles += (FileData,)\r
+\r
 \r
         OutputFile = OutputPath + \\r
                      os.sep     + \\r
@@ -43,19 +77,11 @@ class CompressSection (CompressSectionClassObject) :
                      SecNum     + \\r
                      Ffs.SectionSuffix['COMPRESS']\r
         OutputFile = os.path.normpath(OutputFile)\r
-        \r
-        GenSectionCmd = 'GenSec -o '                                  + \\r
-                         OutputFile                                   + \\r
-                         ' -s '                                       + \\r
-                         Section.Section.SectionType['COMPRESS']      + \\r
-                         self.CompTypeDict[self.CompType]             + \\r
-                         SectFiles\r
-        #\r
-        # Call GenSection\r
-        #\r
-        GenFdsGlobalVariable.CallExternalTool(GenSectionCmd, "GenSection Failed!")\r
+\r
+        GenFdsGlobalVariable.GenerateSection(OutputFile, SectFiles, Section.Section.SectionType['COMPRESS'],\r
+                                             CompressionType=self.CompTypeDict[self.CompType])\r
         OutputFileList = []\r
         OutputFileList.append(OutputFile)\r
         return OutputFileList, self.Alignment\r
 \r
-        \r
+\r