]> git.proxmox.com Git - mirror_edk2.git/commit - BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools: Cannot store library cache of different arch together
authorShi, Steven <steven.shi@intel.com>
Mon, 17 Jun 2019 08:16:18 +0000 (16:16 +0800)
committerFeng, Bob C <bob.c.feng@intel.com>
Mon, 17 Jun 2019 09:00:45 +0000 (17:00 +0800)
commit17b082ce67ded226916438fa2979b66472e87638
treee86deef22bb7d0dfa50c140683638401f208aa92
parent04df18535caae11d19686d8f14b5e24a8e67ce31
BaseTools: Cannot store library cache of different arch together

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 arch string into the PlatformAutoGen and
ModuleAutoGen __hash_ definitions and ensure the different
platform and module AutoGen objects have different __hash_ values.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Christian Rodriguez <christian.rodriguez@intel.com>
Signed-off-by: Steven Shi <steven.shi@intel.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
BaseTools/Source/Python/AutoGen/AutoGen.py