update manual to mention setup.py.in and PKG-INFO.in
diff --git a/doc/pyconfigure.texi b/doc/pyconfigure.texi --- a/doc/pyconfigure.texi +++ b/doc/pyconfigure.texi @@ -37,6 +37,7 @@ Documentation License.'' @insertcopying @end titlepage +@c ******************************************************************* @contents @ifnottex @@ -74,6 +75,7 @@ Appendix @end detailmenu @end menu +@c ******************************************************************* @node Introduction, Using pyconfigure, Top, Top @chapter Introduction @@ -105,6 +107,7 @@ power of Autoconf for compiled languages * Configuring Python packages:: @end menu +@c ******************************************************************* @node Configuring Python packages, , Introduction, Introduction @section Configuring Python packages @@ -157,6 +160,8 @@ However, as the developer is expected to final @file{configure} script may take many more arguments. The developer is expected to provide proper documentation in this case. + +@c ******************************************************************* @node Using pyconfigure, Appendix, Introduction, Top @chapter Using pyconfigure @@ -172,6 +177,27 @@ provided them by the user. When the user uses @file{Makefile.in} as a template to create the Make recipe @file{Makefile}. +There are some minimum modifications that should be made. In +@file{configure.ac} you will see a macro called @code{AC_INIT}. You +should enter your project's name as the first argument to this macro, +its current version as the second argument and, optionally, an email +address in the third argument. These three values are used extensively +in the files modified by the configure script, so it is important that +you modify them. + +You will probably also want to provide package metadata, which will be +used by Python packaging-related tools. You can do that in two files: +@file{PKG-INFO.in} and @file{setup.py.in}. @file{setup.py.in} provides +a skeleton @file{setup.py} which should be sufficient for most +packages. @file{PKG-INFO} is a file used in Python packaging to +express package metadata and must be included in any source +distribution of a package. You may also use it to register a project +on PyPI (the Python Package Index; http://pypi.python.org). In both +@file{PKG-INFO.in} and @file{setup.py.in}, you can see that some +values will be automatically filled in by @file{configure}. You should +fill in the rest yourself. See the Python distutils documentation for +more information. + 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, @@ -184,8 +210,8 @@ regenerate your @file{configure} script $ 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. +A full explanation of the general use of Autoconf macros is beyond the +scope of this document, however it is worth presenting some examples. @menu * Required macros:: @@ -195,6 +221,7 @@ of this document, however it is worth pr * Using Sphinxbuild to build documentation:: @end menu +@c ******************************************************************* @node Required macros, Verifying the Python version, Using pyconfigure, Using pyconfigure @section Required macros @@ -241,6 +268,8 @@ installed (i.e. @file{/usr/lib/python2.7 them in the variables @code{pkgpythondir} and @code{pkgpyexecdir}, respectively, for use in @file{Makefile.in} + +@c ******************************************************************* @node Verifying the Python version, Checking for a module or function, Required macros, Using pyconfigure @section Verifying the Python version @@ -272,21 +301,14 @@ slightly less straight-forward, but one 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)]) +AC_PROG_PYTHON([python2]) +if [[ "x$PYTHON" == "x" ]]; then + AC_PROG_PYTHON + PC_PYTHON_VERIFY_VERSION(3.0, , + AC_MSG_ERROR(Python 2 (python_min_ver+) is required)) fi -if test -z "$PYTHON"; then - AC_MSG_ERROR(No Python 2 interpreter found) -fi +PC_PYTHON_VERIFY_VERSION(python_min_ver, , + AC_MSG_ERROR(Python 2 (python_min_ver+) is required)) @end example We first check to see if Python is version 3.0 or greater. If it is, @@ -297,6 +319,8 @@ otherwise @file{configure} will halt wit appropriate interpreter was found, an error message will be printed and @file{configure} will stop. + +@c ******************************************************************* @node Checking for a module or function, Writing test programs, Verifying the Python version, Using pyconfigure @section Checking for a module or function @@ -334,6 +358,8 @@ macro: PC_PYTHON_CHECK_FUNC([foo], [bar]) @end example + +@c ******************************************************************* @node Writing test programs, Using Sphinxbuild to build documentation, Checking for a module or function, Using pyconfigure @section Writing test programs @@ -386,6 +412,8 @@ ifneq ($(SPHINXBUILD),no) endif @end example + +@c ******************************************************************* @node Appendix, GNU Free Documentation License, Using pyconfigure, Top @chapter Appendix @@ -393,6 +421,8 @@ endif * Autoconf macros:: @end menu + +@c ******************************************************************* @node Autoconf macros, , , Appendix @section Autoconf macros