]> granicus.if.org Git - graphviz/commitdiff
python -> python2 and python3 (incomplete)
authorJohn Ellson <ellson@research.att.com>
Tue, 18 Jul 2017 20:26:11 +0000 (16:26 -0400)
committerJohn Ellson <ellson@research.att.com>
Tue, 18 Jul 2017 20:26:11 +0000 (16:26 -0400)
config/config_python.py
configure.ac
graphviz.spec.in
tclpkg/Makefile.am
tclpkg/gv/Makefile.am
tclpkg/gv/gv_doc_langs.tcl

index b7470458364b2a89174c5ef9966ed02783b408ca..ac00e21bb00c8dd3d6bc1e4e0828b35d7fdb533d 100644 (file)
@@ -2,11 +2,11 @@ import sys
 from distutils import sysconfig
 
 if sys.argv[1] == "archlib":
-    print sysconfig.get_python_lib(1,1)
+    print(sysconfig.get_python_lib(1,1))
 elif sys.argv[1] == "lib":
-    print sysconfig.get_python_lib(0,1)
+    print(sysconfig.get_python_lib(0,1))
 elif sys.argv[1] == "archsitelib":
-    print sysconfig.get_python_lib(1,0)
+    print(sysconfig.get_python_lib(1,0))
 elif sys.argv[1] == "sitelib":
-    print sysconfig.get_python_lib(0,0)
+    print(sysconfig.get_python_lib(0,0))
 
index 21c769b53e910cc6b3646e2f573b08ff9eaf6c27..9dab60f40e3ff2f360d5d21b50692c92ba4e6ad1 100644 (file)
@@ -847,23 +847,21 @@ else
         fi
 
         if test "x$LUA_INCLUDES" = "x" -a "x$LUA_LIBS" = "x" ; then
-            PKGCONFIG=""
-            AC_CHECK_PROGS(PKGCONFIG, pkg-config)
-            if test "x$PKGCONFIG" != "x"; then
+            if test "x$PKG_CONFIG" != "x"; then
                AC_MSG_CHECKING(for Lua headers and libraries with pkg-config)
                echo
                for l in "$lua_suffix" "" "52" "5.2" "51" "5.1" "50" "5.0" ; do
-                   pkgconfig_lua_found=`$PKGCONFIG --exists lua$l 2>/dev/null`
+                   pkgconfig_lua_found=`$PKG_CONFIG --exists lua$l 2>/dev/null`
                    if test "x$?" = "x0" ; then
-                       LUA_VERSION=`$PKGCONFIG --modversion lua$l`
-                        LUA_INCLUDES="$LUA_CFLAGS "`$PKGCONFIG --cflags lua$l`
-                        LUA_LIBS="$LUA_LFLAGS "`$PKGCONFIG --libs lua$l`
-                       LUA_INSTALL_DIR="/usr/lib$LIBPOSTFIX/lua/`$PKGCONFIG --variable=V lua`"
+                       LUA_VERSION=`$PKG_CONFIG --modversion lua$l`
+                        LUA_INCLUDES="$LUA_CFLAGS "`$PKG_CONFIG --cflags lua$l`
+                        LUA_LIBS="$LUA_LFLAGS "`$PKG_CONFIG --libs lua$l`
+                       LUA_INSTALL_DIR="/usr/lib$LIBPOSTFIX/lua/`$PKG_CONFIG --variable=V lua`"
 
-                       pkgconfig_lualib_found=`$PKGCONFIG --exists lualib$l 2>/dev/null`
+                       pkgconfig_lualib_found=`$PKG_CONFIG --exists lualib$l 2>/dev/null`
                        if test  "x$?" = "x0"; then
-                          LUA_INCLUDES="$LUA_CFLAGS "`$PKGCONFIG --cflags lualib$l`
-                          LUA_LIBS="$LUA_LFLAGS "`$PKGCONFIG --libs lualib$l`
+                          LUA_INCLUDES="$LUA_CFLAGS "`$PKG_CONFIG --cflags lualib$l`
+                          LUA_LIBS="$LUA_LFLAGS "`$PKG_CONFIG --libs lualib$l`
                        fi
                         break
                     fi
