]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Incorrect error message for library instance not found
authorFeng, Bob C <bob.c.feng@intel.com>
Wed, 21 Aug 2019 04:03:05 +0000 (12:03 +0800)
committerFeng, Bob C <bob.c.feng@intel.com>
Fri, 23 Aug 2019 03:26:24 +0000 (11:26 +0800)
BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=2099
This is a regression issue introduced by commit e8449e.

This patch is to fix this issue.

Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
BaseTools/Source/Python/AutoGen/DataPipe.py
BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
BaseTools/Source/Python/AutoGen/WorkspaceAutoGen.py
BaseTools/Source/Python/Workspace/WorkspaceCommon.py

index 2ca4f9ff4a22c06bb4b40e39db8f61fc61da855e..8b8cfd1c51eb0ee407e0145c1fbc133d2473f427 100755 (executable)
@@ -89,7 +89,7 @@ class MemoryDataPipe(DataPipe):
         libModules = {}\r
         for m in PlatformInfo.Platform.Modules:\r
             module_obj = BuildDB.BuildObject[m,PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain]\r
-            Libs = GetModuleLibInstances(module_obj, PlatformInfo.Platform, BuildDB.BuildObject, PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain)\r
+            Libs = GetModuleLibInstances(module_obj, PlatformInfo.Platform, BuildDB.BuildObject, PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain,PlatformInfo.MetaFile,EdkLogger)\r
             for lib in Libs:\r
                 try:\r
                     libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)].append((m.File,m.Root,module_obj.Arch,m.Path))\r
index dd629ba2fac237575d3bd2322726beea5d2628c7..565424a95ead392af8d3130d1e7f7aabcd33223d 100644 (file)
@@ -1089,7 +1089,7 @@ class PlatformAutoGen(AutoGen):
         for m in self.Platform.Modules:\r
             module_obj = self.BuildDatabase[m,self.Arch,self.BuildTarget,self.ToolChain]\r
             if not bool(module_obj.LibraryClass):\r
-                Libs = GetModuleLibInstances(module_obj, self.Platform, self.BuildDatabase, self.Arch,self.BuildTarget,self.ToolChain)\r
+                Libs = GetModuleLibInstances(module_obj, self.Platform, self.BuildDatabase, self.Arch,self.BuildTarget,self.ToolChain,self.MetaFile,EdkLogger)\r
             else:\r
                 Libs = []\r
             ModuleLibs.update( set([(l.MetaFile.File,l.MetaFile.Root,l.MetaFile.Path,l.MetaFile.BaseName,l.MetaFile.OriginalPath,l.Arch,True) for l in Libs]))\r
index ea0d8f8bfbbed9d82588105b9b5b919893a09bcd..24942674721fe1396134b3555b8e9597d09e55c7 100644 (file)
@@ -248,7 +248,9 @@ class WorkspaceAutoGen(AutoGen):
                                      self.BuildDatabase,\r
                                      Arch,\r
                                      self.BuildTarget,\r
-                                     self.ToolChain\r
+                                     self.ToolChain,\r
+                                     self.Platform.MetaFile,\r
+                                     EdkLogger\r
                                      ))\r
             for BuildData in list(self.BuildDatabase._CACHE_.values()):\r
                 if BuildData.Arch != Arch:\r
index 76583f46e500df49340219a79314f0684a062b32..0b11ec2d59722de07b2aac81464b550aa06bfc18 100644 (file)
@@ -15,6 +15,7 @@ from Workspace.BuildClassObject import StructurePcd
 from Common.BuildToolError import RESOURCE_NOT_AVAILABLE\r
 from Common.BuildToolError import OPTION_MISSING\r
 from Common.BuildToolError import BUILD_ERROR\r
+import Common.EdkLogger as EdkLogger\r
 \r
 class OrderedListDict(OrderedDict):\r
     def __init__(self, *args, **kwargs):\r
@@ -85,7 +86,7 @@ def GetDeclaredPcd(Platform, BuildDatabase, Arch, Target, Toolchain, additionalP
 #  @retval: List of dependent libraries which are InfBuildData instances\r
 #\r
 def GetLiabraryInstances(Module, Platform, BuildDatabase, Arch, Target, Toolchain):\r
-    return GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolchain)\r
+    return GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolchain,Platform.MetaFile,EdkLogger)\r
 \r
 def GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolchain, FileName = '', EdkLogger = None):\r
     if Module.LibInstances:\r
@@ -113,7 +114,7 @@ def GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolcha
     ConsumedByList = OrderedListDict()\r
     LibraryInstance = OrderedDict()\r
 \r
-    if FileName:\r
+    if not Module.LibraryClass:\r
         EdkLogger.verbose("")\r
         EdkLogger.verbose("Library instances of module [%s] [%s]:" % (str(Module), Arch))\r
 \r
@@ -126,7 +127,7 @@ def GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolcha
                 if LibraryPath is None:\r
                     LibraryPath = M.LibraryClasses.get(LibraryClassName)\r
                     if LibraryPath is None:\r
-                        if FileName:\r
+                        if not Module.LibraryClass:\r
                             EdkLogger.error("build", RESOURCE_NOT_AVAILABLE,\r
                                             "Instance of library class [%s] is not found" % LibraryClassName,\r
                                             File=FileName,\r
@@ -143,7 +144,7 @@ def GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolcha
                      or (ModuleType != SUP_MODULE_USER_DEFINED and ModuleType != SUP_MODULE_HOST_APPLICATION\r
                          and ModuleType not in LibraryModule.LibraryClass[0].SupModList):\r
                     # only USER_DEFINED can link against any library instance despite of its SupModList\r
-                    if FileName:\r
+                    if not Module.LibraryClass:\r
                         EdkLogger.error("build", OPTION_MISSING,\r
                                         "Module type [%s] is not supported by library instance [%s]" \\r
                                         % (ModuleType, LibraryPath), File=FileName,\r
@@ -153,7 +154,7 @@ def GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolcha
 \r
                 LibraryInstance[LibraryClassName] = LibraryModule\r
                 LibraryConsumerList.append(LibraryModule)\r
-                if FileName:\r
+                if not Module.LibraryClass:\r
                     EdkLogger.verbose("\t" + str(LibraryClassName) + " : " + str(LibraryModule))\r
             else:\r
                 LibraryModule = LibraryInstance[LibraryClassName]\r
@@ -234,7 +235,7 @@ def GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolcha
     #\r
     for Item in LibraryList:\r
         if ConsumedByList[Item] and Item in Constructor and len(Constructor) > 1:\r
-            if FileName:\r
+            if not Module.LibraryClass:\r
                 ErrorMessage = "\tconsumed by " + "\n\tconsumed by ".join(str(L) for L in ConsumedByList[Item])\r
                 EdkLogger.error("build", BUILD_ERROR, 'Library [%s] with constructors has a cycle' % str(Item),\r
                                 ExtraData=ErrorMessage, File=FileName)\r