https://bugzilla.tianocore.org/show_bug.cgi?id=1895

Build cache cannot store cache for the same library modules
in different arch together. E.g. Both the below IA32 and X64
arch BaseLib caches should exist after build Ovmf3264, but now
only the one in X64 arch exist.
The reason is the current Basetool use a set() to same all
library AutoGen objects, but the different arch lib AutoGen
objects have same __hash_ value which comes from the lib
MetaFile(The path of module file):
    def __hash__(self):
        return hash(self.MetaFile)

So the different arch lib AutoGen objects are duplicated one
to the set() and only one can exist. This is why the Basetool
can only store one arch cache for library.

This patch adds the AutoGen object arch string into the __hash_
definition and ensure the different arch AutoGen objects have
different __hash_ values.

Cc: Liming Gao <liming....@intel.com>
Cc: Bob Feng <bob.c.f...@intel.com>
Cc: Christian Rodriguez <christian.rodrig...@intel.com>
Signed-off-by: Steven Shi <steven....@intel.com>
---
 BaseTools/Source/Python/AutoGen/AutoGen.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py 
b/BaseTools/Source/Python/AutoGen/AutoGen.py
index 3f41fbb507..1fe8312d22 100644
--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
@@ -271,7 +271,7 @@ class AutoGen(object):
     #   @retval int     Hash value of the file path of platform file
     #
     def __hash__(self):
-        return hash(self.MetaFile)
+        return hash((self.MetaFile, self.Arch))
 
     ## str() operator
     #
-- 
2.17.1.windows.2


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#42438): https://edk2.groups.io/g/devel/message/42438
Mute This Topic: https://groups.io/mt/32063468/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to