diff --git a/configure.ac b/configure.ac index d260ce50..d75ba114 100644 --- a/configure.ac +++ b/configure.ac @@ -98,10 +98,9 @@ elif test "x$enable_python_plugins" != xno; then AC_MSG_NOTICE([Symlinking Python.framework to $PYTHON_FRAMEWORK]) rm -f Python.framework ln -s $PYTHON_FRAMEWORK Python.framework ]) - AC_CHECK_PROG(PYTHON_CONFIG_EXISTS, python-config, yes, no) - AC_CHECK_PROG(PYTHON3_CONFIG_EXISTS, python3-config, yes, no) + PKG_CHECK_MODULES([python], [python-embed], [PYTHON_CONFIG_EXISTS=yes], [PYTHON_CONFIG_EXISTS=no]) + PKG_CHECK_MODULES([python], [python3-embed], [PYTHON3_CONFIG_EXISTS=yes; AC_DEFINE(PY_IS_PYTHON3, [1], [Is Python version 3])], [PYTHON3_CONFIG_EXISTS=no]) if test "$PYTHON_CONFIG_EXISTS" = "yes" || test "$PYTHON3_CONFIG_EXISTS" = "yes"; then - AX_PYTHON_DEVEL AM_CONDITIONAL([BUILD_PYTHON_API], [true]) AC_DEFINE([HAVE_PYTHON], [1], [Python support]) else @@ -357,9 +356,9 @@ AS_IF([test "x$PLATFORM" = xosx], [AM_CFLAGS="$AM_CFLAGS -Qunused-arguments"]) AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS $glib_CFLAGS $gio_CFLAGS $curl_CFLAGS ${SQLITE_CFLAGS}" -AM_CFLAGS="$AM_CFLAGS $libnotify_CFLAGS ${GTK_CFLAGS} $PYTHON_CPPFLAGS" dnl https://bugs.python.org/issue15018 +AM_CFLAGS="$AM_CFLAGS $libnotify_CFLAGS ${GTK_CFLAGS} $python_CFLAGS" dnl https://bugs.python.org/issue15018 AM_CFLAGS="$AM_CFLAGS -DTHEMES_PATH=\"\\\"$THEMES_PATH\\\"\" -DICONS_PATH=\"\\\"$ICONS_PATH\\\"\" -DGLOBAL_PYTHON_PLUGINS_PATH=\"\\\"$GLOBAL_PYTHON_PLUGINS_PATH\\\"\" -DGLOBAL_C_PLUGINS_PATH=\"\\\"$GLOBAL_C_PLUGINS_PATH\\\"\"" -LIBS="$glib_LIBS $gio_LIBS $PTHREAD_LIBS $curl_LIBS $libnotify_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_LDFLAGS ${GTK_LIBS} ${SQLITE_LIBS} $LIBS" +LIBS="$glib_LIBS $gio_LIBS $PTHREAD_LIBS $curl_LIBS $libnotify_LIBS $python_LIBS ${GTK_LIBS} ${SQLITE_LIBS} $LIBS" AC_SUBST(AM_LDFLAGS) AC_SUBST(AM_CFLAGS) diff --git a/src/plugins/python_api.c b/src/plugins/python_api.c index 90e33579..0b91cf70 100644 --- a/src/plugins/python_api.c +++ b/src/plugins/python_api.c @@ -1575,7 +1575,7 @@ static PyMethodDef apiMethods[] = { { NULL, NULL, 0, NULL } }; -#if PY_MAJOR_VERSION >= 3 +#ifdef PY_IS_PYTHON3 static struct PyModuleDef profModule = { PyModuleDef_HEAD_INIT, "prof", @@ -1588,7 +1588,7 @@ static struct PyModuleDef profModule = { PyMODINIT_FUNC python_api_init(void) { -#if PY_MAJOR_VERSION >= 3 +#ifdef PY_IS_PYTHON3 PyObject* result = PyModule_Create(&profModule); if (!result) { log_debug("Failed to initialise prof module"); @@ -1604,7 +1604,7 @@ python_api_init(void) void python_init_prof(void) { -#if PY_MAJOR_VERSION >= 3 +#ifdef PY_IS_PYTHON3 PyImport_AppendInittab("prof", python_api_init); Py_Initialize(); PyEval_InitThreads(); @@ -1640,7 +1640,7 @@ python_str_or_unicode_to_string(void* obj) return NULL; } -#if PY_MAJOR_VERSION >= 3 +#ifdef PY_IS_PYTHON3 if (PyUnicode_Check(pyobj)) { PyObject* utf8_str = PyUnicode_AsUTF8String(pyobj); char* result = strdup(PyBytes_AS_STRING(utf8_str)); diff --git a/src/plugins/python_plugins.c b/src/plugins/python_plugins.c index 94c77e99..c32d177c 100644 --- a/src/plugins/python_plugins.c +++ b/src/plugins/python_plugins.c @@ -908,7 +908,7 @@ _handle_string_or_none_result(ProfPlugin* plugin, PyObject* result, char* hook) _python_undefined_error(plugin, hook, "string, unicode or None"); return NULL; } -#if PY_MAJOR_VERSION >= 3 +#ifdef PY_IS_PYTHON3 if (result != Py_None && !PyUnicode_Check(result) && !PyBytes_Check(result)) { allow_python_threads(); _python_type_error(plugin, hook, "string, unicode or None");