Drop support for python 3.1.
authorCampbell Barton <ideasman42@gmail.com>
Mon, 7 Mar 2011 11:53:40 +0000 (11:53 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 7 Mar 2011 11:53:40 +0000 (11:53 +0000)
for building py3.2 on *nix see:
  http://wiki.blender.org/index.php?title=Dev:2.5/Doc/Building_Blender/Linux/Troubleshooting#Python

also fixed possible buffer overrun with getting the fake filepath for a blender textblock.

CMakeLists.txt
release/scripts/ui/space_userpref.py
source/blender/python/generic/bpy_internal_import.c
source/blender/python/generic/bpy_internal_import.h
source/blender/python/generic/py_capi_utils.c
source/blender/python/intern/bpy_interface.c
source/blender/python/intern/bpy_util.h
source/gameengine/GameLogic/SCA_PythonController.cpp

index 368f5de026176f293eeae3ffc17d110a17ad21dc..a9776d3a38436d4023790699691defddcd372c30 100644 (file)
@@ -190,9 +190,9 @@ set(CXX_WARNINGS "")
 
 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
 # On Unix: 
-#   cmake -D PYTHON_LIBRARY=/usr/local/lib/python3.1/config/libpython3.1.so -D PYTHON_INCLUDE_DIRS=/usr/local/include/python3.1 -G "Unix Makefiles" ../blender
+#   cmake -D PYTHON_LIBRARY=/usr/local/lib/python3.2/config/libpython3.2.so -D PYTHON_INCLUDE_DIRS=/usr/local/include/python3.2 ../blender
 # On Macs: 
-#   cmake -D PYTHON_INCLUDE_DIRS=/System/Library/Frameworks/Python.framework/Versions/3.1/include/python3.1 -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/config -G Xcode ../blender
+#   cmake -D PYTHON_INCLUDE_DIRS=/System/Library/Frameworks/Python.framework/Versions/3.2/include/python3.2 -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/config -G Xcode ../blender
 #
 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
 
@@ -250,7 +250,7 @@ if(UNIX AND NOT APPLE)
                # No way to set py31. remove for now.
                # find_package(PythonLibs)
                set(PYTHON /usr)
-               set(PYTHON_VERSION 3.1 CACHE STRING "")
+               set(PYTHON_VERSION 3.2 CACHE STRING "")
                mark_as_advanced(PYTHON_VERSION)
                set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}" CACHE STRING "")
                mark_as_advanced(PYTHON_INCLUDE_DIRS)
@@ -772,7 +772,7 @@ elseif(APPLE)
        set(PYTHON_VERSION 3.2)
 
        if(PYTHON_VERSION MATCHES 3.2)
-               # we use precompiled libraries for py 3.1 and up by default
+               # we use precompiled libraries for py 3.2 and up by default
 
                set(PYTHON ${LIBDIR}/python)
                set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}")
@@ -784,7 +784,7 @@ elseif(APPLE)
                # otherwise, use custom system framework
 
                set(PYTHON /System/Library/Frameworks/Python.framework/Versions/)
-               set(PYTHON_VERSION 3.1)
+               set(PYTHON_VERSION 3.2)
                set(PYTHON_INCLUDE_DIRS "${PYTHON}${PYTHON_VERSION}/include/python${PYTHON_VERSION}")
                # set(PYTHON_BINARY ${PYTHON}${PYTHON_VERSION}/bin/python${PYTHON_VERSION}) # not used yet
                set(PYTHON_LIBRARY "")
index 4f444a8e25391a825ca21ecf95db0589e5644ce3..939855918242f9a55fa6fbcc5334e9b0e03bbc3e 100644 (file)
@@ -1089,8 +1089,7 @@ class WM_OT_addon_install(bpy.types.Operator):
         addon_path = ""
         pyfile_dir = os.path.dirname(pyfile)
         for addon_path in addon_utils.paths():
-            # if os.path.samefile(pyfile_dir, addon_path):  # Py3.2 only!, upgrade soon!
-            if (hasattr(os.path, "samefile") and os.path.samefile(pyfile_dir, addon_path)) or pyfile_dir == addon_path:
+            if os.path.samefile(pyfile_dir, addon_path):
                 self.report({'ERROR'}, "Source file is in the addon search path: %r" % addon_path)
                 return {'CANCELLED'}
         del addon_path
index 533225b11351843938fbf78092a89872aa11cdaf..e0af6e085ebc3e419ced427b5298fd5b377af83c 100644 (file)
@@ -74,16 +74,9 @@ void bpy_import_main_set(struct Main *maggie)
 }
 
 /* returns a dummy filename for a textblock so we can tell what file a text block comes from */