@@ -1110,11 +1108,11 @@ dnl -----------------------------------
 dnl INCLUDES and LIBS for PYTHON
 
 AC_ARG_ENABLE(python,
-  [AS_HELP_STRING([--enable-python=yes],[python language bindings])],
-  [], [enable_python=yes])
+  [AS_HELP_STRING([--enable-python=no],[python language bindings])],
+  [], [enable_python=no])
 
 if test "x$enable_python" != "xyes"; then
-  use_python="No (disabled)"
+  use_python="No (disabled by default - use explicit python2 or python3)"
 else
   if test "x$use_swig" != "xYes"; then
     use_python="No (swig not available)"
@@ -1171,6 +1169,141 @@ else
 fi
 AM_CONDITIONAL(WITH_PYTHON, [test "x$use_python" = "xYes"])
 
+dnl -----------------------------------
+dnl INCLUDES and LIBS for PYTHON2
+
+AC_ARG_ENABLE(python2,
+  [AS_HELP_STRING([--enable-python2=yes],[python2 language bindings])],
+  [], [enable_python2=yes])
+
+if test "x$enable_python2" != "xyes"; then
+  use_python2="No (disabled)"
+else
+  if test "x$use_swig" != "xYes"; then
+    use_python2="No (swig not available)"
+  else
+    if test `$SWIG -help 2>&1 | $EGREP -c '\-python *- Generate'` = 0; then
+      use_python="No (swig does not support -python option)"
+    else
+      AC_CHECK_PROG(PYTHON2,python2,python2)
+      if test "x$PYTHON2" = "x"; then
+        use_python2="No (python2 not available)"
+      else
+        PYTHON2_VERSION=`$PYTHON2 -c "import sys; print('%d.%d' % sys.version_info[[0:2]])"`
+        if test "x$PYTHON2_VERSION" = "x"; then
+          PYTHON2=
+        else
+          PYTHON2_VERSION_MAJOR=`echo $PYTHON2_VERSION | cut -d '.' -f 1`
+          PYTHON2_VERSION_MINOR=`echo $PYTHON2_VERSION | cut -d '.' -f 2`
+          PYTHON2_VERSION_SHORT=$PYTHON2_VERSION_MAJOR.$PYTHON2_VERSION_MINOR
+          if test $PYTHON2_VERSION_MAJOR -lt 3; then
+            if test $PYTHON2_VERSION_MAJOR -lt 2; then
+             PYTHON2=
+            else
+              if test $PYTHON2_VERSION_MINOR -lt 3; then
+               PYTHON2=
+              fi
+            fi
+          fi
+        fi
+      fi
+      if test "x$PYTHON2" = "x"; then
+       use_python2="No (python2 is too old)"
+      else
+        if test "x$PKG_CONFIG" != "x"; then
+          AC_MSG_CHECKING(for Python2 headers and libraries with pkg-config)
+          pkgconfig_python2_found=`$PKG_CONFIG --exists python-$PYTHON2_VERSION 2>/dev/null`
+          if test "x$?" = "x0" ; then
+               PYTHON2_INCLUDES="$PYTHON2_CFLAGS "`$PKG_CONFIG --cflags python-$PYTHON2_VERSION`
+               PYTHON2_LIBS="$PYTHON2_LFLAGS "`$PKG_CONFIG --libs python-$PYTHON2_VERSION`
+          fi
+        fi
+        PYTHON2_PREFIX=`$PYTHON2 -c "import sys; print(sys.prefix)"`
+        PYTHON2_INSTALL_DIR="`$PYTHON2 $srcdir/config/config_python.py archsitelib`"
+        save_CPPFLAGS=$CPPFLAGS
+        CPPFLAGS=$save_CPPFLAGS
+       if test "x$PYTHON2" != "x"; then
+         use_python2="Yes"
+          AC_SUBST([PYTHON2_INSTALL_DIR])
+          AC_SUBST([PYTHON2_INCLUDES])
+          AC_SUBST([PYTHON2_LIBS])
+        fi
+      fi
+    fi
+  fi
+fi
+AM_CONDITIONAL(WITH_PYTHON2, [test "x$use_python2" = "xYes"])
+
+dnl -----------------------------------
+dnl INCLUDES and LIBS for PYTHON3
+
+AC_ARG_ENABLE(python3,
+  [AS_HELP_STRING([--enable-python3=yes],[python3 language bindings])],
+  [], [enable_python3=yes])
+
+if test "x$enable_python3" != "xyes"; then
+  use_python3="No (disabled)"
+else
+  if test "x$use_swig" != "xYes"; then
+    use_python3="No (swig not available)"
+  else
+    if test `$SWIG -help 2>&1 | $EGREP -c '\-python *- Generate'` = 0; then
+      use_python="No (swig does not support -python option)"
+    else
+      AC_CHECK_PROG(PYTHON3,python3,python3)
+      if test "x$PYTHON3" = "x"; then
+        use_python3="No (python3 not available)"
+      else
+        PYTHON3_VERSION=`$PYTHON3 -c "import sys; print('%d.%d' % sys.version_info[[0:2]])"`
+        if test "x$PYTHON3_VERSION" = "x"; then
+          PYTHON3=
+        else
+          PYTHON3_VERSION_MAJOR=`echo $PYTHON3_VERSION | cut -d '.' -f 1`
+          PYTHON3_VERSION_MINOR=`echo $PYTHON3_VERSION | cut -d '.' -f 2`
+          PYTHON3_VERSION_SHORT=$PYTHON3_VERSION_MAJOR.$PYTHON3_VERSION_MINOR
+          if test $PYTHON3_VERSION_MAJOR -lt 3; then
+            if test $PYTHON3_VERSION_MAJOR -lt 2; then
+             PYTHON3=
+            else
+              if test $PYTHON3_VERSION_MINOR -lt 3; then
+               PYTHON3=
+              fi
+            fi
+          fi
+        fi
+      fi
+      if test "x$PYTHON3" = "x"; then
+       use_python3="No (python3 is too old)"
+      else
+        if test "x$PKG_CONFIG" != "x"; then
+          AC_MSG_CHECKING(for Python3 headers and libraries with pkg-config)
+          pkgconfig_python3_found=`$PKG_CONFIG --exists python-$PYTHON3_VERSION 2>/dev/null`
+          if test "x$?" = "x0" ; then
+               PYTHON3_INCLUDES="$PYTHON3_CFLAGS "`$PKG_CONFIG --cflags python-$PYTHON3_VERSION`
+               PYTHON3_LIBS="$PYTHON3_LFLAGS "`$PKG_CONFIG --libs python-$PYTHON3_VERSION`
+          fi
+        fi
+        PYTHON3_PREFIX=`$PYTHON3 -c "import sys; print(sys.prefix)"`
+        PYTHON3_INSTALL_DIR="`$PYTHON3 $srcdir/config/config_python.py archsitelib`"
+        save_CPPFLAGS=$CPPFLAGS
+        CPPFLAGS="$CPPFLAGS $PYTHON3_INCLUDES"
+        AC_CHECK_HEADER(Python.h,,[
+          use_python3="No (missing header)"
+          PYTHON3=
+        ])
+        CPPFLAGS=$save_CPPFLAGS
+       if test "x$PYTHON3" != "x"; then
+         use_python3="Yes"
+          AC_SUBST([PYTHON3_INSTALL_DIR])
+          AC_SUBST([PYTHON3_INCLUDES])
+          AC_SUBST([PYTHON3_LIBS])
+        fi
+      fi
+    fi
+  fi
+fi
+AM_CONDITIONAL(WITH_PYTHON3, [test "x$use_python3" = "xYes"])
+
 dnl -----------------------------------
 dnl INCLUDES and LIBS for PYTHON23
 
