From: Reuben Thomas Date: Tue, 27 Aug 2019 22:29:01 +0000 (+0100) Subject: AppVeyor: fix build: default is now Python 3, so get Python 2 explicitly X-Git-Tag: v3.7.3~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e13093c6611847cb8b8bb645e4883a26ca15e031;p=recode AppVeyor: fix build: default is now Python 3, so get Python 2 explicitly --- diff --git a/appveyor.yml b/appveyor.yml index 8306f03..27ebd78 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,6 +4,7 @@ clone_folder: c:\projects\recode environment: global: VERBOSE: 1 # Get test logs in output + CONFIGURE_FLAGS: PYTHON=python2 CYTHON=cython2 matrix: # - MSYSTEM: MSYS (no cython available) - MSYSTEM: MINGW64 @@ -16,4 +17,4 @@ install: - C:\msys64\usr\bin\bash.exe -l c:/projects/recode/build-aux/appveyor-install.sh build_script: - - C:\msys64\usr\bin\bash.exe -lc "cd c:/projects/recode && ./bootstrap && ./configure --enable-silent-rules %CONFIGURE_FLAGS% && make && make distcheck" + - C:\msys64\usr\bin\bash.exe -lc "cd c:/projects/recode && ./bootstrap && ./configure --enable-silent-rules %CONFIGURE_FLAGS% && make && make DISTCHECK_CONFIGURE_FLAGS=\"%CONFIGURE_FLAGS%\" distcheck" diff --git a/build-aux/appveyor-install.sh b/build-aux/appveyor-install.sh index 21cd204..f584a8a 100644 --- a/build-aux/appveyor-install.sh +++ b/build-aux/appveyor-install.sh @@ -18,4 +18,4 @@ case $MSYSTEM in esac # Build dependencies -pacman --noconfirm -S rsync mingw-w64-$MINGW_BITS-cython +pacman --noconfirm -S rsync mingw-w64-$MINGW_BITS-python2 mingw-w64-$MINGW_BITS-cython2 diff --git a/configure.ac b/configure.ac index b0415c9..718757f 100644 --- a/configure.ac +++ b/configure.ac @@ -37,14 +37,16 @@ AC_PROG_CC_C99 gl_EARLY LT_INIT AC_PROG_LEX -AX_PYTHON_PATH -AX_PYTHON_VERSION_ENSURE([2.2]) +AM_PATH_PYTHON([2.2]) gl_INIT dnl help2man dnl Set a value even if not found, so that an invocation via build-aux/missing works AC_PATH_PROG([HELP2MAN], [help2man], [help2man]) +dnl Cython +AC_CHECK_PROG([CYTHON], [cython], [cython]) + AC_SUBST([objdir]) LT_SYS_MODULE_EXT case $host_os in diff --git a/doc/Makefile.am b/doc/Makefile.am index d8c4acb..1b1d9df 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -27,7 +27,6 @@ KELD = ../keld CHARSETS_DEF = $(KELD)/charsets.def MNEMONICS_DS = $(KELD)/iso10646.def $(KELD)/other.def $(KELD)/control.def -PYTHON = python TABLES_PY = $(PYTHON) $(top_srcdir)/tables.py $(srcdir)/recode.info: rfc1345.texi diff --git a/m4/ax_python_embed.m4 b/m4/ax_python_embed.m4 deleted file mode 100644 index 1a4f0a5..0000000 --- a/m4/ax_python_embed.m4 +++ /dev/null @@ -1,518 +0,0 @@ -# =========================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_python_embed.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PYTHON_DEFAULT -# AX_PYTHON_ENABLE -# AX_PYTHON_WITH -# AX_PYTHON_PATH -# AX_PYTHON_VERSION_ENSURE( [2.2] ) -# AX_PYTHON_CSPEC -# AX_PYTHON_LSPEC -# -# DESCRIPTION -# -# This file provides autoconf support for those applications that want to -# embed python. It supports all pythons >= 2.2 which is the first official -# release containing distutils. Version 2.2 of python was released -# December 21, 2001. Since it actually executes the python, cross platform -# configuration will probably not work. Also, most of the platforms -# supported are consistent until you look into Mac OS X. The python -# included with it is installed as a framework which is a very different -# environment to set up the normal tools such as gcc and libtool to deal -# with. Therefore, once we establish which python that we are going to -# use, we use its distutils to actually compile and link our modules or -# applications. -# -# At this time, it does NOT support linking with Python statically. It -# does support dynamic linking. -# -# This set of macros help define $PYTHON, $PYTHON_USE, $PYTHON_CSPEC and -# $PYTHON_LSPEC. $PYTHON defines the full executable path for the Python -# being linked to and is used within these macros to determine if that has -# been specified or found. These macros do execute this python version so -# it must be present on the system at configure time. -# -# $PYTHON_USE is an automake variable that defines whether Python support -# should be included or not in your application. $PYTHON_CSPEC is a -# variable that supplies additional CFLAGS for the compilation of the -# application/shared library. $PYTHON_LSPEC is a variable that supplies -# additional LDFLAGS for linking the application/shared library. -# -# The following is an example of how to set up for python usage within -# your application in your configure.in: -# -# AX_PYTHON_DEFAULT( ) -# AX_PYTHON_ENABLE( ) # Optional -# AX_PYTHON_WITH( ) # Optional -# AX_PYTHON_PATH( ) # or AX_PYTHON_INSIST( ) -# # if $PYTHON is not defined, then the following do nothing. -# AX_PYTHON_VERSION_ENSURE( [2.2] ) -# AX_PYTHON_CSPEC -# AX_PYTHON_LSPEC -# -# The AX_PYTHON_DEFAULT sets the $PYTHON_USE to false. Thereby, excluding -# it if it was optional. -# -# The AX_PYTHON_ENABLE looks for the optional configure parameters of -# --enable-python/--disable-python and establishes the $PYTHON and -# $PYTHON_USE variables accordingly. -# -# The AX_PYTHON_WITH looks for the optional configure parameters of -# --with-python/--without-python and establishes the $PYTHON and -# $PYTHON_USE variables accordingly. -# -# The AX_PYTHON_PATH looks for python assuming that none has been -# previously found or defined and issues an error if it does not find it. -# If it does find it, it establishes the $PYTHON and $PYTHON_USE variables -# accordingly. AX_PYTHON_INSIST could be used here instead if you want to -# insist that Python support be included using the --enable-python or -# --with-python checks previously done. -# -# The AX_PYTHON_VERSION_ENSURE issues an error if the Python previously -# found is not of version 2.2 or greater. -# -# Once that these macros have be run, we can use PYTHON_USE within the -# makefile.am file to conditionally add the Python support such as: -# -# Makefile.am example showing optional inclusion of directories: -# -# if PYTHON_USE -# plugins = plugins -# src = src -# else -# plugins = -# src = -# endif -# -# SUBDIRS = . $(plugins) $(src) -# -# Makefile.am example showing optional shared library build: -# -# if PYTHON_USE -# lib_LTLIBRARIES = libElemList.la -# libElemList_la_SOURCES = libElemList.c -# libElemList_la_CFLAGS = @PYTHON_CSPEC@ -# libElemList_la_LDFLAGS = @PYTHON_LSPEC@ -# endif -# -# Makefile.am example showing optional program build: -# -# if PYTHON_USE -# bin_PROGRAMS = runFunc -# runFunc_SOURCES = runFunc.c -# runFunc_CFLAGS = @PYTHON_CSPEC@ -# runFunc_LDFLAGS = @PYTHON_LSPEC@ -# endif -# -# The above compiles the modules only if PYTHON_USE was specified as true. -# Also, the else portion of the if was optional. -# -# LICENSE -# -# Copyright (c) 2008 Robert White -# Copyright (c) 2008 Dustin J. Mitchell -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 15 - -# AX_PYTHON_DEFAULT( ) -# ----------------- -# Sets the default to not include Python support. - -AC_DEFUN([AX_PYTHON_DEFAULT], -[ - ax_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") -]) - - - -# AX_PYTHON_ENABLE( [path] ) -# ----------------------------------------------------------------- -# Handles the various --enable-python commands. -# Input: -# $1 is the optional search path for the python executable if needed -# Output: -# PYTHON_USE (AM_CONDITIONAL) is true if python executable found -# and --enable-python was requested; otherwise false. -# $PYTHON contains the full executable path to python if PYTHON_ENABLE_USE -# is true. -# -# Example: -# AX_PYTHON_ENABLE( ) -# or -# AX_PYTHON_ENABLE( "/usr/bin" ) - -AC_DEFUN([AX_PYTHON_ENABLE], -[ - AC_ARG_VAR([PYTHON],[Python Executable Path]) - - # unless PYTHON was supplied to us (as a precious variable), - # see if --enable-python[=PythonExecutablePath], --enable-python, - # --disable-python or --enable-python=no was given. - if test -z "$PYTHON" - then - AC_MSG_CHECKING(for --enable-python) - AC_ARG_ENABLE( - python, - AS_HELP_STRING([--enable-python@<:@=PYTHON@:>@], - [absolute path name of Python executable] - ), - [ - if test "$enableval" = "yes" - then - # "yes" was specified, but we don't have a path - # for the executable. - # So, let's search the PATH Environment Variable. - AC_MSG_RESULT(yes) - AC_PATH_PROG( - [PYTHON], - python, - [], - $1 - ) - if test -z "$PYTHON" - then - AC_MSG_ERROR(no path to python found) - fi - ax_python_use=true - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") - AX_PYTHON_PREFIX( ) - elif test "$enableval" = "no" - then - AC_MSG_RESULT(no) - ax_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") - else - # $enableval must be the executable path then. - AC_SUBST([PYTHON], ["${enableval}"]) - AC_MSG_RESULT($withval) - ax_python_use=true - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") - AX_PYTHON_PREFIX( ) - fi - ], - [ - # --with-python was not specified. - AC_MSG_RESULT(no) - ax_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") - ] - ) - fi - -]) - - - -# AX_PYTHON_CSPEC( ) -# ----------------- -# Set up the c compiler options to compile Python -# embedded programs/libraries in $PYTHON_CSPEC if -# $PYTHON has been defined. - -AC_DEFUN([AX_PYTHON_CSPEC], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -n "$PYTHON" - then - ax_python_prefix=`${PYTHON} -c "import sys; print(sys.prefix)"` - if test -z "$ax_python_prefix" - then - AC_MSG_ERROR([Python Prefix is not known]) - fi - ax_python_execprefix=`${PYTHON} -c "import sys; print(sys.exec_prefix)"` - ax_python_version=`$PYTHON -c "import sys; print(sys.version[[:3]])"` - ax_python_includespec="-I${ax_python_prefix}/include/python${ax_python_version}" - if test x"$python_prefix" != x"$python_execprefix"; then - ax_python_execspec="-I${ax_python_execprefix}/include/python${ax_python_version}" - ax_python_includespec="${ax_python_includespec} $ax_python_execspec" - fi - ax_python_ccshared=`${PYTHON} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('CFLAGSFORSHARED'))"` - ax_python_cspec="${ax_python_ccshared} ${ax_python_includespec}" - AC_SUBST([PYTHON_CSPEC], [${ax_python_cspec}]) - AC_MSG_NOTICE([PYTHON_CSPEC=${ax_python_cspec}]) - fi -]) - - - -# AX_PYTHON_INSIST( ) -# ----------------- -# Look for Python and set the output variable 'PYTHON' -# to 'python' if found, empty otherwise. - -AC_DEFUN([AX_PYTHON_INSIST], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -z "$PYTHON" - then - AC_MSG_ERROR([Python Executable not found]) - fi -]) - - - -# AX_PYTHON_LSPEC( ) -# ----------------- -# Set up the linker options to link Python embedded -# programs/libraries in $PYTHON_LSPEC if $PYTHON -# has been defined. - -AC_DEFUN([AX_PYTHON_LSPEC], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -n "$PYTHON" - then - AX_PYTHON_RUN([ -import sys -import distutils.sysconfig -strUseFrameWork = "--enable-framework" -dictConfig = distutils.sysconfig.get_config_vars( ) -strConfigArgs = dictConfig.get("CONFIG_ARGS") -strLinkSpec = dictConfig.get('LDFLAGS') -if -1 == strConfigArgs.find(strUseFrameWork): - strLibPL = dictConfig.get("LIBPL") - if strLibPL and (strLibPL != ""): - strLinkSpec += " -L%s" % (strLibPL) - strSys = dictConfig.get("SYSLIBS") - if strSys and (strSys != ""): - strLinkSpec += " %s" % (strSys) - strSHL = dictConfig.get("SHLIBS") - if strSHL and (strSHL != ""): - strLinkSpec += " %s" % (strSHL) - # Construct the Python Library Name. - strTmplte = " -lpython%d.%d" - if (sys.platform == "win32") or (sys.platform == "os2emx"): - strTmplte = " -lpython%d%d" - strWrk = strTmplte % ( (sys.hexversion >> 24), - ((sys.hexversion >> 16) & 0xff)) - strLinkSpec += strWrk -else: - # This is not ideal since it changes the search path - # for Frameworks which could have side-effects on - # other included Frameworks. However, it is necessary - # where someone has installed more than one frameworked - # Python. Frameworks are really only used in MacOSX. - strLibFW = dictConfig.get("PYTHONFRAMEWORKPREFIX") - if strLibFW and (strLibFW != ""): - strLinkSpec += " -F%s" % (strLibFW) -strLinkSpec += " %s" % (dictConfig.get('LINKFORSHARED')) -print(strLinkSpec) - ]) - AC_SUBST([PYTHON_LSPEC], [${ax_python_output}]) - AC_MSG_NOTICE([PYTHON_LSPEC=${ax_python_output}]) - fi -]) - - - -# AX_PYTHON_PATH( ) -# ----------------- -# Look for Python and set the output variable 'PYTHON' -# to 'python' if found, empty otherwise. - -AC_DEFUN([AX_PYTHON_PATH], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - AC_PATH_PROG( PYTHON, python, [], $1 ) - if test -z "$PYTHON" - then - AC_MSG_ERROR([Python Executable not found]) - else - ax_python_use=true - fi - AM_CONDITIONAL(PYTHON_USE, test "$ax_python_use" = "true") -]) - - - -# AX_PYTHON_PREFIX( ) -# ------------------- -# Use the values of $prefix and $exec_prefix for the corresponding -# values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. - -AC_DEFUN([AX_PYTHON_PREFIX], -[ - if test -z "$PYTHON" - then - AC_MSG_ERROR([Python Executable Path is not known]) - fi - ax_python_prefix=`${PYTHON} -c "import sys; print(sys.prefix)"` - ax_python_execprefix=`${PYTHON} -c "import sys; print(sys.exec_prefix)"` - AC_SUBST([PYTHON_PREFIX], ["${ax_python_prefix}"]) - AC_SUBST([PYTHON_EXECPREFIX], ["${ax_python_execprefix}"]) -]) - - - -# AX_PYTHON_RUN( PYTHON_PROGRAM ) -# ----------------- -# Run a Python Test Program saving its output -# in ax_python_output and its condition code -# in ax_python_cc. - -AC_DEFUN([AX_PYTHON_RUN], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -z "$PYTHON" - then - AC_MSG_ERROR([Python Executable not found]) - else - cat >conftest.py <<_ACEOF -$1 -_ACEOF - ax_python_output=`$PYTHON conftest.py` - ax_python_cc=$? - rm conftest.py - if test -f "conftest.pyc" - then - rm conftest.pyc - fi - fi -]) - - - -# AX_PYTHON_VERSION_CHECK( VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE] ) -# ----------------------------------------------------------------------------- -# Run ACTION-IF-TRUE if the Python interpreter has version >= VERSION. -# 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. -# hexversion has been introduced in Python 1.5.2; it's probably not -# worth to support older versions (1.5.1 was released on October 31, 1998). - -AC_DEFUN([AX_PYTHON_VERSION_CHECK], - [ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -n "$PYTHON" - then - AC_MSG_CHECKING([whether $PYTHON version >= $1]) - AX_PYTHON_RUN([ -import sys -# split strings by '.' and convert to numeric. Append some zeros -# because we need at least 4 digits for the hex conversion. -# It accepts a string like "X[.Y[.Z]]" with X,Y,Z=digits -# and [] means optional. -minver = list(map(int, '$1'.split('.'))) + [[0, 0, 0]] -minver[3] = 255 -minverhex = 0 -for i in range(0, 4): minverhex = (minverhex << 8) + minver[[i]] -if sys.hexversion >= minverhex: - sys.exit( 0 ) -else: - sys.exit( 1 ) - ]) - if test $ax_python_cc -eq 0 - then - $2 - m4_ifvaln( - [$3], - [else $3] - ) - fi - fi -]) - - - -# AX_PYTHON_VERSION_ENSURE( VERSION ) -# ----------------- -# Insure that the Python Interpreter Version -# is greater than or equal to the VERSION -# parameter. - -AC_DEFUN([AX_PYTHON_VERSION_ENSURE], -[ - AX_PYTHON_VERSION_CHECK( - [$1], - [AC_MSG_RESULT(yes)], - [AC_MSG_ERROR(too old)] - ) -]) - - - -# AX_PYTHON_WITH( [path] ) -# ----------------------------------------------------------------- -# Handles the various --with-python commands. -# Input: -# $1 is the optional search path for the python executable if needed -# Output: -# PYTHON_USE (AM_CONDITIONAL) is true if python executable found -# and --with-python was requested; otherwise false. -# $PYTHON contains the full executable path to python if PYTHON_USE -# is true. -# -# Example: -# AX_PYTHON_WITH( ) -# or -# AX_PYTHON_WITH("/usr/bin") - -AC_DEFUN([AX_PYTHON_WITH], -[ - AC_ARG_VAR([PYTHON],[Python Executable Path]) - - # unless PYTHON was supplied to us (as a precious variable), - # see if --with-python[=PythonExecutablePath], --with-python, - # --without-python or --with-python=no was given. - if test -z "$PYTHON" - then - AC_MSG_CHECKING(for --with-python) - AC_ARG_WITH( - python, - AS_HELP_STRING([--with-python@<:@=PYTHON@:>@], - [absolute path name of Python executable] - ), - [ - if test "$withval" = "yes" - then - # "yes" was specified, but we don't have a path - # for the executable. - # So, let's search the PATH Environment Variable. - AC_MSG_RESULT(yes) - AC_PATH_PROG( - [PYTHON], - python, - [], - $1 - ) - if test -z "$PYTHON" - then - AC_MSG_ERROR(no path to python found) - fi - ax_python_use=true - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") - AX_PYTHON_PREFIX( ) - elif test "$withval" = "no" - then - AC_MSG_RESULT(no) - ax_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") - else - # $withval must be the executable path then. - AC_SUBST([PYTHON], ["${withval}"]) - AC_MSG_RESULT($withval) - ax_python_use=true - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") - AX_PYTHON_PREFIX( ) - fi - ], - [ - # --with-python was not specified. - AC_MSG_RESULT(no) - ax_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true") - ] - ) - fi - -]) diff --git a/tests/Makefile.am b/tests/Makefile.am index 6e8c1e6..cda31cb 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -25,6 +25,7 @@ SUITE = t21_names.py t22_lists.py t25_subsets.py t30_base64.py \ t30_dumps.py t30_quoted.py t40_african.py t40_combine.py t40_testdump.py \ t40_utf7.py t40_utf8.py t50_methods.py t90_bigauto.py +CYTHON = @CYTHON@ EXTRA_DIST = Recode.c Recode.pyx pytest common.py valgrind-python.supp $(SUITE) CLEANFILES = Recode@pyextext@ Recode_d@pyextext@ Recode.body.c DISTCLEANFILES = Recode.c @@ -43,6 +44,6 @@ Recode@pyextext@: Recode.c setup.py Recode.c: Recode.pyx Makefile rm -f Recode.c && \ - cython -o Recode.body.c $(srcdir)/Recode.pyx && \ + $(CYTHON) -o Recode.body.c $(srcdir)/Recode.pyx && \ echo '#include "config.h"' > Recode.c && \ cat Recode.body.c >> Recode.c