To: vim_dev@googlegroups.com Subject: Patch 7.3.948 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.948 Problem: Cannot build with Python 2.2 Solution: Make Python interface work with Python 2.2 Make 2.2 the first supported version. (ZyX) Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, src/testdir/test86.in, src/testdir/test86.ok, src/testdir/test87.ok, src/configure.in, src/auto/configure *** ../vim-7.3.947/src/if_py_both.h 2013-05-15 14:39:47.000000000 +0200 --- src/if_py_both.h 2013-05-15 14:49:11.000000000 +0200 *************** *** 564,569 **** --- 564,570 ---- return (PyObject *)(self); } + #if 0 /* unused */ static void IterDestructor(PyObject *self) { *************** *** 573,578 **** --- 574,580 ---- DESTRUCTOR_FINISH(self); } + #endif static PyObject * IterNext(PyObject *self) *************** *** 696,708 **** } else { ! if (!PyBool_Check(val)) ! { ! PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed")); ! return -1; ! } ! ! if (val == Py_True) this->dict->dv_lock = VAR_LOCKED; else this->dict->dv_lock = 0; --- 698,704 ---- } else { ! if (PyObject_IsTrue(val)) this->dict->dv_lock = VAR_LOCKED; else this->dict->dv_lock = 0; *************** *** 1202,1214 **** } else { ! if (!PyBool_Check(val)) ! { ! PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed")); ! return -1; ! } ! ! if (val == Py_True) this->list->lv_lock = VAR_LOCKED; else this->list->lv_lock = 0; --- 1198,1204 ---- } else { ! if (PyObject_IsTrue(val)) this->list->lv_lock = VAR_LOCKED; else this->list->lv_lock = 0; *************** *** 1484,1497 **** if (flags & SOPT_BOOL) { ! if (!PyBool_Check(valObject)) ! { ! PyErr_SetString(PyExc_ValueError, "Object must be boolean"); ! return -1; ! } ! ! r = set_option_value_for(key, (valObject == Py_True), NULL, opt_flags, ! this->opt_type, this->from); } else if (flags & SOPT_NUM) { --- 1474,1481 ---- if (flags & SOPT_BOOL) { ! r = set_option_value_for(key, PyObject_IsTrue(valObject), NULL, ! opt_flags, this->opt_type, this->from); } else if (flags & SOPT_NUM) { *** ../vim-7.3.947/src/if_python3.c 2013-05-15 14:39:47.000000000 +0200 --- src/if_python3.c 2013-05-15 14:42:21.000000000 +0200 *************** *** 156,161 **** --- 156,162 ---- # define PyMapping_Items py3_PyMapping_Items # define PyIter_Next py3_PyIter_Next # define PyObject_GetIter py3_PyObject_GetIter + # define PyObject_IsTrue py3_PyObject_IsTrue # define PyModule_GetDict py3_PyModule_GetDict #undef PyRun_SimpleString # define PyRun_SimpleString py3_PyRun_SimpleString *************** *** 264,269 **** --- 265,271 ---- static PyObject* (*py3_PyDict_New)(void); static PyObject* (*py3_PyIter_Next)(PyObject *); static PyObject* (*py3_PyObject_GetIter)(PyObject *); + static int (*py3_PyObject_IsTrue)(PyObject *); static PyObject* (*py3_Py_BuildValue)(char *, ...); static int (*py3_PyType_Ready)(PyTypeObject *type); static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); *************** *** 392,397 **** --- 394,400 ---- {"PyMapping_Items", (PYTHON_PROC*)&py3_PyMapping_Items}, {"PyIter_Next", (PYTHON_PROC*)&py3_PyIter_Next}, {"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter}, + {"PyObject_IsTrue", (PYTHON_PROC*)&py3_PyObject_IsTrue}, {"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong}, {"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New}, {"PyType_Ready", (PYTHON_PROC*)&py3_PyType_Ready}, *** ../vim-7.3.947/src/if_python.c 2013-05-15 14:39:47.000000000 +0200 --- src/if_python.c 2013-05-15 14:42:21.000000000 +0200 *************** *** 229,234 **** --- 229,235 ---- # define _Py_TrueStruct (*dll__Py_TrueStruct) # define PyObject_Init dll__PyObject_Init # define PyObject_GetIter dll_PyObject_GetIter + # define PyObject_IsTrue dll_PyObject_IsTrue # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 # define PyType_IsSubtype dll_PyType_IsSubtype # endif *************** *** 324,329 **** --- 325,331 ---- static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *); static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *); static PyObject* (*dll_PyObject_GetIter)(PyObject *); + static int (*dll_PyObject_IsTrue)(PyObject *); # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 static iternextfunc dll__PyObject_NextNotImplemented; # endif *************** *** 459,464 **** --- 461,467 ---- {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New}, {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init}, {"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter}, + {"PyObject_IsTrue", (PYTHON_PROC*)&dll_PyObject_IsTrue}, # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented}, # endif *************** *** 787,793 **** * so the following does both: unlock GIL and save thread state in TLS * without deleting thread state */ ! PyEval_SaveThread(); initialised = 1; } --- 790,799 ---- * so the following does both: unlock GIL and save thread state in TLS * without deleting thread state */ ! #ifndef PY_CAN_RECURSE ! saved_python_thread = ! #endif ! PyEval_SaveThread(); initialised = 1; } *** ../vim-7.3.947/src/testdir/test86.in 2013-05-15 14:39:47.000000000 +0200 --- src/testdir/test86.in 2013-05-15 14:42:21.000000000 +0200 *************** *** 183,220 **** : $put ='[0.0, 0.0]' :endif :let messages=[] ! :py <>> paste p/gopts1: False - inv: 2! ValueError p/wopts1! KeyError inv: 2! KeyError wopts1! KeyError --- 82,87 ---- *************** *** 224,230 **** wopts2! KeyError wopts3! KeyError p/bopts1: False - inv: 2! ValueError G: 0 W: 1:0 2:1 3:0 4:1 B: 1:0 2:1 3:0 4:1 --- 223,228 ---- *************** *** 280,286 **** wopts2! KeyError wopts3! KeyError p/bopts1: False - inv: 2! ValueError G: 0 W: 1:0 2:1 3:0 4:1 B: 1:0 2:1 3:0 4:1 --- 278,283 ---- *** ../vim-7.3.947/src/testdir/test87.ok 2013-05-15 14:39:47.000000000 +0200 --- src/testdir/test87.ok 2013-05-15 14:42:21.000000000 +0200 *************** *** 71,77 **** bar >>> paste p/gopts1: False - inv: 2! ValueError p/wopts1! KeyError inv: 2! KeyError wopts1! KeyError --- 71,76 ---- *************** *** 213,219 **** wopts2! KeyError wopts3! KeyError p/bopts1: False - inv: 2! ValueError G: 0 W: 1:0 2:1 3:0 4:1 B: 1:0 2:1 3:0 4:1 --- 212,217 ---- *************** *** 269,275 **** wopts2! KeyError wopts3! KeyError p/bopts1: False - inv: 2! ValueError G: 0 W: 1:0 2:1 3:0 4:1 B: 1:0 2:1 3:0 4:1 --- 267,272 ---- *** ../vim-7.3.947/src/configure.in 2013-05-06 04:21:35.000000000 +0200 --- src/configure.in 2013-05-15 14:46:11.000000000 +0200 *************** *** 863,872 **** ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'` ]]) ! dnl -- it must be at least version 1.4 ! AC_MSG_CHECKING(Python is 1.4 or better) if ${vi_cv_path_python} -c \ ! "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)" then AC_MSG_RESULT(yep) --- 863,872 ---- ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'` ]]) ! dnl -- it must be at least version 2.2 ! AC_MSG_CHECKING(Python is 2.2 or better) if ${vi_cv_path_python} -c \ ! "import sys; sys.exit(${vi_cv_var_python_version} < 2.2)" then AC_MSG_RESULT(yep) *** ../vim-7.3.947/src/auto/configure 2013-05-06 04:21:35.000000000 +0200 --- src/auto/configure 2013-05-15 14:46:28.000000000 +0200 *************** *** 5289,5298 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python_version" >&5 $as_echo "$vi_cv_var_python_version" >&6; } ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 1.4 or better" >&5 ! $as_echo_n "checking Python is 1.4 or better... " >&6; } if ${vi_cv_path_python} -c \ ! "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)" then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yep" >&5 $as_echo "yep" >&6; } --- 5289,5298 ---- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python_version" >&5 $as_echo "$vi_cv_var_python_version" >&6; } ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 2.2 or better" >&5 ! $as_echo_n "checking Python is 2.2 or better... " >&6; } if ${vi_cv_path_python} -c \ ! "import sys; sys.exit(${vi_cv_var_python_version} < 2.2)" then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yep" >&5 $as_echo "yep" >&6; } *** ../vim-7.3.947/src/version.c 2013-05-15 14:39:47.000000000 +0200 --- src/version.c 2013-05-15 14:43:39.000000000 +0200 *************** *** 730,731 **** --- 730,733 ---- { /* Add new patch number below this line */ + /**/ + 948, /**/ -- MARTHA'S WAY: Don't throw out all that leftover wine. Freeze into ice cubes for future use in casseroles and sauces. MY WAY: What leftover wine? /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///