@@ -3292,6 +3425,8 @@ echo "  gv_ocaml:      $use_ocaml"
 echo "  gv_perl:       $use_perl"
 echo "  gv_php:        $use_php"
 echo "  gv_python:     $use_python"
+echo "  gv_python2:    $use_python2"
+echo "  gv_python3:    $use_python3"
 echo "  gv_python23:   $use_python23"
 echo "  gv_python24:   $use_python24"
 echo "  gv_python25:   $use_python25"
index b3850d9bf86aad73c957d4c1b28c8c56ccdd9ae3..27e114983d25340a440b08ab79cc22a4c264a016 100644 (file)
@@ -112,8 +112,6 @@ BuildRequires: perl-devel perl-ExtUtils-Embed
 BuildRequires: ruby ruby-devel
 %define GUILE 1
 BuildRequires: guile-devel
-%define PYTHON 1
-BuildRequires: python python-devel
 %define JAVA 1
 BuildRequires: java-devel
 %define _QT 1
@@ -155,20 +153,35 @@ BuildRequires: poppler-glib-devel
 %define R_LANG 1
 BuildRequires: R-devel swig >= 1.3.33 perl-libs
 %endif
+
 %if %fedora >= 16
 %define WEBP 1
 BuildRequires: libwebp-devel
 %endif
