diff --git a/cmake/FindPython.cmake b/cmake/FindPython.cmake index 884c492c6..fc9fd89ff 100644 --- a/cmake/FindPython.cmake +++ b/cmake/FindPython.cmake @@ -34,43 +34,50 @@ IF(PYTHON_FOUND) ENDIF(PYTHON_FOUND) FIND_PROGRAM(PYTHON_EXECUTABLE - NAMES python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python + NAMES python2.7 python2.6 python2.5 python PATHS /usr/bin /usr/local/bin /usr/pkg/bin ) IF(PYTHON_EXECUTABLE) EXECUTE_PROCESS( - COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print(get_config_var('CONFINCLUDEPY'))" + COMMAND ${PYTHON_EXECUTABLE} -c "import sys; from distutils.sysconfig import *; sys.stdout.write(get_config_var('CONFINCLUDEPY'))" OUTPUT_VARIABLE PYTHON_INC_DIR ) EXECUTE_PROCESS( - COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print(get_config_var('LIBPL'))" + COMMAND ${PYTHON_EXECUTABLE} -c "import sys; from distutils.sysconfig import *; sys.stdout.write(get_config_var('LIBPL'))" OUTPUT_VARIABLE PYTHON_POSSIBLE_LIB_PATH ) EXECUTE_PROCESS( - COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print(get_config_var('LINKFORSHARED'))" + COMMAND ${PYTHON_EXECUTABLE} -c "import sys; from distutils.sysconfig import *; sys.stdout.write(get_config_var('LINKFORSHARED'))" OUTPUT_VARIABLE PYTHON_LFLAGS ) - # remove the new lines from the output by replacing them with empty strings - STRING(REPLACE "\n" "" PYTHON_INC_DIR "${PYTHON_INC_DIR}") - STRING(REPLACE "\n" "" PYTHON_POSSIBLE_LIB_PATH "${PYTHON_POSSIBLE_LIB_PATH}") - STRING(REPLACE "\n" "" PYTHON_LFLAGS "${PYTHON_LFLAGS}") - FIND_PATH(PYTHON_INCLUDE_PATH NAMES Python.h PATHS ${PYTHON_INC_DIR} ) FIND_LIBRARY(PYTHON_LIBRARY - NAMES python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python + NAMES python2.7 python2.6 python2.5 python PATHS ${PYTHON_POSSIBLE_LIB_PATH} ) IF(PYTHON_LIBRARY AND PYTHON_INCLUDE_PATH) - SET(PYTHON_FOUND TRUE) + EXECUTE_PROCESS( + COMMAND ${PYTHON_EXECUTABLE} -c "import sys; sys.stdout.write(sys.version[:3])" + OUTPUT_VARIABLE PYTHON_VERSION + ) + EXECUTE_PROCESS( + COMMAND ${PYTHON_EXECUTABLE} -c "import sys; sys.stdout.write(str(sys.version_info < (2,5)))" + OUTPUT_VARIABLE PYTHON_OLD_VERSION + ) + IF(${PYTHON_OLD_VERSION} STREQUAL "True") + MESSAGE("Python >= 2.5 is needed to build python plugin, version found: ${PYTHON_VERSION}") + ELSE() + SET(PYTHON_FOUND TRUE) + ENDIF(${PYTHON_OLD_VERSION} STREQUAL "True") ENDIF(PYTHON_LIBRARY AND PYTHON_INCLUDE_PATH) MARK_AS_ADVANCED( diff --git a/configure.in b/configure.in index 219e74646..3d495308f 100644 --- a/configure.in +++ b/configure.in @@ -465,7 +465,7 @@ fi PYTHON_VERSION= if test "x$enable_python" = "xyes" ; then - AC_PATH_PROGS(PYTHON, python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python) + AC_PATH_PROGS(PYTHON, python2.7 python2.6 python2.5 python2 python) if test -z $PYTHON ; then AC_MSG_WARN([ *** Python must be installed on your system but python interpreter couldn't be found in path. @@ -474,41 +474,49 @@ if test "x$enable_python" = "xyes" ; then enable_python="no" not_found="$not_found python" else - PYTHON_SYSPREFIX=`$PYTHON -c 'import sys; print "%s" % sys.prefix'` - PYTHON_VERSION=`$PYTHON -c 'import sys ; print sys.version[[:3]]'` - PYTHON_INCLUDE=`$PYTHON -c "import distutils.sysconfig,string; print distutils.sysconfig.get_config_var('CONFINCLUDEPY')"` - - AC_MSG_CHECKING(for Python header files) - if test -r "$PYTHON_INCLUDE/Python.h"; then - PYTHON_CFLAGS="-I$PYTHON_INCLUDE" - AC_MSG_RESULT(found) - PYTHON_LIB=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"` - PYTHON_LFLAGS="-lpython$PYTHON_VERSION "`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBS')+' '+distutils.sysconfig.get_config_var('SYSLIBS')+' '+distutils.sysconfig.get_config_var('LINKFORSHARED')"` - AC_MSG_CHECKING(for Python library) - if test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.so"; then - PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS" - AC_MSG_RESULT(found) - elif test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.a"; then - PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS" - AC_MSG_RESULT(found) - elif test -r "$PYTHON_SYSPREFIX/lib/libpython$PYTHON_VERSION.so"; then - PYTHON_LFLAGS="-L$PYTHON_SYSPREFIX/lib/ $PYTHON_LFLAGS" - AC_MSG_RESULT(found) - else - AC_MSG_WARN([ + PYTHON_SYSPREFIX=`$PYTHON -c 'import sys; sys.stdout.write("%s" % sys.prefix)'` + PYTHON_VERSION=`$PYTHON -c 'import sys; sys.stdout.write(sys.version[[:3]])'` + PYTHON_INCLUDE=`$PYTHON -c "import sys, distutils.sysconfig, string; sys.stdout.write(distutils.sysconfig.get_config_var('CONFINCLUDEPY'))"` + PYTHON_OLD_VERSION=`$PYTHON -c "import sys; sys.stdout.write(str(sys.version_info < (2,5)))"` + if test "x$PYTHON_OLD_VERSION" = "xTrue" ; then + AC_MSG_WARN([ +*** Python >= 2.5 is needed to build Python plugin, version found: $PYTHON_VERSION. +*** WeeChat will be built without Python support.]) + enable_python="no" + not_found="$not_found python" + else + AC_MSG_CHECKING(for Python header files) + if test -r "$PYTHON_INCLUDE/Python.h"; then + PYTHON_CFLAGS="-I$PYTHON_INCLUDE" + AC_MSG_RESULT(found) + PYTHON_LIB=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"` + PYTHON_LFLAGS="-lpython$PYTHON_VERSION "`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBS')+' '+distutils.sysconfig.get_config_var('SYSLIBS')+' '+distutils.sysconfig.get_config_var('LINKFORSHARED')"` + AC_MSG_CHECKING(for Python library) + if test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.so"; then + PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS" + AC_MSG_RESULT(found) + elif test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.a"; then + PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS" + AC_MSG_RESULT(found) + elif test -r "$PYTHON_SYSPREFIX/lib/libpython$PYTHON_VERSION.so"; then + PYTHON_LFLAGS="-L$PYTHON_SYSPREFIX/lib/ $PYTHON_LFLAGS" + AC_MSG_RESULT(found) + else + AC_MSG_WARN([ *** Python library couldn't be found on your system. *** Try to install it with your software package manager. +*** WeeChat will be built without Python support.]) + enable_python="no" + not_found="$not_found python" + fi + else + AC_MSG_WARN([ +*** Python header files couldn't be found on your system. +*** Try to install them with your software package manager. *** WeeChat will be built without Python support.]) enable_python="no" not_found="$not_found python" fi - else - AC_MSG_WARN([ -*** Python header files couldn't be found on your system. -*** Try to install them with your software package manager. -*** WeeChat will be built without Python support.]) - enable_python="no" - not_found="$not_found python" fi fi else