commit:     334946eadc7efb457062c7aba9d3b51085e463c3
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 24 22:33:20 2023 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Oct 24 22:34:25 2023 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=334946ea

SonameAtom: multiprocessing spawn compat

Do not pickle the SonameAtom _hash_value attribute, since
hash() results are not meaningfully picklable.

Bug: https://bugs.gentoo.org/916248
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/dep/soname/SonameAtom.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/portage/dep/soname/SonameAtom.py 
b/lib/portage/dep/soname/SonameAtom.py
index 78129f3262..421ab3f5a2 100644
--- a/lib/portage/dep/soname/SonameAtom.py
+++ b/lib/portage/dep/soname/SonameAtom.py
@@ -20,11 +20,15 @@ class SonameAtom:
         )
 
     def __getstate__(self):
-        return {k: getattr(self, k) for k in self.__slots__}
+        state = {k: getattr(self, k) for k in self.__slots__}
+        # hash() results are not meaningfully picklable.
+        state["_hash_value"] = None
+        return state
 
     def __setstate__(self, state):
         for k, v in state.items():
             object.__setattr__(self, k, v)
+        object.__setattr__(self, "_hash_value", hash(self._hash_key))
 
     def __hash__(self):
         return self._hash_value

Reply via email to