+
 %if %fedora >= 19
 %define SEPARATE_LICENSE 1
 %endif
+
 %if %fedora >= 21
 %define _GO 1
 BuildRequires: golang >= 1.2 gcc-go swig >= 3.0.2
 %endif
+
 %define PHP 1
-BuildRequires: php-devel
-# disable PHP7 in fc25 until swig supports it - requires swig-3.0.11
+BuildRequires: php-devel swig >= 3.0.11
+
+%if %fedora < 23
+%define PYTHON 1
+BuildRequires: python python-devel
+%endif
+%if %fedora >= 23
+%define PYTHON2 1
+BuildRequires: python2 python2-devel
+%define PYTHON3 1
+BuildRequires: python3 python3-devel
+%endif
+
 %endif
 
 # What a meal PHP makes of versioning !!!
@@ -733,11 +746,53 @@ Python extension for graphviz.
 %defattr(-,root,root,-)
 %{_libdir}/python*/*
 %{_datadir}/graphviz/demo/*.py*
-%{_mandir}/man3/*.3python.*
+%{_mandir}/man3/gv.3python
 %exclude %{_libdir}/graphviz/python/*.so
 %exclude %{_libdir}/graphviz/python/*.py*
 %endif
 
+#-- graphviz-lang-python2 rpm -------------------------------------------
+%if 0%{?PYTHON2}
+%package lang-python2
+Group:          Applications/Multimedia
+Summary:        Python extension for graphviz
+Requires:       %{name} = %{version}-%{release}, python2
+Obsoletes:     %{name}-python
+Obsoletes:     %{name}-lang-python
+
+%description lang-python2
+Python extension for graphviz.
+
+%files lang-python2
+%defattr(-,root,root,-)
+%{_libdir}/python2*/*
+# %{_datadir}/graphviz/demo/*.py*
+%{_mandir}/man3/gv.3python2
+%exclude %{_libdir}/graphviz/python2/*.so
+%exclude %{_libdir}/graphviz/python2/*.py*
+%endif
+
+#-- graphviz-lang-python3 rpm -------------------------------------------
+%if 0%{?PYTHON3}
+%package lang-python3
+Group:          Applications/Multimedia
+Summary:        Python extension for graphviz
+Requires:       %{name} = %{version}-%{release}, python3
+Obsoletes:     %{name}-python
+Obsoletes:     %{name}-lang-python
+
+%description lang-python3
+Python extension for graphviz.
+
+%files lang-python3
+%defattr(-,root,root,-)
+%{_libdir}/python3*/*
+#  %{_datadir}/graphviz/demo/*.py*
+%{_mandir}/man3/gv.3python3
+%exclude %{_libdir}/graphviz/python3/*.so
+%exclude %{_libdir}/graphviz/python3/*.py*
+%endif
+
 #-- graphviz-lang-R rpm ---------------------------------------------
 %if 0%{?R_LANG}
 %package lang-R
@@ -910,6 +965,8 @@ CFLAGS="$RPM_OPT_FLAGS" \
         --enable-perl%{!?PERL:=no} \
         --enable-php%{!?PHP:=no} \
         --enable-python%{!?PYTHON:=no} \
+        --enable-python2%{!?PYTHON2:=no} \
+        --enable-python3%{!?PYTHON3:=no} \
         --enable-r%{!?R_LANG:=no} \
         --enable-ruby%{!?RUBY:=no} \
         --enable-tcl%{!?TCL:=no} \
index 1da89f948de007921e37b7843e6bf23543cd3408..b34c50da3f2a3881d1207bfc748630a7c1db04b1 100644 (file)
@@ -11,6 +11,8 @@ pkgocamldir = $(pkglibdir)/ocaml
 pkgperldir = $(pkglibdir)/perl
 pkgphpdir = $(pkglibdir)/php
 pkgpythondir = $(pkglibdir)/python
+pkgpython2dir = $(pkglibdir)/python2
+pkgpython3dir = $(pkglibdir)/python3
 pkgpython23dir = $(pkglibdir)/python23
 pkgpython24dir = $(pkglibdir)/python24
 pkgpython25dir = $(pkglibdir)/python25
@@ -87,6 +89,28 @@ if WITH_PYTHON
                echo "Skipping system installation of python binding."; \
        fi
 endif
+if WITH_PYTHON2
+       -mkdir -p $(DESTDIR)@PYTHON2_INSTALL_DIR@;
+       if test -w $(DESTDIR)@PYTHON2_INSTALL_DIR@; then \
+               (cd $(DESTDIR)@PYTHON2_INSTALL_DIR@; \
+                       cp -f $(DESTDIR)$(pkgpython2dir)/libgv_python2.so _gv.so; \
+                       cp -f $(DESTDIR)$(pkgpython2dir)/gv.py gv.py;) \
+       else \
+               echo "Warning: @PYTHON3_INSTALL_DIR@ is not writable."; \
+               echo "Skipping system installation of python2 binding."; \
+       fi
+endif
+if WITH_PYTHON3
+       -mkdir -p $(DESTDIR)@PYTHON3_INSTALL_DIR@;
+       if test -w $(DESTDIR)@PYTHON3_INSTALL_DIR@; then \
+               (cd $(DESTDIR)@PYTHON3_INSTALL_DIR@; \
+                       cp -f $(DESTDIR)$(pkgpython3dir)/libgv_python3.so _gv.so; \
+                       cp -f $(DESTDIR)$(pkgpython3dir)/gv.py gv.py;) \
+       else \
+               echo "Warning: @PYTHON3_INSTALL_DIR@ is not writable."; \
+               echo "Skipping system installation of python3 binding."; \
+       fi
+endif
 if WITH_PYTHON23
        -mkdir -p $(DESTDIR)@PYTHON23_INSTALL_DIR@;
        if test -w $(DESTDIR)@PYTHON23_INSTALL_DIR@; then \
@@ -180,6 +204,10 @@ uninstall-hook:
        -rm -rf $(DESTDIR)@PHP_INSTALL_DIR@/gv.so $(DESTDIR)@PHP_INSTALL_DATADIR@/gv.php;
        -rm -rf $(DESTDIR)$(pkgpythondir);
        -rm -rf $(DESTDIR)@PYTHON_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
+       -rm -rf $(DESTDIR)$(pkgpython2dir);
+       -rm -rf $(DESTDIR)@PYTHON2_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON2_INSTALL_DIR@/gv.py;
+       -rm -rf $(DESTDIR)$(pkgpython3dir);
+       -rm -rf $(DESTDIR)@PYTHON3_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON3_INSTALL_DIR@/gv.py;
        -rm -rf $(DESTDIR)$(pkgpython23dir);
        -rm -rf $(DESTDIR)@PYTHON23_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
        -rm -rf $(DESTDIR)$(pkgpython24dir);
index 0b0b1f1347ff7ac5fd60dd72fd00a8ac03ab73eb..419debf810a1ec8ad071bfabd75b3c6de544b0d8 100644 (file)
@@ -196,6 +196,28 @@ $(PYTHON_data): gv_python.cpp
 gv_python.cpp: gv.i
        $(SWIG) -c++ -python -o gv_python.cpp $(srcdir)/gv.i
 
+pkgpython2dir = $(pkglibdir)/python2
+PYTHON2_data = gv.py
+nodist_libgv_python2_la_SOURCES = gv_python2.cpp $(PYTHON2_data)
+libgv_python2_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
+libgv_python2_la_LIBADD = $(BASELIBS) $(PYTHON2_LIBS)
+libgv_python2_la_LDFLAGS = -module -avoid-version
+libgv_python2_la_CPPFLAGS = $(BASECPPFLAGS) $(PYTHON2_INCLUDES)
+$(PYTHON2_data): gv_python2.cpp
+gv_python2.cpp: gv.i
+       $(SWIG) -c++ -python -o gv_python2.cpp $(srcdir)/gv.i
+
+pkgpython3dir = $(pkglibdir)/python3
+PYTHON3_data = gv.py
+nodist_libgv_python3_la_SOURCES = gv_python3.cpp $(PYTHON3_data)
+libgv_python3_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
+libgv_python3_la_LIBADD = $(BASELIBS) $(PYTHON3_LIBS)
+libgv_python3_la_LDFLAGS = -module -avoid-version
+libgv_python3_la_CPPFLAGS = $(BASECPPFLAGS) $(PYTHON3_INCLUDES)
+$(PYTHON3_data): gv_python3.cpp
+gv_python3.cpp: gv.i
+       $(SWIG) -c++ -python -o gv_python3.cpp $(srcdir)/gv.i
+
 pkgpython23dir = $(pkglibdir)/python23
 PYTHON23_data = gv.py
 nodist_libgv_python23_la_SOURCES = gv_python23.cpp $(PYTHON23_data)
@@ -366,55 +388,67 @@ DEVTSTS += test_php
 endif
 if WITH_PYTHON
 pkgpython_DATA = $(PYTHON_data)
-py_mans = gv.3python
-py_data = gv.3python.pdf
+man_MANS += gv.3python
+pdf_DATA += gv.3python.pdf
 pkgpython_LTLIBRARIES = libgv_python.la
 DEVTSTS += test_python
 endif
+if WITH_PYTHON2
+pkgpython2_DATA = $(PYTHON2_data)
+man_MANS += gv.3python2
+pdf_DATA += gv.3python2.pdf
+pkgpython2_LTLIBRARIES = libgv_python2.la
+DEVTSTS += test_python2
+endif
+if WITH_PYTHON3
+pkgpython3_DATA = $(PYTHON3_data)
+man_MANS += gv.3python3
+pdf_DATA += gv.3python3.pdf
+pkgpython3_LTLIBRARIES = libgv_python3.la
+DEVTSTS += test_python3
+endif
 if WITH_PYTHON23
 pkgpython23_DATA = $(PYTHON23_data)
-py_mans = gv.3python
-py_data = gv.3python.pdf
+man_MANS += gv.3python
+pdf_DATA += gv.3python.pdf
 pkgpython23_LTLIBRARIES = libgv_python23.la
 #DEVTSTS += test_python23
 endif
 if WITH_PYTHON24
 pkgpython24_DATA = $(PYTHON24_data)
-py_mans = gv.3python
-py_data = gv.3python.pdf
+man_MANS += gv.3python
+pdf_DATA += gv.3python.pdf
 pkgpython24_LTLIBRARIES = libgv_python24.la
 #DEVTSTS += test_python24
 endif
 if WITH_PYTHON25
 pkgpython25_DATA = $(PYTHON25_data)
-py_mans = gv.3python
-py_data = gv.3python.pdf
+man_MANS += gv.3python
+pdf_DATA += gv.3python.pdf
 pkgpython25_LTLIBRARIES = libgv_python25.la
 #DEVTSTS += test_python25
 endif
 if WITH_PYTHON26
 pkgpython26_DATA = $(PYTHON26_data)
-py_mans = gv.3python
-py_data = gv.3python.pdf
+man_MANS += gv.3python
+pdf_DATA += gv.3python.pdf
 pkgpython26_LTLIBRARIES = libgv_python26.la
 #DEVTSTS += test_python26
 endif
 if WITH_PYTHON27
 pkgpython27_DATA = $(PYTHON27_data)
-py_mans = gv.3python
-py_data = gv.3python.pdf
+man_MANS += gv.3python
+pdf_DATA += gv.3python.pdf
 pkgpython27_LTLIBRARIES = libgv_python27.la
 #DEVTSTS += test_python27
 endif
 if WITH_PYTHON34
 pkgpython34_DATA = $(PYTHON34_data)
-py_mans = gv.3python
-py_data = gv.3python.pdf
+man_MANS += gv.3python
+pdf_DATA += gv.3python.pdf
 pkgpython34_LTLIBRARIES = libgv_python34.la
 #DEVTSTS += test_python34
 endif
-man_MANS += $(py_mans)
-pdf_DATA += $(py_data)
 if WITH_R
 pkgR_DATA = $(R_data)
 man_MANS += gv.3r
@@ -444,11 +478,11 @@ endif
 endif
 
 man = gv.3sharp gv.3go gv.3guile gv.3io gv.3java gv.3lua gv.3ocaml \
-       gv.3perl gv.3php gv.3python gv.3r gv.3ruby gv.3tcl
+       gv.3perl gv.3php gv.3python gv.3python2 gv.3python3 gv.3r gv.3ruby gv.3tcl
 
 pdf = gv.3sharp.pdf gv.3go.pdf gv.3guile.pdf gv.3io.pdf gv.3java.pdf gv.3lua.pdf \
-      gv.3ocaml.pdf gv.3perl.pdf gv.3php.pdf gv.3python.pdf gv.3r.pdf \
-      gv.3ruby.pdf gv.3tcl.pdf
+      gv.3ocaml.pdf gv.3perl.pdf gv.3php.pdf gv.3python.pdf gv.3python2.pdf \
+      gv.3python3.pdf gv.3r.pdf gv.3ruby.pdf gv.3tcl.pdf
 
 
 $(man): gv.i gv_doc_writer.tcl gv_doc_template.tcl gv_doc_langs.tcl
@@ -484,6 +518,12 @@ gv.3php.pdf: gv.3php
 gv.3python.pdf: gv.3python
        - $(GROFF) -Tps -man gv.3python | $(PS2PDF) - - >gv.3python.pdf
 
+gv.3python2.pdf: gv.3python2
+       - $(GROFF) -Tps -man gv.3python2 | $(PS2PDF) - - >gv.3python2.pdf
+
+gv.3python3.pdf: gv.3python3
+       - $(GROFF) -Tps -man gv.3python3 | $(PS2PDF) - - >gv.3python3.pdf
+
 gv.3r.pdf: gv.3r
        - $(GROFF) -Tps -man gv.3r | $(PS2PDF) - - >gv.3r.pdf
 
@@ -509,6 +549,12 @@ endif
 if WITH_PYTHON
        (cd $(DESTDIR)$(pkgpythondir); rm -f _gv.so; $(LN_S) libgv_python.so _gv.so;)
 endif
+if WITH_PYTHON2
+       (cd $(DESTDIR)$(pkgpython2dir); rm -f _gv.so; $(LN_S) libgv_python.so _gv.so;)
+endif
+if WITH_PYTHON3
+       (cd $(DESTDIR)$(pkgpython3dir); rm -f _gv.so; $(LN_S) libgv_python.so _gv.so;)
+endif
 if WITH_PYTHON23
        (cd $(DESTDIR)$(pkgpython23dir); rm -f _gv.so; $(LN_S) libgv_python23.so _gv.so;)
 endif
@@ -614,6 +660,20 @@ test_python: libgv_python.la
                ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.py .; \
                PYTHONPATH=. $(PYTHON) test.py)
 
+.PHONY: test_python2
+test_python2: libgv_python2.la
+       -(mkdir -p test_python2; cd test_python2; \
+               ln -fs ../.libs/libgv_python2.so _gv.so; \
+               ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.py .; \
+               PYTHONPATH=. $(PYTHON2) test.py)
+
+.PHONY: test_python3
+test_python3: libgv_python3.la
+       -(mkdir -p test_python3; cd test_python3; \
+               ln -fs ../.libs/libgv_python3.so _gv.so; \
+               ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.py .; \
+               PYTHONPATH=. $(PYTHON3) test.py)
+
 .PHONY: test_R
 test_R: libgv_R.la
        -(mkdir -p test_R; cd test_R; \
@@ -648,6 +708,8 @@ CLEANFILES = test_*/* pkgIndex.tcl \
        gv_perl.cpp $(PERL_data) \
        gv_php.cpp $(PHP_data) \
        gv_python.cpp $(PYTHON_data) gv.pyc \
