File make_python_3.6_compatible.patch of Package blender
Index: blender-2.82/CMakeLists.txt
===================================================================
--- blender-2.82.orig/CMakeLists.txt
+++ blender-2.82/CMakeLists.txt
@@ -730,8 +730,8 @@ if(WITH_PYTHON)
# Do this before main 'platform_*' checks,
# because UNIX will search for the old Python paths which may not exist.
# giving errors about missing paths before this case is met.
- if(DEFINED PYTHON_VERSION AND "${PYTHON_VERSION}" VERSION_LESS "3.7")
- message(FATAL_ERROR "At least Python 3.7 is required to build")
+ if(DEFINED PYTHON_VERSION AND "${PYTHON_VERSION}" VERSION_LESS "3.6")
+ message(FATAL_ERROR "At least Python 3.6 is required to build")
endif()
file(GLOB RESULT "${CMAKE_SOURCE_DIR}/release/scripts/addons")
Index: blender-2.82/source/blender/python/intern/bpy_rna.c
===================================================================
--- blender-2.82.orig/source/blender/python/intern/bpy_rna.c
+++ blender-2.82/source/blender/python/intern/bpy_rna.c
@@ -8683,8 +8683,9 @@ static PyObject *pyrna_register_class(Py
/* Call classed register method.
* Note that zero falls through, no attribute, no error. */
- switch (_PyObject_LookupAttr(py_class, bpy_intern_str_register, &py_cls_meth)) {
+ switch (PyObject_HasAttr(py_class, bpy_intern_str_register)) {
case 1: {
+ py_cls_meth = PyObject_GetAttr(py_class, bpy_intern_str_register);
PyObject *ret = PyObject_CallObject(py_cls_meth, NULL);
Py_DECREF(py_cls_meth);
if (ret) {
@@ -8695,8 +8696,8 @@ static PyObject *pyrna_register_class(Py
}
break;
}
- case -1: {
- return NULL;
+ case 0: {
+ break;
}
}
@@ -8791,7 +8792,8 @@ static PyObject *pyrna_unregister_class(
/* Call classed unregister method.
* Note that zero falls through, no attribute, no error. */
- switch (_PyObject_LookupAttr(py_class, bpy_intern_str_unregister, &py_cls_meth)) {
+ switch (PyObject_HasAttr(py_class, bpy_intern_str_unregister)) {
+ py_cls_meth = PyObject_GetAttr(py_class, bpy_intern_str_unregister);
case 1: {
PyObject *ret = PyObject_CallObject(py_cls_meth, NULL);
Py_DECREF(py_cls_meth);
@@ -8803,8 +8805,8 @@ static PyObject *pyrna_unregister_class(
}
break;
}
- case -1: {
- return NULL;
+ case 0: {
+ break;
}
}
Index: blender-2.82/source/blender/python/intern/bpy_capi_utils.h
===================================================================
--- blender-2.82.orig/source/blender/python/intern/bpy_capi_utils.h
+++ blender-2.82/source/blender/python/intern/bpy_capi_utils.h
@@ -21,8 +21,8 @@
#ifndef __BPY_CAPI_UTILS_H__
#define __BPY_CAPI_UTILS_H__
-#if PY_VERSION_HEX < 0x03070000
-# error "Python 3.7 or greater is required, you'll need to update your Python."
+#if PY_VERSION_HEX < 0x03060000
+# error "Python 3.6 or greater is required, you'll need to update your Python."
#endif
struct EnumPropertyItem;