[gimp/wip/akkana/gtk3-python3: 1/2] Re-enable Python in the build, but requiring Python >3.6.0 since we'll need that for gobject introsp
- From: Akkana Peck <akkana src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/wip/akkana/gtk3-python3: 1/2] Re-enable Python in the build, but requiring Python >3.6.0 since we'll need that for gobject introsp
- Date: Tue, 16 Jul 2019 14:49:32 +0000 (UTC)
commit 60e40571cd3fb535f9b868e5087b3be5e99ee73d
Author: Akkana Peck <akkana shallowsky com>
Date: Tue Jun 12 14:17:18 2018 -0600
Re-enable Python in the build, but requiring Python >3.6.0 since we'll need that for gobject introspection
acinclude.m4 | 2 +-
configure.ac | 46 ++++-----
m4macros/python3dev.m4 | 248 +++++++++++++++++++++++++++++++++++++++++++++++++
plug-ins/Makefile.am | 2 +-
4 files changed, 274 insertions(+), 24 deletions(-)
---
diff --git a/acinclude.m4 b/acinclude.m4
index 2984fe97cf..4b36ac0863 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -6,4 +6,4 @@ m4_include([m4macros/ax_prog_cc_for_build.m4])
m4_include([m4macros/ax_prog_perl_version.m4])
m4_include([m4macros/binreloc.m4])
m4_include([m4macros/detectcflags.m4])
-m4_include([m4macros/pythondev.m4])
+m4_include([m4macros/python3dev.m4])
diff --git a/configure.ac b/configure.ac
index a02fa40003..924782b71b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -78,7 +78,8 @@ m4_define([openjpeg_required_version], [2.1.0])
m4_define([gtk_mac_integration_required_version], [2.0.0])
m4_define([intltool_required_version], [0.40.1])
m4_define([perl_required_version], [5.10.0])
-m4_define([python2_required_version], [2.5.0])
+# m4_define([python2_required_version], [2.5.0])
+m4_define([python3_required_version], [3.6.0])
m4_define([webp_required_version], [0.6.0])
m4_define([libheif_required_version], [1.1.0])
@@ -165,7 +166,8 @@ POPPLER_DATA_REQUIRED_VERSION=poppler_data_required_version
OPENEXR_REQUIRED_VERSION=openexr_required_version
INTLTOOL_REQUIRED_VERSION=intltool_required_version
PERL_REQUIRED_VERSION=perl_required_version
-PYTHON2_REQUIRED_VERSION=python2_required_version
+# PYTHON2_REQUIRED_VERSION=python2_required_version
+PYTHON3_REQUIRED_VERSION=python3_required_version
WEBP_REQUIRED_VERSION=webp_required_version
LIBHEIF_REQUIRED_VERSION=libheif_required_version
XGETTEXT_RECOMMENDED_VERSION=xgettext_recommended_version
@@ -196,7 +198,7 @@ AC_SUBST(POPPLER_DATA_REQUIRED_VERSION)
AC_SUBST(OPENEXR_REQUIRED_VERSION)
AC_SUBST(INTLTOOL_REQUIRED_VERSION)
AC_SUBST(PERL_REQUIRED_VERSION)
-AC_SUBST(PYTHON2_REQUIRED_VERSION)
+AC_SUBST(PYTHON3_REQUIRED_VERSION)
AC_SUBST(WEBP_REQUIRED_VERSION)
AC_SUBST(LIBHEIF_REQUIRED_VERSION)
AC_SUBST(XGETTEXT_RECOMMENDED_VERSION)
@@ -2040,9 +2042,9 @@ m4_define([pycheck_error], [
if test "x$enable_python" != xno; then
enable_python="yes"
# check for Python
- AM_PATH_PYTHON2(python2_required_version,,
- [pycheck_error([Python 2 (python2_required_version or newer)], [it])])
- AM_CHECK_PYTHON_HEADERS(, [pycheck_error([Python 2 headers], [them])])
+ AM_PATH_PYTHON(python3_required_version,,
+ [pycheck_error([Python 3 (python3_required_version or newer)], [it])])
+ AM_CHECK_PYTHON_HEADERS(, [pycheck_error([Python 3 headers], [them])])
# Win32 needs all symbols resolved for linking, even for DLLs
# Assume the link library is in $exec_prefix/libs
@@ -2061,19 +2063,21 @@ if test "x$enable_python" != xno; then
AC_SUBST(PYLINK_LIBS)
AC_SUBST(PYBIN_PATH)
- # check for PyGTK
- PKG_CHECK_MODULES(PYGTK, pygtk-2.0 >= pygtk_required_version,,
- [pycheck_error([PyGTK pygtk_required_version or newer], [it])])
+ # # check for PyGTK
+ # PKG_CHECK_MODULES(PYGTK, pygtk-2.0 >= pygtk_required_version,,
+ # [pycheck_error([PyGTK pygtk_required_version or newer], [it])])
- AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, no)
- if test "x$PYGTK_CODEGEN" = xno; then
- pycheck_error([pygtk-codegen-2.0 script], [it])
- fi
+ # AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, no)
+ # if test "x$PYGTK_CODEGEN" = xno; then
+ # pycheck_error([pygtk-codegen-2.0 script], [it])
+ # fi
+
+ # AC_MSG_CHECKING(for pygtk defs)
+ # PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0`
+ # AC_SUBST(PYGTK_DEFSDIR)
+ # AC_MSG_RESULT($PYGTK_DEFSDIR)
- AC_MSG_CHECKING(for pygtk defs)
- PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0`
- AC_SUBST(PYGTK_DEFSDIR)
- AC_MSG_RESULT($PYGTK_DEFSDIR)
+ # XXX Check here for something related to Python gobject-introspection & GTK3
PKG_CHECK_MODULES(PYCAIRO, pycairo >= pycairo_required_version,,
[pycheck_error([PyCairo pycairo_required_version or newer], [it])])
@@ -2646,10 +2650,8 @@ plug-ins/map-object/Makefile
plug-ins/metadata/Makefile
plug-ins/pagecurl/Makefile
plug-ins/print/Makefile
-]
-dnl plug-ins/pygimp/Makefile
-dnl plug-ins/pygimp/plug-ins/Makefile
-[
+plug-ins/pygimp/Makefile
+plug-ins/pygimp/plug-ins/Makefile
plug-ins/screenshot/Makefile
plug-ins/script-fu/Makefile
plug-ins/script-fu/ftx/Makefile
@@ -2811,7 +2813,7 @@ Optional Plug-Ins:
Heif: $have_libheif
PDF (export): $have_cairo_pdf
Print: $enable_print
- Python 2: $enable_python
+ Python 3: $enable_python
TWAIN (Win32): $os_win32
Webpage: $have_webkit
WMF: $have_libwmf
diff --git a/m4macros/python3dev.m4 b/m4macros/python3dev.m4
new file mode 100644
index 0000000000..14e22c39cb
--- /dev/null
+++ b/m4macros/python3dev.m4
@@ -0,0 +1,248 @@
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009,
+# 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PATH_PYTHON2([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# ---------------------------------------------------------------------------
+# Adds support for distributing Python modules and packages. To
+# install modules, copy them to $(pythondir), using the python_PYTHON
+# automake variable. To install a package with the same name as the
+# automake package, install to $(pkgpythondir), or use the
+# pkgpython_PYTHON automake variable.
+#
+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
+# locations to install python extension modules (shared libraries).
+# Another macro is required to find the appropriate flags to compile
+# extension modules.
+#
+# If your package is configured with a different prefix to python,
+# users will have to add the install directory to the PYTHONPATH
+# environment variable, or create a .pth file (see the python
+# documentation for details).
+#
+# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON2 will
+# cause an error if the version of python installed on the system
+# doesn't meet the requirement. MINIMUM-VERSION should consist of
+# numbers and dots only.
+#
+# AM_PATH_PYTHON3 is based on AM_PATH_PYTHON but will search only
+# Python 3 locations.
+AC_DEFUN([AM_PATH_PYTHON3],
+ [
+ dnl Find a Python3 interpreter.
+ m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
+[python3 python])
+
+ AC_ARG_VAR([PYTHON], [the Python interpreter])
+
+ m4_if([$1],[],[
+ dnl No version check is needed.
+ # Find any Python interpreter.
+ if test -z "$PYTHON"; then
+ AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
+ fi
+ am_display_PYTHON=python
+ ], [
+ dnl A version check is needed.
+ if test -n "$PYTHON"; then
+ # If the user set $PYTHON, use it and don't search something else.
+ AC_MSG_CHECKING([whether $PYTHON version >= $1])
+ AM_PYTHON3_CHECK_VERSION([$PYTHON], [$1],
+ [AC_MSG_RESULT(yes)],
+ [AC_MSG_ERROR(too old)])
+ am_display_PYTHON=$PYTHON
+ else
+ # Otherwise, try each interpreter until we find one that satisfies
+ # VERSION.
+ AC_CACHE_CHECK([for a Python 3 interpreter with version >= $1],
+ [am_cv_pathless_PYTHON],[
+ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
+ test "$am_cv_pathless_PYTHON" = none && break
+ AM_PYTHON3_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+ done])
+ # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+ if test "$am_cv_pathless_PYTHON" = none; then
+ PYTHON=:
+ else
+ AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
+ fi
+ am_display_PYTHON=$am_cv_pathless_PYTHON
+ fi
+ ])
+
+ if test "$PYTHON" = :; then
+ dnl Run any user-specified action, or abort.
+ m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
+ else
+
+ dnl Query Python for its version number. Getting [:3] seems to be
+ dnl the best way to do this; it's what "site.py" does in the standard
+ dnl library.
+
+ AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
+ [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
+ AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
+ dnl Use the values of $prefix and $exec_prefix for the corresponding
+ dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
+ dnl distinct variables so they can be overridden if need be. However,
+ dnl general consensus is that you shouldn't need this ability.
+
+ AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+ AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+
+ dnl At times (like when building shared libraries) you may want
+ dnl to know which OS platform Python thinks this is.
+
+ AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+ [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
+ AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+
+
+ dnl Set up 4 directories:
+
+ dnl pythondir -- where to install python scripts. This is the
+ dnl site-packages directory, not the python standard library
+ dnl directory like in previous automake betas. This behavior
+ dnl is more consistent with lispdir.m4 for example.
+ dnl Query distutils for this directory.
+ AC_CACHE_CHECK([for $am_display_PYTHON script directory],
+ [am_cv_python_pythondir],
+ [if test "x$prefix" = xNONE
+ then
+ am_py_prefix=$ac_default_prefix
+ else
+ am_py_prefix=$prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig;
sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
+ esac
+ ])
+ AC_SUBST([pythondir], [$am_cv_python_pythondir])
+
+ dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
+ dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
+ dnl more consistent with the rest of automake.
+
+ AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+
+ dnl pyexecdir -- directory for installing python extension modules
+ dnl (shared libraries)
+ dnl Query distutils for this directory.
+ AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
+ [am_cv_python_pyexecdir],
+ [if test "x$exec_prefix" = xNONE
+ then
+ am_py_exec_prefix=$am_py_prefix
+ else
+ am_py_exec_prefix=$exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig;
sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed
"s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
+ esac
+ ])
+ AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+
+ dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+
+ AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+
+ dnl Run any user-specified action.
+ $2
+ fi
+
+])
+
+
+# AM_PYTHON3_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ---------------------------------------------------------------------------
+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION
+# and version == 3.
+# Run ACTION-IF-FALSE otherwise.
+# This test uses sys.hexversion instead of the string equivalent (first
+# word of sys.version), in order to cope with versions such as 2.2c1.
+# This supports Python 3.0 or higher.
+#
+# Based on AM_PYTHON_CHECK_VERSION but for Python 3 only.
+AC_DEFUN([AM_PYTHON3_CHECK_VERSION],
+ [prog="import sys
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+# minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
+minver = list(map(int, '$2'.split('.')))
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator.
+# python2dev had minver[[i]] but that raises
+# TypeError: list indices must be integers or slices, not list
+# for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+for v in minver: minverhex = (minverhex << 8) + v
+# sys.version_info.major only available since Python 2.7.
+# use sys.version_info[0] instead.
+# Double the square brackets for M4 syntax.
+# sys.exit(sys.version_info[[0]] != 3 or sys.hexversion < minverhex)"
+sys.exit(sys.version_info[[0]] != 3 or (sys.hexversion >> 8) < minverhex)"
+ AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
+
+
+
+## Find the install dirs for the python installation.
+## By James Henstridge
+
+dnl a macro to check for ability to create python extensions
+dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON3])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl Win32 doesn't have a versioned directory for headers
+if test "$PYTHON_PLATFORM" != "win32"; then
+ py_versiondir="/python${PYTHON_VERSION}"
+else
+ py_versiondir=
+fi
+dnl deduce PYTHON_INCLUDES
+py_prefix=`$PYTHON -c "import sys; print(sys.prefix)"`
+py_exec_prefix=`$PYTHON -c "import sys; print(sys.exec_prefix)"`
+PYTHON_INCLUDES="-I${py_prefix}/include${py_versiondir}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include${py_versiondir}"
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
diff --git a/plug-ins/Makefile.am b/plug-ins/Makefile.am
index 36dfc0d7db..76b92b13cb 100644
--- a/plug-ins/Makefile.am
+++ b/plug-ins/Makefile.am
@@ -26,7 +26,7 @@ endif
SUBDIRS = \
script-fu \
-## $(pygimp) \
+ $(pygimp) \
file-bmp \
$(file_darktable) \
$(file_exr) \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]