commit
7ebab98e91
|
@ -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]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}')
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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<<EOD | $PYTHON -
|
||||
|
@ -238,29 +227,26 @@ EOD`
|
|||
then
|
||||
# use the official shared library
|
||||
ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"`
|
||||
PYTHON_LDFLAGS="-L$ac_python_libdir -l$ac_python_library"
|
||||
PYTHON_LIBS="-L$ac_python_libdir -l$ac_python_library"
|
||||
else
|
||||
# old way: use libpython from python_configdir
|
||||
ac_python_libdir=`$PYTHON -c \
|
||||
"from distutils.sysconfig import get_python_lib as f; \
|
||||
import os; \
|
||||
print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"`
|
||||
PYTHON_LDFLAGS="-L$ac_python_libdir -lpython$ac_python_version"
|
||||
PYTHON_LIBS="-L$ac_python_libdir -lpython$ac_python_version"
|
||||
fi
|
||||
|
||||
if test -z "PYTHON_LDFLAGS"; then
|
||||
AC_MSG_WARN([
|
||||
if test -z "PYTHON_LIBS"; then
|
||||
AC_MSG_ERROR([
|
||||
Cannot determine location of your Python DSO. Please check it was installed with
|
||||
dynamic libraries enabled, or try setting PYTHON_LDFLAGS by hand.
|
||||
dynamic libraries enabled, or try setting PYTHON_LIBS by hand.
|
||||
])
|
||||
no_python_devel=yes
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT([$PYTHON_LDFLAGS])
|
||||
AC_SUBST([PYTHON_LDFLAGS])
|
||||
]) # AS_IF
|
||||
AC_MSG_RESULT([$PYTHON_LIBS])
|
||||
AC_SUBST([PYTHON_LIBS])
|
||||
|
||||
AS_IF([test -z "$no_python_devel"], [
|
||||
#
|
||||
# Check for site packages
|
||||
#
|
||||
|
@ -279,7 +265,7 @@ AS_IF([test -z "$no_python_devel"], [
|
|||
if test -z "$PYTHON_EXTRA_LIBS"; then
|
||||
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
|
||||
conf = distutils.sysconfig.get_config_var; \
|
||||
print (conf('LIBS'))"`
|
||||
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
|
||||
fi
|
||||
AC_MSG_RESULT([$PYTHON_EXTRA_LIBS])
|
||||
AC_SUBST(PYTHON_EXTRA_LIBS)
|
||||
|
@ -302,8 +288,10 @@ AS_IF([test -z "$no_python_devel"], [
|
|||
AC_MSG_CHECKING([consistency of all components of python development environment])
|
||||
# save current global flags
|
||||
ac_save_LIBS="$LIBS"
|
||||
ac_save_LDFLAGS="$LDFLAGS"
|
||||
ac_save_CPPFLAGS="$CPPFLAGS"
|
||||
LIBS="$ac_save_LIBS $PYTHON_LDFLAGS $PYTHON_EXTRA_LDFLAGS $PYTHON_EXTRA_LIBS"
|
||||
LIBS="$ac_save_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_EXTRA_LIBS"
|
||||
LDFLAGS="$ac_save_LDFLAGS $PYTHON_EXTRA_LDFLAGS"
|
||||
CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
|
||||
AC_LANG_PUSH([C])
|
||||
AC_LINK_IFELSE([
|
||||
|
@ -314,15 +302,16 @@ AS_IF([test -z "$no_python_devel"], [
|
|||
# turn back to default flags
|
||||
CPPFLAGS="$ac_save_CPPFLAGS"
|
||||
LIBS="$ac_save_LIBS"
|
||||
LDFLAGS="$ac_save_LDFLAGS"
|
||||
|
||||
AC_MSG_RESULT([$pythonexists])
|
||||
|
||||
if test ! "x$pythonexists" = "xyes"; then
|
||||
AC_MSG_WARN([
|
||||
AC_MSG_FAILURE([
|
||||
Could not link test program to Python. Maybe the main Python library has been
|
||||
installed in some non-standard library path. If so, pass it to configure,
|
||||
via the LDFLAGS environment variable.
|
||||
Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
|
||||
via the LIBS environment variable.
|
||||
Example: ./configure LIBS="-L/usr/non-standard-path/python/lib"
|
||||
============================================================================
|
||||
ERROR!
|
||||
You probably have to install the development version of the Python package
|
||||
|
@ -330,15 +319,9 @@ AS_IF([test -z "$no_python_devel"], [
|
|||
============================================================================
|
||||
])
|
||||
PYTHON_VERSION=""
|
||||
no_python_devel=yes
|
||||
fi
|
||||
|
||||
#
|
||||
# all done!
|
||||
#
|
||||
]) # AS_IF
|
||||
|
||||
AS_IF([test -z "$no_python_devel"],
|
||||
[have_python_dev=yes], [have_python_dev=no])
|
||||
|
||||
]) # AS_IF
|
||||
])
|
||||
|
|
|
@ -44,6 +44,6 @@ clean-local:
|
|||
-rm -f $(builddir)/nghttp2.c
|
||||
|
||||
.pyx.c:
|
||||
$(CYTHON) -o $@ $<
|
||||
$(CYTHON) -3 -o $@ $<
|
||||
|
||||
endif # ENABLE_PYTHON_BINDINGS
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# This script reads json files given in the command-line (each file
|
||||
# must be written in the format described in
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# This script reads input headers from json file given in the
|
||||
# command-line (each file must be written in the format described in
|
||||
|
|
|
@ -857,7 +857,7 @@ cdef class _HTTP2SessionCore(_HTTP2SessionCoreBase):
|
|||
|
||||
rv = cnghttp2.nghttp2_submit_settings(self.session,
|
||||
cnghttp2.NGHTTP2_FLAG_NONE,
|
||||
iv, sizeof(iv) / sizeof(iv[0]))
|
||||
iv, sizeof(iv) // sizeof(iv[0]))
|
||||
|
||||
if rv != 0:
|
||||
raise Exception('nghttp2_submit_settings failed: {}'.format\
|
||||
|
@ -971,7 +971,7 @@ cdef class _HTTP2ClientSessionCore(_HTTP2SessionCoreBase):
|
|||
|
||||
rv = cnghttp2.nghttp2_submit_settings(self.session,
|
||||
cnghttp2.NGHTTP2_FLAG_NONE,
|
||||
iv, sizeof(iv) / sizeof(iv[0]))
|
||||
iv, sizeof(iv) // sizeof(iv[0]))
|
||||
|
||||
if rv != 0:
|
||||
raise Exception('nghttp2_submit_settings failed: {}'.format\
|
||||
|
|
Loading…
Reference in New Issue