-void bpy_text_filename_get(char *fn, Text *text)
+void bpy_text_filename_get(char *fn, size_t fn_len, Text *text)
 {
-#if PY_VERSION_HEX >=  0x03020000
-       sprintf(fn, "%s%c%s", text->id.lib ? text->id.lib->filepath : G.main->name, SEP, text->id.name+2);
-#else
-       /* this is a bug in python's Py_CompileString()!, fixed for python 3.2.
-        the string encoding should not be required to be utf-8
-        reported: http://bugs.python.org/msg115202  */
-       strcpy(fn, text->id.name+2);
-#endif
+       BLI_snprintf(fn, fn_len, "%s%c%s", text->id.lib ? text->id.lib->filepath : G.main->name, SEP, text->id.name+2);
 }
 
 PyObject *bpy_text_import(Text *text)
@@ -94,7 +87,7 @@ PyObject *bpy_text_import(Text *text)
 
        if( !text->compiled ) {
                char fn_dummy[256];
-               bpy_text_filename_get(fn_dummy, text);
+               bpy_text_filename_get(fn_dummy, sizeof(fn_dummy), text);
 
                buf = txt_to_buf( text );
                text->compiled = Py_CompileString( buf, fn_dummy, Py_file_input );
index 45169b1b56f41e108f983a886cf02b49bfc626e8..7aabdcf3bf2d712c785b245a89bb1b9bc91e245e 100644 (file)
@@ -52,7 +52,7 @@ PyObject*     bpy_text_import_name(char *name, int *found);
 PyObject*      bpy_text_reimport(PyObject *module, int *found);
 /* void                bpy_text_clear_modules(int clear_all);*/ /* Clear user modules */ 
 
-void bpy_text_filename_get(char *fn, struct Text *text);
+void bpy_text_filename_get(char *fn, size_t fn_len, struct Text *text);
 
 extern PyMethodDef bpy_import_meth;
 extern PyMethodDef bpy_reload_meth;
index ed24c164921db8623370f71fd36ccb9af367f20d..3f2fbb1bbeccf531d043287cc8358c9633b12ba7 100644 (file)
@@ -60,18 +60,6 @@ void PyC_LineSpit(void) {
        fprintf(stderr, "%s:%d\n", filename, lineno);
 }
 
-/* python 3.2 only, copied from frameobjec.c */
-#if PY_VERSION_HEX <  0x03020000
-int
-PyFrame_GetLineNumber(PyFrameObject *f)
-{
-    if (f->f_trace)
-        return f->f_lineno;
-    else
-        return PyCode_Addr2Line(f->f_code, f->f_lasti);
-}
-#endif
-
 void PyC_FileAndNum(const char **filename, int *lineno)
 {
        PyFrameObject *frame;
index 03d5f528670777348adaeec6119feeae2800838a..b54771f6b0e2b171df30cee96ed617057b041898 100644 (file)
@@ -378,7 +378,7 @@ static int python_script_exec(bContext *C, const char *fn, struct Text *text, st
 
        if (text) {
                char fn_dummy[FILE_MAXDIR];
-               bpy_text_filename_get(fn_dummy, text);
+               bpy_text_filename_get(fn_dummy, sizeof(fn_dummy), text);
 
                if( !text->compiled ) { /* if it wasn't already compiled, do it now */
                        char *buf = txt_to_buf( text );
index 9b217e77844b172f85ce80b0da0270a32491916a..606eefc89609bd337fabc6031361444e2df9618c 100644 (file)
@@ -30,7 +30,7 @@
 #ifndef BPY_UTIL_H
 #define BPY_UTIL_H
 
-#if PY_VERSION_HEX <  0x03010000
+#if PY_VERSION_HEX <  0x03020000
 #error "Python versions below 3.1 are not supported anymore, you'll need to update your python."
 #endif
 
index be138db620efcd1b53cf8c5b304581a236c52927..d0c1155de96f25891ca4b2690d32677d4355756a 100644 (file)
@@ -415,11 +415,7 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
 
                excdict= PyDict_Copy(m_pythondictionary);
 
-#if PY_VERSION_HEX >=  0x03020000
                resultobj = PyEval_EvalCode((PyObject *)m_bytecode, excdict, excdict);
-#else
-               resultobj = PyEval_EvalCode((PyCodeObject *)m_bytecode, excdict, excdict);
-#endif
 
                /* PyRun_SimpleString(m_scriptText.Ptr()); */
                break;