Python 3 lost the cmp() builtin, and doesn't call objects __cmp__() methods any more to compare them.
Instead, Python 3 requires implementing the rich comparison methods explicitly: __eq__(), __ne(), __lt__(), __le__(), __gt__() and __ge__(). Fortunately those are trivial to implement by just calling the existing __cmp__() method, which makes the code compatible with both Python 2 and Python 3. This commit only implements the comparison methods which are actually used by the build scripts. In addition, this commit brings back to Python 3 the cmp() builtin method as required. Signed-off-by: Mathieu Bridon <boche...@daitauha.fr> --- src/amd/vulkan/radv_extensions.py | 6 +++++- src/intel/vulkan/anv_extensions.py | 6 +++++- src/mapi/mapi_abi.py | 13 +++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_extensions.py b/src/amd/vulkan/radv_extensions.py index a0f1038110..7f48d77629 100644 --- a/src/amd/vulkan/radv_extensions.py +++ b/src/amd/vulkan/radv_extensions.py @@ -150,7 +150,11 @@ class VkVersion: other = copy.copy(other) other.patch = self.patch - return self.__int_ver().__cmp__(other.__int_ver()) + return self.__int_ver() - other.__int_ver() + + def __gt__(self, other): + return self.__cmp__(other) > 0 + MAX_API_VERSION = VkVersion(MAX_API_VERSION) diff --git a/src/intel/vulkan/anv_extensions.py b/src/intel/vulkan/anv_extensions.py index 0f99f58ecb..213cfdc551 100644 --- a/src/intel/vulkan/anv_extensions.py +++ b/src/intel/vulkan/anv_extensions.py @@ -162,7 +162,11 @@ class VkVersion: other = copy.copy(other) other.patch = self.patch - return self.__int_ver().__cmp__(other.__int_ver()) + return self.__int_ver() - other.__int_ver() + + def __gt__(self, other): + return self.__cmp__(other) > 0 + MAX_API_VERSION = VkVersion('0.0.0') diff --git a/src/mapi/mapi_abi.py b/src/mapi/mapi_abi.py index be1d15d922..67fdb10650 100644 --- a/src/mapi/mapi_abi.py +++ b/src/mapi/mapi_abi.py @@ -38,6 +38,15 @@ import gl_XML import glX_XML +try: + cmp + +except NameError: + # Python 3 does not have cmp() + def cmp(a, b): + return ((a > b) - (a < b)) + + # number of dynamic entries ABI_NUM_DYNAMIC_ENTRIES = 256 @@ -135,6 +144,10 @@ class ABIEntry(object): return res + def __lt__(self, other): + return self.__cmp__(other) < 0 + + def abi_parse_xml(xml): """Parse a GLAPI XML file for ABI entries.""" api = gl_XML.parse_GL_API(xml, glX_XML.glx_item_factory()) -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev