Python 3.8 has 'tp_print' field in PyTypeObject struct. This field is attributed as deprecated. So, clang generates warning (which is turned to error) as a result of initializing this field. From the other hand, it is impossible to omit this field in positional initialization. The solution is to use designated initializer. Silencing usage message during configure python. This is related to #331 issue on GitHub.
199 lines
4.5 KiB
Plaintext
199 lines
4.5 KiB
Plaintext
|
|
# Copyright (C) Valentin V. Bartenev
|
|
# Copyright (C) Igor Sysoev
|
|
# Copyright (C) NGINX, Inc.
|
|
|
|
|
|
shift
|
|
|
|
for nxt_option; do
|
|
|
|
case "$nxt_option" in
|
|
-*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
*) value="" ;;
|
|
esac
|
|
|
|
case "$nxt_option" in
|
|
|
|
--config=*) NXT_PYTHON_CONFIG="$value" ;;
|
|
--module=*) NXT_PYTHON_MODULE="$value" ;;
|
|
--lib-path=*) NXT_PYTHON_LIB_PATH="$value" ;;
|
|
|
|
--help)
|
|
cat << END
|
|
|
|
--config=FILE set python-config filename
|
|
--module=NAME set unit python module name
|
|
--lib-path=DIRECTORY set directory path to libpython.so library
|
|
|
|
END
|
|
exit 0
|
|
;;
|
|
|
|
*)
|
|
echo
|
|
echo $0: error: invalid Python option \"$nxt_option\"
|
|
echo
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
if [ ! -f $NXT_AUTOCONF_DATA ]; then
|
|
echo
|
|
echo Please run common $0 before configuring module \"$nxt_module\".
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
. $NXT_AUTOCONF_DATA
|
|
|
|
|
|
NXT_PYTHON_CONFIG=${NXT_PYTHON_CONFIG=python-config}
|
|
NXT_PYTHON=${NXT_PYTHON_CONFIG%-config*}
|
|
NXT_PYTHON_MODULE=${NXT_PYTHON_MODULE=${NXT_PYTHON##*/}}
|
|
NXT_PYTHON_LIB_PATH=${NXT_PYTHON_LIB_PATH=}
|
|
|
|
|
|
$echo "configuring Python module"
|
|
$echo "configuring Python module ..." >> $NXT_AUTOCONF_ERR
|
|
|
|
nxt_found=no
|
|
|
|
if /bin/sh -c "$NXT_PYTHON_CONFIG --prefix" >> $NXT_AUTOCONF_ERR 2>&1; then
|
|
|
|
if ${NXT_PYTHON_CONFIG} --embed >/dev/null 2>&1; then
|
|
NXT_PYTHON_CONFIG="${NXT_PYTHON_CONFIG} --embed"
|
|
fi
|
|
|
|
NXT_PYTHON_INCLUDE=`${NXT_PYTHON_CONFIG} --includes`
|
|
NXT_PYTHON_LIBS=`${NXT_PYTHON_CONFIG} --ldflags`
|
|
|
|
if [ "$NXT_PYTHON_LIB_PATH" != "" ]; then
|
|
# "python-config --ldflags" may not contain path to libpython.
|
|
NXT_PYTHON_LDFLAGS="-L$NXT_PYTHON_LIB_PATH -Wl,-rpath $NXT_PYTHON_LIB_PATH"
|
|
else
|
|
NXT_PYTHON_LDFLAGS=""
|
|
fi
|
|
|
|
nxt_feature="Python"
|
|
nxt_feature_name=""
|
|
nxt_feature_run=no
|
|
nxt_feature_incs="${NXT_PYTHON_INCLUDE}"
|
|
nxt_feature_libs="${NXT_PYTHON_LIBS} $NXT_PYTHON_LDFLAGS"
|
|
nxt_feature_test="
|
|
#include <Python.h>
|
|
|
|
int main() {
|
|
Py_Initialize();
|
|
return 0;
|
|
}"
|
|
|
|
. auto/feature
|
|
|
|
else
|
|
$echo "checking for Python ... not found"
|
|
fi
|
|
|
|
if [ $nxt_found = no ]; then
|
|
$echo
|
|
$echo $0: error: no Python found.
|
|
$echo
|
|
exit 1;
|
|
fi
|
|
|
|
|
|
nxt_feature="Python version"
|
|
nxt_feature_name=""
|
|
nxt_feature_run=value
|
|
nxt_feature_incs="${NXT_PYTHON_INCLUDE}"
|
|
nxt_feature_libs="${NXT_PYTHON_LIBS} $NXT_PYTHON_LDFLAGS"
|
|
nxt_feature_test="
|
|
#include <Python.h>
|
|
#include <stdio.h>
|
|
|
|
int main() {
|
|
printf(\"%s\", PY_VERSION);
|
|
return 0;
|
|
}"
|
|
|
|
. auto/feature
|
|
|
|
|
|
if grep ^$NXT_PYTHON_MODULE: $NXT_MAKEFILE 2>&1 > /dev/null; then
|
|
$echo
|
|
$echo $0: error: duplicate \"$NXT_PYTHON_MODULE\" module configured.
|
|
$echo
|
|
exit 1;
|
|
fi
|
|
|
|
$echo " + Python module: ${NXT_PYTHON_MODULE}.unit.so"
|
|
|
|
. auto/cc/deps
|
|
|
|
$echo >> $NXT_MAKEFILE
|
|
|
|
NXT_PYTHON_MODULE_SRCS=" \
|
|
src/nxt_python_wsgi.c \
|
|
"
|
|
|
|
# The python module object files.
|
|
|
|
nxt_objs=$NXT_BUILD_DIR/src/nxt_unit.o
|
|
|
|
for nxt_src in $NXT_PYTHON_MODULE_SRCS; do
|
|
|
|
nxt_obj=${nxt_src%.c}-$NXT_PYTHON_MODULE.o
|
|
nxt_dep=${nxt_src%.c}-$NXT_PYTHON_MODULE.dep
|
|
nxt_dep_flags=`nxt_gen_dep_flags`
|
|
nxt_dep_post=`nxt_gen_dep_post`
|
|
nxt_objs="$nxt_objs $NXT_BUILD_DIR/$nxt_obj"
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
$NXT_BUILD_DIR/$nxt_obj: $nxt_src $NXT_VERSION_H
|
|
\$(CC) -c \$(CFLAGS) \$(NXT_INCS) $NXT_PYTHON_INCLUDE \\
|
|
$nxt_dep_flags \\
|
|
-o $NXT_BUILD_DIR/$nxt_obj $nxt_src
|
|
$nxt_dep_post
|
|
|
|
-include $NXT_BUILD_DIR/$nxt_dep
|
|
|
|
END
|
|
|
|
done
|
|
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
.PHONY: ${NXT_PYTHON_MODULE}
|
|
.PHONY: ${NXT_PYTHON_MODULE}-install
|
|
.PHONY: ${NXT_PYTHON_MODULE}-uninstall
|
|
|
|
all: ${NXT_PYTHON_MODULE}
|
|
|
|
${NXT_PYTHON_MODULE}: $NXT_BUILD_DIR/${NXT_PYTHON_MODULE}.unit.so
|
|
|
|
$NXT_BUILD_DIR/${NXT_PYTHON_MODULE}.unit.so: $nxt_objs
|
|
\$(NXT_MODULE_LINK) -o $NXT_BUILD_DIR/${NXT_PYTHON_MODULE}.unit.so \\
|
|
$nxt_objs $NXT_PYTHON_LIBS $NXT_PYTHON_LDFLAGS $NXT_LD_OPT
|
|
|
|
|
|
install: ${NXT_PYTHON_MODULE}-install
|
|
|
|
${NXT_PYTHON_MODULE}-install: ${NXT_PYTHON_MODULE} install-check
|
|
install -d \$(DESTDIR)$NXT_MODULES
|
|
install -p $NXT_BUILD_DIR/${NXT_PYTHON_MODULE}.unit.so \\
|
|
\$(DESTDIR)$NXT_MODULES/
|
|
|
|
|
|
uninstall: ${NXT_PYTHON_MODULE}-uninstall
|
|
|
|
${NXT_PYTHON_MODULE}-uninstall:
|
|
rm -f \$(DESTDIR)$NXT_MODULES/${NXT_PYTHON_MODULE}.unit.so
|
|
@rmdir -p \$(DESTDIR)$NXT_MODULES 2>/dev/null || true
|
|
|
|
END
|