change filenames from python-configure to pyconfigure
diff --git a/Makefile.am b/Makefile.am
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,1 +1,4 @@
-info_TEXINFOS = doc/python-configure.texi
+info_TEXINFOS = doc/pyconfigure.texi
+
+#EXTRA_DIST = src/Makefile src/Makefile.in src/aclocal.m4 src/configure \
+#src/configure.ac src/install.sh src/missing src/m4/python.m4
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
@@ -65,13 +65,13 @@ CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
am__dirstamp = $(am__leading_dot)dirstamp
-INFO_DEPS = $(srcdir)/doc/python-configure.info
+INFO_DEPS = $(srcdir)/doc/pyconfigure.info
am__TEXINFO_TEX_DIR = $(srcdir)
-DVIS = doc/python-configure.dvi
-PDFS = doc/python-configure.pdf
-PSS = doc/python-configure.ps
-HTMLS = doc/python-configure.html
-TEXINFOS = doc/python-configure.texi
+DVIS = doc/pyconfigure.dvi
+PDFS = doc/pyconfigure.pdf
+PSS = doc/pyconfigure.ps
+HTMLS = doc/pyconfigure.html
+TEXINFOS = doc/pyconfigure.texi
TEXI2DVI = texi2dvi
MAKEINFOHTML = $(MAKEINFO) --html
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
@@ -199,7 +199,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-info_TEXINFOS = doc/python-configure.texi
+info_TEXINFOS = doc/pyconfigure.texi
all: all-am
.SUFFIXES:
@@ -242,7 +242,7 @@ doc/$(am__dirstamp):
@$(MKDIR_P) doc
@: > doc/$(am__dirstamp)
-$(srcdir)/doc/python-configure.info: doc/python-configure.texi $(srcdir)/doc/version.texi
+$(srcdir)/doc/pyconfigure.info: doc/pyconfigure.texi $(srcdir)/doc/version.texi
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
am__cwd=`pwd` && $(am__cd) $(srcdir) && \
rm -rf $$backupdir && mkdir $$backupdir && \
@@ -253,7 +253,7 @@ doc/$(am__dirstamp):
else :; fi && \
cd "$$am__cwd"; \
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
- -o $@ $(srcdir)/doc/python-configure.texi; \
+ -o $@ $(srcdir)/doc/pyconfigure.texi; \
then \
rc=0; \
$(am__cd) $(srcdir); \
@@ -264,20 +264,20 @@ doc/$(am__dirstamp):
fi; \
rm -rf $$backupdir; exit $$rc
-doc/python-configure.dvi: doc/python-configure.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+doc/pyconfigure.dvi: doc/pyconfigure.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
- $(TEXI2DVI) --clean -o $@ `test -f 'doc/python-configure.texi' || echo '$(srcdir)/'`doc/python-configure.texi
+ $(TEXI2DVI) --clean -o $@ `test -f 'doc/pyconfigure.texi' || echo '$(srcdir)/'`doc/pyconfigure.texi
-doc/python-configure.pdf: doc/python-configure.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+doc/pyconfigure.pdf: doc/pyconfigure.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
- $(TEXI2PDF) --clean -o $@ `test -f 'doc/python-configure.texi' || echo '$(srcdir)/'`doc/python-configure.texi
+ $(TEXI2PDF) --clean -o $@ `test -f 'doc/pyconfigure.texi' || echo '$(srcdir)/'`doc/pyconfigure.texi
-doc/python-configure.html: doc/python-configure.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+doc/pyconfigure.html: doc/pyconfigure.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
rm -rf $(@:.html=.htp)
if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
- -o $(@:.html=.htp) `test -f 'doc/python-configure.texi' || echo '$(srcdir)/'`doc/python-configure.texi; \
+ -o $(@:.html=.htp) `test -f 'doc/pyconfigure.texi' || echo '$(srcdir)/'`doc/pyconfigure.texi; \
then \
rm -rf $@; \
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
@@ -288,10 +288,10 @@ doc/python-configure.html: doc/python-co
exit 1; \
fi
$(srcdir)/doc/version.texi: $(srcdir)/doc/stamp-vti
-$(srcdir)/doc/stamp-vti: doc/python-configure.texi $(top_srcdir)/configure
+$(srcdir)/doc/stamp-vti: doc/pyconfigure.texi $(top_srcdir)/configure
test -f doc/$(am__dirstamp) || $(MAKE) $(AM_MAKEFLAGS) doc/$(am__dirstamp)
- @(dir=.; test -f ./doc/python-configure.texi || dir=$(srcdir); \
- set `$(SHELL) $(srcdir)/mdate-sh $$dir/doc/python-configure.texi`; \
+ @(dir=.; test -f ./doc/pyconfigure.texi || dir=$(srcdir); \
+ set `$(SHELL) $(srcdir)/mdate-sh $$dir/doc/pyconfigure.texi`; \
echo "@set UPDATED $$1 $$2 $$3"; \
echo "@set UPDATED-MONTH $$2 $$3"; \
echo "@set EDITION $(VERSION)"; \
@@ -388,19 +388,17 @@ dist-info: $(INFO_DEPS)
done
mostlyclean-aminfo:
- -rm -rf python-configure.aux python-configure.cp python-configure.cps \
- python-configure.fn python-configure.fns python-configure.ky \
- python-configure.kys python-configure.log \
- python-configure.pg python-configure.tmp \
- python-configure.toc python-configure.tp \
- python-configure.tps python-configure.vr \
- python-configure.vrs
+ -rm -rf pyconfigure.aux pyconfigure.cp pyconfigure.cps pyconfigure.fn \
+ pyconfigure.fns pyconfigure.ky pyconfigure.kys \
+ pyconfigure.log pyconfigure.pg pyconfigure.tmp \
+ pyconfigure.toc pyconfigure.tp pyconfigure.tps \
+ pyconfigure.vr pyconfigure.vrs
clean-aminfo:
- -test -z "doc/python-configure.dvi doc/python-configure.pdf \
- doc/python-configure.ps doc/python-configure.html" \
- || rm -rf doc/python-configure.dvi doc/python-configure.pdf \
- doc/python-configure.ps doc/python-configure.html
+ -test -z "doc/pyconfigure.dvi doc/pyconfigure.pdf doc/pyconfigure.ps \
+ doc/pyconfigure.html" \
+ || rm -rf doc/pyconfigure.dvi doc/pyconfigure.pdf doc/pyconfigure.ps \
+ doc/pyconfigure.html
maintainer-clean-aminfo:
@list='$(INFO_DEPS)'; for i in $$list; do \
@@ -796,6 +794,9 @@ uninstall-am: uninstall-dvi-am uninstall
uninstall-ps-am
+#EXTRA_DIST = src/Makefile src/Makefile.in src/aclocal.m4 src/configure \
+#src/configure.ac src/install.sh src/missing src/m4/python.m4
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -1,6 +1,8 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for python-configure 0.1.
+# Generated by GNU Autoconf 2.69 for pyconfigure 0.1.
+#
+# Report bugs to <bug-pyconfigure@gnu.org>.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -263,10 +265,11 @@ fi
$as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
$as_echo "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: bug-pyconfigure@gnu.org about your system, including
+$0: any error possibly output before this message. Then
+$0: install a modern shell, or manually run the script
+$0: under such a shell if you do have one."
fi
exit 1
fi
@@ -574,11 +577,11 @@ MFLAGS=
MAKEFLAGS=
# Identity of this package.
-PACKAGE_NAME='python-configure'
-PACKAGE_TARNAME='python-configure'
+PACKAGE_NAME='pyconfigure'
+PACKAGE_TARNAME='pyconfigure'
PACKAGE_VERSION='0.1'
-PACKAGE_STRING='python-configure 0.1'
-PACKAGE_BUGREPORT=''
+PACKAGE_STRING='pyconfigure 0.1'
+PACKAGE_BUGREPORT='bug-pyconfigure@gnu.org'
PACKAGE_URL=''
ac_subst_vars='LTLIBOBJS
@@ -1192,7 +1195,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures python-configure 0.1 to adapt to many kinds of systems.
+\`configure' configures pyconfigure 0.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1240,8 +1243,7 @@ Fine tuning of the installation director
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root
- [DATAROOTDIR/doc/python-configure]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/pyconfigure]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1259,11 +1261,11 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of python-configure 0.1:";;
+ short | recursive ) echo "Configuration of pyconfigure 0.1:";;
esac
cat <<\_ACEOF
-Report bugs to the package provider.
+Report bugs to <bug-pyconfigure@gnu.org>.
_ACEOF
ac_status=$?
fi
@@ -1326,7 +1328,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-python-configure configure 0.1
+pyconfigure configure 0.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1343,7 +1345,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by python-configure $as_me 0.1, which was
+It was created by pyconfigure $as_me 0.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2166,7 +2168,7 @@ fi
# Define the identity of the package.
- PACKAGE='python-configure'
+ PACKAGE='pyconfigure'
VERSION='0.1'
@@ -2853,7 +2855,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by python-configure $as_me 0.1, which was
+This file was extended by pyconfigure $as_me 0.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -2900,13 +2902,13 @@ Usage: $0 [OPTION]... [TAG]...
Configuration files:
$config_files
-Report bugs to the package provider."
+Report bugs to <bug-pyconfigure@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-python-configure config.status 0.1
+pyconfigure config.status 0.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT(python-configure, 0.1)
+AC_INIT(pyconfigure, 0.1, bug-pyconfigure@gnu.org)
AM_INIT_AUTOMAKE
AC_PROG_INSTALL
diff --git a/doc/pyconfigure.info b/doc/pyconfigure.info
new file mode 100644
--- /dev/null
+++ b/doc/pyconfigure.info
@@ -0,0 +1,914 @@
+This is pyconfigure.info, produced by makeinfo version 4.13 from
+/home/brandon/Projects/python-autoconfigure/doc/pyconfigure.texi.
+
+This manual is for pyconfigure (version 0.1, updated 3 November 2012).
+
+ Copyright (C) 2012 Brandon Invergo
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License."
+
+INFO-DIR-SECTION Miscellaneous
+START-INFO-DIR-ENTRY
+* pyconfigure: (pyconfigure)GNU Standards-compliant Python
+ configuration and installation
+END-INFO-DIR-ENTRY
+
+
+File: pyconfigure.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
+
+GNU Source Release Collection
+*****************************
+
+This manual is for pyconfigure (version 0.1, 3 November 2012).
+
+* Menu:
+
+* Introduction::
+* Using pyconfigure::
+* Appendix::
+* GNU Free Documentation License::
+
+ --- The Detailed Node Listing ---
+
+Introduction
+
+* Configuring Python packages::
+
+Using pyconfigure
+
+* Required macros::
+* Verifying the Python version::
+* Checking for a module or function::
+* Writing test programs::
+* Using Sphinxbuild to build documentation::
+
+Appendix
+
+* Autoconf Macros
+
+
+File: pyconfigure.info, Node: Introduction, Next: Using pyconfigure, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+Python packages typically are configured and installed through the use
+of `distutils' or one of its derivatives. The user performs necessary
+actions via a Python script called `setup.py'. For simple programs,
+this is straight-forward. However, for more complex software packages,
+especially for those which also include code in other languages such as
+C or Fortran, the limitations of the `distutils' method quickly become
+apparent.
+
+ The configuration and installation of GNU software and many other
+programs, on the other hand, is done according to the use of standard
+`configure' scripts and Make recipes. This method has the advantage of
+being language-agnostic, very flexible, time-proven. pyconfigure
+consists of all the files necessary to use the standard GNU build
+process to configure and install Python packages.
+
+ Without modification, pyconfigure provides a wrapper around
+`setup.py', which allows the user to use the familiar GNU installation
+commands to install a Python package. With the powerful Autoconf macros
+that it provides, a Python developer can greatly extend or even replace
+altogether the capabilities of `setup.py'. Plus, since this method is
+language-agnostic, all the power of Autoconf for compiled languages is
+gained for free.
+
+* Menu:
+
+* Configuring Python packages::
+
+
+File: pyconfigure.info, Node: Configuring Python packages, Prev: Introduction, Up: Introduction
+
+1.1 Configuring Python packages
+===============================
+
+Configuring and installing Python packages which use pyconfigure
+follows the familiar steps of all standard GNU software:
+
+ $ ./configure
+ $ make
+ $ make install
+
+ In fact, since most programs do not have anything to build, the
+second step could usually be skipped.
+
+ As usual, the user may pass arguments to `configure' in order to
+specify how she wants the software to be installed. By default,
+`configure' takes the following useful arguments:
+
+Argument Description
+--------------------------------------------------------------------------
+`--prefix' Set the root directory in which to install files
+ (default=/usr/local)
+`--with-virtualenv'Install to a virtualenv at `$prefix'
+`PYTHON' Path to the Python interpreter to use
+`PYTHONPATH' The PYTHONPATH to use during the installation
+
+ However, as the developer is expected to customize these files, the
+final `configure' script may take many more arguments. The developer is
+expected to provide proper documentation in this case.
+
+
+File: pyconfigure.info, Node: Using pyconfigure, Next: Appendix, Prev: Introduction, Up: Top
+
+2 Using pyconfigure
+*******************
+
+While it is possible to simply copy the pyconfigure files from the
+`src' directory into your project's source directory and use them
+unmodified, it is recommended that you customize them to more
+appropriately fit your needs. In particular, you will want to customize
+`configure.ac' and `Makefile.in'. `configure.ac' contains a series of
+macros which are used by Autoconf to build a portable `configure' shell
+script. This script either guesses important system settings or is
+provided them by the user. When the user invokes `configure', it uses
+`Makefile.in' as a template to create the Make recipe `Makefile'.
+
+ Several Autoconf macros are provided in the pyconfigure file
+`src/m4/python.m4' to allow the developer to write robust tests *Note
+Autoconf macros::. Note that when you distribute your software, you
+must include this directory and file with your distribution.
+
+ Once you modify your `configure.ac' to your liking, you must
+regenerate your `configure' script with autoreconf:
+
+ $ autoreconf -fvi
+
+ A full explanation of the use of Autoconf macros is beyond the scope
+of this document, however it is worth presenting some examples.
+
+* Menu:
+
+* Required macros::
+* Verifying the Python version::
+* Checking for a module or function::
+* Writing test programs::
+* Using Sphinxbuild to build documentation::
+
+
+File: pyconfigure.info, Node: Required macros, Next: Verifying the Python version, Prev: Using pyconfigure, Up: Using pyconfigure
+
+2.1 Required macros
+===================
+
+Several macros are required in `configure.ac' to use pyconfigure. These
+are:
+
+ m4_include([m4/python.m4])
+
+ This macro imports all of the Python Autoconf macros. If you choose
+to write your own macros for other purposes, you would also include them
+in this manner.
+
+ AC_INIT(project_name, project_version)
+
+ This initializes Autoconf and also substitutes your project name and
+version in any output that it generates.
+
+ AC_CONFIG_MACRO_DIR([m4])
+
+ Now that Autoconf is initialized, we inform it of the location of our
+macros.
+
+ AC_PROG_PYTHON
+
+ This is the key macro. It finds the highest-version Python
+interpreter available on the system and saves its path in the `PYTHON'
+variable.
+
+ PC_PYTHON_SITE_PACKAGE_DIR
+ PC_PYTHON_EXEC_PACKAGE_DIR
+
+ These two macros figure out where Python expects packages to be
+installed (i.e. `/usr/lib/python2.7/site-packages/') and saves them in
+the variables `pkgpythondir' and `pkgpyexecdir', respectively, for use
+in `Makefile.in'
+
+
+File: pyconfigure.info, Node: Verifying the Python version, Next: Checking for a module or function, Prev: Required macros, Up: Using pyconfigure
+
+2.2 Verifying the Python version
+================================
+
+As described in the previous section, `AC_PROG_PYTHON' finds the Python
+interpreter with the highest version installed on the system. Often,
+you will want to be sure that the user has some minimum version
+installed. There is a macro available to simplify this,
+`PC_PYTHON_VERIFY_VERSION'.
+
+ m4_define(python_min_ver, 2.6.1)
+ PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, ,
+ [AC_MSG_ERROR(Python interpreter too old)])
+
+ In this example, we set the minimum version to 2.6.1 through the use
+of an M4 macro. We then check if the interpreter stored in the `PYTHON'
+variable (either set by the user or found by `AC_PROG_PYTHON') is at
+least of that version. If it is not, the resulting `configure' script
+will exit with an appropriate error message.
+
+ Unfortunately, the divide between Python 2 and Python 3 and many
+programs are only compatible with Python 2. Since `AC_PROG_PYTHON' will
+find the latest Python interpreter, if the user has any Python version
+3.x installed, `configure' must be able to instead find the most latest
+2.x version installed. This is slightly less straight-forward, but one
+possible implementation is as follows:
+
+ PC_PYTHON_VERIFY_VERSION([$PYTHON], 3.0,
+ py3k=true,
+ py3k=false)
+ # If a Python 3 interpreter was found, look specifically for a Python 2 one
+ if test "$py3k" = "true" ; then
+ m4_define_default([_PYTHON2_BINS], [python2 python2.7 python2.6])
+ AC_PATH_PROGS(PYTHON, [_PYTHON2_BINS])
+ else
+ # otherwise check that the Python 2 version is sufficient
+ PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, ,
+ [AC_MSG_ERROR(Python interpreter too old)])
+ fi
+ if test -z "$PYTHON"; then
+ AC_MSG_ERROR(No Python 2 interpreter found)
+ fi
+
+ We first check to see if Python is version 3.0 or greater. If it is,
+we create a list of compatible Python interpreters and manually check
+for them using standard Autoconf macros. Finally, we check if the
+interpreter that we found this time is of sufficient version, otherwise
+`configure' will halt with an error. Likewise, if no appropriate
+interpreter was found, an error message will be printed and `configure'
+will stop.
+
+
+File: pyconfigure.info, Node: Checking for a module or function, Next: Writing test programs, Prev: Verifying the Python version, Up: Using pyconfigure
+
+2.3 Checking for a module or function
+=====================================
+
+It's reasonable to assume that many Python packages will have
+dependencies on other, external modules. With the provided pyconfigure
+macros, this is simple. All you have to do is use the
+`PC_PYTHON_CHECK_MODULE' macro as follows:
+
+ PC_PYTHON_CHECK_MODULE([foo])
+
+ If the module is a hard requirement, you may provide actions to do if
+it is not present:
+
+ PC_PYTHON_CHECK_MODULE([foo], , AC_MSG_ERROR([Module foo is not installed]))
+
+ If you need more fine-grained control, you can also test for a
+specific function:
+
+ PC_PYTHON_CHECK_FUNC([foo], [bar], [arg1, arg2])
+
+ Remember that you may omit arguments to Autoconf macros: in the above
+example, the final two arguments, which correspond to the action to
+take if the test is successful and if it fails simply are not present
+in the argument list. Similarly, if you do not need to pass arguments
+to the test function, you can entirely omit the third argument to the
+macro:
+
+ PC_PYTHON_CHECK_FUNC([foo], [bar])
+
+
+File: pyconfigure.info, Node: Writing test programs, Next: Using Sphinxbuild to build documentation, Prev: Checking for a module or function, Up: Using pyconfigure
+
+2.4 Writing test programs
+=========================
+
+One great benefit of Autoconf is the ability to embed test programs
+inside `configure'. The pyconfigure macros allow for this by defining
+Python as a language within Autoconf. You then would proceed to write
+test programs as you would in any other language that Autoconf supports
+like C.
+
+ AC_LANG_PUSH(Python)[]
+ AC_RUN_IFELSE([AC_LANG_PROGRAM([dnl
+ # some code here
+ import foo
+ ], [dnl
+ # some more code here
+ foo.bar()
+ ])], [ACTION-IF-SUCCESSFUL], [ACTION-IF-FAILED])
+ AC_LANG_POP(Python)[]
+
+ The first argument to `AC_LANG_PROGRAM' is the so-called "prolog",
+and typically will contain your `import' statements or function
+definitions. The second argument contains the main body of the program,
+which will be in the scope of an `if __name__=="__main__":' block. So,
+you must be sure to indent the code appropriately.
+
+
+File: pyconfigure.info, Node: Using Sphinxbuild to build documentation, Prev: Writing test programs, Up: Using pyconfigure
+
+2.5 Using Sphinxbuild to build documentation
+============================================
+
+Using pyconfigure and Autoconf to test for other tools is quite easy.
+For example, many Python packages use Sphinxbuild to build their
+documentation. If this is the case for your project, you might do
+something like the following:
+
+ AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no])
+ AS_IF([test "x$SPHINXBUILD" = xno],
+ AC_MSG_WARN(sphinx-build is required to build documentation))
+
+ We simply use Autoconf's `AC_CHECK_PROGS' macro to check for a
+series of possible Sphinxbuild binaries and save the result to the
+SPHINXBUILD variable, which may then be used in `Makefile.in':
+
+ docs/build/index.html: $(wildcard $(srcdir)/docs/source/*)
+ ifneq ($(SPHINXBUILD),no)
+ $(SPHINXBUILD) -b html docs/source/ docs/build/
+ endif
+
+
+File: pyconfigure.info, Node: Appendix, Next: GNU Free Documentation License, Prev: Using pyconfigure, Up: Top
+
+3 Appendix
+**********
+
+* Menu:
+
+* Autoconf macros::
+
+
+File: pyconfigure.info, Node: Autoconf macros, Up: Appendix
+
+3.1 Autoconf macros
+===================
+
+Macro Name & Arguments Description Variables exported
+---------------------------------------------------------------------------
+`AC_PROG_PYTHON([NAME-TO-CHECK])'Find a Python `PYTHON'
+ interpreter
+`PC_PROG_PYTHON_CONFIG([NAME-TO-CHECK])'Find a python-config `PYTHON_CONFIG'
+ program
+`PC_PYTHON_VERIFY_VERSION(VERSION,Verify that the Python
+[ACTION-IF-TRUE], interpreter is of a
+[ACTION-IF-NOT-TRUE])' sufficient version
+ number
+`PC_PYTHON_CHECK_VERSION'Get the version of the `PYTHON_VERSION'
+ Python interpreter
+`PC_PYTHON_CHECK_PREFIX' Check what Python `PYTHON_PREFIX'
+ thinks is the prefix
+`PC_PYTHON_CHECK_EXEC_PREFIX'Check what Python `PYTHON_EXEC_PREFIX'
+ thinks is the
+ exec_prefix
+`PC_PYTHON_CHECK_INCLUDES'Check the include flags `PYTHON_INCLUDES'
+ ('-I[header]...') for
+ including the Python
+ header files
+`PC_PYTHON_CHECK_HEADERS'Check for the Python `HAVE_PYTHON_H'
+ header files (i.e.
+ `Python.h')
+`PC_PYTHON_CHECK_LIBS' Check for the proper `PYTHON_LIBS'
+ LIBS flags to load the
+ Python shared libraries
+`PC_PYTHON_TEST_LIBS' Test for the presence `HAVE_LIBPYTHON'
+ of the Python shared
+ libraries
+`PC_PYTHON_CHECK_CFLAGS' Find the CFLAGS that `PYTHON_CFLAGS'
+ Python expects
+`PC_PYTHON_CHECK_LDFLAGS'Find the LDFLAGS that `PYTHON_LDFLAGS'
+ Python expects
+`PC_PYTHON_CHECK_EXTENSION_SUFFIX'Check the extension `PYTHON_EXTENSION_SUFFIX'
+ suffix given to Python
+ extension modules
+ (Python 3 only)
+`PC_PYTHON_CHECK_ABI_FLAGS'Check the ABI flags `PC_PYTHON_ABI_FLAGS'
+ used by Python (Python
+ 3 only)
+`PC_PYTHON_CHECK_PLATFORM'Check what platform
+ Python thinks this is
+ `PYTHON_PLATFORM'
+`PC_PYTHON_CHECK_SITE_DIR'Check the appropriate `pythondir'
+ place to install Python
+ packages (i.e.
+ `$(prefix)/lib/python2.7/site-packages')
+`PC_PYTHON_SITE_PACKAGE_DIR'A convenience macro; `pkgpythondir'
+ adds the package's name
+ to `pythondir'
+`PC_PYTHON_CHECK_EXEC_DIR'Check directory for `pyexecdir'
+ installing Python
+ extension modules
+`PC_PYTHON_EXEC_PACKAGE_DIR'A convenience macro; `pkgpyexecdir'
+ adds the package's name
+ to `pyexecdir'
+`PC_PYTHON_CHECK_MODULE' Test if a given Python
+ module can be
+ successfully loaded
+`PC_PYTHON_CHECK_FUNC' Test if a given Python
+ function can be called
+ successfully.
+
+
+File: pyconfigure.info, Node: GNU Free Documentation License, Prev: Appendix, Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+ Version 1.3, 3 November 2008
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ `http://fsf.org/'
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly
+ and finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from
+ you under this License. If your rights have been terminated and
+ not permanently reinstated, receipt of a copy of some or all of
+ the same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation. If the Document specifies that a proxy
+ can decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+
+Tag Table:
+Node: Top806
+Node: Introduction1407
+Node: Configuring Python packages2838
+Node: Using pyconfigure4062
+Node: Required macros5530
+Node: Verifying the Python version6710
+Node: Checking for a module or function9227
+Node: Writing test programs10447
+Node: Using Sphinxbuild to build documentation11541
+Node: Appendix12551
+Node: Autoconf macros12722
+Node: GNU Free Documentation License16420
+
+End Tag Table
diff --git a/doc/pyconfigure.texi b/doc/pyconfigure.texi
new file mode 100644
--- /dev/null
+++ b/doc/pyconfigure.texi
@@ -0,0 +1,560 @@
+\input texinfo @c -*-texinfo-*-
+@comment $Id: texinfo.txi,v 1.204 2007/07/29 14:55:43 karl Exp $
+@comment %**start of header
+@setfilename pyconfigure.info
+@include version.texi
+@settitle pyconfigure @value{VERSION}
+@syncodeindex pg cp
+@comment %**end of header
+@copying
+This manual is for pyconfigure (version @value{VERSION}, updated
+@value{UPDATED}).
+
+Copyright @copyright{} 2012 Brandon Invergo
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A
+copy of the license is included in the section entitled ``GNU Free
+Documentation License.''
+@end quotation
+@end copying
+
+@dircategory Miscellaneous
+@direntry
+* pyconfigure: (pyconfigure)GNU Standards-compliant Python
+ configuration and installation
+@end direntry
+
+@titlepage
+@title pyconfigure
+@subtitle for version @value{VERSION}, @value{UPDATED}
+@author @email{bug-gsrc@@gnu.org}
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top, Introduction, (dir), (dir)
+@top GNU Source Release Collection
+
+This manual is for pyconfigure (version @value{VERSION}, @value{UPDATED}).
+@end ifnottex
+
+@menu
+* Introduction::
+* Using pyconfigure::
+* Appendix::
+* GNU Free Documentation License::
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Introduction
+
+* Configuring Python packages::
+
+Using pyconfigure
+
+* Required macros::
+* Verifying the Python version::
+* Checking for a module or function::
+* Writing test programs::
+* Using Sphinxbuild to build documentation::
+
+Appendix
+
+* Autoconf Macros
+
+@end detailmenu
+@end menu
+
+@node Introduction, Using pyconfigure, Top, Top
+@chapter Introduction
+
+Python packages typically are configured and installed through the use
+of @code{distutils} or one of its derivatives. The user performs
+necessary actions via a Python script called @file{setup.py}. For
+simple programs, this is straight-forward. However, for more complex
+software packages, especially for those which also include code in
+other languages such as C or Fortran, the limitations of the
+@code{distutils} method quickly become apparent.
+
+The configuration and installation of GNU software and many other
+programs, on the other hand, is done according to the use of standard
+@file{configure} scripts and Make recipes. This method has the
+advantage of being language-agnostic, very flexible,
+time-proven. pyconfigure consists of all the files
+necessary to use the standard GNU build process to configure and
+install Python packages.
+
+Without modification, pyconfigure provides a wrapper
+around @file{setup.py}, which allows the user to use the familiar GNU
+installation commands to install a Python package. With the powerful
+Autoconf macros that it provides, a Python developer can greatly
+extend or even replace altogether the capabilities of
+@file{setup.py}. Plus, since this method is language-agnostic, all the
+power of Autoconf for compiled languages is gained for free.
+
+@menu
+* Configuring Python packages::
+@end menu
+
+@node Configuring Python packages, , Introduction, Introduction
+@section Configuring Python packages
+
+Configuring and installing Python packages which use
+pyconfigure follows the familiar steps of all standard GNU
+software:
+
+@example
+$ ./configure
+$ make
+$ make install
+@end example
+
+In fact, since most programs do not have anything to build, the second
+step could usually be skipped.
+
+As usual, the user may pass arguments to @file{configure} in order to
+specify how she wants the software to be installed. By default,
+@file{configure} takes the following useful arguments:
+
+@multitable @columnfractions .25 .75
+@headitem
+Argument
+@tab
+Description
+
+@item
+@code{--prefix}
+@tab
+Set the root directory in which to install files (default=/usr/local)
+
+@item
+@code{--with-virtualenv}
+@tab
+Install to a virtualenv at @code{$prefix}
+
+@item
+@code{PYTHON}
+@tab
+Path to the Python interpreter to use
+
+@item
+@code{PYTHONPATH}
+@tab
+The PYTHONPATH to use during the installation
+
+@end multitable
+
+However, as the developer is expected to customize these files, the
+final @file{configure} script may take many more arguments. The
+developer is expected to provide proper documentation in this case.
+
+@node Using pyconfigure, Appendix, Introduction, Top
+@chapter Using pyconfigure
+
+While it is possible to simply copy the pyconfigure files from
+the @file{src} directory into your project's source directory and use
+them unmodified, it is recommended that you customize them to more
+appropriately fit your needs. In particular, you will want to
+customize @file{configure.ac} and
+@file{Makefile.in}. @file{configure.ac} contains a series of macros
+which are used by Autoconf to build a portable @file{configure} shell
+script. This script either guesses important system settings or is
+provided them by the user. When the user invokes @file{configure}, it
+uses @file{Makefile.in} as a template to create the Make recipe
+@file{Makefile}.
+
+Several Autoconf macros are provided in the pyconfigure file
+@file{src/m4/python.m4} to allow the developer to write robust tests
+@xref{Autoconf macros}. Note that when you distribute your software,
+you must include this directory and file with your distribution.
+
+Once you modify your @file{configure.ac} to your liking, you must
+regenerate your @file{configure} script with autoreconf:
+
+@example
+$ autoreconf -fvi
+@end example
+
+A full explanation of the use of Autoconf macros is beyond the scope
+of this document, however it is worth presenting some examples.
+
+@menu
+* Required macros::
+* Verifying the Python version::
+* Checking for a module or function::
+* Writing test programs::
+* Using Sphinxbuild to build documentation::
+@end menu
+
+@node Required macros, Verifying the Python version, Using pyconfigure, Using pyconfigure
+@section Required macros
+
+Several macros are required in @file{configure.ac} to use
+pyconfigure. These are:
+
+@example
+m4_include([m4/python.m4])
+@end example
+
+This macro imports all of the Python Autoconf macros. If you choose to
+write your own macros for other purposes, you would also include them
+in this manner.
+
+@example
+AC_INIT(project_name, project_version)
+@end example
+
+This initializes Autoconf and also substitutes your project name and
+version in any output that it generates.
+
+@example
+AC_CONFIG_MACRO_DIR([m4])
+@end example
+
+Now that Autoconf is initialized, we inform it of the location of our
+macros.
+
+@example
+AC_PROG_PYTHON
+@end example
+
+This is the key macro. It finds the highest-version Python interpreter
+available on the system and saves its path in the @code{PYTHON}
+variable.
+
+@example
+PC_PYTHON_SITE_PACKAGE_DIR
+PC_PYTHON_EXEC_PACKAGE_DIR
+@end example
+
+These two macros figure out where Python expects packages to be
+installed (i.e. @file{/usr/lib/python2.7/site-packages/}) and saves
+them in the variables @code{pkgpythondir} and @code{pkgpyexecdir},
+respectively, for use in @file{Makefile.in}
+
+@node Verifying the Python version, Checking for a module or function, Required macros, Using pyconfigure
+@section Verifying the Python version
+
+As described in the previous section, @code{AC_PROG_PYTHON} finds the
+Python interpreter with the highest version installed on the
+system. Often, you will want to be sure that the user has some minimum
+version installed. There is a macro available to simplify this,
+@code{PC_PYTHON_VERIFY_VERSION}.
+
+@example
+m4_define(python_min_ver, 2.6.1)
+PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, ,
+ [AC_MSG_ERROR(Python interpreter too old)])
+@end example
+
+In this example, we set the minimum version to 2.6.1 through the use
+of an M4 macro. We then check if the interpreter stored in the
+@code{PYTHON} variable (either set by the user or found by
+@code{AC_PROG_PYTHON}) is at least of that version. If it is not, the
+resulting @file{configure} script will exit with an appropriate error
+message.
+
+Unfortunately, the divide between Python 2 and Python 3 and many
+programs are only compatible with Python 2. Since
+@code{AC_PROG_PYTHON} will find the latest Python interpreter, if the
+user has any Python version 3.x installed, @code{configure} must be
+able to instead find the most latest 2.x version installed. This is
+slightly less straight-forward, but one possible implementation is as
+follows:
+
+@example
+PC_PYTHON_VERIFY_VERSION([$PYTHON], 3.0,
+ py3k=true,
+ py3k=false)
+# If a Python 3 interpreter was found, look specifically for a Python 2 one
+if test "$py3k" = "true" ; then
+ m4_define_default([_PYTHON2_BINS], [python2 python2.7 python2.6])
+ AC_PATH_PROGS(PYTHON, [_PYTHON2_BINS])
+else
+# otherwise check that the Python 2 version is sufficient
+ PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, ,
+ [AC_MSG_ERROR(Python interpreter too old)])
+fi
+if test -z "$PYTHON"; then
+ AC_MSG_ERROR(No Python 2 interpreter found)
+fi
+@end example
+
+We first check to see if Python is version 3.0 or greater. If it is,
+we create a list of compatible Python interpreters and manually check
+for them using standard Autoconf macros. Finally, we check if the
+interpreter that we found this time is of sufficient version,
+otherwise @file{configure} will halt with an error. Likewise, if no
+appropriate interpreter was found, an error message will be printed
+and @file{configure} will stop.
+
+@node Checking for a module or function, Writing test programs, Verifying the Python version, Using pyconfigure
+@section Checking for a module or function
+
+It's reasonable to assume that many Python packages will have
+dependencies on other, external modules. With the provided
+pyconfigure macros, this is simple. All you have to do is use the
+@code{PC_PYTHON_CHECK_MODULE} macro as follows:
+
+@example
+PC_PYTHON_CHECK_MODULE([foo])
+@end example
+
+If the module is a hard requirement, you may provide actions to do if
+it is not present:
+
+@example
+PC_PYTHON_CHECK_MODULE([foo], , AC_MSG_ERROR([Module foo is not installed]))
+@end example
+
+If you need more fine-grained control, you can also test for a
+specific function:
+
+@example
+PC_PYTHON_CHECK_FUNC([foo], [bar], [arg1, arg2])
+@end example
+
+Remember that you may omit arguments to Autoconf macros: in the above
+example, the final two arguments, which correspond to the action to
+take if the test is successful and if it fails simply are not present
+in the argument list. Similarly, if you do not need to pass arguments
+to the test function, you can entirely omit the third argument to the
+macro:
+
+@example
+PC_PYTHON_CHECK_FUNC([foo], [bar])
+@end example
+
+@node Writing test programs, Using Sphinxbuild to build documentation, Checking for a module or function, Using pyconfigure
+@section Writing test programs
+
+One great benefit of Autoconf is the ability to embed test programs
+inside @file{configure}. The pyconfigure macros allow for this by
+defining Python as a language within Autoconf. You then would proceed
+to write test programs as you would in any other language that
+Autoconf supports like C.
+
+@example
+AC_LANG_PUSH(Python)[]
+AC_RUN_IFELSE([AC_LANG_PROGRAM([dnl
+# some code here
+import foo
+], [dnl
+ # some more code here
+ foo.bar()
+])], [ACTION-IF-SUCCESSFUL], [ACTION-IF-FAILED])
+AC_LANG_POP(Python)[]
+@end example
+
+The first argument to @code{AC_LANG_PROGRAM} is the so-called
+``prolog'', and typically will contain your @code{import} statements
+or function definitions. The second argument contains the main body of
+the program, which will be in the scope of an @code{if __name__=="__main__":}
+block. So, you must be sure to indent the code appropriately.
+
+@node Using Sphinxbuild to build documentation, , Writing test programs, Using pyconfigure
+@section Using Sphinxbuild to build documentation
+
+Using pyconfigure and Autoconf to test for other tools is quite
+easy. For example, many Python packages use Sphinxbuild to build their
+documentation. If this is the case for your project, you might do
+something like the following:
+
+@example
+AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no])
+AS_IF([test "x$SPHINXBUILD" = xno],
+ AC_MSG_WARN(sphinx-build is required to build documentation))
+@end example
+
+We simply use Autoconf's @code{AC_CHECK_PROGS} macro to check for a
+series of possible Sphinxbuild binaries and save the result to the
+SPHINXBUILD variable, which may then be used in @file{Makefile.in}:
+
+@example
+docs/build/index.html: $(wildcard $(srcdir)/docs/source/*)
+ifneq ($(SPHINXBUILD),no)
+ $(SPHINXBUILD) -b html docs/source/ docs/build/
+endif
+@end example
+
+@node Appendix, GNU Free Documentation License, Using pyconfigure, Top
+@chapter Appendix
+
+@menu
+* Autoconf macros::
+@end menu
+
+@node Autoconf macros, , , Appendix
+@section Autoconf macros
+
+@multitable @columnfractions .33 .33 .33
+@headitem
+Macro Name & Arguments
+@tab
+Description
+@tab
+Variables exported
+
+@item
+@code{AC_PROG_PYTHON([NAME-TO-CHECK])}
+@tab
+Find a Python interpreter
+@tab
+@code{PYTHON}
+
+@item
+@code{PC_PROG_PYTHON_CONFIG([NAME-TO-CHECK])}
+@tab
+Find a python-config program
+@tab
+@code{PYTHON_CONFIG}
+
+@item
+@code{PC_PYTHON_VERIFY_VERSION(VERSION, [ACTION-IF-TRUE], [ACTION-IF-NOT-TRUE])}
+@tab
+Verify that the Python interpreter is of a sufficient version number
+@tab
+
+@item
+@code{PC_PYTHON_CHECK_VERSION}
+@tab
+Get the version of the Python interpreter
+@tab
+@code{PYTHON_VERSION}
+
+@item
+@code{PC_PYTHON_CHECK_PREFIX}
+@tab
+Check what Python thinks is the prefix
+@tab
+@code{PYTHON_PREFIX}
+
+@item
+@code{PC_PYTHON_CHECK_EXEC_PREFIX}
+@tab
+Check what Python thinks is the exec_prefix
+@tab
+@code{PYTHON_EXEC_PREFIX}
+
+@item
+@code{PC_PYTHON_CHECK_INCLUDES}
+@tab
+Check the include flags ('-I[header]...') for including the Python
+header files
+@tab
+@code{PYTHON_INCLUDES}
+
+@item
+@code{PC_PYTHON_CHECK_HEADERS}
+@tab
+Check for the Python header files (i.e. @file{Python.h})
+@tab
+@code{HAVE_PYTHON_H}
+
+@item
+@code{PC_PYTHON_CHECK_LIBS}
+@tab
+Check for the proper LIBS flags to load the Python shared libraries
+@tab
+@code{PYTHON_LIBS}
+
+@item
+@code{PC_PYTHON_TEST_LIBS}
+@tab
+Test for the presence of the Python shared libraries
+@tab
+@code{HAVE_LIBPYTHON}
+
+@item
+@code{PC_PYTHON_CHECK_CFLAGS}
+@tab
+Find the CFLAGS that Python expects
+@tab
+@code{PYTHON_CFLAGS}
+
+@item
+@code{PC_PYTHON_CHECK_LDFLAGS}
+@tab
+Find the LDFLAGS that Python expects
+@tab
+@code{PYTHON_LDFLAGS}
+
+@item
+@code{PC_PYTHON_CHECK_EXTENSION_SUFFIX}
+@tab
+Check the extension suffix given to Python extension modules (Python 3
+only)
+@tab
+@code{PYTHON_EXTENSION_SUFFIX}
+
+@item
+@code{PC_PYTHON_CHECK_ABI_FLAGS}
+@tab
+Check the ABI flags used by Python (Python 3 only)
+@tab
+@code{PC_PYTHON_ABI_FLAGS}
+
+@item
+@code{PC_PYTHON_CHECK_PLATFORM}
+@tab
+Check what platform Python thinks this is
+@code{PYTHON_PLATFORM}
+
+@item
+@code{PC_PYTHON_CHECK_SITE_DIR}
+@tab
+Check the appropriate place to install Python packages (i.e.
+@file{$(prefix)/lib/python2.7/site-packages})
+@tab
+@code{pythondir}
+
+@item
+@code{PC_PYTHON_SITE_PACKAGE_DIR}
+@tab
+A convenience macro; adds the package's name to @code{pythondir}
+@tab
+@code{pkgpythondir}
+
+@item
+@code{PC_PYTHON_CHECK_EXEC_DIR}
+@tab
+Check directory for installing Python extension modules
+@tab
+@code{pyexecdir}
+
+@item
+@code{PC_PYTHON_EXEC_PACKAGE_DIR}
+@tab
+A convenience macro; adds the package's name to @code{pyexecdir}
+@tab
+@code{pkgpyexecdir}
+
+@item
+@code{PC_PYTHON_CHECK_MODULE}
+@tab
+Test if a given Python module can be successfully loaded
+@tab
+
+@item
+@code{PC_PYTHON_CHECK_FUNC}
+@tab
+Test if a given Python function can be called successfully.
+@tab
+@end multitable
+
+@node GNU Free Documentation License, , Appendix, Top
+@appendix GNU Free Documentation License
+
+@include fdl.texi
+
+@bye
+
diff --git a/doc/python-configure.info b/doc/python-configure.info
deleted file mode 100644
--- a/doc/python-configure.info
+++ /dev/null
@@ -1,915 +0,0 @@
-This is doc/python-configure.info, produced by makeinfo version 4.13
-from ./doc/python-configure.texi.
-
-This manual is for python-configure (version 0.1, updated 3 November
-2012).
-
- Copyright (C) 2012 Brandon Invergo
-
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation License,
- Version 1.2 or any later version published by the Free Software
- Foundation; with no Invariant Sections, no Front-Cover Texts and
- no Back-Cover Texts. A copy of the license is included in the
- section entitled "GNU Free Documentation License."
-
-INFO-DIR-SECTION Miscellaneous
-START-INFO-DIR-ENTRY
-* python-configure: (python-configure)GNU Standards-compliant Python
- configuration and installation
-END-INFO-DIR-ENTRY
-
-
-File: python-configure.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
-
-GNU Source Release Collection
-*****************************
-
-This manual is for python-configure (version 0.1, 3 November 2012).
-
-* Menu:
-
-* Introduction::
-* Using python-configure::
-* Appendix::
-* GNU Free Documentation License::
-
- --- The Detailed Node Listing ---
-
-Introduction
-
-* Configuring Python packages::
-
-Using python-configure
-
-* Required macros::
-* Verifying the Python version::
-* Checking for a module or function::
-* Writing test programs::
-* Using Sphinxbuild to build documentation::
-
-Appendix
-
-* Autoconf Macros
-
-
-File: python-configure.info, Node: Introduction, Next: Using python-configure, Prev: Top, Up: Top
-
-1 Introduction
-**************
-
-Python packages typically are configured and installed through the use
-of `distutils' or one of its derivatives. The user performs necessary
-actions via a Python script called `setup.py'. For simple programs,
-this is straight-forward. However, for more complex software packages,
-especially for those which also include code in other languages such as
-C or Fortran, the limitations of the `distutils' method quickly become
-apparent.
-
- The configuration and installation of GNU software and many other
-programs, on the other hand, is done according to the use of standard
-`configure' scripts and Make recipes. This method has the advantage of
-being language-agnostic, very flexible, time-proven. python-configure
-consists of all the files necessary to use the standard GNU build
-process to configure and install Python packages.
-
- Without modification, python-configure provides a wrapper around
-`setup.py', which allows the user to use the familiar GNU installation
-commands to install a Python package. With the powerful Autoconf macros
-that it provides, a Python developer can greatly extend or even replace
-altogether the capabilities of `setup.py'. Plus, since this method is
-language-agnostic, all the power of Autoconf for compiled languages is
-gained for free.
-
-* Menu:
-
-* Configuring Python packages::
-
-
-File: python-configure.info, Node: Configuring Python packages, Prev: Introduction, Up: Introduction
-
-1.1 Configuring Python packages
-===============================
-
-Configuring and installing Python packages which use python-configure
-follows the familiar steps of all standard GNU software:
-
- $ ./configure
- $ make
- $ make install
-
- In fact, since most programs do not have anything to build, the
-second step could usually be skipped.
-
- As usual, the user may pass arguments to `configure' in order to
-specify how she wants the software to be installed. By default,
-`configure' takes the following useful arguments:
-
-Argument Description
---------------------------------------------------------------------------
-`--prefix' Set the root directory in which to install files
- (default=/usr/local)
-`--with-virtualenv'Install to a virtualenv at `$prefix'
-`PYTHON' Path to the Python interpreter to use
-`PYTHONPATH' The PYTHONPATH to use during the installation
-
- However, as the developer is expected to customize these files, the
-final `configure' script may take many more arguments. The developer is
-expected to provide proper documentation in this case.
-
-
-File: python-configure.info, Node: Using python-configure, Next: Appendix, Prev: Introduction, Up: Top
-
-2 Using python-configure
-************************
-
-While it is possible to simply copy the python-configure files from the
-`src' directory into your project's source directory and use them
-unmodified, it is recommended that you customize them to more
-appropriately fit your needs. In particular, you will want to customize
-`configure.ac' and `Makefile.in'. `configure.ac' contains a series of
-macros which are used by Autoconf to build a portable `configure' shell
-script. This script either guesses important system settings or is
-provided them by the user. When the user invokes `configure', it uses
-`Makefile.in' as a template to create the Make recipe `Makefile'.
-
- Several Autoconf macros are provided in the python-configure file
-`src/m4/python.m4' to allow the developer to write robust tests *Note
-Autoconf macros::. Note that when you distribute your software, you
-must include this directory and file with your distribution.
-
- Once you modify your `configure.ac' to your liking, you must
-regenerate your `configure' script with autoreconf:
-
- $ autoreconf -fvi
-
- A full explanation of the use of Autoconf macros is beyond the scope
-of this document, however it is worth presenting some examples.
-
-* Menu:
-
-* Required macros::
-* Verifying the Python version::
-* Checking for a module or function::
-* Writing test programs::
-* Using Sphinxbuild to build documentation::
-
-
-File: python-configure.info, Node: Required macros, Next: Verifying the Python version, Prev: Using python-configure, Up: Using python-configure
-
-2.1 Required macros
-===================
-
-Several macros are required in `configure.ac' to use python-configure.
-These are:
-
- m4_include([m4/python.m4])
-
- This macro imports all of the Python Autoconf macros. If you choose
-to write your own macros for other purposes, you would also include them
-in this manner.
-
- AC_INIT(project_name, project_version)
-
- This initializes Autoconf and also substitutes your project name and
-version in any output that it generates.
-
- AC_CONFIG_MACRO_DIR([m4])
-
- Now that Autoconf is initialized, we inform it of the location of our
-macros.
-
- AC_PROG_PYTHON
-
- This is the key macro. It finds the highest-version Python
-interpreter available on the system and saves its path in the `PYTHON'
-variable.
-
- PC_PYTHON_SITE_PACKAGE_DIR
- PC_PYTHON_EXEC_PACKAGE_DIR
-
- These two macros figure out where Python expects packages to be
-installed (i.e. `/usr/lib/python2.7/site-packages/') and saves them in
-the variables `pkgpythondir' and `pkgpyexecdir', respectively, for use
-in `Makefile.in'
-
-
-File: python-configure.info, Node: Verifying the Python version, Next: Checking for a module or function, Prev: Required macros, Up: Using python-configure
-
-2.2 Verifying the Python version
-================================
-
-As described in the previous section, `AC_PROG_PYTHON' finds the Python
-interpreter with the highest version installed on the system. Often,
-you will want to be sure that the user has some minimum version
-installed. There is a macro available to simplify this,
-`PC_PYTHON_VERIFY_VERSION'.
-
- m4_define(python_min_ver, 2.6.1)
- PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, ,
- [AC_MSG_ERROR(Python interpreter too old)])
-
- In this example, we set the minimum version to 2.6.1 through the use
-of an M4 macro. We then check if the interpreter stored in the `PYTHON'
-variable (either set by the user or found by `AC_PROG_PYTHON') is at
-least of that version. If it is not, the resulting `configure' script
-will exit with an appropriate error message.
-
- Unfortunately, the divide between Python 2 and Python 3 and many
-programs are only compatible with Python 2. Since `AC_PROG_PYTHON' will
-find the latest Python interpreter, if the user has any Python version
-3.x installed, `configure' must be able to instead find the most latest
-2.x version installed. This is slightly less straight-forward, but one
-possible implementation is as follows:
-
- PC_PYTHON_VERIFY_VERSION([$PYTHON], 3.0,
- py3k=true,
- py3k=false)
- # If a Python 3 interpreter was found, look specifically for a Python 2 one
- if test "$py3k" = "true" ; then
- m4_define_default([_PYTHON2_BINS], [python2 python2.7 python2.6])
- AC_PATH_PROGS(PYTHON, [_PYTHON2_BINS])
- else
- # otherwise check that the Python 2 version is sufficient
- PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, ,
- [AC_MSG_ERROR(Python interpreter too old)])
- fi
- if test -z "$PYTHON"; then
- AC_MSG_ERROR(No Python 2 interpreter found)
- fi
-
- We first check to see if Python is version 3.0 or greater. If it is,
-we create a list of compatible Python interpreters and manually check
-for them using standard Autoconf macros. Finally, we check if the
-interpreter that we found this time is of sufficient version, otherwise
-`configure' will halt with an error. Likewise, if no appropriate
-interpreter was found, an error message will be printed and `configure'
-will stop.
-
-
-File: python-configure.info, Node: Checking for a module or function, Next: Writing test programs, Prev: Verifying the Python version, Up: Using python-configure
-
-2.3 Checking for a module or function
-=====================================
-
-It's reasonable to assume that many Python packages will have
-dependencies on other, external modules. With the provided
-python-configure macros, this is simple. All you have to do is use the
-`PC_PYTHON_CHECK_MODULE' macro as follows:
-
- PC_PYTHON_CHECK_MODULE([foo])
-
- If the module is a hard requirement, you may provide actions to do if
-it is not present:
-
- PC_PYTHON_CHECK_MODULE([foo], , AC_MSG_ERROR([Module foo is not installed]))
-
- If you need more fine-grained control, you can also test for a
-specific function:
-
- PC_PYTHON_CHECK_FUNC([foo], [bar], [arg1, arg2])
-
- Remember that you may omit arguments to Autoconf macros: in the above
-example, the final two arguments, which correspond to the action to
-take if the test is successful and if it fails simply are not present
-in the argument list. Similarly, if you do not need to pass arguments
-to the test function, you can entirely omit the third argument to the
-macro:
-
- PC_PYTHON_CHECK_FUNC([foo], [bar])
-
-
-File: python-configure.info, Node: Writing test programs, Next: Using Sphinxbuild to build documentation, Prev: Checking for a module or function, Up: Using python-configure
-
-2.4 Writing test programs
-=========================
-
-One great benefit of Autoconf is the ability to embed test programs
-inside `configure'. The python-configure macros allow for this by
-defining Python as a language within Autoconf. You then would proceed
-to write test programs as you would in any other language that Autoconf
-supports like C.
-
- AC_LANG_PUSH(Python)[]
- AC_RUN_IFELSE([AC_LANG_PROGRAM([dnl
- # some code here
- import foo
- ], [dnl
- # some more code here
- foo.bar()
- ])], [ACTION-IF-SUCCESSFUL], [ACTION-IF-FAILED])
- AC_LANG_POP(Python)[]
-
- The first argument to `AC_LANG_PROGRAM' is the so-called "prolog",
-and typically will contain your `import' statements or function
-definitions. The second argument contains the main body of the program,
-which will be in the scope of an `if __name__=="__main__":' block. So,
-you must be sure to indent the code appropriately.
-
-
-File: python-configure.info, Node: Using Sphinxbuild to build documentation, Prev: Writing test programs, Up: Using python-configure
-
-2.5 Using Sphinxbuild to build documentation
-============================================
-
-Using python-configure and Autoconf to test for other tools is quite
-easy. For example, many Python packages use Sphinxbuild to build their
-documentation. If this is the case for your project, you might do
-something like the following:
-
- AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no])
- AS_IF([test "x$SPHINXBUILD" = xno],
- AC_MSG_WARN(sphinx-build is required to build documentation))
-
- We simply use Autoconf's `AC_CHECK_PROGS' macro to check for a
-series of possible Sphinxbuild binaries and save the result to the
-SPHINXBUILD variable, which may then be used in `Makefile.in':
-
- docs/build/index.html: $(wildcard $(srcdir)/docs/source/*)
- ifneq ($(SPHINXBUILD),no)
- $(SPHINXBUILD) -b html docs/source/ docs/build/
- endif
-
-
-File: python-configure.info, Node: Appendix, Next: GNU Free Documentation License, Prev: Using python-configure, Up: Top
-
-3 Appendix
-**********
-
-* Menu:
-
-* Autoconf macros::
-
-
-File: python-configure.info, Node: Autoconf macros, Up: Appendix
-
-3.1 Autoconf macros
-===================
-
-Macro Name & Arguments Description Variables exported
----------------------------------------------------------------------------
-`AC_PROG_PYTHON([NAME-TO-CHECK])'Find a Python `PYTHON'
- interpreter
-`PC_PROG_PYTHON_CONFIG([NAME-TO-CHECK])'Find a python-config `PYTHON_CONFIG'
- program
-`PC_PYTHON_VERIFY_VERSION(VERSION,Verify that the Python
-[ACTION-IF-TRUE], interpreter is of a
-[ACTION-IF-NOT-TRUE])' sufficient version
- number
-`PC_PYTHON_CHECK_VERSION'Get the version of the `PYTHON_VERSION'
- Python interpreter
-`PC_PYTHON_CHECK_PREFIX' Check what Python `PYTHON_PREFIX'
- thinks is the prefix
-`PC_PYTHON_CHECK_EXEC_PREFIX'Check what Python `PYTHON_EXEC_PREFIX'
- thinks is the
- exec_prefix
-`PC_PYTHON_CHECK_INCLUDES'Check the include flags `PYTHON_INCLUDES'
- ('-I[header]...') for
- including the Python
- header files
-`PC_PYTHON_CHECK_HEADERS'Check for the Python `HAVE_PYTHON_H'
- header files (i.e.
- `Python.h')
-`PC_PYTHON_CHECK_LIBS' Check for the proper `PYTHON_LIBS'
- LIBS flags to load the
- Python shared libraries
-`PC_PYTHON_TEST_LIBS' Test for the presence `HAVE_LIBPYTHON'
- of the Python shared
- libraries
-`PC_PYTHON_CHECK_CFLAGS' Find the CFLAGS that `PYTHON_CFLAGS'
- Python expects
-`PC_PYTHON_CHECK_LDFLAGS'Find the LDFLAGS that `PYTHON_LDFLAGS'
- Python expects
-`PC_PYTHON_CHECK_EXTENSION_SUFFIX'Check the extension `PYTHON_EXTENSION_SUFFIX'
- suffix given to Python
- extension modules
- (Python 3 only)
-`PC_PYTHON_CHECK_ABI_FLAGS'Check the ABI flags `PC_PYTHON_ABI_FLAGS'
- used by Python (Python
- 3 only)
-`PC_PYTHON_CHECK_PLATFORM'Check what platform
- Python thinks this is
- `PYTHON_PLATFORM'
-`PC_PYTHON_CHECK_SITE_DIR'Check the appropriate `pythondir'
- place to install Python
- packages (i.e.
- `$(prefix)/lib/python2.7/site-packages')
-`PC_PYTHON_SITE_PACKAGE_DIR'A convenience macro; `pkgpythondir'
- adds the package's name
- to `pythondir'
-`PC_PYTHON_CHECK_EXEC_DIR'Check directory for `pyexecdir'
- installing Python
- extension modules
-`PC_PYTHON_EXEC_PACKAGE_DIR'A convenience macro; `pkgpyexecdir'
- adds the package's name
- to `pyexecdir'
-`PC_PYTHON_CHECK_MODULE' Test if a given Python
- module can be
- successfully loaded
-`PC_PYTHON_CHECK_FUNC' Test if a given Python
- function can be called
- successfully.
-
-
-File: python-configure.info, Node: GNU Free Documentation License, Prev: Appendix, Up: Top
-
-Appendix A GNU Free Documentation License
-*****************************************
-
- Version 1.3, 3 November 2008
-
- Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
- `http://fsf.org/'
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- 0. PREAMBLE
-
- The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
- assure everyone the effective freedom to copy and redistribute it,
- with or without modifying it, either commercially or
- noncommercially. Secondarily, this License preserves for the
- author and publisher a way to get credit for their work, while not
- being considered responsible for modifications made by others.
-
- This License is a kind of "copyleft", which means that derivative
- works of the document must themselves be free in the same sense.
- It complements the GNU General Public License, which is a copyleft
- license designed for free software.
-
- We have designed this License in order to use it for manuals for
- free software, because free software needs free documentation: a
- free program should come with manuals providing the same freedoms
- that the software does. But this License is not limited to
- software manuals; it can be used for any textual work, regardless
- of subject matter or whether it is published as a printed book.
- We recommend this License principally for works whose purpose is
- instruction or reference.
-
- 1. APPLICABILITY AND DEFINITIONS
-
- This License applies to any manual or other work, in any medium,
- that contains a notice placed by the copyright holder saying it
- can be distributed under the terms of this License. Such a notice
- grants a world-wide, royalty-free license, unlimited in duration,
- to use that work under the conditions stated herein. The
- "Document", below, refers to any such manual or work. Any member
- of the public is a licensee, and is addressed as "you". You
- accept the license if you copy, modify or distribute the work in a
- way requiring permission under copyright law.
-
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
-
- A "Secondary Section" is a named appendix or a front-matter section
- of the Document that deals exclusively with the relationship of the
- publishers or authors of the Document to the Document's overall
- subject (or to related matters) and contains nothing that could
- fall directly within that overall subject. (Thus, if the Document
- is in part a textbook of mathematics, a Secondary Section may not
- explain any mathematics.) The relationship could be a matter of
- historical connection with the subject or with related matters, or
- of legal, commercial, philosophical, ethical or political position
- regarding them.
-
- The "Invariant Sections" are certain Secondary Sections whose
- titles are designated, as being those of Invariant Sections, in
- the notice that says that the Document is released under this
- License. If a section does not fit the above definition of
- Secondary then it is not allowed to be designated as Invariant.
- The Document may contain zero Invariant Sections. If the Document
- does not identify any Invariant Sections then there are none.
-
- The "Cover Texts" are certain short passages of text that are
- listed, as Front-Cover Texts or Back-Cover Texts, in the notice
- that says that the Document is released under this License. A
- Front-Cover Text may be at most 5 words, and a Back-Cover Text may
- be at most 25 words.
-
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, that is suitable for revising the document
- straightforwardly with generic text editors or (for images
- composed of pixels) generic paint programs or (for drawings) some
- widely available drawing editor, and that is suitable for input to
- text formatters or for automatic translation to a variety of
- formats suitable for input to text formatters. A copy made in an
- otherwise Transparent file format whose markup, or absence of
- markup, has been arranged to thwart or discourage subsequent
- modification by readers is not Transparent. An image format is
- not Transparent if used for any substantial amount of text. A
- copy that is not "Transparent" is called "Opaque".
-
- Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input format,
- SGML or XML using a publicly available DTD, and
- standard-conforming simple HTML, PostScript or PDF designed for
- human modification. Examples of transparent image formats include
- PNG, XCF and JPG. Opaque formats include proprietary formats that
- can be read and edited only by proprietary word processors, SGML or
- XML for which the DTD and/or processing tools are not generally
- available, and the machine-generated HTML, PostScript or PDF
- produced by some word processors for output purposes only.
-
- The "Title Page" means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the
- material this License requires to appear in the title page. For
- works in formats which do not have any title page as such, "Title
- Page" means the text near the most prominent appearance of the
- work's title, preceding the beginning of the body of the text.
-
- The "publisher" means any person or entity that distributes copies
- of the Document to the public.
-
- A section "Entitled XYZ" means a named subunit of the Document
- whose title either is precisely XYZ or contains XYZ in parentheses
- following text that translates XYZ in another language. (Here XYZ
- stands for a specific section name mentioned below, such as
- "Acknowledgements", "Dedications", "Endorsements", or "History".)
- To "Preserve the Title" of such a section when you modify the
- Document means that it remains a section "Entitled XYZ" according
- to this definition.
-
- The Document may include Warranty Disclaimers next to the notice
- which states that this License applies to the Document. These
- Warranty Disclaimers are considered to be included by reference in
- this License, but only as regards disclaiming warranties: any other
- implication that these Warranty Disclaimers may have is void and
- has no effect on the meaning of this License.
-
- 2. VERBATIM COPYING
-
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License
- applies to the Document are reproduced in all copies, and that you
- add no other conditions whatsoever to those of this License. You
- may not use technical measures to obstruct or control the reading
- or further copying of the copies you make or distribute. However,
- you may accept compensation in exchange for copies. If you
- distribute a large enough number of copies you must also follow
- the conditions in section 3.
-
- You may also lend copies, under the same conditions stated above,
- and you may publicly display copies.
-
- 3. COPYING IN QUANTITY
-
- If you publish printed copies (or copies in media that commonly
- have printed covers) of the Document, numbering more than 100, and
- the Document's license notice requires Cover Texts, you must
- enclose the copies in covers that carry, clearly and legibly, all
- these Cover Texts: Front-Cover Texts on the front cover, and
- Back-Cover Texts on the back cover. Both covers must also clearly
- and legibly identify you as the publisher of these copies. The
- front cover must present the full title with all words of the
- title equally prominent and visible. You may add other material
- on the covers in addition. Copying with changes limited to the
- covers, as long as they preserve the title of the Document and
- satisfy these conditions, can be treated as verbatim copying in
- other respects.
-
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto
- adjacent pages.
-
- If you publish or distribute Opaque copies of the Document
- numbering more than 100, you must either include a
- machine-readable Transparent copy along with each Opaque copy, or
- state in or with each Opaque copy a computer-network location from
- which the general network-using public has access to download
- using public-standard network protocols a complete Transparent
- copy of the Document, free of added material. If you use the
- latter option, you must take reasonably prudent steps, when you
- begin distribution of Opaque copies in quantity, to ensure that
- this Transparent copy will remain thus accessible at the stated
- location until at least one year after the last time you
- distribute an Opaque copy (directly or through your agents or
- retailers) of that edition to the public.
-
- It is requested, but not required, that you contact the authors of
- the Document well before redistributing any large number of
- copies, to give them a chance to provide you with an updated
- version of the Document.
-
- 4. MODIFICATIONS
-
- You may copy and distribute a Modified Version of the Document
- under the conditions of sections 2 and 3 above, provided that you
- release the Modified Version under precisely this License, with
- the Modified Version filling the role of the Document, thus
- licensing distribution and modification of the Modified Version to
- whoever possesses a copy of it. In addition, you must do these
- things in the Modified Version:
-
- A. Use in the Title Page (and on the covers, if any) a title
- distinct from that of the Document, and from those of
- previous versions (which should, if there were any, be listed
- in the History section of the Document). You may use the
- same title as a previous version if the original publisher of
- that version gives permission.
-
- B. List on the Title Page, as authors, one or more persons or
- entities responsible for authorship of the modifications in
- the Modified Version, together with at least five of the
- principal authors of the Document (all of its principal
- authors, if it has fewer than five), unless they release you
- from this requirement.
-
- C. State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
-
- D. Preserve all the copyright notices of the Document.
-
- E. Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
-
- F. Include, immediately after the copyright notices, a license
- notice giving the public permission to use the Modified
- Version under the terms of this License, in the form shown in
- the Addendum below.
-
- G. Preserve in that license notice the full lists of Invariant
- Sections and required Cover Texts given in the Document's
- license notice.
-
- H. Include an unaltered copy of this License.
-
- I. Preserve the section Entitled "History", Preserve its Title,
- and add to it an item stating at least the title, year, new
- authors, and publisher of the Modified Version as given on
- the Title Page. If there is no section Entitled "History" in
- the Document, create one stating the title, year, authors,
- and publisher of the Document as given on its Title Page,
- then add an item describing the Modified Version as stated in
- the previous sentence.
-
- J. Preserve the network location, if any, given in the Document
- for public access to a Transparent copy of the Document, and
- likewise the network locations given in the Document for
- previous versions it was based on. These may be placed in
- the "History" section. You may omit a network location for a
- work that was published at least four years before the
- Document itself, or if the original publisher of the version
- it refers to gives permission.
-
- K. For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the
- section all the substance and tone of each of the contributor
- acknowledgements and/or dedications given therein.
-
- L. Preserve all the Invariant Sections of the Document,
- unaltered in their text and in their titles. Section numbers
- or the equivalent are not considered part of the section
- titles.
-
- M. Delete any section Entitled "Endorsements". Such a section
- may not be included in the Modified Version.
-
- N. Do not retitle any existing section to be Entitled
- "Endorsements" or to conflict in title with any Invariant
- Section.
-
- O. Preserve any Warranty Disclaimers.
-
- If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no
- material copied from the Document, you may at your option
- designate some or all of these sections as invariant. To do this,
- add their titles to the list of Invariant Sections in the Modified
- Version's license notice. These titles must be distinct from any
- other section titles.
-
- You may add a section Entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various
- parties--for example, statements of peer review or that the text
- has been approved by an organization as the authoritative
- definition of a standard.
-
- You may add a passage of up to five words as a Front-Cover Text,
- and a passage of up to 25 words as a Back-Cover Text, to the end
- of the list of Cover Texts in the Modified Version. Only one
- passage of Front-Cover Text and one of Back-Cover Text may be
- added by (or through arrangements made by) any one entity. If the
- Document already includes a cover text for the same cover,
- previously added by you or by arrangement made by the same entity
- you are acting on behalf of, you may not add another; but you may
- replace the old one, on explicit permission from the previous
- publisher that added the old one.
-
- The author(s) and publisher(s) of the Document do not by this
- License give permission to use their names for publicity for or to
- assert or imply endorsement of any Modified Version.
-
- 5. COMBINING DOCUMENTS
-
- You may combine the Document with other documents released under
- this License, under the terms defined in section 4 above for
- modified versions, provided that you include in the combination
- all of the Invariant Sections of all of the original documents,
- unmodified, and list them all as Invariant Sections of your
- combined work in its license notice, and that you preserve all
- their Warranty Disclaimers.
-
- The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name
- but different contents, make the title of each such section unique
- by adding at the end of it, in parentheses, the name of the
- original author or publisher of that section if known, or else a
- unique number. Make the same adjustment to the section titles in
- the list of Invariant Sections in the license notice of the
- combined work.
-
- In the combination, you must combine any sections Entitled
- "History" in the various original documents, forming one section
- Entitled "History"; likewise combine any sections Entitled
- "Acknowledgements", and any sections Entitled "Dedications". You
- must delete all sections Entitled "Endorsements."
-
- 6. COLLECTIONS OF DOCUMENTS
-
- You may make a collection consisting of the Document and other
- documents released under this License, and replace the individual
- copies of this License in the various documents with a single copy
- that is included in the collection, provided that you follow the
- rules of this License for verbatim copying of each of the
- documents in all other respects.
-
- You may extract a single document from such a collection, and
- distribute it individually under this License, provided you insert
- a copy of this License into the extracted document, and follow
- this License in all other respects regarding verbatim copying of
- that document.
-
- 7. AGGREGATION WITH INDEPENDENT WORKS
-
- A compilation of the Document or its derivatives with other
- separate and independent documents or works, in or on a volume of
- a storage or distribution medium, is called an "aggregate" if the
- copyright resulting from the compilation is not used to limit the
- legal rights of the compilation's users beyond what the individual
- works permit. When the Document is included in an aggregate, this
- License does not apply to the other works in the aggregate which
- are not themselves derivative works of the Document.
-
- If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one half
- of the entire aggregate, the Document's Cover Texts may be placed
- on covers that bracket the Document within the aggregate, or the
- electronic equivalent of covers if the Document is in electronic
- form. Otherwise they must appear on printed covers that bracket
- the whole aggregate.
-
- 8. TRANSLATION
-
- Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section
- 4. Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License, and all the license notices in the
- Document, and any Warranty Disclaimers, provided that you also
- include the original English version of this License and the
- original versions of those notices and disclaimers. In case of a
- disagreement between the translation and the original version of
- this License or a notice or disclaimer, the original version will
- prevail.
-
- If a section in the Document is Entitled "Acknowledgements",
- "Dedications", or "History", the requirement (section 4) to
- Preserve its Title (section 1) will typically require changing the
- actual title.
-
- 9. TERMINATION
-
- You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense, or distribute it is void,
- and will automatically terminate your rights under this License.
-
- However, if you cease all violation of this License, then your
- license from a particular copyright holder is reinstated (a)
- provisionally, unless and until the copyright holder explicitly
- and finally terminates your license, and (b) permanently, if the
- copyright holder fails to notify you of the violation by some
- reasonable means prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
- reinstated permanently if the copyright holder notifies you of the
- violation by some reasonable means, this is the first time you have
- received notice of violation of this License (for any work) from
- that copyright holder, and you cure the violation prior to 30 days
- after your receipt of the notice.
-
- Termination of your rights under this section does not terminate
- the licenses of parties who have received copies or rights from
- you under this License. If your rights have been terminated and
- not permanently reinstated, receipt of a copy of some or all of
- the same material does not give you any rights to use it.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
- The Free Software Foundation may publish new, revised versions of
- the GNU Free Documentation License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns. See
- `http://www.gnu.org/copyleft/'.
-
- Each version of the License is given a distinguishing version
- number. If the Document specifies that a particular numbered
- version of this License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If
- the Document does not specify a version number of this License,
- you may choose any version ever published (not as a draft) by the
- Free Software Foundation. If the Document specifies that a proxy
- can decide which future versions of this License can be used, that
- proxy's public statement of acceptance of a version permanently
- authorizes you to choose that version for the Document.
-
- 11. RELICENSING
-
- "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
- World Wide Web server that publishes copyrightable works and also
- provides prominent facilities for anybody to edit those works. A
- public wiki that anybody can edit is an example of such a server.
- A "Massive Multiauthor Collaboration" (or "MMC") contained in the
- site means any set of copyrightable works thus published on the MMC
- site.
-
- "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
- license published by Creative Commons Corporation, a not-for-profit
- corporation with a principal place of business in San Francisco,
- California, as well as future copyleft versions of that license
- published by that same organization.
-
- "Incorporate" means to publish or republish a Document, in whole or
- in part, as part of another Document.
-
- An MMC is "eligible for relicensing" if it is licensed under this
- License, and if all works that were first published under this
- License somewhere other than this MMC, and subsequently
- incorporated in whole or in part into the MMC, (1) had no cover
- texts or invariant sections, and (2) were thus incorporated prior
- to November 1, 2008.
-
- The operator of an MMC Site may republish an MMC contained in the
- site under CC-BY-SA on the same site at any time before August 1,
- 2009, provided the MMC is eligible for relicensing.
-
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
- Copyright (C) YEAR YOUR NAME.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
- Texts. A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
-
- If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
- with the Invariant Sections being LIST THEIR TITLES, with
- the Front-Cover Texts being LIST, and with the Back-Cover Texts
- being LIST.
-
- If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
- If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License, to
-permit their use in free software.
-
-
-
-Tag Table:
-Node: Top793
-Node: Introduction1414
-Node: Configuring Python packages2865
-Node: Using python-configure4099
-Node: Required macros5597
-Node: Verifying the Python version6797
-Node: Checking for a module or function9324
-Node: Writing test programs10559
-Node: Using Sphinxbuild to build documentation11668
-Node: Appendix12693
-Node: Autoconf macros12874
-Node: GNU Free Documentation License16577
-
-End Tag Table
diff --git a/doc/python-configure.texi b/doc/python-configure.texi
deleted file mode 100644
--- a/doc/python-configure.texi
+++ /dev/null
@@ -1,560 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@comment $Id: texinfo.txi,v 1.204 2007/07/29 14:55:43 karl Exp $
-@comment %**start of header
-@setfilename python-configure.info
-@include version.texi
-@settitle python-configure @value{VERSION}
-@syncodeindex pg cp
-@comment %**end of header
-@copying
-This manual is for python-configure (version @value{VERSION}, updated
-@value{UPDATED}).
-
-Copyright @copyright{} 2012 Brandon Invergo
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A
-copy of the license is included in the section entitled ``GNU Free
-Documentation License.''
-@end quotation
-@end copying
-
-@dircategory Miscellaneous
-@direntry
-* python-configure: (python-configure)GNU Standards-compliant Python
- configuration and installation
-@end direntry
-
-@titlepage
-@title python-configure
-@subtitle for version @value{VERSION}, @value{UPDATED}
-@author @email{bug-gsrc@@gnu.org}
-@page
-@vskip 0pt plus 1filll
-@insertcopying
-@end titlepage
-
-@contents
-
-@ifnottex
-@node Top, Introduction, (dir), (dir)
-@top GNU Source Release Collection
-
-This manual is for python-configure (version @value{VERSION}, @value{UPDATED}).
-@end ifnottex
-
-@menu
-* Introduction::
-* Using python-configure::
-* Appendix::
-* GNU Free Documentation License::
-
-@detailmenu
- --- The Detailed Node Listing ---
-
-Introduction
-
-* Configuring Python packages::
-
-Using python-configure
-
-* Required macros::
-* Verifying the Python version::
-* Checking for a module or function::
-* Writing test programs::
-* Using Sphinxbuild to build documentation::
-
-Appendix
-
-* Autoconf Macros
-
-@end detailmenu
-@end menu
-
-@node Introduction, Using python-configure, Top, Top
-@chapter Introduction
-
-Python packages typically are configured and installed through the use
-of @code{distutils} or one of its derivatives. The user performs
-necessary actions via a Python script called @file{setup.py}. For
-simple programs, this is straight-forward. However, for more complex
-software packages, especially for those which also include code in
-other languages such as C or Fortran, the limitations of the
-@code{distutils} method quickly become apparent.
-
-The configuration and installation of GNU software and many other
-programs, on the other hand, is done according to the use of standard
-@file{configure} scripts and Make recipes. This method has the
-advantage of being language-agnostic, very flexible,
-time-proven. python-configure consists of all the files
-necessary to use the standard GNU build process to configure and
-install Python packages.
-
-Without modification, python-configure provides a wrapper
-around @file{setup.py}, which allows the user to use the familiar GNU
-installation commands to install a Python package. With the powerful
-Autoconf macros that it provides, a Python developer can greatly
-extend or even replace altogether the capabilities of
-@file{setup.py}. Plus, since this method is language-agnostic, all the
-power of Autoconf for compiled languages is gained for free.
-
-@menu
-* Configuring Python packages::
-@end menu
-
-@node Configuring Python packages, , Introduction, Introduction
-@section Configuring Python packages
-
-Configuring and installing Python packages which use
-python-configure follows the familiar steps of all standard GNU
-software:
-
-@example
-$ ./configure
-$ make
-$ make install
-@end example
-
-In fact, since most programs do not have anything to build, the second
-step could usually be skipped.
-
-As usual, the user may pass arguments to @file{configure} in order to
-specify how she wants the software to be installed. By default,
-@file{configure} takes the following useful arguments:
-
-@multitable @columnfractions .25 .75
-@headitem
-Argument
-@tab
-Description
-
-@item
-@code{--prefix}
-@tab
-Set the root directory in which to install files (default=/usr/local)
-
-@item
-@code{--with-virtualenv}
-@tab
-Install to a virtualenv at @code{$prefix}
-
-@item
-@code{PYTHON}
-@tab
-Path to the Python interpreter to use
-
-@item
-@code{PYTHONPATH}
-@tab
-The PYTHONPATH to use during the installation
-
-@end multitable
-
-However, as the developer is expected to customize these files, the
-final @file{configure} script may take many more arguments. The
-developer is expected to provide proper documentation in this case.
-
-@node Using python-configure, Appendix, Introduction, Top
-@chapter Using python-configure
-
-While it is possible to simply copy the python-configure files from
-the @file{src} directory into your project's source directory and use
-them unmodified, it is recommended that you customize them to more
-appropriately fit your needs. In particular, you will want to
-customize @file{configure.ac} and
-@file{Makefile.in}. @file{configure.ac} contains a series of macros
-which are used by Autoconf to build a portable @file{configure} shell
-script. This script either guesses important system settings or is
-provided them by the user. When the user invokes @file{configure}, it
-uses @file{Makefile.in} as a template to create the Make recipe
-@file{Makefile}.
-
-Several Autoconf macros are provided in the python-configure file
-@file{src/m4/python.m4} to allow the developer to write robust tests
-@xref{Autoconf macros}. Note that when you distribute your software,
-you must include this directory and file with your distribution.
-
-Once you modify your @file{configure.ac} to your liking, you must
-regenerate your @file{configure} script with autoreconf:
-
-@example
-$ autoreconf -fvi
-@end example
-
-A full explanation of the use of Autoconf macros is beyond the scope
-of this document, however it is worth presenting some examples.
-
-@menu
-* Required macros::
-* Verifying the Python version::
-* Checking for a module or function::
-* Writing test programs::
-* Using Sphinxbuild to build documentation::
-@end menu
-
-@node Required macros, Verifying the Python version, Using python-configure, Using python-configure
-@section Required macros
-
-Several macros are required in @file{configure.ac} to use
-python-configure. These are:
-
-@example
-m4_include([m4/python.m4])
-@end example
-
-This macro imports all of the Python Autoconf macros. If you choose to
-write your own macros for other purposes, you would also include them
-in this manner.
-
-@example
-AC_INIT(project_name, project_version)
-@end example
-
-This initializes Autoconf and also substitutes your project name and
-version in any output that it generates.
-
-@example
-AC_CONFIG_MACRO_DIR([m4])
-@end example
-
-Now that Autoconf is initialized, we inform it of the location of our
-macros.
-
-@example
-AC_PROG_PYTHON
-@end example
-
-This is the key macro. It finds the highest-version Python interpreter
-available on the system and saves its path in the @code{PYTHON}
-variable.
-
-@example
-PC_PYTHON_SITE_PACKAGE_DIR
-PC_PYTHON_EXEC_PACKAGE_DIR
-@end example
-
-These two macros figure out where Python expects packages to be
-installed (i.e. @file{/usr/lib/python2.7/site-packages/}) and saves
-them in the variables @code{pkgpythondir} and @code{pkgpyexecdir},
-respectively, for use in @file{Makefile.in}
-
-@node Verifying the Python version, Checking for a module or function, Required macros, Using python-configure
-@section Verifying the Python version
-
-As described in the previous section, @code{AC_PROG_PYTHON} finds the
-Python interpreter with the highest version installed on the
-system. Often, you will want to be sure that the user has some minimum
-version installed. There is a macro available to simplify this,
-@code{PC_PYTHON_VERIFY_VERSION}.
-
-@example
-m4_define(python_min_ver, 2.6.1)
-PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, ,
- [AC_MSG_ERROR(Python interpreter too old)])
-@end example
-
-In this example, we set the minimum version to 2.6.1 through the use
-of an M4 macro. We then check if the interpreter stored in the
-@code{PYTHON} variable (either set by the user or found by
-@code{AC_PROG_PYTHON}) is at least of that version. If it is not, the
-resulting @file{configure} script will exit with an appropriate error
-message.
-
-Unfortunately, the divide between Python 2 and Python 3 and many
-programs are only compatible with Python 2. Since
-@code{AC_PROG_PYTHON} will find the latest Python interpreter, if the
-user has any Python version 3.x installed, @code{configure} must be
-able to instead find the most latest 2.x version installed. This is
-slightly less straight-forward, but one possible implementation is as
-follows:
-
-@example
-PC_PYTHON_VERIFY_VERSION([$PYTHON], 3.0,
- py3k=true,
- py3k=false)
-# If a Python 3 interpreter was found, look specifically for a Python 2 one
-if test "$py3k" = "true" ; then
- m4_define_default([_PYTHON2_BINS], [python2 python2.7 python2.6])
- AC_PATH_PROGS(PYTHON, [_PYTHON2_BINS])
-else
-# otherwise check that the Python 2 version is sufficient
- PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, ,
- [AC_MSG_ERROR(Python interpreter too old)])
-fi
-if test -z "$PYTHON"; then
- AC_MSG_ERROR(No Python 2 interpreter found)
-fi
-@end example
-
-We first check to see if Python is version 3.0 or greater. If it is,
-we create a list of compatible Python interpreters and manually check
-for them using standard Autoconf macros. Finally, we check if the
-interpreter that we found this time is of sufficient version,
-otherwise @file{configure} will halt with an error. Likewise, if no
-appropriate interpreter was found, an error message will be printed
-and @file{configure} will stop.
-
-@node Checking for a module or function, Writing test programs, Verifying the Python version, Using python-configure
-@section Checking for a module or function
-
-It's reasonable to assume that many Python packages will have
-dependencies on other, external modules. With the provided
-python-configure macros, this is simple. All you have to do is use the
-@code{PC_PYTHON_CHECK_MODULE} macro as follows:
-
-@example
-PC_PYTHON_CHECK_MODULE([foo])
-@end example
-
-If the module is a hard requirement, you may provide actions to do if
-it is not present:
-
-@example
-PC_PYTHON_CHECK_MODULE([foo], , AC_MSG_ERROR([Module foo is not installed]))
-@end example
-
-If you need more fine-grained control, you can also test for a
-specific function:
-
-@example
-PC_PYTHON_CHECK_FUNC([foo], [bar], [arg1, arg2])
-@end example
-
-Remember that you may omit arguments to Autoconf macros: in the above
-example, the final two arguments, which correspond to the action to
-take if the test is successful and if it fails simply are not present
-in the argument list. Similarly, if you do not need to pass arguments
-to the test function, you can entirely omit the third argument to the
-macro:
-
-@example
-PC_PYTHON_CHECK_FUNC([foo], [bar])
-@end example
-
-@node Writing test programs, Using Sphinxbuild to build documentation, Checking for a module or function, Using python-configure
-@section Writing test programs
-
-One great benefit of Autoconf is the ability to embed test programs
-inside @file{configure}. The python-configure macros allow for this by
-defining Python as a language within Autoconf. You then would proceed
-to write test programs as you would in any other language that
-Autoconf supports like C.
-
-@example
-AC_LANG_PUSH(Python)[]
-AC_RUN_IFELSE([AC_LANG_PROGRAM([dnl
-# some code here
-import foo
-], [dnl
- # some more code here
- foo.bar()
-])], [ACTION-IF-SUCCESSFUL], [ACTION-IF-FAILED])
-AC_LANG_POP(Python)[]
-@end example
-
-The first argument to @code{AC_LANG_PROGRAM} is the so-called
-``prolog'', and typically will contain your @code{import} statements
-or function definitions. The second argument contains the main body of
-the program, which will be in the scope of an @code{if __name__=="__main__":}
-block. So, you must be sure to indent the code appropriately.
-
-@node Using Sphinxbuild to build documentation, , Writing test programs, Using python-configure
-@section Using Sphinxbuild to build documentation
-
-Using python-configure and Autoconf to test for other tools is quite
-easy. For example, many Python packages use Sphinxbuild to build their
-documentation. If this is the case for your project, you might do
-something like the following:
-
-@example
-AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no])
-AS_IF([test "x$SPHINXBUILD" = xno],
- AC_MSG_WARN(sphinx-build is required to build documentation))
-@end example
-
-We simply use Autoconf's @code{AC_CHECK_PROGS} macro to check for a
-series of possible Sphinxbuild binaries and save the result to the
-SPHINXBUILD variable, which may then be used in @file{Makefile.in}:
-
-@example
-docs/build/index.html: $(wildcard $(srcdir)/docs/source/*)
-ifneq ($(SPHINXBUILD),no)
- $(SPHINXBUILD) -b html docs/source/ docs/build/
-endif
-@end example
-
-@node Appendix, GNU Free Documentation License, Using python-configure, Top
-@chapter Appendix
-
-@menu
-* Autoconf macros::
-@end menu
-
-@node Autoconf macros, , , Appendix
-@section Autoconf macros
-
-@multitable @columnfractions .33 .33 .33
-@headitem
-Macro Name & Arguments
-@tab
-Description
-@tab
-Variables exported
-
-@item
-@code{AC_PROG_PYTHON([NAME-TO-CHECK])}
-@tab
-Find a Python interpreter
-@tab
-@code{PYTHON}
-
-@item
-@code{PC_PROG_PYTHON_CONFIG([NAME-TO-CHECK])}
-@tab
-Find a python-config program
-@tab
-@code{PYTHON_CONFIG}
-
-@item
-@code{PC_PYTHON_VERIFY_VERSION(VERSION, [ACTION-IF-TRUE], [ACTION-IF-NOT-TRUE])}
-@tab
-Verify that the Python interpreter is of a sufficient version number
-@tab
-
-@item
-@code{PC_PYTHON_CHECK_VERSION}
-@tab
-Get the version of the Python interpreter
-@tab
-@code{PYTHON_VERSION}
-
-@item
-@code{PC_PYTHON_CHECK_PREFIX}
-@tab
-Check what Python thinks is the prefix
-@tab
-@code{PYTHON_PREFIX}
-
-@item
-@code{PC_PYTHON_CHECK_EXEC_PREFIX}
-@tab
-Check what Python thinks is the exec_prefix
-@tab
-@code{PYTHON_EXEC_PREFIX}
-
-@item
-@code{PC_PYTHON_CHECK_INCLUDES}
-@tab
-Check the include flags ('-I[header]...') for including the Python
-header files
-@tab
-@code{PYTHON_INCLUDES}
-
-@item
-@code{PC_PYTHON_CHECK_HEADERS}
-@tab
-Check for the Python header files (i.e. @file{Python.h})
-@tab
-@code{HAVE_PYTHON_H}
-
-@item
-@code{PC_PYTHON_CHECK_LIBS}
-@tab
-Check for the proper LIBS flags to load the Python shared libraries
-@tab
-@code{PYTHON_LIBS}
-
-@item
-@code{PC_PYTHON_TEST_LIBS}
-@tab
-Test for the presence of the Python shared libraries
-@tab
-@code{HAVE_LIBPYTHON}
-
-@item
-@code{PC_PYTHON_CHECK_CFLAGS}
-@tab
-Find the CFLAGS that Python expects
-@tab
-@code{PYTHON_CFLAGS}
-
-@item
-@code{PC_PYTHON_CHECK_LDFLAGS}
-@tab
-Find the LDFLAGS that Python expects
-@tab
-@code{PYTHON_LDFLAGS}
-
-@item
-@code{PC_PYTHON_CHECK_EXTENSION_SUFFIX}
-@tab
-Check the extension suffix given to Python extension modules (Python 3
-only)
-@tab
-@code{PYTHON_EXTENSION_SUFFIX}
-
-@item
-@code{PC_PYTHON_CHECK_ABI_FLAGS}
-@tab
-Check the ABI flags used by Python (Python 3 only)
-@tab
-@code{PC_PYTHON_ABI_FLAGS}
-
-@item
-@code{PC_PYTHON_CHECK_PLATFORM}
-@tab
-Check what platform Python thinks this is
-@code{PYTHON_PLATFORM}
-
-@item
-@code{PC_PYTHON_CHECK_SITE_DIR}
-@tab
-Check the appropriate place to install Python packages (i.e.
-@file{$(prefix)/lib/python2.7/site-packages})
-@tab
-@code{pythondir}
-
-@item
-@code{PC_PYTHON_SITE_PACKAGE_DIR}
-@tab
-A convenience macro; adds the package's name to @code{pythondir}
-@tab
-@code{pkgpythondir}
-
-@item
-@code{PC_PYTHON_CHECK_EXEC_DIR}
-@tab
-Check directory for installing Python extension modules
-@tab
-@code{pyexecdir}
-
-@item
-@code{PC_PYTHON_EXEC_PACKAGE_DIR}
-@tab
-A convenience macro; adds the package's name to @code{pyexecdir}
-@tab
-@code{pkgpyexecdir}
-
-@item
-@code{PC_PYTHON_CHECK_MODULE}
-@tab
-Test if a given Python module can be successfully loaded
-@tab
-
-@item
-@code{PC_PYTHON_CHECK_FUNC}
-@tab
-Test if a given Python function can be called successfully.
-@tab
-@end multitable
-
-@node GNU Free Documentation License, , Appendix, Top
-@appendix GNU Free Documentation License
-
-@include fdl.texi
-
-@bye
-