+       gv_python2.cpp $(PYTHON2_data) gv.pyc \
+       gv_python3.cpp $(PYTHON3_data) gv.pyc \
        gv_python23.cpp $(PYTHON23_data) gv.pyc \
        gv_python24.cpp $(PYTHON24_data) gv.pyc \
        gv_python25.cpp $(PYTHON25_data) gv.pyc \
index 2aa68d3c09e662b47de2eba8a85945ca450c0059..94ba8ded94febe88e5fa1b0654c4f743deeb63bb 100644 (file)
@@ -401,6 +401,98 @@ array set LANGS {
                USAGE {
                }
        }
+       python2 {
+               TYPES {
+                       {Agraph_t* g} graph_handle
+                       {Agraph_t* sg} subgraph_handle
+                       {Agnode_t* n} node_handle
+                       {Agnode_t* t} tail_node_handle
+                       {Agnode_t* h} head_node_handle
+                       {Agedge_t* e} edge_handle
+                       {Agsym_t* a} attr_handle
+                       {char* gne} type
+                       {char* name} name
+                       {char* tname} tail_name
+                       {char* hname} head_name
+                       {char* attr} attr_name
+                       {char* val} attr_value
+                       {const char* filename} filename
+                       {char* engine} engine
+                       {char* string} string
+                       {char** outdata} outdata
+                       {char* format} format
+                       {FILE* f} channel
+                       {void** data} data_handle
+                       Agraph_t* graph_handle
+                       Agnode_t* node_handle
+                       Agedge_t* edge_handle
+                       Agsym_t* attribute_handle
+                       char* string
+                       {const char*} string
+                       char** outdata
+                       FILE* channel
+                       bool bool
+                       int int
+                       void** data_handle
+                       void {}
+               }
+               SYNTAX {
+                       gv.  (  {, }   {);}
+               }
+               SYNOPSIS {
+                       {#!/usr/bin/python2}
+                       {import sys}
+                       {import gv}
+               }
+               USAGE {
+               }
+       }
+       python3 {
+               TYPES {
+                       {Agraph_t* g} graph_handle
+                       {Agraph_t* sg} subgraph_handle
+                       {Agnode_t* n} node_handle
+                       {Agnode_t* t} tail_node_handle
+                       {Agnode_t* h} head_node_handle
+                       {Agedge_t* e} edge_handle
+                       {Agsym_t* a} attr_handle
+                       {char* gne} type
+                       {char* name} name
+                       {char* tname} tail_name
+                       {char* hname} head_name
+                       {char* attr} attr_name
+                       {char* val} attr_value
+                       {const char* filename} filename
+                       {char* engine} engine
+                       {char* string} string
+                       {char** outdata} outdata
+                       {char* format} format
+                       {FILE* f} channel
+                       {void** data} data_handle
+                       Agraph_t* graph_handle
+                       Agnode_t* node_handle
+                       Agedge_t* edge_handle
+                       Agsym_t* attribute_handle
+                       char* string
+                       {const char*} string
+                       char** outdata
+                       FILE* channel
+                       bool bool
+                       int int
+                       void** data_handle
+                       void {}
+               }
+               SYNTAX {
+                       gv.  (  {, }   {);}
+               }
+               SYNOPSIS {
+                       {#!/usr/bin/python3}
+                       {import sys}
+                       {import gv}
+               }
+               USAGE {
+               }
+       }
        R {
                TYPES {
                        Agraph_t* SWIGTYPE_p_Agraph_t