diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index d45e3a0b..589e466d 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,7 +8,7 @@ jobs:
strategy:
matrix:
- os: [ubuntu-18.04, macos-10.15]
+ os: [ubuntu-20.04, macos-10.15]
compiler: [gcc, clang]
buildtool: [autotools, cmake]
diff --git a/README.rst b/README.rst
index 87f6ce4f..c5c2eaa7 100644
--- a/README.rst
+++ b/README.rst
@@ -112,7 +112,7 @@ libnghttp2_asio C++ library requires the following packages:
The Python bindings require the following packages:
* cython >= 0.19
-* python >= 2.7
+* python >= 3.8
* python-setuptools
If you are using Ubuntu 16.04 LTS (Xenial Xerus) or Debian 8 (jessie)
@@ -1422,7 +1422,7 @@ The extension module is called ``nghttp2``.
determined by the ``configure`` script. If the detected Python version is not
what you expect, specify a path to Python executable in a ``PYTHON``
variable as an argument to configure script (e.g., ``./configure
-PYTHON=/usr/bin/python3.5``).
+PYTHON=/usr/bin/python3.8``).
The following example code illustrates basic usage of the HPACK compressor
and decompressor in Python:
@@ -1494,7 +1494,7 @@ BaseRequestHandler usage:
.. code-block:: python
- #!/usr/bin/env python
+ #!/usr/bin/env python3
import io, ssl
import nghttp2
diff --git a/configure.ac b/configure.ac
index 001b1abd..a26b4d81 100644
--- a/configure.ac
+++ b/configure.ac
@@ -151,7 +151,7 @@ AC_PROG_MKDIR_P
PKG_PROG_PKG_CONFIG([0.20])
-AM_PATH_PYTHON([2.7],, [:])
+AM_PATH_PYTHON([3.8],, [:])
if [test "x$request_lib_only" = "xyes"]; then
request_app=no
@@ -161,7 +161,7 @@ if [test "x$request_lib_only" = "xyes"]; then
fi
if [test "x$request_python_bindings" != "xno"]; then
- AX_PYTHON_DEVEL([>= '2.7'])
+ AX_PYTHON_DEVEL([>= '3.8'])
fi
if test "x${cython_path}" = "x"; then
@@ -567,7 +567,7 @@ enable_python_bindings=no
if test "x${request_python_bindings}" != "xno" &&
test "x${CYTHON}" != "x" &&
test "x${PYTHON}" != "x:" &&
- test "x${have_python_dev}" = "xyes"; then
+ test "x${PYTHON_VERSION}" != "x"; then
enable_python_bindings=yes
fi
@@ -890,9 +890,8 @@ AC_MSG_NOTICE([summary of build options:
Python: ${PYTHON}
PYTHON_VERSION: ${PYTHON_VERSION}
pyexecdir: ${pyexecdir}
- Python-dev: ${have_python_dev}
PYTHON_CPPFLAGS:${PYTHON_CPPFLAGS}
- PYTHON_LDFLAGS: ${PYTHON_LDFLAGS}
+ PYTHON_LIBS: ${PYTHON_LIBS}
Cython: ${CYTHON}
Test:
CUnit: ${have_cunit} (CFLAGS='${CUNIT_CFLAGS}' LIBS='${CUNIT_LIBS}')
diff --git a/doc/sources/python-apiref.rst b/doc/sources/python-apiref.rst
index d64b43cc..92fab33f 100644
--- a/doc/sources/python-apiref.rst
+++ b/doc/sources/python-apiref.rst
@@ -13,7 +13,7 @@ The extension module is called ``nghttp2``.
determined by configure script. If the detected Python version is not
what you expect, specify a path to Python executable in ``PYTHON``
variable as an argument to configure script (e.g., ``./configure
-PYTHON=/usr/bin/python3.5``).
+PYTHON=/usr/bin/python3.8``).
HPACK API
---------
@@ -137,14 +137,14 @@ HTTP/2 servers
.. note::
We use :py:mod:`asyncio` for HTTP/2 server classes, and ALPN.
- Therefore, Python 3.5 or later is required to use these objects.
- To explicitly configure nghttp2 build to use Python 3.5, specify
- the ``PYTHON`` variable to the path to Python 3.5 executable when
+ Therefore, Python 3.8 or later is required to use these objects.
+ To explicitly configure nghttp2 build to use Python 3.8, specify
+ the ``PYTHON`` variable to the path to Python 3.8 executable when
invoking configure script like this:
.. code-block:: text
- $ ./configure PYTHON=/usr/bin/python3.5
+ $ ./configure PYTHON=/usr/bin/python3.8
.. py:class:: HTTP2Server(address, RequestHandlerClass, ssl=None)
@@ -336,7 +336,7 @@ The following example illustrates :py:class:`HTTP2Server` and
.. code-block:: python
- #!/usr/bin/env python
+ #!/usr/bin/env python3
import io, ssl
@@ -367,7 +367,7 @@ response body generation. This is simplified reverse proxy:
.. code-block:: python
- #!/usr/bin/env python
+ #!/usr/bin/env python3
import ssl
import os
diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4
index 067fbcf3..44dbd83e 100644
--- a/m4/ax_python_devel.m4
+++ b/m4/ax_python_devel.m4
@@ -1,5 +1,5 @@
# ===========================================================================
-# http://www.gnu.org/software/autoconf-archive/ax_python_devel.html
+# https://www.gnu.org/software/autoconf-archive/ax_python_devel.html
# ===========================================================================
#
# SYNOPSIS
@@ -12,8 +12,8 @@
# in your configure.ac.
#
# This macro checks for Python and tries to get the include path to
-# 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LDFLAGS)
-# output variables. It also exports $(PYTHON_EXTRA_LIBS) and
+# 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LIBS) output
+# variables. It also exports $(PYTHON_EXTRA_LIBS) and
# $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code.
#
# You can search for some particular version of Python by passing a
@@ -52,7 +52,7 @@
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
-# with this program. If not, see .
+# with this program. If not, see .
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
@@ -67,7 +67,7 @@
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
-#serial 16
+#serial 21
AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL])
AC_DEFUN([AX_PYTHON_DEVEL],[
@@ -81,12 +81,10 @@ AC_DEFUN([AX_PYTHON_DEVEL],[
AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]])
if test -z "$PYTHON"; then
- AC_MSG_WARN([Cannot find python$PYTHON_VERSION in your system path])
+ AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path])
PYTHON_VERSION=""
- no_python_devel=yes
fi
-AS_IF([test -z "$no_python_devel"], [
#
# Check for a version of Python >= 2.1.0
#
@@ -97,25 +95,22 @@ AS_IF([test -z "$no_python_devel"], [
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
AC_MSG_RESULT([no])
- AC_MSG_WARN([
+ AC_MSG_FAILURE([
This version of the AC@&t@_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
2.1.0. You may need to re-run configure, setting the
-variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG,
+variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG,
PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
to something else than an empty string.
])
- no_python_devel=yes
else
AC_MSG_RESULT([skip at user request])
fi
else
AC_MSG_RESULT([yes])
fi
-]) # AS_IF
-AS_IF([test -z "$no_python_devel"], [
#
# if the macro parameter ``version'' is set, honour it
#
@@ -128,36 +123,30 @@ AS_IF([test -z "$no_python_devel"], [
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
- AC_MSG_WARN([this package requires Python $1.
+ AC_MSG_ERROR([this package requires Python $1.
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
variable to configure. See ``configure --help'' for reference.
])
PYTHON_VERSION=""
- no_python_devel=yes
fi
fi
-]) # AS_IF
-AS_IF([test -z "$no_python_devel"], [
#
# Check if you have distutils, else fail
#
AC_MSG_CHECKING([for the distutils Python package])
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
- if test -z "$ac_distutils_result"; then
+ if test $? -eq 0; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
- AC_MSG_WARN([cannot import Python module "distutils".
+ AC_MSG_ERROR([cannot import Python module "distutils".
Please check your Python installation. The error was:
$ac_distutils_result])
PYTHON_VERSION=""
- no_python_devel=yes
fi
-]) # AS_IF
-AS_IF([test -z "$no_python_devel"], [
#
# Check for Python include path
#
@@ -183,7 +172,7 @@ AS_IF([test -z "$no_python_devel"], [
# Check for Python library path
#
AC_MSG_CHECKING([for Python library path])
- if test -z "$PYTHON_LDFLAGS"; then
+ if test -z "$PYTHON_LIBS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
ac_python_version=`cat<