mirror of
https://github.com/yweber/lodel2.git
synced 2025-10-30 19:19:03 +01:00
Autotools chain enhancement + solves #137
Using $pkgpythondir instead of $pythondir in Makefile.am Solves a bug that put installed files in site-packages instead of dist-packages on debian
This commit is contained in:
parent
8316ab82ff
commit
21af2bbcbc
15 changed files with 924 additions and 626 deletions
35
configure.ac
35
configure.ac
|
|
@ -1,4 +1,4 @@
|
|||
AC_INIT([lodel2], [0.1], [contact@openedition.org])
|
||||
AC_INIT([lodel], [0.1], [contact@openedition.org])
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
|
||||
|
|
@ -15,23 +15,36 @@ AC_CONFIG_FILES([Makefile \
|
|||
lodel/utils/Makefile \
|
||||
])
|
||||
|
||||
m4_include([m4/python.m4])
|
||||
AM_PATH_PYTHON([3.4.2], [3.5])
|
||||
PC_INIT([3.4.2], [3.5])
|
||||
AC_SUBST([PYTHON], [$PYTHON])
|
||||
|
||||
###
|
||||
#Kind of dangerous mix between default aclocal's macro and pyconfigure macros...
|
||||
#
|
||||
#pyconfigure macros are prefixed by PC_
|
||||
###
|
||||
m4_include([m4/python.m4]) # Patched version of aclocal python.m4 file
|
||||
m4_include([m4/python_pyconfigure.m4]) #Renamed because we use a patched version of aclocal python.m4 file
|
||||
m4_define(python_min_ver, 3.4.2)
|
||||
|
||||
AM_PATH_PYTHON([3.4.2]) #init aclocal's default python support
|
||||
PC_INIT([3.4.2], [3.5]) #init pyconfigure aclocal's macro
|
||||
|
||||
PC_PYTHON_VERIFY_VERSION([>=], python_min_ver, ,
|
||||
[AC_MSG_ERROR(Python interpreter too old)])
|
||||
|
||||
AC_ARG_VAR([SITEPACKAGES], [If installed in /usr or /System* specify the name of the site directory (default value "site-packages"])
|
||||
|
||||
PC_PYTHON_CHECK_MODULE([lxml], ,
|
||||
AC_MSG_ERROR([Module lxml not found but mandatory for lodel2]))
|
||||
#Webui deps
|
||||
AC_SUBST([WEBUI], 'OK')
|
||||
AC_SUBST([WEBUI], 'True')
|
||||
PC_PYTHON_CHECK_MODULE([jinja2], ,
|
||||
AC_MSG_WARN([Module jinja2 not found but mandatory for default web interface])
|
||||
AC_SUBST([WEBUI], ''))
|
||||
AC_SUBST([WEBUI], 'False'))
|
||||
PC_PYTHON_CHECK_MODULE([werkzeug], ,
|
||||
AC_MSG_WARN([Module werkzeug not found but mandatory for default web interface])
|
||||
AC_SUBST([WEBUI], ''))
|
||||
AC_SUBST([WEBUI], 'False'))
|
||||
#Mongo datasource deps
|
||||
AC_SUBST([MONGODB], 'True')
|
||||
AC_SUBST([MONGODB], 'True') #Can be found in lodel/buildconf.py
|
||||
PC_PYTHON_CHECK_MODULE([pymongo], ,
|
||||
AC_MSG_WARN([Module pymongo not found. The mongodb datasource will not be able to work])
|
||||
AC_SUBST([MONGODB], 'False'))
|
||||
|
|
@ -50,7 +63,7 @@ then
|
|||
AC_MSG_WARN([Graphviz not found (dot executable missing) - You will not be able to generate documentation])
|
||||
AC_SUBST([DOCOK], '')
|
||||
fi
|
||||
AC_CHECK_PROGS([DOXYPY], [docypy])
|
||||
AC_CHECK_PROGS([DOXYPY], [doxypy])
|
||||
if test -z "$DOXYPY";
|
||||
then
|
||||
AC_MSG_WARN([Doxypy script not found (https://pypi.python.org/pypi/doxypy/0.3) - You will not be able to generate documentation])
|
||||
|
|
@ -63,6 +76,6 @@ if test -z "$DOCOK";
|
|||
then AC_MSG_WARN([You will not be able to generate doxygen documentation. See up for reasons])
|
||||
fi
|
||||
|
||||
if test -z "$WEBUI";
|
||||
if test "$WEBUI" = 'False';
|
||||
then AC_MSG_WARN([Mandatory components are missing for running default web UI. See up for reasons])
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -2,5 +2,5 @@ SUBDIRS=auth editorial_model leapi plugin settings utils
|
|||
|
||||
lodel_PYTHON = *.py
|
||||
|
||||
lodeldir=$(pythondir)/lodel
|
||||
lodeldir=$(pkgpythondir)/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
auth_PYTHON = *.py
|
||||
authdir=$(pythondir)/lodel/auth
|
||||
authdir=$(pkgpythondir)/auth
|
||||
|
|
|
|||
|
|
@ -2,3 +2,4 @@
|
|||
#@note Populated by ./configure
|
||||
|
||||
PYMONGO=@MONGODB@
|
||||
WEBUI=@WEBUI@
|
||||
|
|
|
|||
|
|
@ -2,4 +2,4 @@ SUBDIRS=translator
|
|||
|
||||
em_PYTHON=*.py
|
||||
|
||||
emdir=$(pythondir)/lodel/editorial_model
|
||||
emdir=$(pkgpythondir)/editorial_model
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
translator_PYTHON=*.py
|
||||
|
||||
translatordir=$(pythondir)/editorial_model/translator
|
||||
translatordir=$(pkgpythondir)/editorial_model/translator
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
SUBDIRS=datahandlers
|
||||
|
||||
leapi_PYTHON= *.py
|
||||
leapidir=$(pythondir)/lodel/leapi
|
||||
leapidir=$(pkgpythondir)/leapi
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
dh_PYTHON=*.py
|
||||
dhdir=$(pythondir)/lodel/leapi/datahandlers
|
||||
dhdir=$(pkgpythondir)/leapi/datahandlers
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
plugin_PYTHON=*.py
|
||||
plugindir=$(pythondir)/lodel/plugin
|
||||
plugindir=$(pkgythondir)/plugin
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
settings_PYTHON=*.py
|
||||
settingsdir=$(pythondir)/lodel/settings
|
||||
settingsdir=$(pkgpythondir)/settings
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
utils_PYTHON=*.py
|
||||
utilsdir=$(pkgpythondir)
|
||||
utilsdir=$(pkgpythondir)/utils
|
||||
|
|
|
|||
809
m4/python.m4
809
m4/python.m4
|
|
@ -1,646 +1,243 @@
|
|||
# Copyright 2012, 2013, 2014 Brandon Invergo <brandon@invergo.net>
|
||||
#
|
||||
# This file is part of pyconfigure. This program is free
|
||||
# software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# Under Section 7 of GPL version 3, you are granted additional
|
||||
# permissions described in the Autoconf Configure Script Exception,
|
||||
# version 3.0, as published by the Free Software Foundation.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# and a copy of the Autoconf Configure Script Exception along with
|
||||
# this program; see the files COPYINGv3 and COPYING.EXCEPTION
|
||||
# respectively. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# Many of these macros were adapted from ones written by Andrew Dalke
|
||||
# and James Henstridge and are included with the Automake utility
|
||||
# under the following copyright terms:
|
||||
#
|
||||
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
||||
## ------------------------ -*- Autoconf -*-
|
||||
## Python file handling
|
||||
## From Andrew Dalke
|
||||
## Updated by James Henstridge
|
||||
## ------------------------
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Table of Contents:
|
||||
#
|
||||
# 1. Language selection
|
||||
# and routines to produce programs in a given language.
|
||||
#
|
||||
# 2. Producing programs in a given language.
|
||||
#
|
||||
# 3. Looking for a compiler
|
||||
# And possibly the associated preprocessor.
|
||||
#
|
||||
# 4. Looking for specific libs & functionality
|
||||
|
||||
|
||||
## ----------------------- ##
|
||||
## 1. Language selection. ##
|
||||
## ----------------------- ##
|
||||
|
||||
|
||||
# AC_LANG(Python)
|
||||
# ---------------
|
||||
AC_LANG_DEFINE([Python], [py], [PY], [PYTHON], [],
|
||||
[ac_ext=py
|
||||
ac_compile='chmod +x conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
|
||||
ac_link='chmod +x conftest.$ac_ext && cp conftest.$ac_ext conftest >&AS_MESSAGE_LOG_FD'
|
||||
])
|
||||
|
||||
|
||||
# AC_LANG_PYTHON
|
||||
# --------------
|
||||
AU_DEFUN([AC_LANG_PYTHON], [AC_LANG(Python)])
|
||||
|
||||
|
||||
## ----------------------- ##
|
||||
## 2. Producing programs. ##
|
||||
## ----------------------- ##
|
||||
|
||||
|
||||
# AC_LANG_PROGRAM(Python)([PROLOGUE], [BODY])
|
||||
# -------------------------------------------
|
||||
m4_define([AC_LANG_PROGRAM(Python)], [dnl
|
||||
@%:@!$PYTHON
|
||||
$1
|
||||
m4_if([$2], [], [], [dnl
|
||||
if __name__ == '__main__':
|
||||
$2])])
|
||||
|
||||
|
||||
# _AC_LANG_IO_PROGRAM(Python)
|
||||
# ---------------------------
|
||||
# Produce source that performs I/O.
|
||||
m4_define([_AC_LANG_IO_PROGRAM(Python)],
|
||||
[AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
try:
|
||||
h = open('conftest.out')
|
||||
except:
|
||||
sys.exit(1)
|
||||
else:
|
||||
close(h)
|
||||
sys.exit(0)
|
||||
], [])])
|
||||
|
||||
|
||||
# _AC_LANG_CALL(Python)([PROLOGUE], [FUNCTION])
|
||||
# ---------------------
|
||||
# Produce source that calls FUNCTION
|
||||
m4_define([_AC_LANG_CALL(Python)],
|
||||
[AC_LANG_PROGRAM([$1], [$2])])
|
||||
|
||||
|
||||
## -------------------------------------------- ##
|
||||
## 3. Looking for Compilers and Interpreters. ##
|
||||
## -------------------------------------------- ##
|
||||
|
||||
|
||||
AC_DEFUN([AC_LANG_COMPILER(Python)],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])])
|
||||
|
||||
|
||||
# PC_INIT([MIN-VERSION], [MAX-VERSION])
|
||||
# -----------------------------
|
||||
# Initialize pyconfigure, finding a Python interpreter with a given
|
||||
# minimum and/or maximum version.
|
||||
AC_DEFUN([PC_INIT],
|
||||
[PC_PROG_PYTHON([], [$1], [$2])
|
||||
dnl If we found something, do a sanity check that the interpreter really
|
||||
dnl has the version its name would suggest.
|
||||
m4_ifval([PYTHON],
|
||||
[PC_PYTHON_VERIFY_VERSION([>=], [pc_min_ver], [],
|
||||
[AC_MSG_FAILURE([No compatible Python interpreter found. If you're sure that you have one, try setting the PYTHON environment variable to the location of the interpreter.])])])
|
||||
m4_ifval([PYTHON],
|
||||
[PC_PYTHON_VERIFY_VERSION([<=], [pc_max_ver], [],
|
||||
[AC_MSG_FAILURE([No compatible Python interpreter found. If you're sure that you have one, try setting the PYTHON environment variable to the location of the interpreter.])])])
|
||||
])# PC_INIT
|
||||
|
||||
# PC_PROG_PYTHON([PROG-TO-CHECK-FOR], [MIN-VERSION], [MAX-VERSION])
|
||||
# ---------------------------------
|
||||
# Find a Python interpreter. Python versions prior to 2.0 are not
|
||||
# supported. (2.0 was released on October 16, 2000).
|
||||
AC_DEFUN_ONCE([PC_PROG_PYTHON],
|
||||
[AC_ARG_VAR([PYTHON], [the Python interpreter])
|
||||
dnl The default minimum version is 2.0
|
||||
m4_define_default([pc_min_ver], m4_ifval([$2], [$2], [2.0]))
|
||||
dnl The default maximum version is 3.3
|
||||
m4_define_default([pc_max_ver], m4_ifval([$3], [$3], [4.0]))
|
||||
dnl Build up a list of possible interpreter names.
|
||||
m4_define_default([_PC_PYTHON_INTERPRETER_LIST],
|
||||
[dnl If we want some Python 3 versions (max version >= 3.0),
|
||||
dnl also search for "python3"
|
||||
m4_if(m4_version_compare(pc_max_ver, [2.9]), [1], [python3], []) \
|
||||
dnl If we want some Python 2 versions (min version <= 2.7),
|
||||
dnl also search for "python2".
|
||||
m4_if(m4_version_compare(pc_min_ver, [2.8]), [-1], [python2], []) \
|
||||
dnl Construct a comma-separated list of interpreter names (python2.6,
|
||||
dnl python2.7, etc). We only care about the first 3 characters of the
|
||||
dnl version strings (major-dot-minor; not
|
||||
dnl major-dot-minor-dot-bugfix[-dot-whatever])
|
||||
m4_foreach([pc_ver],
|
||||
m4_esyscmd_s(seq -s[[", "]] -f["[[%.1f]]"] m4_substr(pc_max_ver, [0], [3]) -0.1 m4_substr(pc_min_ver, [0], [3])),
|
||||
dnl Remove python2.8 and python2.9 since they will never exist
|
||||
[m4_bmatch(pc_ver, [2.[89]], [], [python]pc_ver)]) \
|
||||
[python]])
|
||||
dnl Do the actual search at last.
|
||||
m4_ifval([$1],
|
||||
[AC_PATH_PROGS(PYTHON, [$1 _PC_PYTHON_INTERPRETER_LIST])],
|
||||
[AC_PATH_PROGS(PYTHON, [_PC_PYTHON_INTERPRETER_LIST])])
|
||||
])# PC_PROG_PYTHON
|
||||
|
||||
|
||||
# PC_PYTHON_PROG_PYTHON_CONFIG(PROG-TO-CHECK-FOR)
|
||||
# ----------------------------------------------
|
||||
# Find the python-config program
|
||||
AC_DEFUN([PC_PYTHON_PROG_PYTHON_CONFIG],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
AC_ARG_VAR([PYTHON_CONFIG], [the Python-config program])
|
||||
dnl python-config's binary name is normally based on the Python interpreter's
|
||||
dnl binary name (i.e. python2.7 -> python2.7-config)
|
||||
m4_define([_PYTHON_BASENAME], [`basename $PYTHON`])
|
||||
m4_ifval([$1],
|
||||
[AC_PATH_PROGS(PYTHON_CONFIG, [$1 _PYTHON_BASENAME-config])],
|
||||
[AC_PATH_PROG(PYTHON_CONFIG, _PYTHON_BASENAME-config)])
|
||||
]) # PC_PYTHON_PROG_PYTHON_CONFIG
|
||||
|
||||
|
||||
# PC_PYTHON_VERIFY_VERSION([RELATION], [VERSION], [ACTION-IF-TRUE], [ACTION-IF-FALSE])
|
||||
# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
# ---------------------------------------------------------------------------
|
||||
# Run ACTION-IF-TRUE if the Python interpreter PROG has version [RELATION] VERSION.
|
||||
# i.e if RELATION is "<", check if PROG has a version number less than VERSION.
|
||||
# Run ACTION-IF-FALSE otherwise.
|
||||
# Specify RELATION as any mathematical comparison "<", ">", "<=", ">=", "==" or "!="
|
||||
# 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.
|
||||
# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
|
||||
AC_DEFUN([PC_PYTHON_VERIFY_VERSION],
|
||||
[m4_define([pc_python_safe_ver], m4_bpatsubsts($2, [\.], [_]))
|
||||
AC_CACHE_CHECK([if Python $1 '$2'],
|
||||
[[pc_cv_python_req_version_]pc_python_safe_ver],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM([dnl
|
||||
# Adds support for distributing Python modules and packages. To
|
||||
# install modules, copy them to $(pythondir), using the python_PYTHON
|
||||
# automake variable. To install a package with the same name as the
|
||||
# automake package, install to $(pkgpythondir), or use the
|
||||
# pkgpython_PYTHON automake variable.
|
||||
#
|
||||
# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
|
||||
# locations to install python extension modules (shared libraries).
|
||||
# Another macro is required to find the appropriate flags to compile
|
||||
# extension modules.
|
||||
#
|
||||
# If your package is configured with a different prefix to python,
|
||||
# users will have to add the install directory to the PYTHONPATH
|
||||
# environment variable, or create a .pth file (see the python
|
||||
# documentation for details).
|
||||
#
|
||||
# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
|
||||
# cause an error if the version of python installed on the system
|
||||
# doesn't meet the requirement. MINIMUM-VERSION should consist of
|
||||
# numbers and dots only.
|
||||
AC_DEFUN([AM_PATH_PYTHON],
|
||||
[
|
||||
dnl Find a Python interpreter. Python versions prior to 2.0 are not
|
||||
dnl supported. (2.0 was released on October 16, 2000).
|
||||
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
|
||||
[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
|
||||
python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
|
||||
|
||||
AC_ARG_VAR([PYTHON], [the Python interpreter])
|
||||
|
||||
m4_if([$1],[],[
|
||||
dnl No version check is needed.
|
||||
# Find any Python interpreter.
|
||||
if test -z "$PYTHON"; then
|
||||
AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
|
||||
fi
|
||||
am_display_PYTHON=python
|
||||
], [
|
||||
dnl A version check is needed.
|
||||
if test -n "$PYTHON"; then
|
||||
# If the user set $PYTHON, use it and don't search something else.
|
||||
AC_MSG_CHECKING([whether $PYTHON version is >= $1])
|
||||
AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([Python interpreter is too old])])
|
||||
am_display_PYTHON=$PYTHON
|
||||
else
|
||||
# Otherwise, try each interpreter until we find one that satisfies
|
||||
# VERSION.
|
||||
AC_CACHE_CHECK([for a Python interpreter with version >= $1],
|
||||
[am_cv_pathless_PYTHON],[
|
||||
for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
|
||||
test "$am_cv_pathless_PYTHON" = none && break
|
||||
AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
|
||||
done])
|
||||
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
|
||||
if test "$am_cv_pathless_PYTHON" = none; then
|
||||
PYTHON=:
|
||||
else
|
||||
AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
|
||||
fi
|
||||
am_display_PYTHON=$am_cv_pathless_PYTHON
|
||||
fi
|
||||
])
|
||||
|
||||
if test "$PYTHON" = :; then
|
||||
dnl Run any user-specified action, or abort.
|
||||
m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
|
||||
else
|
||||
|
||||
dnl Query Python for its version number. Getting [:3] seems to be
|
||||
dnl the best way to do this; it's what "site.py" does in the standard
|
||||
dnl library.
|
||||
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
|
||||
[am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
|
||||
AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
|
||||
|
||||
dnl Use the values of $prefix and $exec_prefix for the corresponding
|
||||
dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
|
||||
dnl distinct variables so they can be overridden if need be. However,
|
||||
dnl general consensus is that you shouldn't need this ability.
|
||||
|
||||
AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
|
||||
AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
|
||||
|
||||
dnl At times (like when building shared libraries) you may want
|
||||
dnl to know which OS platform Python thinks this is.
|
||||
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
|
||||
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
|
||||
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
|
||||
|
||||
# Just factor out some code duplication.
|
||||
am_python_setup_sysconfig="\
|
||||
import sys
|
||||
], [dnl
|
||||
# split strings by '.' and convert to numeric. Append some zeros
|
||||
# because we need at least 4 digits for the hex conversion.
|
||||
# map returns an iterator in Python 3.0 and a list in 2.x
|
||||
reqver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
|
||||
reqverhex = 0
|
||||
# xrange is not present in Python 3.0 and range returns an iterator
|
||||
for i in list(range(4)):
|
||||
reqverhex = (reqverhex << 8) + reqver[[i]]
|
||||
# the final 8 bits are "0xf0" for final versions, which are all
|
||||
# we'll test against, since it's doubtful that a released software
|
||||
# will depend on an alpha- or beta-state Python.
|
||||
reqverhex += 0xf0
|
||||
if sys.hexversion $1 reqverhex:
|
||||
sys.exit()
|
||||
else:
|
||||
sys.exit(1)
|
||||
])],
|
||||
[[pc_cv_python_req_version_]pc_python_safe_ver=yes],
|
||||
[[pc_cv_python_req_version_]pc_python_safe_ver=no])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AS_IF([test "$[pc_cv_python_req_version_]pc_python_safe_ver" = "no"], [$4], [$3])
|
||||
])# PC_PYTHON_VERIFY_VERSION
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_VERSION
|
||||
# -----------------------
|
||||
# Query Python for its version number. Getting [:3] seems to be
|
||||
# the best way to do this; it's what "site.py" does in the standard
|
||||
# library.
|
||||
AC_DEFUN([PC_PYTHON_CHECK_VERSION],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
AC_CACHE_CHECK([for $1 version],
|
||||
[pc_cv_python_version],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
sys.stdout.write(sys.version[[:3]])
|
||||
])],
|
||||
[pc_cv_python_version=`./conftest`],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AC_SUBST([PYTHON_VERSION], [$pc_cv_python_version])
|
||||
])# PC_PYTHON_CHECK_VERSION
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_PREFIX
|
||||
# ----------------------
|
||||
# Use the value of $prefix for the corresponding value of
|
||||
# PYTHON_PREFIX. This is made a distinct variable so it can be
|
||||
# overridden if need be. However, general consensus is that you
|
||||
# shouldn't need this ability.
|
||||
AC_DEFUN([PC_PYTHON_CHECK_PREFIX],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to get it with python-config otherwise do it from within Python
|
||||
AC_CACHE_CHECK([for Python prefix], [pc_cv_python_prefix],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_prefix=`$PYTHON_CONFIG --prefix 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
AC_LANG_PUSH(Python)[]dnl
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
sys.stdout.write(sys.prefix)
|
||||
])], [pc_cv_python_prefix=`./conftest`;
|
||||
if test $? != 0; then
|
||||
AC_MSG_FAILURE([could not determine Python prefix])
|
||||
fi],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
fi])
|
||||
AC_SUBST([PYTHON_PREFIX], [$pc_cv_python_prefix])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_EXEC_PREFIX
|
||||
# --------------------------
|
||||
# Like above, but for $exec_prefix
|
||||
AC_DEFUN([PC_PYTHON_CHECK_EXEC_PREFIX],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to get it with python-config otherwise do it from within Python
|
||||
AC_CACHE_CHECK([for Python exec-prefix], [pc_cv_python_exec_prefix],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_exec_prefix=`$PYTHON_CONFIG --exec-prefix 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
AC_LANG_PUSH(Python)[]dnl
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
sys.stdout.write(sys.exec_prefix)
|
||||
])],
|
||||
[pc_cv_python_exec_prefix=`./conftest`;
|
||||
if test $? != 0; then
|
||||
AC_MSG_FAILURE([could not determine Python exec_prefix])
|
||||
fi],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_EXEC_PREFIX], [$pc_cv_python_exec_prefix])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_INCLUDES
|
||||
# ------------------------
|
||||
# Find the Python header file include flags (ie
|
||||
# '-I/usr/include/python')
|
||||
AC_DEFUN([PC_PYTHON_CHECK_INCLUDES],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the headers location with python-config otherwise guess
|
||||
AC_CACHE_CHECK([for Python includes], [pc_cv_python_includes],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_includes=`$PYTHON_CONFIG --includes 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_includes="[-I$includedir/$_PYTHON_BASENAME]m4_ifdef(PYTHON_ABI_FLAGS,
|
||||
PYTHON_ABI_FLAGS,)"
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_INCLUDES], [$pc_cv_python_includes])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_HEADERS([ACTION-IF-PRESENT], [ACTION-IF-ABSENT])
|
||||
# -----------------------
|
||||
# Check for the presence and usability of Python.h
|
||||
AC_DEFUN([PC_PYTHON_CHECK_HEADERS],
|
||||
[AC_REQUIRE([PC_PYTHON_CHECK_INCLUDES])[]dnl
|
||||
pc_cflags_store=$CPPFLAGS
|
||||
CPPFLAGS="$CFLAGS $PYTHON_INCLUDES"
|
||||
AC_CHECK_HEADER([Python.h], [$1], [$2])
|
||||
CPPFLAGS=$pc_cflags_store
|
||||
])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_LIBS
|
||||
# --------------------
|
||||
# Find the Python lib flags (ie '-lpython')
|
||||
AC_DEFUN([PC_PYTHON_CHECK_LIBS],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the lib flags with python-config otherwise guess
|
||||
AC_CACHE_CHECK([for Python libs], [pc_cv_python_libs],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_libs=`$PYTHON_CONFIG --libs 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_libs="[-l$_PYTHON_BASENAME]m4_ifdef(PYTHON_ABI_FLAGS, PYTHON_ABI_FLAGS,)"
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_LIBS], [$pc_cv_python_libs])])
|
||||
|
||||
|
||||
# PC_PYTHON_TEST_LIBS(LIBRARY-FUNCTION, [ACTION-IF-PRESENT], [ACTION-IF-ABSENT])
|
||||
# -------------------
|
||||
# Verify that the Python libs can be loaded
|
||||
AC_DEFUN([PC_PYTHON_TEST_LIBS],
|
||||
[AC_REQUIRE([PC_PYTHON_CHECK_LIBS])[]dnl
|
||||
pc_libflags_store=$LIBS
|
||||
for lflag in $PYTHON_LIBS; do
|
||||
case $lflag in
|
||||
-lpython*@:}@
|
||||
LIBS="$LIBS $lflag"
|
||||
pc_libpython=`echo $lflag | sed -e 's/^-l//'`
|
||||
;;
|
||||
*@:}@;;
|
||||
esac
|
||||
done
|
||||
AC_CHECK_LIB([$pc_libpython], [$1], [$2], [$3])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_CFLAGS
|
||||
# ----------------------
|
||||
# Find the Python CFLAGS
|
||||
AC_DEFUN([PC_PYTHON_CHECK_CFLAGS],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the CFLAGS with python-config otherwise give up
|
||||
AC_CACHE_CHECK([for Python CFLAGS], [pc_cv_python_cflags],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_cflags=`$PYTHON_CONFIG --cflags 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_cflags=
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_CFLAGS], [$pc_cv_python_cflags])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_LDFLAGS
|
||||
# -----------------------
|
||||
# Find the Python LDFLAGS
|
||||
AC_DEFUN([PC_PYTHON_CHECK_LDFLAGS],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the LDFLAGS with python-config otherwise give up
|
||||
AC_CACHE_CHECK([for Python LDFLAGS], [pc_cv_python_ldflags],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_ldflags=`$PYTHON_CONFIG --ldflags 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_ldflags=
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_LDFLAGS], [$pc_cv_python_ldflags])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_EXTENSION_SUFFIX
|
||||
# --------------------------------
|
||||
# Find the Python extension suffix (i.e. '.cpython-32.so')
|
||||
AC_DEFUN([PC_PYTHON_CHECK_EXTENSION_SUFFIX],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the suffix with python-config otherwise give up
|
||||
AC_CACHE_CHECK([for Python extension suffix], [pc_cv_python_extension_suffix],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_extension_suffix=`$PYTHON_CONFIG --extension-suffix 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_extension_suffix=
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_EXTENSION_SUFFIX], [$pc_cv_python_extension_suffix])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_ABI_FLAGS
|
||||
# -------------------------
|
||||
# Find the Python ABI flags
|
||||
AC_DEFUN([PC_PYTHON_CHECK_ABI_FLAGS],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the ABI flags with python-config otherwise give up
|
||||
AC_CACHE_CHECK([for Python ABI flags], [pc_cv_python_abi_flags],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_abi_flags=`$PYTHON_CONFIG --abiflags 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_abi_flags=
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_ABI_FLAGS], [$pc_cv_python_abi_flags])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_PLATFORM
|
||||
# ------------------------
|
||||
# At times (like when building shared libraries) you may want
|
||||
# to know which OS platform Python thinks this is.
|
||||
AC_DEFUN([PC_PYTHON_CHECK_PLATFORM],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
dnl Get the platform from within Python (sys.platform)
|
||||
AC_CACHE_CHECK([for Python platform], [pc_cv_python_platform],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
sys.stdout.write(sys.platform)
|
||||
])], [pc_cv_python_platform=`./conftest`;
|
||||
if test $? != 0; then
|
||||
AC_MSG_FAILURE([could not determine Python platform])
|
||||
fi],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AC_SUBST([PYTHON_PLATFORM], [$pc_cv_python_platform])
|
||||
])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_SITE_DIR
|
||||
# ---------------------
|
||||
# The directory to which new libraries are installed (i.e. the
|
||||
# "site-packages" directory.
|
||||
AC_DEFUN([PC_PYTHON_CHECK_SITE_DIR],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])AC_REQUIRE([PC_PYTHON_CHECK_PREFIX])[]dnl
|
||||
AC_CACHE_CHECK([for Python site-packages directory],
|
||||
[pc_cv_python_site_dir],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
if test "x$prefix" = xNONE
|
||||
then
|
||||
pc_py_prefix=$ac_default_prefix
|
||||
else
|
||||
pc_py_prefix=$prefix
|
||||
fi
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
from platform import python_implementation
|
||||
# sysconfig in CPython 2.7 doesn't work in virtualenv
|
||||
# <https://github.com/pypa/virtualenv/issues/118>
|
||||
# Prefer sysconfig over distutils.sysconfig, for better compatibility
|
||||
# with python 3.x. See automake bug#10227.
|
||||
# But not see <https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1408092>
|
||||
try:
|
||||
import sysconfig
|
||||
except:
|
||||
can_use_sysconfig = False
|
||||
except ImportError:
|
||||
can_use_sysconfig = 0
|
||||
else:
|
||||
can_use_sysconfig = True
|
||||
can_use_sysconfig = 1
|
||||
# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
|
||||
# <https://github.com/pypa/virtualenv/issues/118>
|
||||
# Can't use sysconfig in CPython > 3.0 in debian since it's broken :
|
||||
# <https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1408092>
|
||||
try:
|
||||
from platform import python_implementation
|
||||
if python_implementation() == 'CPython' and ( \
|
||||
float(sys.version[[:3]]) > 3.0 or sys.version[[:3]] == '2.7'):
|
||||
can_use_sysconfig = 0
|
||||
except ImportError:
|
||||
pass"
|
||||
|
||||
dnl Set up 4 directories:
|
||||
|
||||
dnl pythondir -- where to install python scripts. This is the
|
||||
dnl site-packages directory, not the python standard library
|
||||
dnl directory like in previous automake betas. This behavior
|
||||
dnl is more consistent with lispdir.m4 for example.
|
||||
dnl Query distutils for this directory.
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON script directory],
|
||||
[am_cv_python_pythondir],
|
||||
[if test "x$prefix" = xNONE
|
||||
then
|
||||
am_py_prefix=$ac_default_prefix
|
||||
else
|
||||
am_py_prefix=$prefix
|
||||
fi
|
||||
am_cv_python_pythondir=`$PYTHON -c "
|
||||
$am_python_setup_sysconfig
|
||||
if can_use_sysconfig:
|
||||
if python_implementation() == "CPython" and sys.version[[:3]] == '2.7':
|
||||
can_use_sysconfig = False
|
||||
if not can_use_sysconfig:
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(False, False, prefix='$pc_py_prefix')
|
||||
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
|
||||
else:
|
||||
sitedir = sysconfig.get_path('purelib', vars={'base':'$pc_py_prefix'})
|
||||
], [dnl
|
||||
sys.stdout.write(sitedir)
|
||||
])], [pc_cv_python_site_dir=`./conftest`],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
case $pc_cv_python_site_dir in
|
||||
$pc_py_prefix*)
|
||||
pc__strip_prefix=`echo "$pc_py_prefix" | sed 's|.|.|g'`
|
||||
pc_cv_python_site_dir=`echo "$pc_cv_python_site_dir" | sed "s,^$pc__strip_prefix/,,"`
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
|
||||
sys.stdout.write(sitedir)"`
|
||||
case $am_cv_python_pythondir in
|
||||
$am_py_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
|
||||
;;
|
||||
*)
|
||||
case $pc_py_prefix in
|
||||
case $am_py_prefix in
|
||||
/usr|/System*) ;;
|
||||
*)
|
||||
pc_cv_python_site_dir=lib/python$PYTHON_VERSION/site-packages
|
||||
am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
])
|
||||
AC_SUBST([pythondir], [\${prefix}/$pc_cv_python_site_dir])])# PC_PYTHON_CHECK_SITE_DIR
|
||||
])
|
||||
AC_SUBST([pythondir], [$am_cv_python_pythondir])
|
||||
|
||||
# PC_PYTHON_SITE_PACKAGE_DIR
|
||||
# --------------------------
|
||||
# $PACKAGE directory under PYTHON_SITE_DIR
|
||||
AC_DEFUN([PC_PYTHON_SITE_PACKAGE_DIR],
|
||||
[AC_REQUIRE([PC_PYTHON_CHECK_SITE_DIR])[]dnl
|
||||
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE_NAME])])
|
||||
dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
|
||||
dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
|
||||
dnl more consistent with the rest of automake.
|
||||
|
||||
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
|
||||
|
||||
# PC_PYTHON_CHECK_EXEC_DIR
|
||||
# ------------------------
|
||||
# directory for installing python extension modules (shared libraries)
|
||||
AC_DEFUN([PC_PYTHON_CHECK_EXEC_DIR],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])AC_REQUIRE([PC_PYTHON_CHECK_EXEC_PREFIX])[]dnl
|
||||
AC_CACHE_CHECK([for Python extension module directory],
|
||||
[pc_cv_python_exec_dir],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
if test "x$pc_cv_python_exec_prefix" = xNONE
|
||||
dnl pyexecdir -- directory for installing python extension modules
|
||||
dnl (shared libraries)
|
||||
dnl Query distutils for this directory.
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
|
||||
[am_cv_python_pyexecdir],
|
||||
[if test "x$exec_prefix" = xNONE
|
||||
then
|
||||
pc_py_exec_prefix=$pc_cv_python_prefix
|
||||
am_py_exec_prefix=$am_py_prefix
|
||||
else
|
||||
pc_py_exec_prefix=$pc_cv_python_exec_prefix
|
||||
am_py_exec_prefix=$exec_prefix
|
||||
fi
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
from platform import python_implementation
|
||||
# sysconfig in CPython 2.7 doesn't work in virtualenv
|
||||
# <https://github.com/pypa/virtualenv/issues/118>
|
||||
try:
|
||||
import sysconfig
|
||||
except:
|
||||
can_use_sysconfig = False
|
||||
else:
|
||||
can_use_sysconfig = True
|
||||
am_cv_python_pyexecdir=`$PYTHON -c "
|
||||
$am_python_setup_sysconfig
|
||||
if can_use_sysconfig:
|
||||
if python_implementation() == "CPython" and sys.version[[:3]] == '2.7':
|
||||
can_use_sysconfig = False
|
||||
if not can_use_sysconfig:
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(False, False, prefix='$pc_py__exec_prefix')
|
||||
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
|
||||
else:
|
||||
sitedir = sysconfig.get_path('purelib', vars={'platbase':'$pc_py_exec_prefix'})
|
||||
], [dnl
|
||||
sys.stdout.write(sitedir)
|
||||
])], [pc_cv_python_exec_dir=`./conftest`],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
case $pc_cv_python_exec_dir in
|
||||
$pc_py_exec_prefix*)
|
||||
pc__strip_prefix=`echo "$pc_py_exec_prefix" | sed 's|.|.|g'`
|
||||
pc_cv_python_exec_dir=`echo "$pc_cv_python_exec_dir" | sed "s,^$pc__strip_prefix/,,"`
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
|
||||
sys.stdout.write(sitedir)"`
|
||||
case $am_cv_python_pyexecdir in
|
||||
$am_py_exec_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
|
||||
;;
|
||||
*)
|
||||
case $pc_py_exec_prefix in
|
||||
case $am_py_exec_prefix in
|
||||
/usr|/System*) ;;
|
||||
*)
|
||||
pc_cv_python_exec_dir=lib/python$PYTHON_VERSION/site-packages
|
||||
am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
])
|
||||
AC_SUBST([pyexecdir], [\${exec_prefix}/$pc_cv_python_pyexecdir])]) #PY_PYTHON_CHECK_EXEC_LIB_DIR
|
||||
AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
|
||||
|
||||
dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
|
||||
|
||||
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
|
||||
|
||||
dnl Run any user-specified action.
|
||||
$2
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
|
||||
# PC_PYTHON_EXEC_PACKAGE_DIR
|
||||
# --------------------------
|
||||
# $PACKAGE directory under PYTHON_SITE_DIR
|
||||
AC_DEFUN([PC_PYTHON_EXEC_PACKAGE_DIR],
|
||||
[AC_REQUIRE([PC_PYTHON_CHECK_EXEC_DIR])[]dnl
|
||||
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE_NAME])])
|
||||
|
||||
|
||||
## -------------------------------------------- ##
|
||||
## 4. Looking for specific libs & functionality ##
|
||||
## -------------------------------------------- ##
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_MODULE(LIBRARY, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
# ----------------------------------------------------------------------
|
||||
# Macro for checking if a Python library is installed
|
||||
AC_DEFUN([PC_PYTHON_CHECK_MODULE],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
m4_define([pc_python_safe_mod], m4_bpatsubsts($1, [\.], [_]))
|
||||
AC_CACHE_CHECK([for Python '$1' library],
|
||||
[[pc_cv_python_module_]pc_python_safe_mod],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
try:
|
||||
import $1
|
||||
except:
|
||||
sys.exit(1)
|
||||
else:
|
||||
sys.exit(0)
|
||||
], [])],
|
||||
[[pc_cv_python_module_]pc_python_safe_mod="yes"],
|
||||
[[pc_cv_python_module_]pc_python_safe_mod="no"])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AS_IF([test "$[pc_cv_python_module_]pc_python_safe_mod" = "no"], [$3], [$2])
|
||||
])# PC_PYTHON_CHECK_MODULE
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_FUNC([LIBRARY], FUNCTION, ARGS, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
# ---------------------------------------------------------------------------------------
|
||||
# Check to see if a given function call, optionally from a module, can
|
||||
# be successfully called
|
||||
AC_DEFUN([PC_PYTHON_CHECK_FUNC],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
m4_define([pc_python_safe_mod], m4_bpatsubsts($1, [\.], [_]))
|
||||
AC_CACHE_CHECK([for Python m4_ifnblank($1, '$1.$2()', '$2()') function],
|
||||
[[pc_cv_python_func_]pc_python_safe_mod[_$2]],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
m4_ifnblank([$1], [dnl
|
||||
try:
|
||||
import $1
|
||||
except:
|
||||
sys.exit(1)
|
||||
], [])],
|
||||
[
|
||||
m4_ifnblank([$1], [
|
||||
try:
|
||||
$1.$2($3)], [
|
||||
try:
|
||||
$2($3)])
|
||||
except:
|
||||
sys.exit(1)
|
||||
else:
|
||||
sys.exit(0)
|
||||
])],
|
||||
[[pc_cv_python_func_]pc_python_safe_mod[_$2]="yes"],
|
||||
[[pc_cv_python_func_]pc_python_safe_mod[_$2]="no"])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AS_IF([test "$[pc_cv_python_func_]pc_python_safe_mod[_$2]" = "no"], [$5], [$4])
|
||||
])# PC_PYTHON_CHECK_FUNC
|
||||
# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
|
||||
# ---------------------------------------------------------------------------
|
||||
# Run ACTION-IF-TRUE if the Python interpreter PROG 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.
|
||||
# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
|
||||
AC_DEFUN([AM_PYTHON_CHECK_VERSION],
|
||||
[prog="import sys
|
||||
# split strings by '.' and convert to numeric. Append some zeros
|
||||
# because we need at least 4 digits for the hex conversion.
|
||||
# map returns an iterator in Python 3.0 and a list in 2.x
|
||||
minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
|
||||
minverhex = 0
|
||||
# xrange is not present in Python 3.0 and range returns an iterator
|
||||
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
|
||||
sys.exit(sys.hexversion < minverhex)"
|
||||
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
|
||||
|
|
|
|||
24
m4/python.m4.patch
Normal file
24
m4/python.m4.patch
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
--- /usr/share/aclocal-1.14/python.m4 2014-10-27 05:45:43.000000000 +0100
|
||||
+++ python.m4 2016-08-30 17:20:03.690623000 +0200
|
||||
@@ -111,6 +111,7 @@ AC_DEFUN([AM_PATH_PYTHON],
|
||||
import sys
|
||||
# Prefer sysconfig over distutils.sysconfig, for better compatibility
|
||||
# with python 3.x. See automake bug#10227.
|
||||
+# But not see <https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1408092>
|
||||
try:
|
||||
import sysconfig
|
||||
except ImportError:
|
||||
@@ -119,9 +120,12 @@ else:
|
||||
can_use_sysconfig = 1
|
||||
# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
|
||||
# <https://github.com/pypa/virtualenv/issues/118>
|
||||
+# Can't use sysconfig in CPython > 3.0 in debian since it's broken :
|
||||
+# <https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1408092>
|
||||
try:
|
||||
from platform import python_implementation
|
||||
- if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
|
||||
+ if python_implementation() == 'CPython' and ( \
|
||||
+ float(sys.version[[:3]]) > 3.0 or sys.version[[:3]] == '2.7'):
|
||||
can_use_sysconfig = 0
|
||||
except ImportError:
|
||||
pass"
|
||||
649
m4/python_pyconfigure.m4
Normal file
649
m4/python_pyconfigure.m4
Normal file
|
|
@ -0,0 +1,649 @@
|
|||
# Copyright 2012, 2013, 2014 Brandon Invergo <brandon@invergo.net>
|
||||
#
|
||||
# This file is part of pyconfigure. This program is free
|
||||
# software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# Under Section 7 of GPL version 3, you are granted additional
|
||||
# permissions described in the Autoconf Configure Script Exception,
|
||||
# version 3.0, as published by the Free Software Foundation.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# and a copy of the Autoconf Configure Script Exception along with
|
||||
# this program; see the files COPYINGv3 and COPYING.EXCEPTION
|
||||
# respectively. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# Many of these macros were adapted from ones written by Andrew Dalke
|
||||
# and James Henstridge and are included with the Automake utility
|
||||
# under the following copyright terms:
|
||||
#
|
||||
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Table of Contents:
|
||||
#
|
||||
# 1. Language selection
|
||||
# and routines to produce programs in a given language.
|
||||
#
|
||||
# 2. Producing programs in a given language.
|
||||
#
|
||||
# 3. Looking for a compiler
|
||||
# And possibly the associated preprocessor.
|
||||
#
|
||||
# 4. Looking for specific libs & functionality
|
||||
|
||||
|
||||
## ----------------------- ##
|
||||
## 1. Language selection. ##
|
||||
## ----------------------- ##
|
||||
|
||||
|
||||
# AC_LANG(Python)
|
||||
# ---------------
|
||||
AC_LANG_DEFINE([Python], [py], [PY], [PYTHON], [],
|
||||
[ac_ext=py
|
||||
ac_compile='chmod +x conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
|
||||
ac_link='chmod +x conftest.$ac_ext && cp conftest.$ac_ext conftest >&AS_MESSAGE_LOG_FD'
|
||||
])
|
||||
|
||||
|
||||
# AC_LANG_PYTHON
|
||||
# --------------
|
||||
AU_DEFUN([AC_LANG_PYTHON], [AC_LANG(Python)])
|
||||
|
||||
|
||||
## ----------------------- ##
|
||||
## 2. Producing programs. ##
|
||||
## ----------------------- ##
|
||||
|
||||
|
||||
# AC_LANG_PROGRAM(Python)([PROLOGUE], [BODY])
|
||||
# -------------------------------------------
|
||||
m4_define([AC_LANG_PROGRAM(Python)], [dnl
|
||||
@%:@!$PYTHON
|
||||
$1
|
||||
m4_if([$2], [], [], [dnl
|
||||
if __name__ == '__main__':
|
||||
$2])])
|
||||
|
||||
|
||||
# _AC_LANG_IO_PROGRAM(Python)
|
||||
# ---------------------------
|
||||
# Produce source that performs I/O.
|
||||
m4_define([_AC_LANG_IO_PROGRAM(Python)],
|
||||
[AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
try:
|
||||
h = open('conftest.out')
|
||||
except:
|
||||
sys.exit(1)
|
||||
else:
|
||||
close(h)
|
||||
sys.exit(0)
|
||||
], [])])
|
||||
|
||||
|
||||
# _AC_LANG_CALL(Python)([PROLOGUE], [FUNCTION])
|
||||
# ---------------------
|
||||
# Produce source that calls FUNCTION
|
||||
m4_define([_AC_LANG_CALL(Python)],
|
||||
[AC_LANG_PROGRAM([$1], [$2])])
|
||||
|
||||
|
||||
## -------------------------------------------- ##
|
||||
## 3. Looking for Compilers and Interpreters. ##
|
||||
## -------------------------------------------- ##
|
||||
|
||||
|
||||
AC_DEFUN([AC_LANG_COMPILER(Python)],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])])
|
||||
|
||||
|
||||
# PC_INIT([MIN-VERSION], [MAX-VERSION])
|
||||
# -----------------------------
|
||||
# Initialize pyconfigure, finding a Python interpreter with a given
|
||||
# minimum and/or maximum version.
|
||||
AC_DEFUN([PC_INIT],
|
||||
[PC_PROG_PYTHON([], [$1], [$2])
|
||||
dnl If we found something, do a sanity check that the interpreter really
|
||||
dnl has the version its name would suggest.
|
||||
m4_ifval([PYTHON],
|
||||
[PC_PYTHON_VERIFY_VERSION([>=], [pc_min_ver], [],
|
||||
[AC_MSG_FAILURE([No compatible Python interpreter found. If you're sure that you have one, try setting the PYTHON environment variable to the location of the interpreter.])])])
|
||||
m4_ifval([PYTHON],
|
||||
[PC_PYTHON_VERIFY_VERSION([<=], [pc_max_ver], [],
|
||||
[AC_MSG_FAILURE([No compatible Python interpreter found. If you're sure that you have one, try setting the PYTHON environment variable to the location of the interpreter.])])])
|
||||
])# PC_INIT
|
||||
|
||||
# PC_PROG_PYTHON([PROG-TO-CHECK-FOR], [MIN-VERSION], [MAX-VERSION])
|
||||
# ---------------------------------
|
||||
# Find a Python interpreter. Python versions prior to 2.0 are not
|
||||
# supported. (2.0 was released on October 16, 2000).
|
||||
AC_DEFUN_ONCE([PC_PROG_PYTHON],
|
||||
[AC_ARG_VAR([PYTHON], [the Python interpreter])
|
||||
dnl The default minimum version is 2.0
|
||||
m4_define_default([pc_min_ver], m4_ifval([$2], [$2], [2.0]))
|
||||
dnl The default maximum version is 3.3
|
||||
m4_define_default([pc_max_ver], m4_ifval([$3], [$3], [4.0]))
|
||||
dnl Build up a list of possible interpreter names.
|
||||
m4_define_default([_PC_PYTHON_INTERPRETER_LIST],
|
||||
[dnl If we want some Python 3 versions (max version >= 3.0),
|
||||
dnl also search for "python3"
|
||||
m4_if(m4_version_compare(pc_max_ver, [2.9]), [1], [python3], []) \
|
||||
dnl If we want some Python 2 versions (min version <= 2.7),
|
||||
dnl also search for "python2".
|
||||
m4_if(m4_version_compare(pc_min_ver, [2.8]), [-1], [python2], []) \
|
||||
dnl Construct a comma-separated list of interpreter names (python2.6,
|
||||
dnl python2.7, etc). We only care about the first 3 characters of the
|
||||
dnl version strings (major-dot-minor; not
|
||||
dnl major-dot-minor-dot-bugfix[-dot-whatever])
|
||||
m4_foreach([pc_ver],
|
||||
m4_esyscmd_s(seq -s[[", "]] -f["[[%.1f]]"] m4_substr(pc_max_ver, [0], [3]) -0.1 m4_substr(pc_min_ver, [0], [3])),
|
||||
dnl Remove python2.8 and python2.9 since they will never exist
|
||||
[m4_bmatch(pc_ver, [2.[89]], [], [python]pc_ver)]) \
|
||||
[python]])
|
||||
dnl Do the actual search at last.
|
||||
m4_ifval([$1],
|
||||
[AC_PATH_PROGS(PYTHON, [$1 _PC_PYTHON_INTERPRETER_LIST])],
|
||||
[AC_PATH_PROGS(PYTHON, [_PC_PYTHON_INTERPRETER_LIST])])
|
||||
])# PC_PROG_PYTHON
|
||||
|
||||
|
||||
# PC_PYTHON_PROG_PYTHON_CONFIG(PROG-TO-CHECK-FOR)
|
||||
# ----------------------------------------------
|
||||
# Find the python-config program
|
||||
AC_DEFUN([PC_PYTHON_PROG_PYTHON_CONFIG],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
AC_ARG_VAR([PYTHON_CONFIG], [the Python-config program])
|
||||
dnl python-config's binary name is normally based on the Python interpreter's
|
||||
dnl binary name (i.e. python2.7 -> python2.7-config)
|
||||
m4_define([_PYTHON_BASENAME], [`basename $PYTHON`])
|
||||
m4_ifval([$1],
|
||||
[AC_PATH_PROGS(PYTHON_CONFIG, [$1 _PYTHON_BASENAME-config])],
|
||||
[AC_PATH_PROG(PYTHON_CONFIG, _PYTHON_BASENAME-config)])
|
||||
]) # PC_PYTHON_PROG_PYTHON_CONFIG
|
||||
|
||||
|
||||
# PC_PYTHON_VERIFY_VERSION([RELATION], [VERSION], [ACTION-IF-TRUE], [ACTION-IF-FALSE])
|
||||
# ---------------------------------------------------------------------------
|
||||
# Run ACTION-IF-TRUE if the Python interpreter PROG has version [RELATION] VERSION.
|
||||
# i.e if RELATION is "<", check if PROG has a version number less than VERSION.
|
||||
# Run ACTION-IF-FALSE otherwise.
|
||||
# Specify RELATION as any mathematical comparison "<", ">", "<=", ">=", "==" or "!="
|
||||
# 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.
|
||||
# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
|
||||
AC_DEFUN([PC_PYTHON_VERIFY_VERSION],
|
||||
[m4_define([pc_python_safe_ver], m4_bpatsubsts($2, [\.], [_]))
|
||||
AC_CACHE_CHECK([if Python $1 '$2'],
|
||||
[[pc_cv_python_req_version_]pc_python_safe_ver],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
# split strings by '.' and convert to numeric. Append some zeros
|
||||
# because we need at least 4 digits for the hex conversion.
|
||||
# map returns an iterator in Python 3.0 and a list in 2.x
|
||||
reqver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
|
||||
reqverhex = 0
|
||||
# xrange is not present in Python 3.0 and range returns an iterator
|
||||
for i in list(range(4)):
|
||||
reqverhex = (reqverhex << 8) + reqver[[i]]
|
||||
# the final 8 bits are "0xf0" for final versions, which are all
|
||||
# we'll test against, since it's doubtful that a released software
|
||||
# will depend on an alpha- or beta-state Python.
|
||||
reqverhex += 0xf0
|
||||
if sys.hexversion $1 reqverhex:
|
||||
sys.exit()
|
||||
else:
|
||||
sys.exit(1)
|
||||
])],
|
||||
[[pc_cv_python_req_version_]pc_python_safe_ver=yes],
|
||||
[[pc_cv_python_req_version_]pc_python_safe_ver=no])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AS_IF([test "$[pc_cv_python_req_version_]pc_python_safe_ver" = "no"], [$4], [$3])
|
||||
])# PC_PYTHON_VERIFY_VERSION
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_VERSION
|
||||
# -----------------------
|
||||
# Query Python for its version number. Getting [:3] seems to be
|
||||
# the best way to do this; it's what "site.py" does in the standard
|
||||
# library.
|
||||
AC_DEFUN([PC_PYTHON_CHECK_VERSION],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
AC_CACHE_CHECK([for $1 version],
|
||||
[pc_cv_python_version],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
sys.stdout.write(sys.version[[:3]])
|
||||
])],
|
||||
[pc_cv_python_version=`./conftest`],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AC_SUBST([PYTHON_VERSION], [$pc_cv_python_version])
|
||||
])# PC_PYTHON_CHECK_VERSION
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_PREFIX
|
||||
# ----------------------
|
||||
# Use the value of $prefix for the corresponding value of
|
||||
# PYTHON_PREFIX. This is made a distinct variable so it can be
|
||||
# overridden if need be. However, general consensus is that you
|
||||
# shouldn't need this ability.
|
||||
AC_DEFUN([PC_PYTHON_CHECK_PREFIX],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to get it with python-config otherwise do it from within Python
|
||||
AC_CACHE_CHECK([for Python prefix], [pc_cv_python_prefix],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_prefix=`$PYTHON_CONFIG --prefix 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
AC_LANG_PUSH(Python)[]dnl
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
sys.stdout.write(sys.prefix)
|
||||
])], [pc_cv_python_prefix=`./conftest`;
|
||||
if test $? != 0; then
|
||||
AC_MSG_FAILURE([could not determine Python prefix])
|
||||
fi],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
fi])
|
||||
AC_SUBST([PYTHON_PREFIX], [$pc_cv_python_prefix])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_EXEC_PREFIX
|
||||
# --------------------------
|
||||
# Like above, but for $exec_prefix
|
||||
AC_DEFUN([PC_PYTHON_CHECK_EXEC_PREFIX],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to get it with python-config otherwise do it from within Python
|
||||
AC_CACHE_CHECK([for Python exec-prefix], [pc_cv_python_exec_prefix],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_exec_prefix=`$PYTHON_CONFIG --exec-prefix 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
AC_LANG_PUSH(Python)[]dnl
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
sys.stdout.write(sys.exec_prefix)
|
||||
])],
|
||||
[pc_cv_python_exec_prefix=`./conftest`;
|
||||
if test $? != 0; then
|
||||
AC_MSG_FAILURE([could not determine Python exec_prefix])
|
||||
fi],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_EXEC_PREFIX], [$pc_cv_python_exec_prefix])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_INCLUDES
|
||||
# ------------------------
|
||||
# Find the Python header file include flags (ie
|
||||
# '-I/usr/include/python')
|
||||
AC_DEFUN([PC_PYTHON_CHECK_INCLUDES],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the headers location with python-config otherwise guess
|
||||
AC_CACHE_CHECK([for Python includes], [pc_cv_python_includes],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_includes=`$PYTHON_CONFIG --includes 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_includes="[-I$includedir/$_PYTHON_BASENAME]m4_ifdef(PYTHON_ABI_FLAGS,
|
||||
PYTHON_ABI_FLAGS,)"
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_INCLUDES], [$pc_cv_python_includes])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_HEADERS([ACTION-IF-PRESENT], [ACTION-IF-ABSENT])
|
||||
# -----------------------
|
||||
# Check for the presence and usability of Python.h
|
||||
AC_DEFUN([PC_PYTHON_CHECK_HEADERS],
|
||||
[AC_REQUIRE([PC_PYTHON_CHECK_INCLUDES])[]dnl
|
||||
pc_cflags_store=$CPPFLAGS
|
||||
CPPFLAGS="$CFLAGS $PYTHON_INCLUDES"
|
||||
AC_CHECK_HEADER([Python.h], [$1], [$2])
|
||||
CPPFLAGS=$pc_cflags_store
|
||||
])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_LIBS
|
||||
# --------------------
|
||||
# Find the Python lib flags (ie '-lpython')
|
||||
AC_DEFUN([PC_PYTHON_CHECK_LIBS],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the lib flags with python-config otherwise guess
|
||||
AC_CACHE_CHECK([for Python libs], [pc_cv_python_libs],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_libs=`$PYTHON_CONFIG --libs 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_libs="[-l$_PYTHON_BASENAME]m4_ifdef(PYTHON_ABI_FLAGS, PYTHON_ABI_FLAGS,)"
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_LIBS], [$pc_cv_python_libs])])
|
||||
|
||||
|
||||
# PC_PYTHON_TEST_LIBS(LIBRARY-FUNCTION, [ACTION-IF-PRESENT], [ACTION-IF-ABSENT])
|
||||
# -------------------
|
||||
# Verify that the Python libs can be loaded
|
||||
AC_DEFUN([PC_PYTHON_TEST_LIBS],
|
||||
[AC_REQUIRE([PC_PYTHON_CHECK_LIBS])[]dnl
|
||||
pc_libflags_store=$LIBS
|
||||
for lflag in $PYTHON_LIBS; do
|
||||
case $lflag in
|
||||
-lpython*@:}@
|
||||
LIBS="$LIBS $lflag"
|
||||
pc_libpython=`echo $lflag | sed -e 's/^-l//'`
|
||||
;;
|
||||
*@:}@;;
|
||||
esac
|
||||
done
|
||||
AC_CHECK_LIB([$pc_libpython], [$1], [$2], [$3])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_CFLAGS
|
||||
# ----------------------
|
||||
# Find the Python CFLAGS
|
||||
AC_DEFUN([PC_PYTHON_CHECK_CFLAGS],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the CFLAGS with python-config otherwise give up
|
||||
AC_CACHE_CHECK([for Python CFLAGS], [pc_cv_python_cflags],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_cflags=`$PYTHON_CONFIG --cflags 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_cflags=
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_CFLAGS], [$pc_cv_python_cflags])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_LDFLAGS
|
||||
# -----------------------
|
||||
# Find the Python LDFLAGS
|
||||
AC_DEFUN([PC_PYTHON_CHECK_LDFLAGS],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the LDFLAGS with python-config otherwise give up
|
||||
AC_CACHE_CHECK([for Python LDFLAGS], [pc_cv_python_ldflags],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_ldflags=`$PYTHON_CONFIG --ldflags 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_ldflags=
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_LDFLAGS], [$pc_cv_python_ldflags])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_EXTENSION_SUFFIX
|
||||
# --------------------------------
|
||||
# Find the Python extension suffix (i.e. '.cpython-32.so')
|
||||
AC_DEFUN([PC_PYTHON_CHECK_EXTENSION_SUFFIX],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the suffix with python-config otherwise give up
|
||||
AC_CACHE_CHECK([for Python extension suffix], [pc_cv_python_extension_suffix],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_extension_suffix=`$PYTHON_CONFIG --extension-suffix 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_extension_suffix=
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_EXTENSION_SUFFIX], [$pc_cv_python_extension_suffix])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_ABI_FLAGS
|
||||
# -------------------------
|
||||
# Find the Python ABI flags
|
||||
AC_DEFUN([PC_PYTHON_CHECK_ABI_FLAGS],
|
||||
[AC_REQUIRE([PC_PYTHON_PROG_PYTHON_CONFIG])[]dnl
|
||||
dnl Try to find the ABI flags with python-config otherwise give up
|
||||
AC_CACHE_CHECK([for Python ABI flags], [pc_cv_python_abi_flags],
|
||||
[if test -x "$PYTHON_CONFIG"; then
|
||||
pc_cv_python_abi_flags=`$PYTHON_CONFIG --abiflags 2>&AS_MESSAGE_LOG_FD`
|
||||
else
|
||||
pc_cv_python_abi_flags=
|
||||
fi
|
||||
])
|
||||
AC_SUBST([PYTHON_ABI_FLAGS], [$pc_cv_python_abi_flags])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_PLATFORM
|
||||
# ------------------------
|
||||
# At times (like when building shared libraries) you may want
|
||||
# to know which OS platform Python thinks this is.
|
||||
AC_DEFUN([PC_PYTHON_CHECK_PLATFORM],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
dnl Get the platform from within Python (sys.platform)
|
||||
AC_CACHE_CHECK([for Python platform], [pc_cv_python_platform],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
], [dnl
|
||||
sys.stdout.write(sys.platform)
|
||||
])], [pc_cv_python_platform=`./conftest`;
|
||||
if test $? != 0; then
|
||||
AC_MSG_FAILURE([could not determine Python platform])
|
||||
fi],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AC_SUBST([PYTHON_PLATFORM], [$pc_cv_python_platform])
|
||||
])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_SITE_DIR
|
||||
# ---------------------
|
||||
# The directory to which new libraries are installed (i.e. the
|
||||
# "site-packages" directory.
|
||||
AC_DEFUN([PC_PYTHON_CHECK_SITE_DIR],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])AC_REQUIRE([PC_PYTHON_CHECK_PREFIX])[]dnl
|
||||
AC_CACHE_CHECK([for Python site-packages directory],
|
||||
[pc_cv_python_site_dir],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
if test "x$prefix" = xNONE
|
||||
then
|
||||
pc_py_prefix=$ac_default_prefix
|
||||
else
|
||||
pc_py_prefix=$prefix
|
||||
fi
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
from platform import python_implementation
|
||||
# sysconfig in CPython 2.7 doesn't work in virtualenv
|
||||
# <https://github.com/pypa/virtualenv/issues/118>
|
||||
try:
|
||||
import sysconfig
|
||||
except:
|
||||
can_use_sysconfig = False
|
||||
else:
|
||||
can_use_sysconfig = True
|
||||
if can_use_sysconfig:
|
||||
# Can't use sysconfig in CPython > 3.0 in debian since it's broken :
|
||||
# <https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1408092>
|
||||
if python_implementation() == "CPython" (
|
||||
float(sys.version[[:3]]) > 3.0 or sys.version[[:3]] == '2.7'):
|
||||
can_use_sysconfig = False
|
||||
if not can_use_sysconfig:
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(False, False, prefix='$pc_py_prefix')
|
||||
else:
|
||||
sitedir = sysconfig.get_path('purelib', vars={'base':'$pc_py_prefix'})
|
||||
], [dnl
|
||||
sys.stdout.write(sitedir)
|
||||
])], [pc_cv_python_site_dir=`./conftest`],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
case $pc_cv_python_site_dir in
|
||||
$pc_py_prefix*)
|
||||
pc__strip_prefix=`echo "$pc_py_prefix" | sed 's|.|.|g'`
|
||||
pc_cv_python_site_dir=`echo "$pc_cv_python_site_dir" | sed "s,^$pc__strip_prefix/,,"`
|
||||
;;
|
||||
*)
|
||||
case $pc_py_prefix in
|
||||
/usr|/System*) ;;
|
||||
*)
|
||||
pc_cv_python_site_dir=lib/python$PYTHON_VERSION/site-packages
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
])
|
||||
AC_SUBST([pythondir], [\${prefix}/$pc_cv_python_site_dir])])# PC_PYTHON_CHECK_SITE_DIR
|
||||
|
||||
# PC_PYTHON_SITE_PACKAGE_DIR
|
||||
# --------------------------
|
||||
# $PACKAGE directory under PYTHON_SITE_DIR
|
||||
AC_DEFUN([PC_PYTHON_SITE_PACKAGE_DIR],
|
||||
[AC_REQUIRE([PC_PYTHON_CHECK_SITE_DIR])[]dnl
|
||||
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE_NAME])])
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_EXEC_DIR
|
||||
# ------------------------
|
||||
# directory for installing python extension modules (shared libraries)
|
||||
AC_DEFUN([PC_PYTHON_CHECK_EXEC_DIR],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])AC_REQUIRE([PC_PYTHON_CHECK_EXEC_PREFIX])[]dnl
|
||||
AC_CACHE_CHECK([for Python extension module directory],
|
||||
[pc_cv_python_exec_dir],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
if test "x$pc_cv_python_exec_prefix" = xNONE
|
||||
then
|
||||
pc_py_exec_prefix=$pc_cv_python_prefix
|
||||
else
|
||||
pc_py_exec_prefix=$pc_cv_python_exec_prefix
|
||||
fi
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
from platform import python_implementation
|
||||
# sysconfig in CPython 2.7 doesn't work in virtualenv
|
||||
# <https://github.com/pypa/virtualenv/issues/118>
|
||||
try:
|
||||
import sysconfig
|
||||
except:
|
||||
can_use_sysconfig = False
|
||||
else:
|
||||
can_use_sysconfig = True
|
||||
if can_use_sysconfig:
|
||||
if python_implementation() == "CPython" and sys.version[[:3]] == '2.7':
|
||||
can_use_sysconfig = False
|
||||
if not can_use_sysconfig:
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(False, False, prefix='$pc_py__exec_prefix')
|
||||
else:
|
||||
sitedir = sysconfig.get_path('purelib', vars={'platbase':'$pc_py_exec_prefix'})
|
||||
], [dnl
|
||||
sys.stdout.write(sitedir)
|
||||
])], [pc_cv_python_exec_dir=`./conftest`],
|
||||
[AC_MSG_FAILURE([failed to run Python program])])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
case $pc_cv_python_exec_dir in
|
||||
$pc_py_exec_prefix*)
|
||||
pc__strip_prefix=`echo "$pc_py_exec_prefix" | sed 's|.|.|g'`
|
||||
pc_cv_python_exec_dir=`echo "$pc_cv_python_exec_dir" | sed "s,^$pc__strip_prefix/,,"`
|
||||
;;
|
||||
*)
|
||||
case $pc_py_exec_prefix in
|
||||
/usr|/System*) ;;
|
||||
*)
|
||||
pc_cv_python_exec_dir=lib/python$PYTHON_VERSION/site-packages
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
])
|
||||
AC_SUBST([pyexecdir], [\${exec_prefix}/$pc_cv_python_pyexecdir])]) #PY_PYTHON_CHECK_EXEC_LIB_DIR
|
||||
|
||||
|
||||
# PC_PYTHON_EXEC_PACKAGE_DIR
|
||||
# --------------------------
|
||||
# $PACKAGE directory under PYTHON_SITE_DIR
|
||||
AC_DEFUN([PC_PYTHON_EXEC_PACKAGE_DIR],
|
||||
[AC_REQUIRE([PC_PYTHON_CHECK_EXEC_DIR])[]dnl
|
||||
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE_NAME])])
|
||||
|
||||
|
||||
## -------------------------------------------- ##
|
||||
## 4. Looking for specific libs & functionality ##
|
||||
## -------------------------------------------- ##
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_MODULE(LIBRARY, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
# ----------------------------------------------------------------------
|
||||
# Macro for checking if a Python library is installed
|
||||
AC_DEFUN([PC_PYTHON_CHECK_MODULE],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
m4_define([pc_python_safe_mod], m4_bpatsubsts($1, [\.], [_]))
|
||||
AC_CACHE_CHECK([for Python '$1' library],
|
||||
[[pc_cv_python_module_]pc_python_safe_mod],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
try:
|
||||
import $1
|
||||
except:
|
||||
sys.exit(1)
|
||||
else:
|
||||
sys.exit(0)
|
||||
], [])],
|
||||
[[pc_cv_python_module_]pc_python_safe_mod="yes"],
|
||||
[[pc_cv_python_module_]pc_python_safe_mod="no"])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AS_IF([test "$[pc_cv_python_module_]pc_python_safe_mod" = "no"], [$3], [$2])
|
||||
])# PC_PYTHON_CHECK_MODULE
|
||||
|
||||
|
||||
# PC_PYTHON_CHECK_FUNC([LIBRARY], FUNCTION, ARGS, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
# ---------------------------------------------------------------------------------------
|
||||
# Check to see if a given function call, optionally from a module, can
|
||||
# be successfully called
|
||||
AC_DEFUN([PC_PYTHON_CHECK_FUNC],
|
||||
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
||||
m4_define([pc_python_safe_mod], m4_bpatsubsts($1, [\.], [_]))
|
||||
AC_CACHE_CHECK([for Python m4_ifnblank($1, '$1.$2()', '$2()') function],
|
||||
[[pc_cv_python_func_]pc_python_safe_mod[_$2]],
|
||||
[AC_LANG_PUSH(Python)[]dnl
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM([dnl
|
||||
import sys
|
||||
m4_ifnblank([$1], [dnl
|
||||
try:
|
||||
import $1
|
||||
except:
|
||||
sys.exit(1)
|
||||
], [])],
|
||||
[
|
||||
m4_ifnblank([$1], [
|
||||
try:
|
||||
$1.$2($3)], [
|
||||
try:
|
||||
$2($3)])
|
||||
except:
|
||||
sys.exit(1)
|
||||
else:
|
||||
sys.exit(0)
|
||||
])],
|
||||
[[pc_cv_python_func_]pc_python_safe_mod[_$2]="yes"],
|
||||
[[pc_cv_python_func_]pc_python_safe_mod[_$2]="no"])
|
||||
AC_LANG_POP(Python)[]dnl
|
||||
])
|
||||
AS_IF([test "$[pc_cv_python_func_]pc_python_safe_mod[_$2]" = "no"], [$5], [$4])
|
||||
])# PC_PYTHON_CHECK_FUNC
|
||||
14
m4/python_pyconfigure.m4.patch
Normal file
14
m4/python_pyconfigure.m4.patch
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
--- /usr/share/pyconfigure/m4/python.m4 2016-04-27 05:19:12.000000000 +0200
|
||||
+++ python_pyconfigure.m4 2016-08-30 17:21:56.810623000 +0200
|
||||
@@ -475,7 +475,10 @@ except:
|
||||
else:
|
||||
can_use_sysconfig = True
|
||||
if can_use_sysconfig:
|
||||
- if python_implementation() == "CPython" and sys.version[[:3]] == '2.7':
|
||||
+ # Can't use sysconfig in CPython > 3.0 in debian since it's broken :
|
||||
+ # <https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1408092>
|
||||
+ if python_implementation() == "CPython" (
|
||||
+ float(sys.version[[:3]]) > 3.0 or sys.version[[:3]] == '2.7'):
|
||||
can_use_sysconfig = False
|
||||
if not can_use_sysconfig:
|
||||
from distutils import sysconfig
|
||||
Loading…
Add table
Add a link
Reference in a new issue