diff --git a/CHANGES.current b/CHANGES.current index a2c288c87..2d8037197 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ Version 4.1.0 (in progress) =========================== +2020-08-15: wsfulton + [Python] All Python examples and tests are written to be Python 2 and Python 3 + compatible, removing the need for 2to3 to run the examples or test-suite. + 2020-08-13: wsfulton [C#] Add support for void *VOID_INT_PTR for member variables. diff --git a/Examples/Makefile.in b/Examples/Makefile.in index 87386f7eb..3f6140b5e 100644 --- a/Examples/Makefile.in +++ b/Examples/Makefile.in @@ -381,13 +381,7 @@ python_static_cpp: $(SRCDIR_SRCS) # Running a Python example # ----------------------------------------------------------------- -ifeq (,$(PY3)) - PYSCRIPT = $(RUNME).py -else - PYSCRIPT = $(RUNME)3.py -endif - -PY2TO3 = @PY2TO3@ `@PY2TO3@ -l | grep -v -E "Available|import$$" | awk '{print "-f "$$0}'` +PYSCRIPT = $(RUNME).py python_run: $(PYSCRIPT) ifneq (,$(PYCODESTYLE)) @@ -400,10 +394,6 @@ $(RUNME).py: $(SRCDIR)$(RUNME).py cp $< $@ endif -$(RUNME)3.py: $(SRCDIR)$(RUNME).py - cp $< $@ - $(PY2TO3) -w $@ >/dev/null 2>&1 - # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- @@ -421,7 +411,6 @@ python_clean: rm -f core @EXTRA_CLEAN@ rm -f *.@OBJEXT@ *@SO@ *$(PYTHON_SO) rm -f $(TARGET).py - if test -f $(SRCDIR)$(RUNME).py; then rm -f $(RUNME)3.py $(RUNME)3.py.bak; fi case "x$(SRCDIR)" in x|x./);; *) rm -f $(RUNME).py;; esac diff --git a/Examples/python/index.html b/Examples/python/index.html index 3bbdd66e8..750c0f04a 100644 --- a/Examples/python/index.html +++ b/Examples/python/index.html @@ -89,7 +89,6 @@ to look at the distutils
Your mileage may vary. If you experience a problem, please let us know by diff --git a/Examples/test-suite/python/Makefile.in b/Examples/test-suite/python/Makefile.in index 4c0507cbb..a340251eb 100644 --- a/Examples/test-suite/python/Makefile.in +++ b/Examples/test-suite/python/Makefile.in @@ -10,20 +10,10 @@ endif LANGUAGE = python PYTHON = $(PYBIN) +SCRIPTSUFFIX = _runme.py PYCODESTYLE = @PYCODESTYLE@ PYCODESTYLE_FLAGS = --ignore=E252,E30,E402,E501,E731,E741,W291,W391 -#*_runme.py for Python 2.x, *_runme3.py for Python 3.x -PY2SCRIPTSUFFIX = _runme.py -PY3SCRIPTSUFFIX = _runme3.py -PY2TO3 = @PY2TO3@ -x import - -ifeq (,$(PY3)) - SCRIPTSUFFIX = $(PY2SCRIPTSUFFIX) -else - SCRIPTSUFFIX = $(PY3SCRIPTSUFFIX) -endif - srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ @@ -107,7 +97,6 @@ C_TEST_CASES += \ include $(srcdir)/../common.mk # Overridden variables here -SCRIPTDIR = . LIBS = -L. VALGRIND_OPT += --suppressions=pythonswig.supp @@ -116,35 +105,25 @@ VALGRIND_OPT += --suppressions=pythonswig.supp # Rules for the different types of tests %.cpptest: - +$(convert_testcase) $(setup) +$(swig_and_compile_cpp) $(check_pep8) $(run_testcase) %.ctest: - +$(convert_testcase) $(setup) +$(swig_and_compile_c) $(check_pep8) $(run_testcase) %.multicpptest: - +$(convert_testcase) $(setup) +$(swig_and_compile_multi_cpp) $(check_pep8_multi_cpp) $(run_testcase) - -# Runs the testcase. A testcase is only run if -# a file is found which has _runme.py (or _runme3.py for Python 3) appended after the testcase name. - -py_runme = $(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) -py2_runme = $(SCRIPTPREFIX)$*$(PY2SCRIPTSUFFIX) -py3_runme = $(SCRIPTPREFIX)$*$(PY3SCRIPTSUFFIX) - +# Python code style checking ifneq (,$(PYCODESTYLE)) check_pep8 = $(COMPILETOOL) $(PYCODESTYLE) $(PYCODESTYLE_FLAGS) $(SCRIPTPREFIX)$*.py @@ -154,70 +133,16 @@ check_pep8_multi_cpp = \ done endif -run_python = env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH PYTHONPATH=.:$(srcdir):$$PYTHONPATH $(RUNTOOL) $(PYTHON) $(py_runme) - +# Runs the testcase. A testcase is only run if +# a file is found which has _runme.py appended after the testcase name. run_testcase = \ - if [ -f $(SCRIPTDIR)/$(py_runme) ]; then \ - $(run_python);\ + if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \ + env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH PYTHONPATH=.:$(srcdir):$$PYTHONPATH $(RUNTOOL) $(PYTHON) $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \ fi -# Grab runme file ready for running: copied for out of source tree builds, and/or run 2to3 -# Note terminal (double colon) rules creating runme files to fix possible infinite recursion, -# see https://github.com/swig/swig/pull/688 -ifeq ($(SCRIPTDIR),$(srcdir)) - # in source tree build - ifeq (,$(PY3)) - convert_testcase = - else - convert_testcase = \ - if [ -f $(srcdir)/$(py2_runme) ]; then \ - $(MAKE) $(SCRIPTDIR)/$(py_runme); \ - fi - -# For converting python 2 tests into Python 3 tests -$(SCRIPTDIR)/$(SCRIPTPREFIX)%$(SCRIPTSUFFIX):: $(srcdir)/$(SCRIPTPREFIX)%$(PY2SCRIPTSUFFIX) - cp $< $@ - $(PY2TO3) -w $@ >/dev/null 2>&1 - - endif -else - # out of source tree build - ifeq (,$(PY3)) - convert_testcase = \ - if [ -f $(srcdir)/$(py2_runme) ]; then \ - $(MAKE) $(SCRIPTDIR)/$(py_runme); \ - fi - -$(SCRIPTDIR)/$(SCRIPTPREFIX)%$(SCRIPTSUFFIX):: $(srcdir)/$(SCRIPTPREFIX)%$(PY2SCRIPTSUFFIX) - cp $< $@ - - else - convert_testcase = \ - if [ -f $(srcdir)/$(py2_runme) ]; then \ - $(MAKE) $(SCRIPTDIR)/$(py_runme); \ - elif [ -f $(srcdir)/$(py3_runme) ]; then \ - $(MAKE) $(SCRIPTDIR)/$(py3_runme); \ - fi - -# For when there is a _runme3.py instead of a _runme.py, ie a Python 3 only run test -$(SCRIPTDIR)/$(SCRIPTPREFIX)%$(SCRIPTSUFFIX):: $(srcdir)/$(SCRIPTPREFIX)%$(PY3SCRIPTSUFFIX) - cp $< $@ - -# For converting python 2 tests into Python 3 tests -$(SCRIPTDIR)/$(SCRIPTPREFIX)%$(SCRIPTSUFFIX):: $(srcdir)/$(SCRIPTPREFIX)%$(PY2SCRIPTSUFFIX) - cp $< $@ - $(PY2TO3) -w $@ >/dev/null 2>&1 - - endif - -endif - # Clean: remove the generated .py file -# We only remove the _runme3.py if it is generated by 2to3 from a _runme.py. %.clean: @rm -f $*.py - @if test -f $(srcdir)/$(py2_runme); then rm -f $(SCRIPTDIR)/$(py3_runme) $(SCRIPTDIR)/$(py3_runme).bak; fi - @if test "x$(SCRIPTDIR)" != "x$(srcdir)"; then rm -f $(SCRIPTDIR)/$(py_runme); fi clean: $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' python_clean diff --git a/configure.ac b/configure.ac index 726a3bac2..af4c89414 100644 --- a/configure.ac +++ b/configure.ac @@ -919,30 +919,6 @@ if test -n "$PYINCLUDE" || test -n "$PY3INCLUDE" ; then fi fi -AC_ARG_WITH(2to3, AS_HELP_STRING([--with-2to3=path], [Set location of Python 2to3 tool]), [PY2TO3BIN="$withval"], [PY2TO3BIN="yes"]) -if test -n "$PYTHON3"; then - if test "x$PY2TO3BIN" = xyes; then - py3to2=`echo $PYTHON3 | sed -e "s/python/2to3-/"` - AC_CHECK_PROGS(PY2TO3, $py3to2 2to3) - if test -z "$PY2TO3"; then - # Windows distributions don't always have the 2to3 executable - AC_MSG_CHECKING(for 2to3.py) - py2to3script="$PY3PREFIX/Tools/scripts/2to3.py" - if test -f "$py2to3script"; then - AC_MSG_RESULT($py2to3script) - PY2TO3="$PYTHON3 $py2to3script" - else - AC_MSG_RESULT(Not found) - fi - fi - else - PY2TO3="$PY2TO3BIN" - fi - if test -z "$PY2TO3"; then - PYTHON3= - fi -fi - #---------------------------------------------------------------- # Look for Perl5 #----------------------------------------------------------------