Loading ...
Sorry, an error occurred while loading the content.

Patch 7.3.948

Expand Messages
  • Bram Moolenaar
    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)
    Message 1 of 3 , May 15, 2013
    View Source
    • 0 Attachment
      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 <<EOF
      d=vim.bindeval('{}')
      m=vim.bindeval('messages')
      ! try:
      ! d['abc']
      ! except Exception as e:
      ! m.extend([e.__class__.__name__])
      !
      ! try:
      ! d['abc']="\0"
      ! except Exception as e:
      ! m.extend([e.__class__.__name__])
      !
      ! try:
      ! d['abc']=vim
      ! except Exception as e:
      ! m.extend([e.__class__.__name__])
      !
      ! try:
      ! d['']=1
      ! except Exception as e:
      ! m.extend([e.__class__.__name__])
      !
      ! try:
      ! d['a\0b']=1
      ! except Exception as e:
      ! m.extend([e.__class__.__name__])
      !
      ! try:
      ! d[b'a\0b']=1
      ! except Exception as e:
      ! m.extend([e.__class__.__name__])
      EOF
      :$put =messages
      :unlet messages
      --- 183,203 ----
      : $put ='[0.0, 0.0]'
      :endif
      :let messages=[]
      ! py <<EOF
      d=vim.bindeval('{}')
      m=vim.bindeval('messages')
      ! def em(expr, g=globals(), l=locals()):
      ! try:
      ! exec(expr, g, l)
      ! except:
      ! m.extend([sys.exc_type.__name__])
      !
      ! em('d["abc"]')
      ! em('d["abc"]="\\0"')
      ! em('d["abc"]=vim')
      ! em('d[""]=1')
      ! em('d["a\\0b"]=1')
      ! em('d[u"a\\0b"]=1')
      EOF
      :$put =messages
      :unlet messages
      ***************
      *** 394,407 ****
      def e(s, g=globals(), l=locals()):
      try:
      exec(s, g, l)
      ! except Exception as e:
      ! vim.command('throw ' + repr(e.__class__.__name__))

      def ev(s, g=globals(), l=locals()):
      try:
      return eval(s, g, l)
      ! except Exception as e:
      ! vim.command('throw ' + repr(e.__class__.__name__))
      return 0
      EOF
      :function E(s)
      --- 377,390 ----
      def e(s, g=globals(), l=locals()):
      try:
      exec(s, g, l)
      ! except:
      ! vim.command('throw ' + repr(sys.exc_type.__name__))

      def ev(s, g=globals(), l=locals()):
      try:
      return eval(s, g, l)
      ! except:
      ! vim.command('throw ' + repr(sys.exc_type.__name__))
      return 0
      EOF
      :function E(s)
      *** ../vim-7.3.947/src/testdir/test86.ok 2013-05-15 14:39:47.000000000 +0200
      --- src/testdir/test86.ok 2013-05-15 14:42:21.000000000 +0200
      ***************
      *** 82,88 ****
      bar
      >>> 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@... -- 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 ///

      --
      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      ---
      You received this message because you are subscribed to the Google Groups "vim_dev" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • ZyX
      ... Ah, I forgot to record destructor in IterType. Here is a patch: # HG changeset patch # User ZyX # Date 1368632722 -14400 # Branch
      Message 2 of 3 , May 15, 2013
      View Source
      • 0 Attachment
        > *** ../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

        Ah, I forgot to record destructor in IterType. Here is a patch:
        # HG changeset patch
        # User ZyX <kp-pav@...>
        # Date 1368632722 -14400
        # Branch python-extended-2
        # Node ID 110024d9f92adc356dec5c9d6f1499439f7bd008
        # Parent f328565664aa8c6f95cc2b099937be7048e41755
        Record IterDestructor in IterType

        diff -r f328565664aa -r 110024d9f92a src/if_py_both.h
        --- a/src/if_py_both.h Wed May 15 16:27:37 2013 +0200
        +++ b/src/if_py_both.h Wed May 15 19:45:22 2013 +0400
        @@ -566,7 +566,6 @@
        return (PyObject *)(self);
        }

        -#if 0 /* unused */
        static void
        IterDestructor(PyObject *self)
        {
        @@ -576,7 +575,6 @@

        DESTRUCTOR_FINISH(self);
        }
        -#endif

        static PyObject *
        IterNext(PyObject *self)
        @@ -3816,6 +3814,7 @@
        IterType.tp_doc = "generic iterator object";
        IterType.tp_iter = IterIter;
        IterType.tp_iternext = IterNext;
        + IterType.tp_dealloc = IterDestructor;

        vim_memset(&BufferType, 0, sizeof(BufferType));
        BufferType.tp_name = "vim.buffer";

        --
        --
        You received this message from the "vim_dev" maillist.
        Do not top-post! Type your reply below the text you are replying to.
        For more information, visit http://www.vim.org/maillist.php

        ---
        You received this message because you are subscribed to the Google Groups "vim_dev" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      • Bram Moolenaar
        ... Thanks! -- CONCORDE: Quickly, sir, come this way! LAUNCELOT: No! It s not right for my idiom. I must escape more ... more ... CONCORDE: Dramatically,
        Message 3 of 3 , May 15, 2013
        View Source
        • 0 Attachment
          ZyX wrote:

          > ------=_Part_4970_15270404.1368633093914
          > Content-Type: text/plain; charset=ISO-8859-1
          >
          > > *** ../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
          >
          > Ah, I forgot to record destructor in IterType. Here is a patch:

          Thanks!


          --
          CONCORDE: Quickly, sir, come this way!
          LAUNCELOT: No! It's not right for my idiom. I must escape more ... more ...
          CONCORDE: Dramatically, sir?
          LAUNCELOT: Dramatically.
          "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

          /// Bram Moolenaar -- Bram@... -- 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 ///

          --
          --
          You received this message from the "vim_dev" maillist.
          Do not top-post! Type your reply below the text you are replying to.
          For more information, visit http://www.vim.org/maillist.php

          ---
          You received this message because you are subscribed to the Google Groups "vim_dev" group.
          To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        Your message has been successfully submitted and would be delivered to recipients shortly.