blob: dc978481c9406cc952cf4fc4b434ec1fe9fbc193 [file] [log] [blame]
Fred Drake211a2eb2004-03-22 21:44:43 +00001\documentclass{manual}
Greg Ward16aafcd2000-04-09 04:06:44 +00002\usepackage{distutils}
Greg Wardabc52162000-02-26 00:52:48 +00003
Greg Wardb6528972000-09-07 02:40:37 +00004% $Id$
5
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00006% TODO
7% Document extension.read_setup_file
8% Document build_clib command
9%
10
Greg Ward16aafcd2000-04-09 04:06:44 +000011\title{Distributing Python Modules}
Greg Wardabc52162000-02-26 00:52:48 +000012
Fred Drake20d47382004-01-23 15:23:49 +000013\input{boilerplate}
14
Fred Drake6fca7cc2004-03-23 18:43:03 +000015\author{Greg Ward\\
16 Anthony Baxter}
Fred Drakeb914ef02004-01-02 06:57:50 +000017\authoraddress{
18 \strong{Python Software Foundation}\\
19 Email: \email{distutils-sig@python.org}
20}
Greg Wardabc52162000-02-26 00:52:48 +000021
Greg Warde3cca262000-08-31 16:36:31 +000022\makeindex
Fred Drake6356fff2004-03-23 19:02:38 +000023\makemodindex
Greg Ward16aafcd2000-04-09 04:06:44 +000024
Greg Wardabc52162000-02-26 00:52:48 +000025\begin{document}
26
Greg Wardfacb8db2000-04-09 04:32:40 +000027\maketitle
Greg Warde3cca262000-08-31 16:36:31 +000028\begin{abstract}
29 \noindent
30 This document describes the Python Distribution Utilities
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +000031 (``Distutils'') from the module developer's point of view, describing
Greg Warde3cca262000-08-31 16:36:31 +000032 how to use the Distutils to make Python modules and extensions easily
33 available to a wider audience with very little overhead for
34 build/release/install mechanics.
35\end{abstract}
36
Raymond Hettinger68804312005-01-01 00:28:46 +000037% The ugly "%begin{latexonly}" pseudo-environment suppresses the table
Fred Drakea09262e2001-03-01 18:35:43 +000038% of contents for HTML generation.
39%
40%begin{latexonly}
Greg Wardfacb8db2000-04-09 04:32:40 +000041\tableofcontents
Fred Drakea09262e2001-03-01 18:35:43 +000042%end{latexonly}
43
Greg Ward16aafcd2000-04-09 04:06:44 +000044
Fred Drake211a2eb2004-03-22 21:44:43 +000045\chapter{An Introduction to Distutils}
Greg Warde78298a2000-04-28 17:12:24 +000046\label{intro}
Greg Ward16aafcd2000-04-09 04:06:44 +000047
Andrew M. Kuchling40df7102002-05-08 13:39:03 +000048This document covers using the Distutils to distribute your Python
49modules, concentrating on the role of developer/distributor: if
Fred Drake01df4532000-06-30 03:36:41 +000050you're looking for information on installing Python modules, you
51should refer to the \citetitle[../inst/inst.html]{Installing Python
52Modules} manual.
Greg Ward16aafcd2000-04-09 04:06:44 +000053
54
Greg Wardfacb8db2000-04-09 04:32:40 +000055\section{Concepts \& Terminology}
Greg Warde78298a2000-04-28 17:12:24 +000056\label{concepts}
Greg Ward16aafcd2000-04-09 04:06:44 +000057
58Using the Distutils is quite simple, both for module developers and for
59users/administrators installing third-party modules. As a developer,
Thomas Heller5f52f722001-02-19 17:48:03 +000060your responsibilities (apart from writing solid, well-documented and
Greg Ward16aafcd2000-04-09 04:06:44 +000061well-tested code, of course!) are:
62\begin{itemize}
63\item write a setup script (\file{setup.py} by convention)
64\item (optional) write a setup configuration file
65\item create a source distribution
66\item (optional) create one or more built (binary) distributions
67\end{itemize}
68Each of these tasks is covered in this document.
69
70Not all module developers have access to a multitude of platforms, so
71it's not always feasible to expect them to create a multitude of built
72distributions. It is hoped that a class of intermediaries, called
Greg Ward19c67f82000-06-24 01:33:16 +000073\emph{packagers}, will arise to address this need. Packagers will take
74source distributions released by module developers, build them on one or
75more platforms, and release the resulting built distributions. Thus,
76users on the most popular platforms will be able to install most popular
77Python module distributions in the most natural way for their platform,
78without having to run a single setup script or compile a line of code.
Greg Ward16aafcd2000-04-09 04:06:44 +000079
80
Fred Drake211a2eb2004-03-22 21:44:43 +000081\section{A Simple Example}
Greg Warde78298a2000-04-28 17:12:24 +000082\label{simple-example}
Greg Ward16aafcd2000-04-09 04:06:44 +000083
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +000084The setup script is usually quite simple, although since it's written
85in Python, there are no arbitrary limits to what you can do with it,
86though you should be careful about putting arbitrarily expensive
87operations in your setup script. Unlike, say, Autoconf-style configure
88scripts, the setup script may be run multiple times in the course of
Andrew M. Kuchlinge9a54a32003-05-13 15:02:06 +000089building and installing your module distribution.
Andrew M. Kuchling40df7102002-05-08 13:39:03 +000090
91If all you want to do is distribute a module called \module{foo},
92contained in a file \file{foo.py}, then your setup script can be as
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +000093simple as this:
Fred Drakea09262e2001-03-01 18:35:43 +000094
Greg Ward16aafcd2000-04-09 04:06:44 +000095\begin{verbatim}
96from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +000097setup(name='foo',
98 version='1.0',
99 py_modules=['foo'],
100 )
Greg Ward16aafcd2000-04-09 04:06:44 +0000101\end{verbatim}
Greg Ward370248d2000-06-24 01:45:47 +0000102
Greg Ward16aafcd2000-04-09 04:06:44 +0000103Some observations:
104\begin{itemize}
Greg Ward370248d2000-06-24 01:45:47 +0000105\item most information that you supply to the Distutils is supplied as
Greg Wardfacb8db2000-04-09 04:32:40 +0000106 keyword arguments to the \function{setup()} function
Greg Ward16aafcd2000-04-09 04:06:44 +0000107\item those keyword arguments fall into two categories: package
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000108 metadata (name, version number) and information about what's in the
Greg Ward370248d2000-06-24 01:45:47 +0000109 package (a list of pure Python modules, in this case)
Greg Ward16aafcd2000-04-09 04:06:44 +0000110\item modules are specified by module name, not filename (the same will
111 hold true for packages and extensions)
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000112\item it's recommended that you supply a little more metadata, in
Greg Ward16aafcd2000-04-09 04:06:44 +0000113 particular your name, email address and a URL for the project
Greg Ward47f99a62000-09-04 20:07:15 +0000114 (see section~\ref{setup-script} for an example)
Greg Ward16aafcd2000-04-09 04:06:44 +0000115\end{itemize}
116
Greg Ward370248d2000-06-24 01:45:47 +0000117To create a source distribution for this module, you would create a
118setup script, \file{setup.py}, containing the above code, and run:
Fred Drakea09262e2001-03-01 18:35:43 +0000119
Greg Ward16aafcd2000-04-09 04:06:44 +0000120\begin{verbatim}
121python setup.py sdist
122\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000123
Fred Drakeeff9a872000-10-26 16:41:03 +0000124which will create an archive file (e.g., tarball on \UNIX, ZIP file on
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000125Windows) containing your setup script \file{setup.py}, and your module
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000126\file{foo.py}. The archive file will be named \file{foo-1.0.tar.gz} (or
127\file{.zip}), and will unpack into a directory \file{foo-1.0}.
Greg Ward16aafcd2000-04-09 04:06:44 +0000128
129If an end-user wishes to install your \module{foo} module, all she has
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000130to do is download \file{foo-1.0.tar.gz} (or \file{.zip}), unpack it,
131and---from the \file{foo-1.0} directory---run
Fred Drakea09262e2001-03-01 18:35:43 +0000132
Greg Ward16aafcd2000-04-09 04:06:44 +0000133\begin{verbatim}
134python setup.py install
135\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000136
Greg Ward16aafcd2000-04-09 04:06:44 +0000137which will ultimately copy \file{foo.py} to the appropriate directory
138for third-party modules in their Python installation.
139
140This simple example demonstrates some fundamental concepts of the
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000141Distutils. First, both developers and installers have the same basic
Greg Ward16aafcd2000-04-09 04:06:44 +0000142user interface, i.e. the setup script. The difference is which
143Distutils \emph{commands} they use: the \command{sdist} command is
144almost exclusively for module developers, while \command{install} is
145more often for installers (although most developers will want to install
146their own code occasionally).
147
Greg Ward16aafcd2000-04-09 04:06:44 +0000148If you want to make things really easy for your users, you can create
149one or more built distributions for them. For instance, if you are
150running on a Windows machine, and want to make things easy for other
151Windows users, you can create an executable installer (the most
152appropriate type of built distribution for this platform) with the
Greg Ward59d382e2000-05-26 01:04:47 +0000153\command{bdist\_wininst} command. For example:
Fred Drakea09262e2001-03-01 18:35:43 +0000154
Greg Ward16aafcd2000-04-09 04:06:44 +0000155\begin{verbatim}
Greg Ward59d382e2000-05-26 01:04:47 +0000156python setup.py bdist_wininst
Greg Ward16aafcd2000-04-09 04:06:44 +0000157\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000158
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000159will create an executable installer, \file{foo-1.0.win32.exe}, in the
Greg Ward1d8f57a2000-08-05 00:43:11 +0000160current directory.
Greg Ward16aafcd2000-04-09 04:06:44 +0000161
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000162Other useful built distribution formats are RPM, implemented by the
163\command{bdist\_rpm} command, Solaris \program{pkgtool}
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000164(\command{bdist\_pkgtool}), and HP-UX \program{swinstall}
165(\command{bdist_sdux}). For example, the following command will
166create an RPM file called \file{foo-1.0.noarch.rpm}:
Fred Drakea09262e2001-03-01 18:35:43 +0000167
Greg Ward1d8f57a2000-08-05 00:43:11 +0000168\begin{verbatim}
169python setup.py bdist_rpm
170\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000171
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000172(The \command{bdist\_rpm} command uses the \command{rpm} executable,
173therefore this has to be run on an RPM-based system such as Red Hat
174Linux, SuSE Linux, or Mandrake Linux.)
Greg Ward1d8f57a2000-08-05 00:43:11 +0000175
176You can find out what distribution formats are available at any time by
177running
Fred Drakea09262e2001-03-01 18:35:43 +0000178
Greg Ward1d8f57a2000-08-05 00:43:11 +0000179\begin{verbatim}
180python setup.py bdist --help-formats
181\end{verbatim}
Greg Ward16aafcd2000-04-09 04:06:44 +0000182
183
Fred Drake211a2eb2004-03-22 21:44:43 +0000184\section{General Python terminology}
Greg Warde78298a2000-04-28 17:12:24 +0000185\label{python-terms}
Greg Ward16aafcd2000-04-09 04:06:44 +0000186
187If you're reading this document, you probably have a good idea of what
188modules, extensions, and so forth are. Nevertheless, just to be sure
189that everyone is operating from a common starting point, we offer the
190following glossary of common Python terms:
191\begin{description}
192\item[module] the basic unit of code reusability in Python: a block of
Greg Ward1d8f57a2000-08-05 00:43:11 +0000193 code imported by some other code. Three types of modules concern us
194 here: pure Python modules, extension modules, and packages.
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000195
Greg Ward16aafcd2000-04-09 04:06:44 +0000196\item[pure Python module] a module written in Python and contained in a
197 single \file{.py} file (and possibly associated \file{.pyc} and/or
198 \file{.pyo} files). Sometimes referred to as a ``pure module.''
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000199
Greg Ward16aafcd2000-04-09 04:06:44 +0000200\item[extension module] a module written in the low-level language of
Fred Drake2884d6d2003-07-02 12:27:43 +0000201 the Python implementation: C/\Cpp{} for Python, Java for Jython.
Greg Ward16aafcd2000-04-09 04:06:44 +0000202 Typically contained in a single dynamically loadable pre-compiled
Fred Drakeeff9a872000-10-26 16:41:03 +0000203 file, e.g. a shared object (\file{.so}) file for Python extensions on
204 \UNIX, a DLL (given the \file{.pyd} extension) for Python extensions
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000205 on Windows, or a Java class file for Jython extensions. (Note that
Fred Drake2884d6d2003-07-02 12:27:43 +0000206 currently, the Distutils only handles C/\Cpp{} extensions for Python.)
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000207
Greg Ward16aafcd2000-04-09 04:06:44 +0000208\item[package] a module that contains other modules; typically contained
209 in a directory in the filesystem and distinguished from other
210 directories by the presence of a file \file{\_\_init\_\_.py}.
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000211
Greg Ward6153fa12000-05-26 02:24:28 +0000212\item[root package] the root of the hierarchy of packages. (This isn't
213 really a package, since it doesn't have an \file{\_\_init\_\_.py}
214 file. But we have to call it something.) The vast majority of the
215 standard library is in the root package, as are many small, standalone
216 third-party modules that don't belong to a larger module collection.
217 Unlike regular packages, modules in the root package can be found in
218 many directories: in fact, every directory listed in \code{sys.path}
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000219 contributes modules to the root package.
Greg Ward16aafcd2000-04-09 04:06:44 +0000220\end{description}
221
222
Fred Drake211a2eb2004-03-22 21:44:43 +0000223\section{Distutils-specific terminology}
Greg Warde78298a2000-04-28 17:12:24 +0000224\label{distutils-term}
Greg Ward16aafcd2000-04-09 04:06:44 +0000225
226The following terms apply more specifically to the domain of
227distributing Python modules using the Distutils:
228\begin{description}
229\item[module distribution] a collection of Python modules distributed
230 together as a single downloadable resource and meant to be installed
231 \emph{en masse}. Examples of some well-known module distributions are
232 Numeric Python, PyXML, PIL (the Python Imaging Library), or
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000233 mxBase. (This would be called a \emph{package}, except that term
Greg Ward59d382e2000-05-26 01:04:47 +0000234 is already taken in the Python context: a single module distribution
235 may contain zero, one, or many Python packages.)
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000236
Greg Ward16aafcd2000-04-09 04:06:44 +0000237\item[pure module distribution] a module distribution that contains only
238 pure Python modules and packages. Sometimes referred to as a ``pure
239 distribution.''
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000240
Greg Ward16aafcd2000-04-09 04:06:44 +0000241\item[non-pure module distribution] a module distribution that contains
242 at least one extension module. Sometimes referred to as a ``non-pure
243 distribution.''
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000244
Greg Ward16aafcd2000-04-09 04:06:44 +0000245\item[distribution root] the top-level directory of your source tree (or
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000246 source distribution); the directory where \file{setup.py} exists. Generally
247 \file{setup.py} will be run from this directory.
Greg Ward16aafcd2000-04-09 04:06:44 +0000248\end{description}
249
250
Fred Drake211a2eb2004-03-22 21:44:43 +0000251\chapter{Writing the Setup Script}
Greg Warde78298a2000-04-28 17:12:24 +0000252\label{setup-script}
Greg Ward16aafcd2000-04-09 04:06:44 +0000253
254The setup script is the centre of all activity in building,
255distributing, and installing modules using the Distutils. The main
256purpose of the setup script is to describe your module distribution to
Greg Wardd5767a52000-04-19 22:48:09 +0000257the Distutils, so that the various commands that operate on your modules
Greg Ward59d382e2000-05-26 01:04:47 +0000258do the right thing. As we saw in section~\ref{simple-example} above,
259the setup script consists mainly of a call to \function{setup()}, and
Greg Ward1bbe3292000-06-25 03:14:13 +0000260most information supplied to the Distutils by the module developer is
261supplied as keyword arguments to \function{setup()}.
Greg Ward16aafcd2000-04-09 04:06:44 +0000262
263Here's a slightly more involved example, which we'll follow for the next
264couple of sections: the Distutils' own setup script. (Keep in mind that
Greg Ward1d8f57a2000-08-05 00:43:11 +0000265although the Distutils are included with Python 1.6 and later, they also
266have an independent existence so that Python 1.5.2 users can use them to
267install other module distributions. The Distutils' own setup script,
268shown here, is used to install the package into Python 1.5.2.)
Greg Ward16aafcd2000-04-09 04:06:44 +0000269
270\begin{verbatim}
271#!/usr/bin/env python
272
273from distutils.core import setup
274
Fred Drake630e5bd2004-03-23 18:54:12 +0000275setup(name='Distutils',
276 version='1.0',
277 description='Python Distribution Utilities',
278 author='Greg Ward',
279 author_email='gward@python.net',
280 url='http://www.python.org/sigs/distutils-sig/',
Fred Drakea09262e2001-03-01 18:35:43 +0000281 packages=['distutils', 'distutils.command'],
282 )
Greg Ward16aafcd2000-04-09 04:06:44 +0000283\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000284
Greg Ward16aafcd2000-04-09 04:06:44 +0000285There are only two differences between this and the trivial one-file
Greg Warde78298a2000-04-28 17:12:24 +0000286distribution presented in section~\ref{simple-example}: more
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000287metadata, and the specification of pure Python modules by package,
Greg Ward16aafcd2000-04-09 04:06:44 +0000288rather than by module. This is important since the Distutils consist of
289a couple of dozen modules split into (so far) two packages; an explicit
290list of every module would be tedious to generate and difficult to
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000291maintain. For more information on the additional meta-data, see
292section~\ref{meta-data}.
Greg Ward16aafcd2000-04-09 04:06:44 +0000293
Greg Ward46b98e32000-04-14 01:53:36 +0000294Note that any pathnames (files or directories) supplied in the setup
Fred Drakeeff9a872000-10-26 16:41:03 +0000295script should be written using the \UNIX{} convention, i.e.
Greg Ward46b98e32000-04-14 01:53:36 +0000296slash-separated. The Distutils will take care of converting this
Greg Ward59d382e2000-05-26 01:04:47 +0000297platform-neutral representation into whatever is appropriate on your
Greg Ward46b98e32000-04-14 01:53:36 +0000298current platform before actually using the pathname. This makes your
299setup script portable across operating systems, which of course is one
300of the major goals of the Distutils. In this spirit, all pathnames in
Brett Cannon7706c2d2005-02-13 22:50:04 +0000301this document are slash-separated. (Mac OS 9 programmers should keep in
Greg Ward59d382e2000-05-26 01:04:47 +0000302mind that the \emph{absence} of a leading slash indicates a relative
Fred Drake781380c2004-02-19 23:17:46 +0000303path, the opposite of the Mac OS convention with colons.)
Greg Ward46b98e32000-04-14 01:53:36 +0000304
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000305This, of course, only applies to pathnames given to Distutils
Fred Drake2a046232003-03-31 16:23:09 +0000306functions. If you, for example, use standard Python functions such as
307\function{glob.glob()} or \function{os.listdir()} to specify files, you
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000308should be careful to write portable code instead of hardcoding path
309separators:
Fred Drakea09262e2001-03-01 18:35:43 +0000310
Thomas Heller5f52f722001-02-19 17:48:03 +0000311\begin{verbatim}
312 glob.glob(os.path.join('mydir', 'subdir', '*.html'))
313 os.listdir(os.path.join('mydir', 'subdir'))
314\end{verbatim}
Greg Ward16aafcd2000-04-09 04:06:44 +0000315
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000316
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000317\section{Listing whole packages}
Greg Ward2afffd42000-08-06 20:37:24 +0000318\label{listing-packages}
Greg Ward16aafcd2000-04-09 04:06:44 +0000319
320The \option{packages} option tells the Distutils to process (build,
321distribute, install, etc.) all pure Python modules found in each package
322mentioned in the \option{packages} list. In order to do this, of
323course, there has to be a correspondence between package names and
324directories in the filesystem. The default correspondence is the most
Greg Ward1ecc2512000-04-19 22:36:24 +0000325obvious one, i.e. package \module{distutils} is found in the directory
Greg Ward16aafcd2000-04-09 04:06:44 +0000326\file{distutils} relative to the distribution root. Thus, when you say
327\code{packages = ['foo']} in your setup script, you are promising that
328the Distutils will find a file \file{foo/\_\_init\_\_.py} (which might
329be spelled differently on your system, but you get the idea) relative to
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000330the directory where your setup script lives. If you break this
331promise, the Distutils will issue a warning but still process the broken
332package anyways.
Greg Ward16aafcd2000-04-09 04:06:44 +0000333
334If you use a different convention to lay out your source directory,
335that's no problem: you just have to supply the \option{package\_dir}
336option to tell the Distutils about your convention. For example, say
Greg Ward1d8f57a2000-08-05 00:43:11 +0000337you keep all Python source under \file{lib}, so that modules in the
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000338``root package'' (i.e., not in any package at all) are in
Greg Ward1d8f57a2000-08-05 00:43:11 +0000339\file{lib}, modules in the \module{foo} package are in \file{lib/foo},
340and so forth. Then you would put
Fred Drakea09262e2001-03-01 18:35:43 +0000341
Greg Ward16aafcd2000-04-09 04:06:44 +0000342\begin{verbatim}
343package_dir = {'': 'lib'}
344\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000345
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000346in your setup script. The keys to this dictionary are package names,
Greg Ward1d8f57a2000-08-05 00:43:11 +0000347and an empty package name stands for the root package. The values are
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000348directory names relative to your distribution root. In this case, when
Greg Ward1d8f57a2000-08-05 00:43:11 +0000349you say \code{packages = ['foo']}, you are promising that the file
Greg Ward16aafcd2000-04-09 04:06:44 +0000350\file{lib/foo/\_\_init\_\_.py} exists.
351
Greg Ward1ecc2512000-04-19 22:36:24 +0000352Another possible convention is to put the \module{foo} package right in
353\file{lib}, the \module{foo.bar} package in \file{lib/bar}, etc. This
Greg Ward16aafcd2000-04-09 04:06:44 +0000354would be written in the setup script as
Fred Drakea09262e2001-03-01 18:35:43 +0000355
Greg Ward16aafcd2000-04-09 04:06:44 +0000356\begin{verbatim}
357package_dir = {'foo': 'lib'}
358\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000359
Greg Ward59d382e2000-05-26 01:04:47 +0000360A \code{\var{package}: \var{dir}} entry in the \option{package\_dir}
361dictionary implicitly applies to all packages below \var{package}, so
362the \module{foo.bar} case is automatically handled here. In this
363example, having \code{packages = ['foo', 'foo.bar']} tells the Distutils
364to look for \file{lib/\_\_init\_\_.py} and
365\file{lib/bar/\_\_init\_\_.py}. (Keep in mind that although
366\option{package\_dir} applies recursively, you must explicitly list all
367packages in \option{packages}: the Distutils will \emph{not} recursively
368scan your source tree looking for any directory with an
369\file{\_\_init\_\_.py} file.)
Greg Ward16aafcd2000-04-09 04:06:44 +0000370
371
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000372\section{Listing individual modules}
Greg Warde78298a2000-04-28 17:12:24 +0000373\label{listing-modules}
Greg Ward16aafcd2000-04-09 04:06:44 +0000374
375For a small module distribution, you might prefer to list all modules
376rather than listing packages---especially the case of a single module
377that goes in the ``root package'' (i.e., no package at all). This
Greg Warde78298a2000-04-28 17:12:24 +0000378simplest case was shown in section~\ref{simple-example}; here is a
Greg Ward16aafcd2000-04-09 04:06:44 +0000379slightly more involved example:
Fred Drakea09262e2001-03-01 18:35:43 +0000380
Greg Ward16aafcd2000-04-09 04:06:44 +0000381\begin{verbatim}
382py_modules = ['mod1', 'pkg.mod2']
383\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000384
Greg Ward16aafcd2000-04-09 04:06:44 +0000385This describes two modules, one of them in the ``root'' package, the
Greg Wardd5767a52000-04-19 22:48:09 +0000386other in the \module{pkg} package. Again, the default package/directory
387layout implies that these two modules can be found in \file{mod1.py} and
388\file{pkg/mod2.py}, and that \file{pkg/\_\_init\_\_.py} exists as well.
Greg Ward2afffd42000-08-06 20:37:24 +0000389And again, you can override the package/directory correspondence using
390the \option{package\_dir} option.
Greg Ward59d382e2000-05-26 01:04:47 +0000391
392
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000393\section{Describing extension modules}
Greg Ward1365a302000-08-31 14:47:05 +0000394\label{describing-extensions}
Greg Ward59d382e2000-05-26 01:04:47 +0000395
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000396% XXX read over this section
Greg Ward2afffd42000-08-06 20:37:24 +0000397Just as writing Python extension modules is a bit more complicated than
398writing pure Python modules, describing them to the Distutils is a bit
399more complicated. Unlike pure modules, it's not enough just to list
400modules or packages and expect the Distutils to go out and find the
401right files; you have to specify the extension name, source file(s), and
402any compile/link requirements (include directories, libraries to link
403with, etc.).
404
405All of this is done through another keyword argument to
406\function{setup()}, the \option{extensions} option. \option{extensions}
407is just a list of \class{Extension} instances, each of which describes a
408single extension module. Suppose your distribution includes a single
409extension, called \module{foo} and implemented by \file{foo.c}. If no
410additional instructions to the compiler/linker are needed, describing
411this extension is quite simple:
Fred Drakea09262e2001-03-01 18:35:43 +0000412
Greg Ward2afffd42000-08-06 20:37:24 +0000413\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000414Extension('foo', ['foo.c'])
Greg Ward2afffd42000-08-06 20:37:24 +0000415\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000416
Greg Ward2afffd42000-08-06 20:37:24 +0000417The \class{Extension} class can be imported from
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000418\module{distutils.core} along with \function{setup()}. Thus, the setup
Greg Ward2afffd42000-08-06 20:37:24 +0000419script for a module distribution that contains only this one extension
420and nothing else might be:
Fred Drakea09262e2001-03-01 18:35:43 +0000421
Greg Ward2afffd42000-08-06 20:37:24 +0000422\begin{verbatim}
423from distutils.core import setup, Extension
Fred Drake630e5bd2004-03-23 18:54:12 +0000424setup(name='foo',
425 version='1.0',
426 ext_modules=[Extension('foo', ['foo.c'])],
427 )
Greg Ward2afffd42000-08-06 20:37:24 +0000428\end{verbatim}
429
430The \class{Extension} class (actually, the underlying extension-building
Andrew M. Kuchlingda23c4f2001-02-17 00:38:48 +0000431machinery implemented by the \command{build\_ext} command) supports a
Greg Ward2afffd42000-08-06 20:37:24 +0000432great deal of flexibility in describing Python extensions, which is
433explained in the following sections.
434
435
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000436\subsection{Extension names and packages}
Greg Ward2afffd42000-08-06 20:37:24 +0000437
438The first argument to the \class{Extension} constructor is always the
439name of the extension, including any package names. For example,
Fred Drakea09262e2001-03-01 18:35:43 +0000440
Greg Ward2afffd42000-08-06 20:37:24 +0000441\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000442Extension('foo', ['src/foo1.c', 'src/foo2.c'])
Greg Ward2afffd42000-08-06 20:37:24 +0000443\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000444
Greg Ward2afffd42000-08-06 20:37:24 +0000445describes an extension that lives in the root package, while
Fred Drakea09262e2001-03-01 18:35:43 +0000446
Greg Ward2afffd42000-08-06 20:37:24 +0000447\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000448Extension('pkg.foo', ['src/foo1.c', 'src/foo2.c'])
Greg Ward2afffd42000-08-06 20:37:24 +0000449\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000450
Greg Ward2afffd42000-08-06 20:37:24 +0000451describes the same extension in the \module{pkg} package. The source
452files and resulting object code are identical in both cases; the only
453difference is where in the filesystem (and therefore where in Python's
454namespace hierarchy) the resulting extension lives.
455
456If you have a number of extensions all in the same package (or all under
457the same base package), use the \option{ext\_package} keyword argument
458to \function{setup()}. For example,
Fred Drakea09262e2001-03-01 18:35:43 +0000459
Greg Ward2afffd42000-08-06 20:37:24 +0000460\begin{verbatim}
461setup(...
Fred Drake630e5bd2004-03-23 18:54:12 +0000462 ext_package='pkg',
463 ext_modules=[Extension('foo', ['foo.c']),
464 Extension('subpkg.bar', ['bar.c'])],
Greg Ward2afffd42000-08-06 20:37:24 +0000465 )
466\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000467
Greg Ward2afffd42000-08-06 20:37:24 +0000468will compile \file{foo.c} to the extension \module{pkg.foo}, and
469\file{bar.c} to \module{pkg.subpkg.bar}.
470
471
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000472\subsection{Extension source files}
Greg Ward2afffd42000-08-06 20:37:24 +0000473
474The second argument to the \class{Extension} constructor is a list of
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000475source files. Since the Distutils currently only support C, \Cpp, and
476Objective-C extensions, these are normally C/\Cpp/Objective-C source
477files. (Be sure to use appropriate extensions to distinguish \Cpp\
478source files: \file{.cc} and \file{.cpp} seem to be recognized by both
479\UNIX{} and Windows compilers.)
Greg Ward2afffd42000-08-06 20:37:24 +0000480
481However, you can also include SWIG interface (\file{.i}) files in the
482list; the \command{build\_ext} command knows how to deal with SWIG
483extensions: it will run SWIG on the interface file and compile the
Fred Drake2884d6d2003-07-02 12:27:43 +0000484resulting C/\Cpp{} file into your extension.
Greg Ward2afffd42000-08-06 20:37:24 +0000485
486\XXX{SWIG support is rough around the edges and largely untested;
Fred Drake2884d6d2003-07-02 12:27:43 +0000487 especially SWIG support for \Cpp{} extensions! Explain in more detail
Greg Ward2afffd42000-08-06 20:37:24 +0000488 here when the interface firms up.}
489
490On some platforms, you can include non-source files that are processed
491by the compiler and included in your extension. Currently, this just
Thomas Heller5f52f722001-02-19 17:48:03 +0000492means Windows message text (\file{.mc}) files and resource definition
Fred Drake2884d6d2003-07-02 12:27:43 +0000493(\file{.rc}) files for Visual \Cpp. These will be compiled to binary resource
Thomas Heller5f52f722001-02-19 17:48:03 +0000494(\file{.res}) files and linked into the executable.
Greg Ward2afffd42000-08-06 20:37:24 +0000495
496
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000497\subsection{Preprocessor options}
Greg Ward2afffd42000-08-06 20:37:24 +0000498
499Three optional arguments to \class{Extension} will help if you need to
500specify include directories to search or preprocessor macros to
501define/undefine: \code{include\_dirs}, \code{define\_macros}, and
502\code{undef\_macros}.
503
504For example, if your extension requires header files in the
505\file{include} directory under your distribution root, use the
506\code{include\_dirs} option:
Fred Drakea09262e2001-03-01 18:35:43 +0000507
Greg Ward2afffd42000-08-06 20:37:24 +0000508\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000509Extension('foo', ['foo.c'], include_dirs=['include'])
Greg Ward2afffd42000-08-06 20:37:24 +0000510\end{verbatim}
511
512You can specify absolute directories there; if you know that your
Fred Drakeeff9a872000-10-26 16:41:03 +0000513extension will only be built on \UNIX{} systems with X11R6 installed to
Greg Ward2afffd42000-08-06 20:37:24 +0000514\file{/usr}, you can get away with
Fred Drakea09262e2001-03-01 18:35:43 +0000515
Greg Ward2afffd42000-08-06 20:37:24 +0000516\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000517Extension('foo', ['foo.c'], include_dirs=['/usr/include/X11'])
Greg Ward2afffd42000-08-06 20:37:24 +0000518\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000519
Greg Ward2afffd42000-08-06 20:37:24 +0000520You should avoid this sort of non-portable usage if you plan to
Greg Ward58437f22002-05-10 14:40:22 +0000521distribute your code: it's probably better to write C code like
522\begin{verbatim}
523#include <X11/Xlib.h>
524\end{verbatim}
Greg Ward2afffd42000-08-06 20:37:24 +0000525
526If you need to include header files from some other Python extension,
Greg Ward58437f22002-05-10 14:40:22 +0000527you can take advantage of the fact that header files are installed in a
528consistent way by the Distutils \command{install\_header} command. For
529example, the Numerical Python header files are installed (on a standard
530Unix installation) to \file{/usr/local/include/python1.5/Numerical}.
531(The exact location will differ according to your platform and Python
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000532installation.) Since the Python include
Greg Ward58437f22002-05-10 14:40:22 +0000533directory---\file{/usr/local/include/python1.5} in this case---is always
534included in the search path when building Python extensions, the best
535approach is to write C code like
536\begin{verbatim}
537#include <Numerical/arrayobject.h>
538\end{verbatim}
539If you must put the \file{Numerical} include directory right into your
540header search path, though, you can find that directory using the
Fred Drake630e5bd2004-03-23 18:54:12 +0000541Distutils \refmodule{distutils.sysconfig} module:
Fred Drakea09262e2001-03-01 18:35:43 +0000542
Greg Ward2afffd42000-08-06 20:37:24 +0000543\begin{verbatim}
544from distutils.sysconfig import get_python_inc
Fred Drake630e5bd2004-03-23 18:54:12 +0000545incdir = os.path.join(get_python_inc(plat_specific=1), 'Numerical')
Greg Ward2afffd42000-08-06 20:37:24 +0000546setup(...,
Fred Drake630e5bd2004-03-23 18:54:12 +0000547 Extension(..., include_dirs=[incdir]),
548 )
Greg Ward2afffd42000-08-06 20:37:24 +0000549\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000550
Greg Ward2afffd42000-08-06 20:37:24 +0000551Even though this is quite portable---it will work on any Python
552installation, regardless of platform---it's probably easier to just
553write your C code in the sensible way.
554
555You can define and undefine pre-processor macros with the
556\code{define\_macros} and \code{undef\_macros} options.
557\code{define\_macros} takes a list of \code{(name, value)} tuples, where
558\code{name} is the name of the macro to define (a string) and
559\code{value} is its value: either a string or \code{None}. (Defining a
560macro \code{FOO} to \code{None} is the equivalent of a bare
561\code{\#define FOO} in your C source: with most compilers, this sets
562\code{FOO} to the string \code{1}.) \code{undef\_macros} is just
563a list of macros to undefine.
564
565For example:
Fred Drakea09262e2001-03-01 18:35:43 +0000566
Greg Ward2afffd42000-08-06 20:37:24 +0000567\begin{verbatim}
568Extension(...,
Thomas Heller95a97d52003-10-08 12:01:33 +0000569 define_macros=[('NDEBUG', '1'),
570 ('HAVE_STRFTIME', None)],
Greg Ward2afffd42000-08-06 20:37:24 +0000571 undef_macros=['HAVE_FOO', 'HAVE_BAR'])
572\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000573
Greg Ward2afffd42000-08-06 20:37:24 +0000574is the equivalent of having this at the top of every C source file:
Fred Drakea09262e2001-03-01 18:35:43 +0000575
Greg Ward2afffd42000-08-06 20:37:24 +0000576\begin{verbatim}
577#define NDEBUG 1
578#define HAVE_STRFTIME
579#undef HAVE_FOO
580#undef HAVE_BAR
581\end{verbatim}
582
583
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000584\subsection{Library options}
Greg Ward2afffd42000-08-06 20:37:24 +0000585
586You can also specify the libraries to link against when building your
587extension, and the directories to search for those libraries. The
588\code{libraries} option is a list of libraries to link against,
589\code{library\_dirs} is a list of directories to search for libraries at
590link-time, and \code{runtime\_library\_dirs} is a list of directories to
591search for shared (dynamically loaded) libraries at run-time.
592
593For example, if you need to link against libraries known to be in the
594standard library search path on target systems
Fred Drakea09262e2001-03-01 18:35:43 +0000595
Greg Ward2afffd42000-08-06 20:37:24 +0000596\begin{verbatim}
597Extension(...,
Fred Drake630e5bd2004-03-23 18:54:12 +0000598 libraries=['gdbm', 'readline'])
Greg Ward2afffd42000-08-06 20:37:24 +0000599\end{verbatim}
600
601If you need to link with libraries in a non-standard location, you'll
602have to include the location in \code{library\_dirs}:
Fred Drakea09262e2001-03-01 18:35:43 +0000603
Greg Ward2afffd42000-08-06 20:37:24 +0000604\begin{verbatim}
605Extension(...,
Fred Drake630e5bd2004-03-23 18:54:12 +0000606 library_dirs=['/usr/X11R6/lib'],
607 libraries=['X11', 'Xt'])
Greg Ward2afffd42000-08-06 20:37:24 +0000608\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000609
Greg Ward2afffd42000-08-06 20:37:24 +0000610(Again, this sort of non-portable construct should be avoided if you
611intend to distribute your code.)
612
Thomas Heller5f52f722001-02-19 17:48:03 +0000613\XXX{Should mention clib libraries here or somewhere else!}
614
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000615\subsection{Other options}
Thomas Heller5f52f722001-02-19 17:48:03 +0000616
617There are still some other options which can be used to handle special
618cases.
619
620The \option{extra\_objects} option is a list of object files to be passed
621to the linker. These files must not have extensions, as the default
622extension for the compiler is used.
623
624\option{extra\_compile\_args} and \option{extra\_link\_args} can be used
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000625to specify additional command line options for the respective compiler and
626linker command lines.
Thomas Heller5f52f722001-02-19 17:48:03 +0000627
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000628\option{export\_symbols} is only useful on Windows. It can contain a list
Thomas Heller5f52f722001-02-19 17:48:03 +0000629of symbols (functions or variables) to be exported. This option
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000630is not needed when building compiled extensions: Distutils
631will automatically add \code{initmodule}
632to the list of exported symbols.
Thomas Heller5f52f722001-02-19 17:48:03 +0000633
Fred Drakedb7b0022005-03-20 22:19:47 +0000634\section{Relationships between Distributions and Packages}
635
636A distribution may relate to packages in three specific ways:
637
638\begin{enumerate}
639 \item It can require packages or modules.
640
641 \item It can provide packages or modules.
642
643 \item It can obsolete packages or modules.
644\end{enumerate}
645
646These relationships can be specified using keyword arguments to the
647\function{distutils.core.setup()} function.
648
649Dependencies on other Python modules and packages can be specified by
650supplying the \var{requires} keyword argument to \function{setup()}.
651The value must be a list of strings. Each string specifies a package
652that is required, and optionally what versions are sufficient.
653
654To specify that any version of a module or package is required, the
655string should consist entirely of the module or package name.
656Examples include \code{'mymodule'} and \code{'xml.parsers.expat'}.
657
658If specific versions are required, a sequence of qualifiers can be
659supplied in parentheses. Each qualifier may consist of a comparison
660operator and a version number. The accepted comparison operators are:
661
662\begin{verbatim}
663< > ==
664<= >= !=
665\end{verbatim}
666
667These can be combined by using multiple qualifiers separated by commas
668(and optional whitespace). In this case, all of the qualifiers must
669be matched; a logical AND is used to combine the evaluations.
670
671Let's look at a bunch of examples:
672
673\begin{tableii}{l|l}{code}{Requires Expression}{Explanation}
674 \lineii{==1.0} {Only version \code{1.0} is compatible}
675 \lineii{>1.0, !=1.5.1, <2.0} {Any version after \code{1.0} and before
676 \code{2.0} is compatible, except
677 \code{1.5.1}}
678\end{tableii}
679
680Now that we can specify dependencies, we also need to be able to
681specify what we provide that other distributions can require. This is
682done using the \var{provides} keyword argument to \function{setup()}.
683The value for this keyword is a list of strings, each of which names a
684Python module or package, and optionally identifies the version. If
685the version is not specified, it is assumed to match that of the
686distribution.
687
688Some examples:
689
690\begin{tableii}{l|l}{code}{Provides Expression}{Explanation}
691 \lineii{mypkg} {Provide \code{mypkg}, using the distribution version}
692 \lineii{mypkg (1.1} {Provide \code{mypkg} version 1.1, regardless of the
693 distribution version}
694\end{tableii}
695
696A package can declare that it obsoletes other packages using the
697\var{obsoletes} keyword argument. The value for this is similar to
698that of the \var{requires} keyword: a list of strings giving module or
699package specifiers. Each specifier consists of a module or package
700name optionally followed by one or more version qualifiers. Version
701qualifiers are given in parentheses after the module or package name.
702
703The versions identified by the qualifiers are those that are obsoleted
704by the distribution being described. If no qualifiers are given, all
705versions of the named module or package are understood to be
706obsoleted.
707
708
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000709\section{Installing Scripts}
Fred Drakedb7b0022005-03-20 22:19:47 +0000710
Thomas Heller5f52f722001-02-19 17:48:03 +0000711So far we have been dealing with pure and non-pure Python modules,
712which are usually not run by themselves but imported by scripts.
713
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000714Scripts are files containing Python source code, intended to be
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000715started from the command line. Scripts don't require Distutils to do
716anything very complicated. The only clever feature is that if the
717first line of the script starts with \code{\#!} and contains the word
718``python'', the Distutils will adjust the first line to refer to the
Martin v. Löwis9f5c0c42004-08-25 11:37:43 +0000719current interpreter location. By default, it is replaced with the
Fred Drakee3a1b482004-08-25 14:01:32 +0000720current interpreter location. The \longprogramopt{executable} (or
721\programopt{-e}) option will allow the interpreter path to be
722explicitly overridden.
Thomas Heller5f52f722001-02-19 17:48:03 +0000723
724The \option{scripts} option simply is a list of files to be handled
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000725in this way. From the PyXML setup script:
726
727\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000728setup(...
729 scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val']
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000730 )
731\end{verbatim}
Thomas Heller5f52f722001-02-19 17:48:03 +0000732
733
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000734\section{Installing Package Data}
Fred Drake0eb32a62004-06-11 21:50:33 +0000735
736Often, additional files need to be installed into a package. These
737files are often data that's closely related to the package's
738implementation, or text files containing documentation that might be
739of interest to programmers using the package. These files are called
740\dfn{package data}.
741
742Package data can be added to packages using the \code{package_data}
743keyword argument to the \function{setup()} function. The value must
744be a mapping from package name to a list of relative path names that
745should be copied into the package. The paths are interpreted as
746relative to the directory containing the package (information from the
747\code{package_dir} mapping is used if appropriate); that is, the files
748are expected to be part of the package in the source directories.
749They may contain glob patterns as well.
750
751The path names may contain directory portions; any necessary
752directories will be created in the installation.
753
754For example, if a package should contain a subdirectory with several
755data files, the files can be arranged like this in the source tree:
756
757\begin{verbatim}
758setup.py
759src/
760 mypkg/
761 __init__.py
762 module.py
763 data/
764 tables.dat
765 spoons.dat
766 forks.dat
767\end{verbatim}
768
769The corresponding call to \function{setup()} might be:
770
771\begin{verbatim}
772setup(...,
773 packages=['mypkg'],
774 package_dir={'mypkg': 'src/mypkg'},
Thomas Hellerdd6d2072004-06-18 17:31:23 +0000775 package_data={'mypkg': ['data/*.dat']},
Fred Drake0eb32a62004-06-11 21:50:33 +0000776 )
777\end{verbatim}
778
779
780\versionadded{2.4}
781
782
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000783\section{Installing Additional Files}
Fred Drakea09262e2001-03-01 18:35:43 +0000784
Thomas Heller5f52f722001-02-19 17:48:03 +0000785The \option{data\_files} option can be used to specify additional
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000786files needed by the module distribution: configuration files, message
787catalogs, data files, anything which doesn't fit in the previous
788categories.
Thomas Heller5f52f722001-02-19 17:48:03 +0000789
Fred Drake632bda32002-03-08 22:02:06 +0000790\option{data\_files} specifies a sequence of (\var{directory},
791\var{files}) pairs in the following way:
Fred Drakea09262e2001-03-01 18:35:43 +0000792
Thomas Heller5f52f722001-02-19 17:48:03 +0000793\begin{verbatim}
794setup(...
795 data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']),
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000796 ('config', ['cfg/data.cfg']),
797 ('/etc/init.d', ['init-script'])]
798 )
Thomas Heller5f52f722001-02-19 17:48:03 +0000799\end{verbatim}
800
801Note that you can specify the directory names where the data files
802will be installed, but you cannot rename the data files themselves.
803
Fred Drake632bda32002-03-08 22:02:06 +0000804Each (\var{directory}, \var{files}) pair in the sequence specifies the
805installation directory and the files to install there. If
806\var{directory} is a relative path, it is interpreted relative to the
807installation prefix (Python's \code{sys.prefix} for pure-Python
808packages, \code{sys.exec_prefix} for packages that contain extension
809modules). Each file name in \var{files} is interpreted relative to
810the \file{setup.py} script at the top of the package source
811distribution. No directory information from \var{files} is used to
812determine the final location of the installed file; only the name of
813the file is used.
814
Thomas Heller5f52f722001-02-19 17:48:03 +0000815You can specify the \option{data\_files} options as a simple sequence
816of files without specifying a target directory, but this is not recommended,
817and the \command{install} command will print a warning in this case.
818To install data files directly in the target directory, an empty
819string should be given as the directory.
Greg Ward16aafcd2000-04-09 04:06:44 +0000820
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000821\section{Additional meta-data}
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000822\label{meta-data}
823
824The setup script may include additional meta-data beyond the name and
825version. This information includes:
826
Fred Drakec440af52003-04-25 16:43:28 +0000827\begin{tableiv}{l|l|l|c}{code}%
828 {Meta-Data}{Description}{Value}{Notes}
829 \lineiv{name}{name of the package}
830 {short string}{(1)}
831 \lineiv{version}{version of this release}
832 {short string}{(1)(2)}
833 \lineiv{author}{package author's name}
834 {short string}{(3)}
835 \lineiv{author_email}{email address of the package author}
836 {email address}{(3)}
837 \lineiv{maintainer}{package maintainer's name}
838 {short string}{(3)}
839 \lineiv{maintainer_email}{email address of the package maintainer}
840 {email address}{(3)}
841 \lineiv{url}{home page for the package}
842 {URL}{(1)}
843 \lineiv{description}{short, summary description of the package}
844 {short string}{}
845 \lineiv{long_description}{longer description of the package}
846 {long string}{}
847 \lineiv{download_url}{location where the package may be downloaded}
848 {URL}{(4)}
849 \lineiv{classifiers}{a list of Trove classifiers}
850 {list of strings}{(4)}
851\end{tableiv}
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000852
853\noindent Notes:
854\begin{description}
Fred Drakec440af52003-04-25 16:43:28 +0000855\item[(1)] These fields are required.
856\item[(2)] It is recommended that versions take the form
857 \emph{major.minor\optional{.patch\optional{.sub}}}.
858\item[(3)] Either the author or the maintainer must be identified.
859\item[(4)] These fields should not be used if your package is to be
860 compatible with Python versions prior to 2.2.3 or 2.3. The list is
861 available from the \ulink{PyPI website}{http://www.python.org/pypi}.
862
Fred Drake630e5bd2004-03-23 18:54:12 +0000863\item['short string'] A single line of text, not more than 200 characters.
864\item['long string'] Multiple lines of plain text in reStructuredText
Fred Drakec440af52003-04-25 16:43:28 +0000865 format (see \url{http://docutils.sf.net/}).
Fred Drake630e5bd2004-03-23 18:54:12 +0000866\item['list of strings'] See below.
Fred Drakec440af52003-04-25 16:43:28 +0000867\end{description}
868
869None of the string values may be Unicode.
870
871Encoding the version information is an art in itself. Python packages
872generally adhere to the version format
873\emph{major.minor\optional{.patch}\optional{sub}}. The major number is
8740 for
875initial, experimental releases of software. It is incremented for
876releases that represent major milestones in a package. The minor
877number is incremented when important new features are added to the
878package. The patch number increments when bug-fix releases are
879made. Additional trailing version information is sometimes used to
880indicate sub-releases. These are "a1,a2,...,aN" (for alpha releases,
881where functionality and API may change), "b1,b2,...,bN" (for beta
882releases, which only fix bugs) and "pr1,pr2,...,prN" (for final
883pre-release release testing). Some examples:
884
885\begin{description}
886\item[0.1.0] the first, experimental release of a package
887\item[1.0.1a2] the second alpha release of the first patch version of 1.0
888\end{description}
889
890\option{classifiers} are specified in a python list:
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000891
892\begin{verbatim}
893setup(...
Fred Drake630e5bd2004-03-23 18:54:12 +0000894 classifiers=[
Fred Drake2a046232003-03-31 16:23:09 +0000895 'Development Status :: 4 - Beta',
896 'Environment :: Console',
897 'Environment :: Web Environment',
898 'Intended Audience :: End Users/Desktop',
899 'Intended Audience :: Developers',
900 'Intended Audience :: System Administrators',
901 'License :: OSI Approved :: Python Software Foundation License',
902 'Operating System :: MacOS :: MacOS X',
903 'Operating System :: Microsoft :: Windows',
904 'Operating System :: POSIX',
905 'Programming Language :: Python',
906 'Topic :: Communications :: Email',
907 'Topic :: Office/Business',
908 'Topic :: Software Development :: Bug Tracking',
909 ],
Fred Drake2a046232003-03-31 16:23:09 +0000910 )
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000911\end{verbatim}
912
Fred Drakec440af52003-04-25 16:43:28 +0000913If you wish to include classifiers in your \file{setup.py} file and also
914wish to remain backwards-compatible with Python releases prior to 2.2.3,
915then you can include the following code fragment in your \file{setup.py}
Fred Drake630e5bd2004-03-23 18:54:12 +0000916before the \function{setup()} call.
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000917
918\begin{verbatim}
Fred Drakec440af52003-04-25 16:43:28 +0000919# patch distutils if it can't cope with the "classifiers" or
920# "download_url" keywords
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000921if sys.version < '2.2.3':
922 from distutils.dist import DistributionMetadata
923 DistributionMetadata.classifiers = None
Fred Drake2a046232003-03-31 16:23:09 +0000924 DistributionMetadata.download_url = None
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000925\end{verbatim}
926
Greg Ward16aafcd2000-04-09 04:06:44 +0000927
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000928\section{Debugging the setup script}
Thomas Heller675580f2003-06-30 19:33:29 +0000929
930Sometimes things go wrong, and the setup script doesn't do what the
931developer wants.
932
933Distutils catches any exceptions when running the setup script, and
934print a simple error message before the script is terminated. The
935motivation for this behaviour is to not confuse administrators who
936don't know much about Python and are trying to install a package. If
937they get a big long traceback from deep inside the guts of Distutils,
938they may think the package or the Python installation is broken
939because they don't read all the way down to the bottom and see that
940it's a permission problem.
941
942On the other hand, this doesn't help the developer to find the cause
943of the failure. For this purpose, the DISTUTILS_DEBUG environment
944variable can be set to anything except an empty string, and distutils
945will now print detailed information what it is doing, and prints the
Martin v. Löwis95cf84a2003-10-19 07:32:24 +0000946full traceback in case an exception occurs.
Thomas Heller675580f2003-06-30 19:33:29 +0000947
Fred Drake211a2eb2004-03-22 21:44:43 +0000948\chapter{Writing the Setup Configuration File}
Greg Warde78298a2000-04-28 17:12:24 +0000949\label{setup-config}
Greg Ward16aafcd2000-04-09 04:06:44 +0000950
Greg Ward16aafcd2000-04-09 04:06:44 +0000951Often, it's not possible to write down everything needed to build a
Greg Ward47f99a62000-09-04 20:07:15 +0000952distribution \emph{a priori}: you may need to get some information from
953the user, or from the user's system, in order to proceed. As long as
954that information is fairly simple---a list of directories to search for
955C header files or libraries, for example---then providing a
956configuration file, \file{setup.cfg}, for users to edit is a cheap and
957easy way to solicit it. Configuration files also let you provide
958default values for any command option, which the installer can then
959override either on the command-line or by editing the config file.
Greg Ward16aafcd2000-04-09 04:06:44 +0000960
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000961% (If you have more advanced needs, such as determining which extensions
962% to build based on what capabilities are present on the target system,
963% then you need the Distutils ``auto-configuration'' facility. This
964% started to appear in Distutils 0.9 but, as of this writing, isn't mature
965% or stable enough yet for real-world use.)
Greg Ward16aafcd2000-04-09 04:06:44 +0000966
Greg Ward47f99a62000-09-04 20:07:15 +0000967The setup configuration file is a useful middle-ground between the setup
968script---which, ideally, would be opaque to installers\footnote{This
969 ideal probably won't be achieved until auto-configuration is fully
970 supported by the Distutils.}---and the command-line to the setup
971script, which is outside of your control and entirely up to the
972installer. In fact, \file{setup.cfg} (and any other Distutils
973configuration files present on the target system) are processed after
974the contents of the setup script, but before the command-line. This has
975several useful consequences:
976\begin{itemize}
977\item installers can override some of what you put in \file{setup.py} by
978 editing \file{setup.cfg}
979\item you can provide non-standard defaults for options that are not
980 easily set in \file{setup.py}
981\item installers can override anything in \file{setup.cfg} using the
982 command-line options to \file{setup.py}
983\end{itemize}
984
985The basic syntax of the configuration file is simple:
Fred Drakea09262e2001-03-01 18:35:43 +0000986
Greg Ward47f99a62000-09-04 20:07:15 +0000987\begin{verbatim}
988[command]
989option=value
990...
991\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000992
Greg Ward47f99a62000-09-04 20:07:15 +0000993where \var{command} is one of the Distutils commands (e.g.
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000994\command{build\_py}, \command{install}), and \var{option} is one of
995the options that command supports. Any number of options can be
996supplied for each command, and any number of command sections can be
997included in the file. Blank lines are ignored, as are comments, which
998run from a \character{\#} character until the end of the line. Long
999option values can be split across multiple lines simply by indenting
1000the continuation lines.
Greg Ward47f99a62000-09-04 20:07:15 +00001001
1002You can find out the list of options supported by a particular command
1003with the universal \longprogramopt{help} option, e.g.
Fred Drakea09262e2001-03-01 18:35:43 +00001004
Greg Ward47f99a62000-09-04 20:07:15 +00001005\begin{verbatim}
1006> python setup.py --help build_ext
1007[...]
1008Options for 'build_ext' command:
1009 --build-lib (-b) directory for compiled extension modules
1010 --build-temp (-t) directory for temporary files (build by-products)
1011 --inplace (-i) ignore build-lib and put compiled extensions into the
1012 source directory alongside your pure Python modules
1013 --include-dirs (-I) list of directories to search for header files
1014 --define (-D) C preprocessor macros to define
1015 --undef (-U) C preprocessor macros to undefine
1016[...]
1017\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001018
Greg Ward47f99a62000-09-04 20:07:15 +00001019Note that an option spelled \longprogramopt{foo-bar} on the command-line
1020is spelled \option{foo\_bar} in configuration files.
1021
1022For example, say you want your extensions to be built
1023``in-place''---that is, you have an extension \module{pkg.ext}, and you
Fred Drakeeff9a872000-10-26 16:41:03 +00001024want the compiled extension file (\file{ext.so} on \UNIX, say) to be put
Greg Ward47f99a62000-09-04 20:07:15 +00001025in the same source directory as your pure Python modules
1026\module{pkg.mod1} and \module{pkg.mod2}. You can always use the
1027\longprogramopt{inplace} option on the command-line to ensure this:
Fred Drakea09262e2001-03-01 18:35:43 +00001028
Greg Ward47f99a62000-09-04 20:07:15 +00001029\begin{verbatim}
1030python setup.py build_ext --inplace
1031\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001032
Greg Ward47f99a62000-09-04 20:07:15 +00001033But this requires that you always specify the \command{build\_ext}
1034command explicitly, and remember to provide \longprogramopt{inplace}.
1035An easier way is to ``set and forget'' this option, by encoding it in
1036\file{setup.cfg}, the configuration file for this distribution:
Fred Drakea09262e2001-03-01 18:35:43 +00001037
Greg Ward47f99a62000-09-04 20:07:15 +00001038\begin{verbatim}
1039[build_ext]
1040inplace=1
1041\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001042
Greg Ward47f99a62000-09-04 20:07:15 +00001043This will affect all builds of this module distribution, whether or not
Raymond Hettinger68804312005-01-01 00:28:46 +00001044you explicitly specify \command{build\_ext}. If you include
Greg Ward47f99a62000-09-04 20:07:15 +00001045\file{setup.cfg} in your source distribution, it will also affect
1046end-user builds---which is probably a bad idea for this option, since
1047always building extensions in-place would break installation of the
1048module distribution. In certain peculiar cases, though, modules are
1049built right in their installation directory, so this is conceivably a
1050useful ability. (Distributing extensions that expect to be built in
1051their installation directory is almost always a bad idea, though.)
1052
1053Another example: certain commands take a lot of options that don't
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001054change from run to run; for example, \command{bdist\_rpm} needs to know
Greg Ward47f99a62000-09-04 20:07:15 +00001055everything required to generate a ``spec'' file for creating an RPM
1056distribution. Some of this information comes from the setup script, and
1057some is automatically generated by the Distutils (such as the list of
1058files installed). But some of it has to be supplied as options to
1059\command{bdist\_rpm}, which would be very tedious to do on the
1060command-line for every run. Hence, here is a snippet from the
1061Distutils' own \file{setup.cfg}:
Fred Drakea09262e2001-03-01 18:35:43 +00001062
Greg Ward47f99a62000-09-04 20:07:15 +00001063\begin{verbatim}
1064[bdist_rpm]
1065release = 1
1066packager = Greg Ward <gward@python.net>
1067doc_files = CHANGES.txt
1068 README.txt
1069 USAGE.txt
1070 doc/
1071 examples/
1072\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001073
Greg Ward47f99a62000-09-04 20:07:15 +00001074Note that the \option{doc\_files} option is simply a
1075whitespace-separated string split across multiple lines for readability.
Greg Ward16aafcd2000-04-09 04:06:44 +00001076
1077
Fred Drakea09262e2001-03-01 18:35:43 +00001078\begin{seealso}
1079 \seetitle[../inst/config-syntax.html]{Installing Python
1080 Modules}{More information on the configuration files is
1081 available in the manual for system administrators.}
1082\end{seealso}
1083
1084
Fred Drake211a2eb2004-03-22 21:44:43 +00001085\chapter{Creating a Source Distribution}
Greg Warde78298a2000-04-28 17:12:24 +00001086\label{source-dist}
Greg Ward16aafcd2000-04-09 04:06:44 +00001087
Greg Warde78298a2000-04-28 17:12:24 +00001088As shown in section~\ref{simple-example}, you use the
Greg Ward16aafcd2000-04-09 04:06:44 +00001089\command{sdist} command to create a source distribution. In the
1090simplest case,
Fred Drakea09262e2001-03-01 18:35:43 +00001091
Greg Ward16aafcd2000-04-09 04:06:44 +00001092\begin{verbatim}
1093python setup.py sdist
1094\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001095
Greg Ward19c67f82000-06-24 01:33:16 +00001096(assuming you haven't specified any \command{sdist} options in the setup
1097script or config file), \command{sdist} creates the archive of the
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001098default format for the current platform. The default format is a gzip'ed
Fred Drakeeff9a872000-10-26 16:41:03 +00001099tar file (\file{.tar.gz}) on \UNIX, and ZIP file on Windows.
Greg Ward54589d42000-09-06 01:37:35 +00001100
Greg Wardd5767a52000-04-19 22:48:09 +00001101You can specify as many formats as you like using the
1102\longprogramopt{formats} option, for example:
Fred Drakea09262e2001-03-01 18:35:43 +00001103
Greg Ward16aafcd2000-04-09 04:06:44 +00001104\begin{verbatim}
1105python setup.py sdist --formats=gztar,zip
1106\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001107
Greg Ward16aafcd2000-04-09 04:06:44 +00001108to create a gzipped tarball and a zip file. The available formats are:
Fred Drake781380c2004-02-19 23:17:46 +00001109
Greg Ward46b98e32000-04-14 01:53:36 +00001110\begin{tableiii}{l|l|c}{code}%
1111 {Format}{Description}{Notes}
Greg Ward54589d42000-09-06 01:37:35 +00001112 \lineiii{zip}{zip file (\file{.zip})}{(1),(3)}
1113 \lineiii{gztar}{gzip'ed tar file (\file{.tar.gz})}{(2),(4)}
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001114 \lineiii{bztar}{bzip2'ed tar file (\file{.tar.bz2})}{(4)}
Greg Ward47f99a62000-09-04 20:07:15 +00001115 \lineiii{ztar}{compressed tar file (\file{.tar.Z})}{(4)}
Greg Ward54589d42000-09-06 01:37:35 +00001116 \lineiii{tar}{tar file (\file{.tar})}{(4)}
Greg Ward46b98e32000-04-14 01:53:36 +00001117\end{tableiii}
1118
1119\noindent Notes:
1120\begin{description}
1121\item[(1)] default on Windows
Fred Drakeeff9a872000-10-26 16:41:03 +00001122\item[(2)] default on \UNIX
Greg Wardb6528972000-09-07 02:40:37 +00001123\item[(3)] requires either external \program{zip} utility or
Greg Ward954ce8b2002-05-10 14:42:10 +00001124 \module{zipfile} module (part of the standard Python library since
1125 Python~1.6)
Greg Ward47f99a62000-09-04 20:07:15 +00001126\item[(4)] requires external utilities: \program{tar} and possibly one
1127 of \program{gzip}, \program{bzip2}, or \program{compress}
Greg Ward46b98e32000-04-14 01:53:36 +00001128\end{description}
Greg Ward16aafcd2000-04-09 04:06:44 +00001129
1130
Greg Ward54589d42000-09-06 01:37:35 +00001131
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001132\section{Specifying the files to distribute}
Greg Warde78298a2000-04-28 17:12:24 +00001133\label{manifest}
Greg Ward16aafcd2000-04-09 04:06:44 +00001134
Greg Ward54589d42000-09-06 01:37:35 +00001135If you don't supply an explicit list of files (or instructions on how to
1136generate one), the \command{sdist} command puts a minimal default set
1137into the source distribution:
Greg Ward16aafcd2000-04-09 04:06:44 +00001138\begin{itemize}
Greg Wardfacb8db2000-04-09 04:32:40 +00001139\item all Python source files implied by the \option{py\_modules} and
Greg Ward16aafcd2000-04-09 04:06:44 +00001140 \option{packages} options
Greg Wardfacb8db2000-04-09 04:32:40 +00001141\item all C source files mentioned in the \option{ext\_modules} or
Greg Ward16aafcd2000-04-09 04:06:44 +00001142 \option{libraries} options (\XXX{getting C library sources currently
Fred Drake781380c2004-02-19 23:17:46 +00001143 broken---no \method{get_source_files()} method in \file{build_clib.py}!})
Fred Drake203b10c2004-03-31 01:50:37 +00001144\item scripts identified by the \option{scripts} option
Greg Ward16aafcd2000-04-09 04:06:44 +00001145\item anything that looks like a test script: \file{test/test*.py}
1146 (currently, the Distutils don't do anything with test scripts except
1147 include them in source distributions, but in the future there will be
1148 a standard for testing Python module distributions)
Greg Ward54589d42000-09-06 01:37:35 +00001149\item \file{README.txt} (or \file{README}), \file{setup.py} (or whatever
1150 you called your setup script), and \file{setup.cfg}
Greg Ward16aafcd2000-04-09 04:06:44 +00001151\end{itemize}
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001152
Greg Ward16aafcd2000-04-09 04:06:44 +00001153Sometimes this is enough, but usually you will want to specify
1154additional files to distribute. The typical way to do this is to write
1155a \emph{manifest template}, called \file{MANIFEST.in} by default. The
Greg Ward54589d42000-09-06 01:37:35 +00001156manifest template is just a list of instructions for how to generate
1157your manifest file, \file{MANIFEST}, which is the exact list of files to
1158include in your source distribution. The \command{sdist} command
1159processes this template and generates a manifest based on its
1160instructions and what it finds in the filesystem.
1161
1162If you prefer to roll your own manifest file, the format is simple: one
1163filename per line, regular files (or symlinks to them) only. If you do
1164supply your own \file{MANIFEST}, you must specify everything: the
1165default set of files described above does not apply in this case.
Greg Ward16aafcd2000-04-09 04:06:44 +00001166
1167The manifest template has one command per line, where each command
1168specifies a set of files to include or exclude from the source
1169distribution. For an example, again we turn to the Distutils' own
1170manifest template:
Fred Drakea09262e2001-03-01 18:35:43 +00001171
Greg Ward16aafcd2000-04-09 04:06:44 +00001172\begin{verbatim}
1173include *.txt
Greg Ward87da1ea2000-04-21 04:35:25 +00001174recursive-include examples *.txt *.py
Greg Ward16aafcd2000-04-09 04:06:44 +00001175prune examples/sample?/build
1176\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001177
Greg Ward16aafcd2000-04-09 04:06:44 +00001178The meanings should be fairly clear: include all files in the
Fred Drake630e5bd2004-03-23 18:54:12 +00001179distribution root matching \file{*.txt}, all files anywhere under the
1180\file{examples} directory matching \file{*.txt} or \file{*.py}, and
1181exclude all directories matching \file{examples/sample?/build}. All of
Greg Ward54589d42000-09-06 01:37:35 +00001182this is done \emph{after} the standard include set, so you can exclude
1183files from the standard set with explicit instructions in the manifest
1184template. (Or, you can use the \longprogramopt{no-defaults} option to
1185disable the standard set entirely.) There are several other commands
1186available in the manifest template mini-language; see
1187section~\ref{sdist-cmd}.
Greg Ward16aafcd2000-04-09 04:06:44 +00001188
Greg Ward54589d42000-09-06 01:37:35 +00001189The order of commands in the manifest template matters: initially, we
1190have the list of default files as described above, and each command in
1191the template adds to or removes from that list of files. Once we have
1192fully processed the manifest template, we remove files that should not
1193be included in the source distribution:
1194\begin{itemize}
1195\item all files in the Distutils ``build'' tree (default \file{build/})
Tim Peters2f50e902004-05-31 19:27:59 +00001196\item all files in directories named \file{RCS}, \file{CVS} or \file{.svn}
Greg Ward54589d42000-09-06 01:37:35 +00001197\end{itemize}
1198Now we have our complete list of files, which is written to the manifest
1199for future reference, and then used to build the source distribution
1200archive(s).
1201
1202You can disable the default set of included files with the
1203\longprogramopt{no-defaults} option, and you can disable the standard
1204exclude set with \longprogramopt{no-prune}.
Greg Ward16aafcd2000-04-09 04:06:44 +00001205
Greg Ward46b98e32000-04-14 01:53:36 +00001206Following the Distutils' own manifest template, let's trace how the
Greg Ward47f99a62000-09-04 20:07:15 +00001207\command{sdist} command builds the list of files to include in the
Greg Ward46b98e32000-04-14 01:53:36 +00001208Distutils source distribution:
Greg Ward16aafcd2000-04-09 04:06:44 +00001209\begin{enumerate}
1210\item include all Python source files in the \file{distutils} and
1211 \file{distutils/command} subdirectories (because packages
1212 corresponding to those two directories were mentioned in the
Greg Ward54589d42000-09-06 01:37:35 +00001213 \option{packages} option in the setup script---see
1214 section~\ref{setup-script})
1215\item include \file{README.txt}, \file{setup.py}, and \file{setup.cfg}
1216 (standard files)
1217\item include \file{test/test*.py} (standard files)
Greg Ward16aafcd2000-04-09 04:06:44 +00001218\item include \file{*.txt} in the distribution root (this will find
1219 \file{README.txt} a second time, but such redundancies are weeded out
1220 later)
Greg Ward54589d42000-09-06 01:37:35 +00001221\item include anything matching \file{*.txt} or \file{*.py} in the
1222 sub-tree under \file{examples},
1223\item exclude all files in the sub-trees starting at directories
1224 matching \file{examples/sample?/build}---this may exclude files
1225 included by the previous two steps, so it's important that the
1226 \code{prune} command in the manifest template comes after the
1227 \code{recursive-include} command
Tim Peters2f50e902004-05-31 19:27:59 +00001228\item exclude the entire \file{build} tree, and any \file{RCS},
1229 \file{CVS} and \file{.svn} directories
Greg Wardfacb8db2000-04-09 04:32:40 +00001230\end{enumerate}
Greg Ward46b98e32000-04-14 01:53:36 +00001231Just like in the setup script, file and directory names in the manifest
1232template should always be slash-separated; the Distutils will take care
1233of converting them to the standard representation on your platform.
1234That way, the manifest template is portable across operating systems.
1235
Greg Ward16aafcd2000-04-09 04:06:44 +00001236
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001237\section{Manifest-related options}
Greg Warde78298a2000-04-28 17:12:24 +00001238\label{manifest-options}
Greg Ward16aafcd2000-04-09 04:06:44 +00001239
1240The normal course of operations for the \command{sdist} command is as
1241follows:
1242\begin{itemize}
Greg Ward46b98e32000-04-14 01:53:36 +00001243\item if the manifest file, \file{MANIFEST} doesn't exist, read
1244 \file{MANIFEST.in} and create the manifest
Greg Ward54589d42000-09-06 01:37:35 +00001245\item if neither \file{MANIFEST} nor \file{MANIFEST.in} exist, create a
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001246 manifest with just the default file set
Greg Ward1d8f57a2000-08-05 00:43:11 +00001247\item if either \file{MANIFEST.in} or the setup script (\file{setup.py})
1248 are more recent than \file{MANIFEST}, recreate \file{MANIFEST} by
1249 reading \file{MANIFEST.in}
Greg Ward16aafcd2000-04-09 04:06:44 +00001250\item use the list of files now in \file{MANIFEST} (either just
1251 generated or read in) to create the source distribution archive(s)
1252\end{itemize}
Greg Ward54589d42000-09-06 01:37:35 +00001253There are a couple of options that modify this behaviour. First, use
1254the \longprogramopt{no-defaults} and \longprogramopt{no-prune} to
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001255disable the standard ``include'' and ``exclude'' sets.
Greg Ward16aafcd2000-04-09 04:06:44 +00001256
Greg Ward54589d42000-09-06 01:37:35 +00001257Second, you might want to force the manifest to be regenerated---for
Greg Ward16aafcd2000-04-09 04:06:44 +00001258example, if you have added or removed files or directories that match an
1259existing pattern in the manifest template, you should regenerate the
1260manifest:
Fred Drakea09262e2001-03-01 18:35:43 +00001261
Greg Ward16aafcd2000-04-09 04:06:44 +00001262\begin{verbatim}
1263python setup.py sdist --force-manifest
1264\end{verbatim}
Greg Ward16aafcd2000-04-09 04:06:44 +00001265
1266Or, you might just want to (re)generate the manifest, but not create a
1267source distribution:
Fred Drakea09262e2001-03-01 18:35:43 +00001268
Greg Ward16aafcd2000-04-09 04:06:44 +00001269\begin{verbatim}
1270python setup.py sdist --manifest-only
1271\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001272
Greg Ward54589d42000-09-06 01:37:35 +00001273\longprogramopt{manifest-only} implies \longprogramopt{force-manifest}.
1274\programopt{-o} is a shortcut for \longprogramopt{manifest-only}, and
1275\programopt{-f} for \longprogramopt{force-manifest}.
Greg Ward16aafcd2000-04-09 04:06:44 +00001276
1277
Fred Drake211a2eb2004-03-22 21:44:43 +00001278\chapter{Creating Built Distributions}
Greg Warde78298a2000-04-28 17:12:24 +00001279\label{built-dist}
Greg Ward16aafcd2000-04-09 04:06:44 +00001280
Greg Ward46b98e32000-04-14 01:53:36 +00001281A ``built distribution'' is what you're probably used to thinking of
1282either as a ``binary package'' or an ``installer'' (depending on your
1283background). It's not necessarily binary, though, because it might
1284contain only Python source code and/or byte-code; and we don't call it a
1285package, because that word is already spoken for in Python. (And
Fred Drake2a1bc502004-02-19 23:03:29 +00001286``installer'' is a term specific to the world of mainstream desktop
1287systems.)
Greg Ward16aafcd2000-04-09 04:06:44 +00001288
Greg Ward46b98e32000-04-14 01:53:36 +00001289A built distribution is how you make life as easy as possible for
1290installers of your module distribution: for users of RPM-based Linux
1291systems, it's a binary RPM; for Windows users, it's an executable
1292installer; for Debian-based Linux users, it's a Debian package; and so
1293forth. Obviously, no one person will be able to create built
Greg Wardb6528972000-09-07 02:40:37 +00001294distributions for every platform under the sun, so the Distutils are
Greg Ward46b98e32000-04-14 01:53:36 +00001295designed to enable module developers to concentrate on their
1296specialty---writing code and creating source distributions---while an
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001297intermediary species called \emph{packagers} springs up to turn source
Greg Ward19c67f82000-06-24 01:33:16 +00001298distributions into built distributions for as many platforms as there
Greg Ward46b98e32000-04-14 01:53:36 +00001299are packagers.
1300
1301Of course, the module developer could be his own packager; or the
1302packager could be a volunteer ``out there'' somewhere who has access to
1303a platform which the original developer does not; or it could be
1304software periodically grabbing new source distributions and turning them
1305into built distributions for as many platforms as the software has
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001306access to. Regardless of who they are, a packager uses the
Greg Ward46b98e32000-04-14 01:53:36 +00001307setup script and the \command{bdist} command family to generate built
1308distributions.
1309
1310As a simple example, if I run the following command in the Distutils
1311source tree:
Fred Drakea09262e2001-03-01 18:35:43 +00001312
Greg Ward46b98e32000-04-14 01:53:36 +00001313\begin{verbatim}
1314python setup.py bdist
1315\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001316
Greg Ward46b98e32000-04-14 01:53:36 +00001317then the Distutils builds my module distribution (the Distutils itself
1318in this case), does a ``fake'' installation (also in the \file{build}
1319directory), and creates the default type of built distribution for my
Greg Wardb6528972000-09-07 02:40:37 +00001320platform. The default format for built distributions is a ``dumb'' tar
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001321file on \UNIX, and a simple executable installer on Windows. (That tar
Greg Wardb6528972000-09-07 02:40:37 +00001322file is considered ``dumb'' because it has to be unpacked in a specific
1323location to work.)
Greg Ward1d8f57a2000-08-05 00:43:11 +00001324
Fred Drakeeff9a872000-10-26 16:41:03 +00001325Thus, the above command on a \UNIX{} system creates
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001326\file{Distutils-1.0.\filevar{plat}.tar.gz}; unpacking this tarball
Greg Wardb6528972000-09-07 02:40:37 +00001327from the right place installs the Distutils just as though you had
1328downloaded the source distribution and run \code{python setup.py
1329 install}. (The ``right place'' is either the root of the filesystem or
1330Python's \filevar{prefix} directory, depending on the options given to
1331the \command{bdist\_dumb} command; the default is to make dumb
1332distributions relative to \filevar{prefix}.)
Greg Ward46b98e32000-04-14 01:53:36 +00001333
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001334Obviously, for pure Python distributions, this isn't any simpler than
1335just running \code{python setup.py install}---but for non-pure
1336distributions, which include extensions that would need to be
1337compiled, it can mean the difference between someone being able to use
1338your extensions or not. And creating ``smart'' built distributions,
1339such as an RPM package or an executable installer for Windows, is far
1340more convenient for users even if your distribution doesn't include
1341any extensions.
Greg Ward46b98e32000-04-14 01:53:36 +00001342
Greg Wardb6528972000-09-07 02:40:37 +00001343The \command{bdist} command has a \longprogramopt{formats} option,
Greg Ward1d8f57a2000-08-05 00:43:11 +00001344similar to the \command{sdist} command, which you can use to select the
1345types of built distribution to generate: for example,
Fred Drakea09262e2001-03-01 18:35:43 +00001346
Greg Ward46b98e32000-04-14 01:53:36 +00001347\begin{verbatim}
1348python setup.py bdist --format=zip
1349\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001350
Fred Drakeeff9a872000-10-26 16:41:03 +00001351would, when run on a \UNIX{} system, create
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001352\file{Distutils-1.0.\filevar{plat}.zip}---again, this archive would be
Greg Ward1d8f57a2000-08-05 00:43:11 +00001353unpacked from the root directory to install the Distutils.
Greg Ward46b98e32000-04-14 01:53:36 +00001354
1355The available formats for built distributions are:
Fred Drake781380c2004-02-19 23:17:46 +00001356
Greg Ward46b98e32000-04-14 01:53:36 +00001357\begin{tableiii}{l|l|c}{code}%
1358 {Format}{Description}{Notes}
Greg Wardb6528972000-09-07 02:40:37 +00001359 \lineiii{gztar}{gzipped tar file (\file{.tar.gz})}{(1),(3)}
1360 \lineiii{ztar}{compressed tar file (\file{.tar.Z})}{(3)}
1361 \lineiii{tar}{tar file (\file{.tar})}{(3)}
1362 \lineiii{zip}{zip file (\file{.zip})}{(4)}
1363 \lineiii{rpm}{RPM}{(5)}
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001364 \lineiii{pkgtool}{Solaris \program{pkgtool}}{}
1365 \lineiii{sdux}{HP-UX \program{swinstall}}{}
1366 \lineiii{rpm}{RPM}{(5)}
1367% \lineiii{srpm}{source RPM}{(5) \XXX{to do!}}
Thomas Heller5f52f722001-02-19 17:48:03 +00001368 \lineiii{wininst}{self-extracting ZIP file for Windows}{(2),(4)}
Greg Ward46b98e32000-04-14 01:53:36 +00001369\end{tableiii}
1370
1371\noindent Notes:
1372\begin{description}
Fred Drakeeff9a872000-10-26 16:41:03 +00001373\item[(1)] default on \UNIX
Greg Ward1d8f57a2000-08-05 00:43:11 +00001374\item[(2)] default on Windows \XXX{to-do!}
Greg Wardb6528972000-09-07 02:40:37 +00001375\item[(3)] requires external utilities: \program{tar} and possibly one
1376 of \program{gzip}, \program{bzip2}, or \program{compress}
1377\item[(4)] requires either external \program{zip} utility or
Greg Ward954ce8b2002-05-10 14:42:10 +00001378 \module{zipfile} module (part of the standard Python library since
1379 Python~1.6)
Greg Wardb6528972000-09-07 02:40:37 +00001380\item[(5)] requires external \program{rpm} utility, version 3.0.4 or
1381 better (use \code{rpm --version} to find out which version you have)
Greg Ward46b98e32000-04-14 01:53:36 +00001382\end{description}
1383
1384You don't have to use the \command{bdist} command with the
Greg Wardd5767a52000-04-19 22:48:09 +00001385\longprogramopt{formats} option; you can also use the command that
Greg Ward1d8f57a2000-08-05 00:43:11 +00001386directly implements the format you're interested in. Some of these
Greg Ward46b98e32000-04-14 01:53:36 +00001387\command{bdist} ``sub-commands'' actually generate several similar
1388formats; for instance, the \command{bdist\_dumb} command generates all
1389the ``dumb'' archive formats (\code{tar}, \code{ztar}, \code{gztar}, and
1390\code{zip}), and \command{bdist\_rpm} generates both binary and source
1391RPMs. The \command{bdist} sub-commands, and the formats generated by
1392each, are:
Fred Drake781380c2004-02-19 23:17:46 +00001393
Greg Ward46b98e32000-04-14 01:53:36 +00001394\begin{tableii}{l|l}{command}%
1395 {Command}{Formats}
1396 \lineii{bdist\_dumb}{tar, ztar, gztar, zip}
1397 \lineii{bdist\_rpm}{rpm, srpm}
Greg Ward1d8f57a2000-08-05 00:43:11 +00001398 \lineii{bdist\_wininst}{wininst}
Greg Ward46b98e32000-04-14 01:53:36 +00001399\end{tableii}
Greg Ward16aafcd2000-04-09 04:06:44 +00001400
Greg Wardb6528972000-09-07 02:40:37 +00001401The following sections give details on the individual \command{bdist\_*}
1402commands.
1403
1404
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001405\section{Creating dumb built distributions}
Greg Wardb6528972000-09-07 02:40:37 +00001406\label{creating-dumb}
1407
1408\XXX{Need to document absolute vs. prefix-relative packages here, but
1409 first I have to implement it!}
1410
1411
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001412\section{Creating RPM packages}
Greg Wardb6528972000-09-07 02:40:37 +00001413\label{creating-rpms}
1414
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001415The RPM format is used by many popular Linux distributions, including
Greg Wardb6528972000-09-07 02:40:37 +00001416Red Hat, SuSE, and Mandrake. If one of these (or any of the other
1417RPM-based Linux distributions) is your usual environment, creating RPM
1418packages for other users of that same distribution is trivial.
1419Depending on the complexity of your module distribution and differences
1420between Linux distributions, you may also be able to create RPMs that
1421work on different RPM-based distributions.
1422
1423The usual way to create an RPM of your module distribution is to run the
1424\command{bdist\_rpm} command:
Fred Drakea09262e2001-03-01 18:35:43 +00001425
Greg Wardb6528972000-09-07 02:40:37 +00001426\begin{verbatim}
1427python setup.py bdist_rpm
1428\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001429
Greg Wardb6528972000-09-07 02:40:37 +00001430or the \command{bdist} command with the \longprogramopt{format} option:
Fred Drakea09262e2001-03-01 18:35:43 +00001431
Greg Wardb6528972000-09-07 02:40:37 +00001432\begin{verbatim}
1433python setup.py bdist --formats=rpm
1434\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001435
Greg Wardb6528972000-09-07 02:40:37 +00001436The former allows you to specify RPM-specific options; the latter allows
1437you to easily specify multiple formats in one run. If you need to do
1438both, you can explicitly specify multiple \command{bdist\_*} commands
1439and their options:
Fred Drakea09262e2001-03-01 18:35:43 +00001440
Greg Wardb6528972000-09-07 02:40:37 +00001441\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +00001442python setup.py bdist_rpm --packager="John Doe <jdoe@example.org>" \
Greg Wardb6528972000-09-07 02:40:37 +00001443 bdist_wininst --target_version="2.0"
1444\end{verbatim}
1445
1446Creating RPM packages is driven by a \file{.spec} file, much as using
1447the Distutils is driven by the setup script. To make your life easier,
1448the \command{bdist\_rpm} command normally creates a \file{.spec} file
1449based on the information you supply in the setup script, on the command
1450line, and in any Distutils configuration files. Various options and
Andrew M. Kuchlingda23c4f2001-02-17 00:38:48 +00001451sections in the \file{.spec} file are derived from options in the setup
Greg Wardb6528972000-09-07 02:40:37 +00001452script as follows:
Fred Drake781380c2004-02-19 23:17:46 +00001453
Greg Wardb6528972000-09-07 02:40:37 +00001454\begin{tableii}{l|l}{textrm}%
1455 {RPM \file{.spec} file option or section}{Distutils setup script option}
1456 \lineii{Name}{\option{name}}
1457 \lineii{Summary (in preamble)}{\option{description}}
1458 \lineii{Version}{\option{version}}
1459 \lineii{Vendor}{\option{author} and \option{author\_email}, or \\&
1460 \option{maintainer} and \option{maintainer\_email}}
1461 \lineii{Copyright}{\option{licence}}
1462 \lineii{Url}{\option{url}}
1463 \lineii{\%description (section)}{\option{long\_description}}
1464\end{tableii}
1465
1466Additionally, there many options in \file{.spec} files that don't have
1467corresponding options in the setup script. Most of these are handled
1468through options to the \command{bdist\_rpm} command as follows:
Fred Drake781380c2004-02-19 23:17:46 +00001469
Greg Wardb6528972000-09-07 02:40:37 +00001470\begin{tableiii}{l|l|l}{textrm}%
1471 {RPM \file{.spec} file option or section}%
1472 {\command{bdist\_rpm} option}%
1473 {default value}
1474 \lineiii{Release}{\option{release}}{``1''}
1475 \lineiii{Group}{\option{group}}{``Development/Libraries''}
1476 \lineiii{Vendor}{\option{vendor}}{(see above)}
Andrew M. Kuchlingda23c4f2001-02-17 00:38:48 +00001477 \lineiii{Packager}{\option{packager}}{(none)}
1478 \lineiii{Provides}{\option{provides}}{(none)}
1479 \lineiii{Requires}{\option{requires}}{(none)}
1480 \lineiii{Conflicts}{\option{conflicts}}{(none)}
1481 \lineiii{Obsoletes}{\option{obsoletes}}{(none)}
Greg Wardb6528972000-09-07 02:40:37 +00001482 \lineiii{Distribution}{\option{distribution\_name}}{(none)}
1483 \lineiii{BuildRequires}{\option{build\_requires}}{(none)}
1484 \lineiii{Icon}{\option{icon}}{(none)}
1485\end{tableiii}
Fred Drake781380c2004-02-19 23:17:46 +00001486
Greg Wardb6528972000-09-07 02:40:37 +00001487Obviously, supplying even a few of these options on the command-line
1488would be tedious and error-prone, so it's usually best to put them in
1489the setup configuration file, \file{setup.cfg}---see
1490section~\ref{setup-config}. If you distribute or package many Python
1491module distributions, you might want to put options that apply to all of
1492them in your personal Distutils configuration file
1493(\file{\textasciitilde/.pydistutils.cfg}).
1494
1495There are three steps to building a binary RPM package, all of which are
1496handled automatically by the Distutils:
Fred Drake781380c2004-02-19 23:17:46 +00001497
Greg Wardb6528972000-09-07 02:40:37 +00001498\begin{enumerate}
1499\item create a \file{.spec} file, which describes the package (analogous
1500 to the Distutils setup script; in fact, much of the information in the
1501 setup script winds up in the \file{.spec} file)
1502\item create the source RPM
1503\item create the ``binary'' RPM (which may or may not contain binary
1504 code, depending on whether your module distribution contains Python
1505 extensions)
1506\end{enumerate}
Fred Drake781380c2004-02-19 23:17:46 +00001507
Greg Wardb6528972000-09-07 02:40:37 +00001508Normally, RPM bundles the last two steps together; when you use the
1509Distutils, all three steps are typically bundled together.
1510
1511If you wish, you can separate these three steps. You can use the
Fred Drake781380c2004-02-19 23:17:46 +00001512\longprogramopt{spec-only} option to make \command{bdist_rpm} just
Greg Wardb6528972000-09-07 02:40:37 +00001513create the \file{.spec} file and exit; in this case, the \file{.spec}
1514file will be written to the ``distribution directory''---normally
1515\file{dist/}, but customizable with the \longprogramopt{dist-dir}
1516option. (Normally, the \file{.spec} file winds up deep in the ``build
Fred Drake781380c2004-02-19 23:17:46 +00001517tree,'' in a temporary directory created by \command{bdist_rpm}.)
Greg Wardb6528972000-09-07 02:40:37 +00001518
Fred Drake781380c2004-02-19 23:17:46 +00001519% \XXX{this isn't implemented yet---is it needed?!}
1520% You can also specify a custom \file{.spec} file with the
1521% \longprogramopt{spec-file} option; used in conjunction with
1522% \longprogramopt{spec-only}, this gives you an opportunity to customize
1523% the \file{.spec} file manually:
1524%
Matthias Klose4c8fa422004-08-04 23:18:49 +00001525% \ begin{verbatim}
Fred Drake781380c2004-02-19 23:17:46 +00001526% > python setup.py bdist_rpm --spec-only
1527% # ...edit dist/FooBar-1.0.spec
1528% > python setup.py bdist_rpm --spec-file=dist/FooBar-1.0.spec
Matthias Klose4c8fa422004-08-04 23:18:49 +00001529% \ end{verbatim}
Fred Drake781380c2004-02-19 23:17:46 +00001530%
1531% (Although a better way to do this is probably to override the standard
1532% \command{bdist\_rpm} command with one that writes whatever else you want
1533% to the \file{.spec} file.)
Greg Wardb6528972000-09-07 02:40:37 +00001534
1535
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001536\section{Creating Windows Installers}
Greg Wardb6528972000-09-07 02:40:37 +00001537\label{creating-wininst}
1538
Thomas Hellere61f3652002-11-15 20:13:26 +00001539Executable installers are the natural format for binary distributions
1540on Windows. They display a nice graphical user interface, display
1541some information about the module distribution to be installed taken
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +00001542from the metadata in the setup script, let the user select a few
Thomas Hellere61f3652002-11-15 20:13:26 +00001543options, and start or cancel the installation.
Greg Wardb6528972000-09-07 02:40:37 +00001544
Thomas Hellere61f3652002-11-15 20:13:26 +00001545Since the metadata is taken from the setup script, creating Windows
1546installers is usually as easy as running:
Fred Drakea09262e2001-03-01 18:35:43 +00001547
Thomas Heller5f52f722001-02-19 17:48:03 +00001548\begin{verbatim}
1549python setup.py bdist_wininst
1550\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001551
Thomas Heller36343f62002-11-15 19:20:56 +00001552or the \command{bdist} command with the \longprogramopt{formats} option:
Fred Drakea09262e2001-03-01 18:35:43 +00001553
Thomas Heller5f52f722001-02-19 17:48:03 +00001554\begin{verbatim}
1555python setup.py bdist --formats=wininst
1556\end{verbatim}
1557
Thomas Hellere61f3652002-11-15 20:13:26 +00001558If you have a pure module distribution (only containing pure Python
1559modules and packages), the resulting installer will be version
1560independent and have a name like \file{foo-1.0.win32.exe}. These
Fred Drakec54d9252004-02-19 22:16:05 +00001561installers can even be created on \UNIX{} or Mac OS platforms.
Thomas Heller5f52f722001-02-19 17:48:03 +00001562
1563If you have a non-pure distribution, the extensions can only be
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001564created on a Windows platform, and will be Python version dependent.
Thomas Heller5f52f722001-02-19 17:48:03 +00001565The installer filename will reflect this and now has the form
Thomas Hellere61f3652002-11-15 20:13:26 +00001566\file{foo-1.0.win32-py2.0.exe}. You have to create a separate installer
Thomas Heller5f52f722001-02-19 17:48:03 +00001567for every Python version you want to support.
1568
1569The installer will try to compile pure modules into bytecode after
Thomas Hellere61f3652002-11-15 20:13:26 +00001570installation on the target system in normal and optimizing mode. If
1571you don't want this to happen for some reason, you can run the
Fred Drake0e9bfa32002-11-15 20:34:52 +00001572\command{bdist_wininst} command with the
1573\longprogramopt{no-target-compile} and/or the
1574\longprogramopt{no-target-optimize} option.
Thomas Hellere61f3652002-11-15 20:13:26 +00001575
Fred Drake0e9bfa32002-11-15 20:34:52 +00001576By default the installer will display the cool ``Python Powered'' logo
Thomas Hellere61f3652002-11-15 20:13:26 +00001577when it is run, but you can also supply your own bitmap which must be
Fred Drake0e9bfa32002-11-15 20:34:52 +00001578a Windows \file{.bmp} file with the \longprogramopt{bitmap} option.
Thomas Hellere61f3652002-11-15 20:13:26 +00001579
1580The installer will also display a large title on the desktop
1581background window when it is run, which is constructed from the name
1582of your distribution and the version number. This can be changed to
1583another text by using the \longprogramopt{title} option.
1584
1585The installer file will be written to the ``distribution directory''
1586--- normally \file{dist/}, but customizable with the
1587\longprogramopt{dist-dir} option.
1588
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001589\subsection{The Postinstallation script}
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001590\label{postinstallation-script}
1591
1592Starting with Python 2.3, a postinstallation script can be specified
1593which the \longprogramopt{install-script} option. The basename of the
1594script must be specified, and the script filename must also be listed
1595in the scripts argument to the setup function.
1596
1597This script will be run at installation time on the target system
Fred Drakec54d9252004-02-19 22:16:05 +00001598after all the files have been copied, with \code{argv[1]} set to
1599\programopt{-install}, and again at uninstallation time before the
1600files are removed with \code{argv[1]} set to \programopt{-remove}.
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001601
1602The installation script runs embedded in the windows installer, every
Fred Drakec54d9252004-02-19 22:16:05 +00001603output (\code{sys.stdout}, \code{sys.stderr}) is redirected into a
1604buffer and will be displayed in the GUI after the script has finished.
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001605
Fred Drakea9ee0da2004-02-19 22:28:15 +00001606Some functions especially useful in this context are available as
1607additional built-in functions in the installation script.
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001608
Fred Drakea9ee0da2004-02-19 22:28:15 +00001609\begin{funcdesc}{directory_created}{path}
1610\funcline{file_created}{path}
1611 These functions should be called when a directory or file is created
1612 by the postinstall script at installation time. It will register
1613 \var{path} with the uninstaller, so that it will be removed when the
1614 distribution is uninstalled. To be safe, directories are only removed
1615 if they are empty.
1616\end{funcdesc}
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001617
Fred Drakea9ee0da2004-02-19 22:28:15 +00001618\begin{funcdesc}{get_special_folder_path}{csidl_string}
1619 This function can be used to retrieve special folder locations on
1620 Windows like the Start Menu or the Desktop. It returns the full
1621 path to the folder. \var{csidl_string} must be one of the following
1622 strings:
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001623
1624\begin{verbatim}
1625"CSIDL_APPDATA"
1626
1627"CSIDL_COMMON_STARTMENU"
1628"CSIDL_STARTMENU"
1629
1630"CSIDL_COMMON_DESKTOPDIRECTORY"
1631"CSIDL_DESKTOPDIRECTORY"
1632
1633"CSIDL_COMMON_STARTUP"
1634"CSIDL_STARTUP"
1635
1636"CSIDL_COMMON_PROGRAMS"
1637"CSIDL_PROGRAMS"
1638
1639"CSIDL_FONTS"
1640\end{verbatim}
1641
Fred Drakea9ee0da2004-02-19 22:28:15 +00001642 If the folder cannot be retrieved, \exception{OSError} is raised.
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001643
Fred Drakea9ee0da2004-02-19 22:28:15 +00001644 Which folders are available depends on the exact Windows version,
1645 and probably also the configuration. For details refer to
1646 Microsoft's documentation of the
1647 \cfunction{SHGetSpecialFolderPath()} function.
1648\end{funcdesc}
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001649
Fred Drakea9ee0da2004-02-19 22:28:15 +00001650\begin{funcdesc}{create_shortcut}{target, description,
1651 filename\optional{,
1652 arguments\optional{,
1653 workdir\optional{,
1654 iconpath\optional{, iconindex}}}}}
1655 This function creates a shortcut.
1656 \var{target} is the path to the program to be started by the shortcut.
1657 \var{description} is the description of the sortcut.
1658 \var{filename} is the title of the shortcut that the user will see.
1659 \var{arguments} specifies the command line arguments, if any.
1660 \var{workdir} is the working directory for the program.
1661 \var{iconpath} is the file containing the icon for the shortcut,
1662 and \var{iconindex} is the index of the icon in the file
1663 \var{iconpath}. Again, for details consult the Microsoft
1664 documentation for the \class{IShellLink} interface.
1665\end{funcdesc}
Greg Wardb6528972000-09-07 02:40:37 +00001666
Fred Drake211a2eb2004-03-22 21:44:43 +00001667\chapter{Registering with the Package Index}
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +00001668\label{package-index}
1669
1670The Python Package Index (PyPI) holds meta-data describing distributions
1671packaged with distutils. The distutils command \command{register} is
1672used to submit your distribution's meta-data to the index. It is invoked
1673as follows:
1674
1675\begin{verbatim}
1676python setup.py register
1677\end{verbatim}
1678
1679Distutils will respond with the following prompt:
1680
1681\begin{verbatim}
1682running register
1683We need to know who you are, so please choose either:
1684 1. use your existing login,
1685 2. register as a new user,
1686 3. have the server generate a new password for you (and email it to you), or
1687 4. quit
1688Your selection [default 1]:
1689\end{verbatim}
1690
1691\noindent Note: if your username and password are saved locally, you will
1692not see this menu.
1693
1694If you have not registered with PyPI, then you will need to do so now. You
1695should choose option 2, and enter your details as required. Soon after
1696submitting your details, you will receive an email which will be used to
1697confirm your registration.
1698
1699Once you are registered, you may choose option 1 from the menu. You will
1700be prompted for your PyPI username and password, and \command{register}
1701will then submit your meta-data to the index.
1702
1703You may submit any number of versions of your distribution to the index. If
1704you alter the meta-data for a particular version, you may submit it again
1705and the index will be updated.
1706
1707PyPI holds a record for each (name, version) combination submitted. The
1708first user to submit information for a given name is designated the Owner
1709of that name. They may submit changes through the \command{register}
1710command or through the web interface. They may also designate other users
1711as Owners or Maintainers. Maintainers may edit the package information, but
1712not designate other Owners or Maintainers.
1713
1714By default PyPI will list all versions of a given package. To hide certain
1715versions, the Hidden property should be set to yes. This must be edited
1716through the web interface.
1717
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00001718\section{The .pypirc file}
1719\label{pypirc}
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +00001720
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00001721The format of the \file{.pypirc} file is formated as follows:
1722
1723\begin{verbatim}
1724[server-login]
1725repository: <repository-url>
1726username: <username>
1727password: <password>
1728\end{verbatim}
1729
1730\var{repository} can be ommitted and defaults to
1731\code{http://www.python.org/pypi}.
1732
1733\chapter{Uploading Packages to the Package Index}
1734\label{package-upload}
1735
1736The Python Package Index (PyPI) not only stores the package info, but also
1737the package data if the author of the package wishes to. The distutils
1738command \command{upload} pushes the distribution files to PyPI.
1739
Walter Dörwaldc8734a72005-03-23 10:38:59 +00001740The command is invoked immediately after building one or more distribution
Fred Drakeae22bbe2005-03-22 04:09:37 +00001741files. For example, the command
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00001742
1743\begin{verbatim}
1744python setup.py sdist bdist_wininst upload
1745\end{verbatim}
1746
Fred Drakeae22bbe2005-03-22 04:09:37 +00001747will cause the source distribution and the Windows installer to be
1748uploaded to PyPI. Note that these will be uploaded even if they are
1749built using an earlier invocation of \file{setup.py}, but that only
1750distributions named on the command line for the invocation including
1751the \command{upload} command are uploaded.
1752
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00001753The \command{upload} command uses the username and password stored in
Fred Drakeae22bbe2005-03-22 04:09:37 +00001754in the file \file{\$HOME/.pypirc}, see section~\ref{pypirc}.
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +00001755
Fred Drake211a2eb2004-03-22 21:44:43 +00001756\chapter{Examples}
Greg Ward007c04a2002-05-10 14:45:59 +00001757\label{examples}
Fred Drake40333ce2004-06-14 22:07:50 +00001758
1759This chapter provides a number of basic examples to help get started
1760with distutils. Additional information about using distutils can be
1761found in the Distutils Cookbook.
1762
1763\begin{seealso}
1764 \seelink{http://www.python.org/cgi-bin/moinmoin/DistutilsCookbook}
1765 {Distutils Cookbook}
1766 {Collection of recipes showing how to achieve more control
1767 over distutils.}
1768\end{seealso}
1769
1770
Fred Drake211a2eb2004-03-22 21:44:43 +00001771\section{Pure Python distribution (by module)}
Greg Ward007c04a2002-05-10 14:45:59 +00001772\label{pure-mod}
1773
1774If you're just distributing a couple of modules, especially if they
1775don't live in a particular package, you can specify them individually
1776using the \option{py\_modules} option in the setup script.
1777
1778In the simplest case, you'll have two files to worry about: a setup
1779script and the single module you're distributing, \file{foo.py} in this
1780example:
1781\begin{verbatim}
1782<root>/
1783 setup.py
1784 foo.py
1785\end{verbatim}
1786(In all diagrams in this section, \verb|<root>| will refer to the
1787distribution root directory.) A minimal setup script to describe this
1788situation would be:
1789\begin{verbatim}
1790from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001791setup(name='foo',
1792 version='1.0',
1793 py_modules=['foo'],
1794 )
Greg Ward007c04a2002-05-10 14:45:59 +00001795\end{verbatim}
1796Note that the name of the distribution is specified independently with
1797the \option{name} option, and there's no rule that says it has to be the
1798same as the name of the sole module in the distribution (although that's
1799probably a good convention to follow). However, the distribution name
1800is used to generate filenames, so you should stick to letters, digits,
1801underscores, and hyphens.
1802
1803Since \option{py\_modules} is a list, you can of course specify multiple
1804modules, eg. if you're distributing modules \module{foo} and
1805\module{bar}, your setup might look like this:
1806\begin{verbatim}
1807<root>/
1808 setup.py
1809 foo.py
1810 bar.py
1811\end{verbatim}
1812and the setup script might be
1813\begin{verbatim}
1814from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001815setup(name='foobar',
1816 version='1.0',
1817 py_modules=['foo', 'bar'],
1818 )
Greg Ward007c04a2002-05-10 14:45:59 +00001819\end{verbatim}
1820
1821You can put module source files into another directory, but if you have
1822enough modules to do that, it's probably easier to specify modules by
1823package rather than listing them individually.
Greg Ward16aafcd2000-04-09 04:06:44 +00001824
1825
Fred Drake211a2eb2004-03-22 21:44:43 +00001826\section{Pure Python distribution (by package)}
Greg Ward007c04a2002-05-10 14:45:59 +00001827\label{pure-pkg}
1828
1829If you have more than a couple of modules to distribute, especially if
1830they are in multiple packages, it's probably easier to specify whole
1831packages rather than individual modules. This works even if your
1832modules are not in a package; you can just tell the Distutils to process
1833modules from the root package, and that works the same as any other
1834package (except that you don't have to have an \file{\_\_init\_\_.py}
1835file).
1836
1837The setup script from the last example could also be written as
1838\begin{verbatim}
1839from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001840setup(name='foobar',
1841 version='1.0',
1842 packages=[''],
1843 )
Greg Ward007c04a2002-05-10 14:45:59 +00001844\end{verbatim}
1845(The empty string stands for the root package.)
1846
1847If those two files are moved into a subdirectory, but remain in the root
1848package, e.g.:
1849\begin{verbatim}
1850<root>/
1851 setup.py
1852 src/ foo.py
1853 bar.py
1854\end{verbatim}
1855then you would still specify the root package, but you have to tell the
1856Distutils where source files in the root package live:
1857\begin{verbatim}
1858from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001859setup(name='foobar',
1860 version='1.0',
1861 package_dir={'': 'src'},
1862 packages=[''],
1863 )
Greg Ward007c04a2002-05-10 14:45:59 +00001864\end{verbatim}
1865
1866More typically, though, you will want to distribute multiple modules in
1867the same package (or in sub-packages). For example, if the \module{foo}
1868and \module{bar} modules belong in package \module{foobar}, one way to
1869layout your source tree is
1870\begin{verbatim}
1871<root>/
1872 setup.py
1873 foobar/
1874 __init__.py
1875 foo.py
1876 bar.py
1877\end{verbatim}
1878This is in fact the default layout expected by the Distutils, and the
1879one that requires the least work to describe in your setup script:
1880\begin{verbatim}
1881from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001882setup(name='foobar',
1883 version='1.0',
1884 packages=['foobar'],
1885 )
Greg Ward007c04a2002-05-10 14:45:59 +00001886\end{verbatim}
1887
1888If you want to put modules in directories not named for their package,
1889then you need to use the \option{package\_dir} option again. For
1890example, if the \file{src} directory holds modules in the
1891\module{foobar} package:
1892\begin{verbatim}
1893<root>/
1894 setup.py
1895 src/
1896 __init__.py
1897 foo.py
1898 bar.py
1899\end{verbatim}
1900an appropriate setup script would be
1901\begin{verbatim}
1902from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001903setup(name='foobar',
1904 version='1.0',
1905 package_dir={'foobar': 'src'},
1906 packages=['foobar'],
1907 )
Greg Ward007c04a2002-05-10 14:45:59 +00001908\end{verbatim}
1909
1910Or, you might put modules from your main package right in the
1911distribution root:
1912\begin{verbatim}
1913<root>/
1914 setup.py
1915 __init__.py
1916 foo.py
1917 bar.py
1918\end{verbatim}
1919in which case your setup script would be
1920\begin{verbatim}
1921from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001922setup(name='foobar',
1923 version='1.0',
1924 package_dir={'foobar': ''},
1925 packages=['foobar'],
1926 )
Greg Ward007c04a2002-05-10 14:45:59 +00001927\end{verbatim}
1928(The empty string also stands for the current directory.)
1929
1930If you have sub-packages, they must be explicitly listed in
1931\option{packages}, but any entries in \option{package\_dir}
1932automatically extend to sub-packages. (In other words, the Distutils
1933does \emph{not} scan your source tree, trying to figure out which
1934directories correspond to Python packages by looking for
1935\file{\_\_init\_\_.py} files.) Thus, if the default layout grows a
1936sub-package:
1937\begin{verbatim}
1938<root>/
1939 setup.py
1940 foobar/
1941 __init__.py
1942 foo.py
1943 bar.py
1944 subfoo/
1945 __init__.py
1946 blah.py
1947\end{verbatim}
1948then the corresponding setup script would be
1949\begin{verbatim}
1950from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001951setup(name='foobar',
1952 version='1.0',
1953 packages=['foobar', 'foobar.subfoo'],
1954 )
Greg Ward007c04a2002-05-10 14:45:59 +00001955\end{verbatim}
1956(Again, the empty string in \option{package\_dir} stands for the current
1957directory.)
Greg Ward16aafcd2000-04-09 04:06:44 +00001958
1959
Fred Drake211a2eb2004-03-22 21:44:43 +00001960\section{Single extension module}
Greg Ward007c04a2002-05-10 14:45:59 +00001961\label{single-ext}
1962
1963Extension modules are specified using the \option{ext\_modules} option.
1964\option{package\_dir} has no effect on where extension source files are
1965found; it only affects the source for pure Python modules. The simplest
1966case, a single extension module in a single C source file, is:
1967\begin{verbatim}
1968<root>/
1969 setup.py
1970 foo.c
1971\end{verbatim}
1972If the \module{foo} extension belongs in the root package, the setup
1973script for this could be
1974\begin{verbatim}
1975from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001976setup(name='foobar',
1977 version='1.0',
1978 ext_modules=[Extension('foo', ['foo.c'])],
1979 )
Greg Ward007c04a2002-05-10 14:45:59 +00001980\end{verbatim}
1981
1982If the extension actually belongs in a package, say \module{foopkg},
1983then
1984
1985With exactly the same source tree layout, this extension can be put in
1986the \module{foopkg} package simply by changing the name of the
1987extension:
1988\begin{verbatim}
1989from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001990setup(name='foobar',
1991 version='1.0',
1992 ext_modules=[Extension('foopkg.foo', ['foo.c'])],
1993 )
Greg Ward007c04a2002-05-10 14:45:59 +00001994\end{verbatim}
Greg Ward16aafcd2000-04-09 04:06:44 +00001995
1996
Fred Drake211a2eb2004-03-22 21:44:43 +00001997%\section{Multiple extension modules}
Fred Drakea09262e2001-03-01 18:35:43 +00001998%\label{multiple-ext}
Greg Ward16aafcd2000-04-09 04:06:44 +00001999
2000
Fred Drake211a2eb2004-03-22 21:44:43 +00002001%\section{Putting it all together}
Greg Ward16aafcd2000-04-09 04:06:44 +00002002
2003
Fred Drake0c84c7f2004-08-02 21:39:11 +00002004\chapter{Extending Distutils \label{extending}}
2005
2006Distutils can be extended in various ways. Most extensions take the
2007form of new commands or replacements for existing commands. New
2008commands may be written to support new types of platform-specific
2009packaging, for example, while replacements for existing commands may
2010be made to modify details of how the command operates on a package.
2011
2012Most extensions of the distutils are made within \file{setup.py}
2013scripts that want to modify existing commands; many simply add a few
2014file extensions that should be copied into packages in addition to
2015\file{.py} files as a convenience.
2016
2017Most distutils command implementations are subclasses of the
2018\class{Command} class from \refmodule{distutils.cmd}. New commands
2019may directly inherit from \class{Command}, while replacements often
2020derive from \class{Command} indirectly, directly subclassing the
Fred Drakebec69f62004-08-02 23:05:25 +00002021command they are replacing. Commands are required to derive from
2022\class{Command}.
Greg Ward4a9e7222000-04-25 02:57:36 +00002023
2024
Fred Drake211a2eb2004-03-22 21:44:43 +00002025%\section{Extending existing commands}
Fred Drakea09262e2001-03-01 18:35:43 +00002026%\label{extend-existing}
Greg Ward4a9e7222000-04-25 02:57:36 +00002027
2028
Fred Drake211a2eb2004-03-22 21:44:43 +00002029%\section{Writing new commands}
Fred Drakea09262e2001-03-01 18:35:43 +00002030%\label{new-commands}
Greg Ward4a9e7222000-04-25 02:57:36 +00002031
Fred Drakea09262e2001-03-01 18:35:43 +00002032%\XXX{Would an uninstall command be a good example here?}
Thomas Heller5f52f722001-02-19 17:48:03 +00002033
Fred Drake0c84c7f2004-08-02 21:39:11 +00002034\section{Integrating new commands}
2035
2036There are different ways to integrate new command implementations into
2037distutils. The most difficult is to lobby for the inclusion of the
2038new features in distutils itself, and wait for (and require) a version
2039of Python that provides that support. This is really hard for many
2040reasons.
2041
2042The most common, and possibly the most reasonable for most needs, is
2043to include the new implementations with your \file{setup.py} script,
2044and cause the \function{distutils.core.setup()} function use them:
2045
2046\begin{verbatim}
2047from distutils.command.build_py import build_py as _build_py
2048from distutils.core import setup
2049
2050class build_py(_build_py):
2051 """Specialized Python source builder."""
2052
2053 # implement whatever needs to be different...
2054
2055setup(cmdclass={'build_py': build_py},
2056 ...)
2057\end{verbatim}
2058
2059This approach is most valuable if the new implementations must be used
2060to use a particular package, as everyone interested in the package
2061will need to have the new command implementation.
Greg Ward4a9e7222000-04-25 02:57:36 +00002062
Fred Draked04573f2004-08-03 16:37:40 +00002063Beginning with Python 2.4, a third option is available, intended to
2064allow new commands to be added which can support existing
2065\file{setup.py} scripts without requiring modifications to the Python
2066installation. This is expected to allow third-party extensions to
2067provide support for additional packaging systems, but the commands can
2068be used for anything distutils commands can be used for. A new
2069configuration option, \option{command\_packages} (command-line option
2070\longprogramopt{command-packages}), can be used to specify additional
2071packages to be searched for modules implementing commands. Like all
2072distutils options, this can be specified on the command line or in a
2073configuration file. This option can only be set in the
2074\code{[global]} section of a configuration file, or before any
2075commands on the command line. If set in a configuration file, it can
2076be overridden from the command line; setting it to an empty string on
2077the command line causes the default to be used. This should never be
2078set in a configuration file provided with a package.
2079
2080This new option can be used to add any number of packages to the list
2081of packages searched for command implementations; multiple package
2082names should be separated by commas. When not specified, the search
2083is only performed in the \module{distutils.command} package. When
2084\file{setup.py} is run with the option
2085\longprogramopt{command-packages} \programopt{distcmds,buildcmds},
2086however, the packages \module{distutils.command}, \module{distcmds},
2087and \module{buildcmds} will be searched in that order. New commands
2088are expected to be implemented in modules of the same name as the
2089command by classes sharing the same name. Given the example command
2090line option above, the command \command{bdist\_openpkg} could be
2091implemented by the class \class{distcmds.bdist_openpkg.bdist_openpkg}
2092or \class{buildcmds.bdist_openpkg.bdist_openpkg}.
2093
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00002094\section{Adding new distribution types}
2095
Fred Drakeae22bbe2005-03-22 04:09:37 +00002096Commands that create distributions (files in the \file{dist/}
2097directory) need to add \code{(\var{command}, \var{filename})} pairs to
2098\code{self.distribution.dist_files} so that \command{upload} can
2099upload it to PyPI. The \var{filename} in the pair contains no path
2100information, only the name of the file itself. In dry-run mode, pairs
2101should still be added to represent what would have been created.
Greg Ward4a9e7222000-04-25 02:57:36 +00002102
Fred Drake211a2eb2004-03-22 21:44:43 +00002103\chapter{Command Reference}
Greg Ward47f99a62000-09-04 20:07:15 +00002104\label{reference}
Greg Ward16aafcd2000-04-09 04:06:44 +00002105
2106
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00002107%\section{Building modules: the \protect\command{build} command family}
Fred Drakea09262e2001-03-01 18:35:43 +00002108%\label{build-cmds}
Greg Ward16aafcd2000-04-09 04:06:44 +00002109
Fred Drakea09262e2001-03-01 18:35:43 +00002110%\subsubsection{\protect\command{build}}
2111%\label{build-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002112
Fred Drakea09262e2001-03-01 18:35:43 +00002113%\subsubsection{\protect\command{build\_py}}
2114%\label{build-py-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002115
Fred Drakea09262e2001-03-01 18:35:43 +00002116%\subsubsection{\protect\command{build\_ext}}
2117%\label{build-ext-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002118
Fred Drakea09262e2001-03-01 18:35:43 +00002119%\subsubsection{\protect\command{build\_clib}}
2120%\label{build-clib-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002121
2122
Fred Drake211a2eb2004-03-22 21:44:43 +00002123\section{Installing modules: the \protect\command{install} command family}
Greg Warde78298a2000-04-28 17:12:24 +00002124\label{install-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002125
Gregory P. Smith147e5f32000-05-12 00:58:18 +00002126The install command ensures that the build commands have been run and then
2127runs the subcommands \command{install\_lib},
2128\command{install\_data} and
2129\command{install\_scripts}.
2130
Fred Drakea09262e2001-03-01 18:35:43 +00002131%\subsubsection{\protect\command{install\_lib}}
2132%\label{install-lib-cmd}
Gregory P. Smith147e5f32000-05-12 00:58:18 +00002133
Fred Drake211a2eb2004-03-22 21:44:43 +00002134\subsection{\protect\command{install\_data}}
Greg Ward1365a302000-08-31 14:47:05 +00002135\label{install-data-cmd}
Gregory P. Smith147e5f32000-05-12 00:58:18 +00002136This command installs all data files provided with the distribution.
2137
Fred Drake211a2eb2004-03-22 21:44:43 +00002138\subsection{\protect\command{install\_scripts}}
Greg Ward1365a302000-08-31 14:47:05 +00002139\label{install-scripts-cmd}
Gregory P. Smith147e5f32000-05-12 00:58:18 +00002140This command installs all (Python) scripts in the distribution.
2141
Greg Ward16aafcd2000-04-09 04:06:44 +00002142
Fred Drakea09262e2001-03-01 18:35:43 +00002143%\subsection{Cleaning up: the \protect\command{clean} command}
2144%\label{clean-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002145
2146
Fred Drake211a2eb2004-03-22 21:44:43 +00002147\section{Creating a source distribution: the
Fred Drakeeff9a872000-10-26 16:41:03 +00002148 \protect\command{sdist} command}
Greg Warde78298a2000-04-28 17:12:24 +00002149\label{sdist-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002150
2151
2152\XXX{fragment moved down from above: needs context!}
Greg Wardb6528972000-09-07 02:40:37 +00002153
Greg Ward16aafcd2000-04-09 04:06:44 +00002154The manifest template commands are:
Fred Drake781380c2004-02-19 23:17:46 +00002155
Greg Ward16aafcd2000-04-09 04:06:44 +00002156\begin{tableii}{ll}{command}{Command}{Description}
Greg Ward87da1ea2000-04-21 04:35:25 +00002157 \lineii{include \var{pat1} \var{pat2} ... }
2158 {include all files matching any of the listed patterns}
2159 \lineii{exclude \var{pat1} \var{pat2} ... }
2160 {exclude all files matching any of the listed patterns}
2161 \lineii{recursive-include \var{dir} \var{pat1} \var{pat2} ... }
2162 {include all files under \var{dir} matching any of the listed patterns}
2163 \lineii{recursive-exclude \var{dir} \var{pat1} \var{pat2} ...}
2164 {exclude all files under \var{dir} matching any of the listed patterns}
2165 \lineii{global-include \var{pat1} \var{pat2} ...}
Greg Ward1bbe3292000-06-25 03:14:13 +00002166 {include all files anywhere in the source tree matching\\&
Greg Ward87da1ea2000-04-21 04:35:25 +00002167 any of the listed patterns}
2168 \lineii{global-exclude \var{pat1} \var{pat2} ...}
Greg Ward1bbe3292000-06-25 03:14:13 +00002169 {exclude all files anywhere in the source tree matching\\&
Greg Ward87da1ea2000-04-21 04:35:25 +00002170 any of the listed patterns}
Greg Ward16aafcd2000-04-09 04:06:44 +00002171 \lineii{prune \var{dir}}{exclude all files under \var{dir}}
2172 \lineii{graft \var{dir}}{include all files under \var{dir}}
2173\end{tableii}
Fred Drake781380c2004-02-19 23:17:46 +00002174
Fred Drakeeff9a872000-10-26 16:41:03 +00002175The patterns here are \UNIX-style ``glob'' patterns: \code{*} matches any
Greg Ward16aafcd2000-04-09 04:06:44 +00002176sequence of regular filename characters, \code{?} matches any single
2177regular filename character, and \code{[\var{range}]} matches any of the
2178characters in \var{range} (e.g., \code{a-z}, \code{a-zA-Z},
Greg Wardfacb8db2000-04-09 04:32:40 +00002179\code{a-f0-9\_.}). The definition of ``regular filename character'' is
Fred Drakeeff9a872000-10-26 16:41:03 +00002180platform-specific: on \UNIX{} it is anything except slash; on Windows
Brett Cannon7706c2d2005-02-13 22:50:04 +00002181anything except backslash or colon; on Mac OS 9 anything except colon.
Greg Wardb6528972000-09-07 02:40:37 +00002182
Brett Cannon7706c2d2005-02-13 22:50:04 +00002183\XXX{Windows support not there yet}
Greg Ward16aafcd2000-04-09 04:06:44 +00002184
2185
Fred Drake211a2eb2004-03-22 21:44:43 +00002186%\section{Creating a built distribution: the
Fred Drakea09262e2001-03-01 18:35:43 +00002187% \protect\command{bdist} command family}
2188%\label{bdist-cmds}
Greg Ward16aafcd2000-04-09 04:06:44 +00002189
2190
Fred Drake211a2eb2004-03-22 21:44:43 +00002191%\subsection{\protect\command{bdist}}
Greg Ward16aafcd2000-04-09 04:06:44 +00002192
Fred Drake211a2eb2004-03-22 21:44:43 +00002193%\subsection{\protect\command{bdist\_dumb}}
Greg Ward16aafcd2000-04-09 04:06:44 +00002194
Fred Drake211a2eb2004-03-22 21:44:43 +00002195%\subsection{\protect\command{bdist\_rpm}}
Greg Ward16aafcd2000-04-09 04:06:44 +00002196
Fred Drake211a2eb2004-03-22 21:44:43 +00002197%\subsection{\protect\command{bdist\_wininst}}
Fred Drakeab70b382001-08-02 15:13:15 +00002198
2199
Fred Drake6fca7cc2004-03-23 18:43:03 +00002200\chapter{API Reference \label{api-reference}}
2201
2202\section{\module{distutils.core} --- Core Distutils functionality}
2203
2204\declaremodule{standard}{distutils.core}
2205\modulesynopsis{The core Distutils functionality}
2206
2207The \module{distutils.core} module is the only module that needs to be
2208installed to use the Distutils. It provides the \function{setup()} (which
2209is called from the setup script). Indirectly provides the
2210\class{distutils.dist.Distribution} and \class{distutils.cmd.Command} class.
2211
2212\begin{funcdesc}{setup}{arguments}
2213The basic do-everything function that does most everything you could ever
2214ask for from a Distutils method. See XXXXX
2215
2216The setup function takes a large number of arguments. These
2217are laid out in the following table.
2218
2219\begin{tableiii}{c|l|l}{argument name}{argument name}{value}{type}
2220\lineiii{name}{The name of the package}{a string}
2221\lineiii{version}{The version number of the package}{See \refmodule{distutils.version}}
2222\lineiii{description}{A single line describing the package}{a string}
2223\lineiii{long_description}{Longer description of the package}{a string}
2224\lineiii{author}{The name of the package author}{a string}
2225\lineiii{author_email}{The email address of the package author}{a string}
2226\lineiii{maintainer}{The name of the current maintainer, if different from the author}{a string}
2227\lineiii{maintainer_email}{The email address of the current maintainer, if different from the author}{}
2228\lineiii{url}{A URL for the package (homepage)}{a URL}
2229\lineiii{download_url}{A URL to download the package}{a URL}
2230\lineiii{packages}{A list of Python packages that distutils will manipulate}{a list of strings}
2231\lineiii{py_modules}{A list of Python modules that distutils will manipulate}{a list of strings}
2232\lineiii{scripts}{A list of standalone script files to be built and installed}{a list of strings}
2233\lineiii{ext_modules}{A list of Python extensions to be built}{A list of
2234instances of \class{distutils.core.Extension}}
2235\lineiii{classifiers}{A list of Trove categories for the package}{XXX link to better definition}
2236\lineiii{distclass}{the \class{Distribution} class to use}{A subclass of \class{distutils.core.Distribution}}
2237% What on earth is the use case for script_name?
2238\lineiii{script_name}{The name of the setup.py script - defaults to \code{sys.argv[0]}}{a string}
2239\lineiii{script_args}{Arguments to supply to the setup script}{a list of strings}
2240\lineiii{options}{default options for the setup script}{a string}
2241\lineiii{license}{The license for the package}{}
2242\lineiii{keywords}{Descriptive meta-data. See \pep{314}}{}
2243\lineiii{platforms}{}{}
2244\lineiii{cmdclass}{A mapping of command names to \class{Command} subclasses}{a dictionary}
2245\end{tableiii}
2246
2247\end{funcdesc}
2248
2249\begin{funcdesc}{run_setup}{script_name\optional{, script_args=\code{None}, stop_after=\code{'run'}}}
2250Run a setup script in a somewhat controlled environment, and return
2251the \class{distutils.dist.Distribution} instance that drives things.
2252This is useful if you need to find out the distribution meta-data
2253(passed as keyword args from \var{script} to \function{setup()}), or
2254the contents of the config files or command-line.
2255
2256\var{script_name} is a file that will be run with \function{execfile()}
Fred Drake9687b4d2005-03-10 03:48:14 +00002257\code{sys.argv[0]} will be replaced with \var{script} for the duration of the
Fred Drake6fca7cc2004-03-23 18:43:03 +00002258call. \var{script_args} is a list of strings; if supplied,
Fred Drake9687b4d2005-03-10 03:48:14 +00002259\code{sys.argv[1:]} will be replaced by \var{script_args} for the duration
Fred Drake6fca7cc2004-03-23 18:43:03 +00002260of the call.
2261
2262\var{stop_after} tells \function{setup()} when to stop processing; possible
2263values:
2264
2265\begin{tableii}{c|l}{value}{value}{description}
2266\lineii{init}{Stop after the \class{Distribution} instance has been created
2267and populated with the keyword arguments to \function{setup()}}
2268\lineii{config}{Stop after config files have been parsed (and their data
2269stored in the \class{Distribution} instance)}
2270\lineii{commandline}{Stop after the command-line (\code{sys.argv[1:]} or
2271\var{script_args}) have been parsed (and the data stored in the
2272\class{Distribution} instance.)}
2273\lineii{run}{Stop after all commands have been run (the same as
2274if \function{setup()} had been called in the usual way). This is the default
2275value.}
2276\end{tableii}
2277\end{funcdesc}
2278
2279In addition, the \module{distutils.core} module exposed a number of
2280classes that live elsewhere.
2281
2282\begin{itemize}
2283\item \class{Extension} from \refmodule{distutils.extension}
2284\item \class{Command} from \refmodule{distutils.cmd}
2285\item \class{Distribution} from \refmodule{distutils.dist}
2286\end{itemize}
2287
2288A short description of each of these follows, but see the relevant
2289module for the full reference.
2290
2291\begin{classdesc*}{Extension}
2292
2293The Extension class describes a single C or \Cpp extension module in a
2294setup script. It accepts the following keyword arguments in it's
2295constructor
2296
2297\begin{tableiii}{c|l|l}{argument name}{argument name}{value}{type}
2298\lineiii{name}{the full name of the extension, including any packages
2299--- ie. \emph{not} a filename or pathname, but Python dotted name}{string}
2300\lineiii{sources}{list of source filenames, relative to the distribution
2301root (where the setup script lives), in Unix form (slash-separated) for
2302portability. Source files may be C, \Cpp, SWIG (.i), platform-specific
2303resource files, or whatever else is recognized by the \command{build_ext}
2304command as source for a Python extension.}{string}
2305\lineiii{include_dirs}{list of directories to search for C/\Cpp{} header
2306files (in \UNIX{} form for portability)}{string}
2307\lineiii{define_macros}{list of macros to define; each macro is defined
2308using a 2-tuple, where 'value' is either the string to define it to or
2309\code{None} to define it without a particular value (equivalent of
2310\code{\#define FOO} in source or \programopt{-DFOO} on \UNIX{} C
2311compiler command line) }{ (string,string)
2312tuple or (name,\code{None}) }
2313\lineiii{undef_macros}{list of macros to undefine explicitly}{string}
2314\lineiii{library_dirs}{list of directories to search for C/\Cpp{} libraries
2315at link time }{string}
2316\lineiii{libraries}{list of library names (not filenames or paths) to
2317link against }{string}
2318\lineiii{runtime_library_dirs}{list of directories to search for C/\Cpp{}
2319libraries at run time (for shared extensions, this is when the extension
2320is loaded)}{string}
2321\lineiii{extra_objects}{list of extra files to link with (eg. object
2322files not implied by 'sources', static library that must be explicitly
2323specified, binary resource files, etc.)}{string}
2324\lineiii{extra_compile_args}{any extra platform- and compiler-specific
2325information to use when compiling the source files in 'sources'. For
2326platforms and compilers where a command line makes sense, this is
2327typically a list of command-line arguments, but for other platforms it
2328could be anything.}{string}
2329\lineiii{extra_link_args}{any extra platform- and compiler-specific
2330information to use when linking object files together to create the
2331extension (or to create a new static Python interpreter). Similar
2332interpretation as for 'extra_compile_args'.}{string}
2333\lineiii{export_symbols}{list of symbols to be exported from a shared
2334extension. Not used on all platforms, and not generally necessary for
2335Python extensions, which typically export exactly one symbol: \code{init} +
2336extension_name. }{string}
2337\lineiii{depends}{list of files that the extension depends on }{string}
2338\lineiii{language}{extension language (i.e. \code{'c'}, \code{'c++'},
2339\code{'objc'}). Will be detected from the source extensions if not provided.
2340}{string}
2341\end{tableiii}
2342\end{classdesc*}
2343
2344\begin{classdesc*}{Distribution}
2345A \class{Distribution} describes how to build, install and package up a
2346Python software package.
2347
2348See the \function{setup()} function for a list of keyword arguments accepted
2349by the Distribution constructor. \function{setup()} creates a Distribution
2350instance.
2351\end{classdesc*}
2352
2353\begin{classdesc*}{Command}
2354A \class{Command} class (or rather, an instance of one of it's subclasses)
2355implement a single distutils command.
2356\end{classdesc*}
2357
2358
2359\section{\module{distutils.ccompiler} --- CCompiler base class}
2360\declaremodule{standard}{distutils.ccompiler}
2361\modulesynopsis{Abstract CCompiler class}
2362
2363This module provides the abstract base class for the \class{CCompiler}
2364classes. A \class{CCompiler} instance can be used for all the compile
2365and link steps needed to build a single project. Methods are provided to
2366set options for the compiler --- macro definitions, include directories,
2367link path, libraries and the like.
2368
2369This module provides the following functions.
2370
2371\begin{funcdesc}{gen_lib_options}{compiler, library_dirs, runtime_library_dirs, libraries}
2372Generate linker options for searching library directories and
2373linking with specific libraries. \var{libraries} and \var{library_dirs} are,
2374respectively, lists of library names (not filenames!) and search
2375directories. Returns a list of command-line options suitable for use
2376with some compiler (depending on the two format strings passed in).
2377\end{funcdesc}
2378
2379\begin{funcdesc}{gen_preprocess_options}{macros, include_dirs}
Fred Drake9687b4d2005-03-10 03:48:14 +00002380Generate C pre-processor options (\programopt{-D}, \programopt{-U},
2381\programopt{-I}) as used by at least
Fred Drake6fca7cc2004-03-23 18:43:03 +00002382two types of compilers: the typical \UNIX{} compiler and Visual \Cpp.
Fred Drake9687b4d2005-03-10 03:48:14 +00002383\var{macros} is the usual thing, a list of 1- or 2-tuples, where
2384\code{(\var{name},)} means undefine (\programopt{-U}) macro \var{name},
2385and \code{(\var{name}, \var{value})} means define (\programopt{-D})
2386macro \var{name} to \var{value}. \var{include_dirs} is just a list of
2387directory names to be added to the header file search path (\programopt{-I}).
2388Returns a list of command-line options suitable for either \UNIX{} compilers
2389or Visual \Cpp.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002390\end{funcdesc}
2391
2392\begin{funcdesc}{get_default_compiler}{osname, platform}
2393Determine the default compiler to use for the given platform.
2394
Fred Drake9687b4d2005-03-10 03:48:14 +00002395\var{osname} should be one of the standard Python OS names (i.e.\ the
2396ones returned by \code{os.name}) and \var{platform} the common value
2397returned by \code{sys.platform} for the platform in question.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002398
2399The default values are \code{os.name} and \code{sys.platform} in case the
2400parameters are not given.
2401\end{funcdesc}
2402
2403\begin{funcdesc}{new_compiler}{plat=\code{None}, compiler=\code{None}, verbose=\code{0}, dry_run=\code{0}, force=\code{0}}
2404Factory function to generate an instance of some CCompiler subclass
2405for the supplied platform/compiler combination. \var{plat} defaults
2406to \code{os.name} (eg. \code{'posix'}, \code{'nt'}), and \var{compiler}
2407defaults to the default compiler for that platform. Currently only
2408\code{'posix'} and \code{'nt'} are supported, and the default
2409compilers are ``traditional \UNIX{} interface'' (\class{UnixCCompiler}
2410class) and Visual \Cpp (\class{MSVCCompiler} class). Note that it's
2411perfectly possible to ask for a \UNIX{} compiler object under Windows,
2412and a Microsoft compiler object under \UNIX---if you supply a value
2413for \var{compiler}, \var{plat} is ignored.
2414% Is the posix/nt only thing still true? Mac OS X seems to work, and
2415% returns a UnixCCompiler instance. How to document this... hmm.
2416\end{funcdesc}
2417
2418\begin{funcdesc}{show_compilers}{}
2419Print list of available compilers (used by the
2420\longprogramopt{help-compiler} options to \command{build},
2421\command{build_ext}, \command{build_clib}).
2422\end{funcdesc}
2423
2424\begin{classdesc}{CCompiler}{\optional{verbose=\code{0}, dry_run=\code{0}, force=\code{0}}}
2425
2426The abstract base class \class{CCompiler} defines the interface that
2427must be implemented by real compiler classes. The class also has
2428some utility methods used by several compiler classes.
2429
2430The basic idea behind a compiler abstraction class is that each
2431instance can be used for all the compile/link steps in building a
2432single project. Thus, attributes common to all of those compile and
2433link steps --- include directories, macros to define, libraries to link
2434against, etc. --- are attributes of the compiler instance. To allow for
2435variability in how individual files are treated, most of those
2436attributes may be varied on a per-compilation or per-link basis.
2437
2438The constructor for each subclass creates an instance of the Compiler
2439object. Flags are \var{verbose} (show verbose output), \var{dry_run}
2440(don't actually execute the steps) and \var{force} (rebuild
2441everything, regardless of dependencies). All of these flags default to
2442\code{0} (off). Note that you probably don't want to instantiate
2443\class{CCompiler} or one of it's subclasses directly - use the
2444\function{distutils.CCompiler.new_compiler()} factory function
2445instead.
2446
2447The following methods allow you to manually alter compiler options for
2448the instance of the Compiler class.
2449
2450\begin{methoddesc}{add_include_dir}{dir}
2451Add \var{dir} to the list of directories that will be searched for
2452header files. The compiler is instructed to search directories in
2453the order in which they are supplied by successive calls to
2454\method{add_include_dir()}.
2455\end{methoddesc}
2456
2457\begin{methoddesc}{set_include_dirs}{dirs}
2458Set the list of directories that will be searched to \var{dirs} (a
2459list of strings). Overrides any preceding calls to
2460\method{add_include_dir()}; subsequent calls to
2461\method{add_include_dir()} add to the list passed to
2462\method{set_include_dirs()}. This does not affect any list of
2463standard include directories that the compiler may search by default.
2464\end{methoddesc}
2465
2466\begin{methoddesc}{add_library}{libname}
2467
2468Add \var{libname} to the list of libraries that will be included in
2469all links driven by this compiler object. Note that \var{libname}
2470should *not* be the name of a file containing a library, but the
2471name of the library itself: the actual filename will be inferred by
2472the linker, the compiler, or the compiler class (depending on the
2473platform).
2474
2475The linker will be instructed to link against libraries in the
2476order they were supplied to \method{add_library()} and/or
2477\method{set_libraries()}. It is perfectly valid to duplicate library
2478names; the linker will be instructed to link against libraries as
2479many times as they are mentioned.
2480\end{methoddesc}
2481
2482\begin{methoddesc}{set_libraries}{libnames}
2483Set the list of libraries to be included in all links driven by
2484this compiler object to \var{libnames} (a list of strings). This does
2485not affect any standard system libraries that the linker may
2486include by default.
2487\end{methoddesc}
2488
2489\begin{methoddesc}{add_library_dir}{dir}
2490Add \var{dir} to the list of directories that will be searched for
2491libraries specified to \method{add_library()} and
2492\method{set_libraries()}. The linker will be instructed to search for
2493libraries in the order they are supplied to \method{add_library_dir()}
2494and/or \method{set_library_dirs()}.
2495\end{methoddesc}
2496
2497\begin{methoddesc}{set_library_dirs}{dirs}
2498Set the list of library search directories to \var{dirs} (a list of
2499strings). This does not affect any standard library search path
2500that the linker may search by default.
2501\end{methoddesc}
2502
2503\begin{methoddesc}{add_runtime_library_dir}{dir}
2504Add \var{dir} to the list of directories that will be searched for
2505shared libraries at runtime.
2506\end{methoddesc}
2507
2508\begin{methoddesc}{set_runtime_library_dirs}{dirs}
2509Set the list of directories to search for shared libraries at
2510runtime to \var{dirs} (a list of strings). This does not affect any
2511standard search path that the runtime linker may search by
2512default.
2513\end{methoddesc}
2514
2515\begin{methoddesc}{define_macro}{name\optional{, value=\code{None}}}
2516Define a preprocessor macro for all compilations driven by this
2517compiler object. The optional parameter \var{value} should be a
2518string; if it is not supplied, then the macro will be defined
2519without an explicit value and the exact outcome depends on the
2520compiler used (XXX true? does ANSI say anything about this?)
2521\end{methoddesc}
2522
2523\begin{methoddesc}{undefine_macro}{name}
2524Undefine a preprocessor macro for all compilations driven by
2525this compiler object. If the same macro is defined by
2526\method{define_macro()} and undefined by \method{undefine_macro()}
2527the last call takes precedence (including multiple redefinitions or
2528undefinitions). If the macro is redefined/undefined on a
2529per-compilation basis (ie. in the call to \method{compile()}), then that
2530takes precedence.
2531\end{methoddesc}
2532
2533\begin{methoddesc}{add_link_object}{object}
2534Add \var{object} to the list of object files (or analogues, such as
2535explicitly named library files or the output of ``resource
2536compilers'') to be included in every link driven by this compiler
2537object.
2538\end{methoddesc}
2539
2540\begin{methoddesc}{set_link_objects}{objects}
2541Set the list of object files (or analogues) to be included in
2542every link to \var{objects}. This does not affect any standard object
2543files that the linker may include by default (such as system
2544libraries).
2545\end{methoddesc}
2546
2547The following methods implement methods for autodetection of compiler
2548options, providing some functionality similar to GNU \program{autoconf}.
2549
2550\begin{methoddesc}{detect_language}{sources}
2551Detect the language of a given file, or list of files. Uses the
2552instance attributes \member{language_map} (a dictionary), and
2553\member{language_order} (a list) to do the job.
2554\end{methoddesc}
2555
2556\begin{methoddesc}{find_library_file}{dirs, lib\optional{, debug=\code{0}}}
2557Search the specified list of directories for a static or shared
2558library file \var{lib} and return the full path to that file. If
2559\var{debug} is true, look for a debugging version (if that makes sense on
2560the current platform). Return \code{None} if \var{lib} wasn't found in any of
2561the specified directories.
2562\end{methoddesc}
2563
2564\begin{methoddesc}{has_function}{funcname \optional{, includes=\code{None}, include_dirs=\code{None}, libraries=\code{None}, library_dirs=\code{None}}}
2565Return a boolean indicating whether \var{funcname} is supported on
2566the current platform. The optional arguments can be used to
2567augment the compilation environment by providing additional include
2568files and paths and libraries and paths.
2569\end{methoddesc}
2570
2571\begin{methoddesc}{library_dir_option}{dir}
2572Return the compiler option to add \var{dir} to the list of
2573directories searched for libraries.
2574\end{methoddesc}
2575
2576\begin{methoddesc}{library_option}{lib}
2577Return the compiler option to add \var{dir} to the list of libraries
2578linked into the shared library or executable.
2579\end{methoddesc}
2580
2581\begin{methoddesc}{runtime_library_dir_option}{dir}
2582Return the compiler option to add \var{dir} to the list of
2583directories searched for runtime libraries.
2584\end{methoddesc}
2585
2586\begin{methoddesc}{set_executables}{**args}
2587Define the executables (and options for them) that will be run
2588to perform the various stages of compilation. The exact set of
2589executables that may be specified here depends on the compiler
2590class (via the 'executables' class attribute), but most will have:
2591
2592\begin{tableii}{l|l}{attribute}{attribute}{description}
2593\lineii{compiler}{the C/\Cpp{} compiler}
2594\lineii{linker_so}{linker used to create shared objects and libraries}
2595\lineii{linker_exe}{linker used to create binary executables}
2596\lineii{archiver}{static library creator}
2597\end{tableii}
2598
2599On platforms with a command-line (\UNIX, DOS/Windows), each of these
2600is a string that will be split into executable name and (optional)
2601list of arguments. (Splitting the string is done similarly to how
2602\UNIX{} shells operate: words are delimited by spaces, but quotes and
2603backslashes can override this. See
2604\function{distutils.util.split_quoted()}.)
2605\end{methoddesc}
2606
2607The following methods invoke stages in the build process.
2608
2609\begin{methoddesc}{compile}{sources\optional{, output_dir=\code{None}, macros=\code{None}, include_dirs=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, depends=\code{None}}}
2610Compile one or more source files. Generates object files (e.g.
2611transforms a \file{.c} file to a \file{.o} file.)
2612
2613\var{sources} must be a list of filenames, most likely C/\Cpp
2614files, but in reality anything that can be handled by a
2615particular compiler and compiler class (eg. \class{MSVCCompiler} can
2616handle resource files in \var{sources}). Return a list of object
2617filenames, one per source filename in \var{sources}. Depending on
2618the implementation, not all source files will necessarily be
2619compiled, but all corresponding object filenames will be
2620returned.
2621
2622If \var{output_dir} is given, object files will be put under it, while
2623retaining their original path component. That is, \file{foo/bar.c}
2624normally compiles to \file{foo/bar.o} (for a \UNIX{} implementation); if
2625\var{output_dir} is \var{build}, then it would compile to
2626\file{build/foo/bar.o}.
2627
2628\var{macros}, if given, must be a list of macro definitions. A macro
Fred Drake9687b4d2005-03-10 03:48:14 +00002629definition is either a \code{(\var{name}, \var{value})} 2-tuple or a
2630\code{(\var{name},)} 1-tuple.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002631The former defines a macro; if the value is \code{None}, the macro is
2632defined without an explicit value. The 1-tuple case undefines a
2633macro. Later definitions/redefinitions/undefinitions take
2634precedence.
2635
2636\var{include_dirs}, if given, must be a list of strings, the
2637directories to add to the default include file search path for this
2638compilation only.
2639
2640\var{debug} is a boolean; if true, the compiler will be instructed to
2641output debug symbols in (or alongside) the object file(s).
2642
Fred Drake9687b4d2005-03-10 03:48:14 +00002643\var{extra_preargs} and \var{extra_postargs} are implementation-dependent.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002644On platforms that have the notion of a command-line (e.g. \UNIX,
2645DOS/Windows), they are most likely lists of strings: extra
Raymond Hettinger68804312005-01-01 00:28:46 +00002646command-line arguments to prepend/append to the compiler command
Fred Drake6fca7cc2004-03-23 18:43:03 +00002647line. On other platforms, consult the implementation class
2648documentation. In any event, they are intended as an escape hatch
2649for those occasions when the abstract compiler framework doesn't
2650cut the mustard.
2651
2652\var{depends}, if given, is a list of filenames that all targets
2653depend on. If a source file is older than any file in
2654depends, then the source file will be recompiled. This
2655supports dependency tracking, but only at a coarse
2656granularity.
2657
2658Raises \exception{CompileError} on failure.
2659\end{methoddesc}
2660
2661\begin{methoddesc}{create_static_lib}{objects, output_libname\optional{, output_dir=\code{None}, debug=\code{0}, target_lang=\code{None}}}
2662Link a bunch of stuff together to create a static library file.
2663The ``bunch of stuff'' consists of the list of object files supplied
2664as \var{objects}, the extra object files supplied to
2665\method{add_link_object()} and/or \method{set_link_objects()}, the libraries
2666supplied to \method{add_library()} and/or \method{set_libraries()}, and the
2667libraries supplied as \var{libraries} (if any).
2668
2669\var{output_libname} should be a library name, not a filename; the
2670filename will be inferred from the library name. \var{output_dir} is
2671the directory where the library file will be put. XXX defaults to what?
2672
2673\var{debug} is a boolean; if true, debugging information will be
2674included in the library (note that on most platforms, it is the
2675compile step where this matters: the \var{debug} flag is included here
2676just for consistency).
2677
2678\var{target_lang} is the target language for which the given objects
2679are being compiled. This allows specific linkage time treatment of
2680certain languages.
2681
2682Raises \exception{LibError} on failure.
2683\end{methoddesc}
2684
2685\begin{methoddesc}{link}{target_desc, objects, output_filename\optional{, output_dir=\code{None}, libraries=\code{None}, library_dirs=\code{None}, runtime_library_dirs=\code{None}, export_symbols=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, build_temp=\code{None}, target_lang=\code{None}}}
2686Link a bunch of stuff together to create an executable or
2687shared library file.
2688
2689The ``bunch of stuff'' consists of the list of object files supplied
2690as \var{objects}. \var{output_filename} should be a filename. If
2691\var{output_dir} is supplied, \var{output_filename} is relative to it
2692(i.e. \var{output_filename} can provide directory components if
2693needed).
2694
2695\var{libraries} is a list of libraries to link against. These are
2696library names, not filenames, since they're translated into
2697filenames in a platform-specific way (eg. \var{foo} becomes \file{libfoo.a}
2698on \UNIX{} and \file{foo.lib} on DOS/Windows). However, they can include a
2699directory component, which means the linker will look in that
2700specific directory rather than searching all the normal locations.
2701
2702\var{library_dirs}, if supplied, should be a list of directories to
2703search for libraries that were specified as bare library names
2704(ie. no directory component). These are on top of the system
2705default and those supplied to \method{add_library_dir()} and/or
2706\method{set_library_dirs()}. \var{runtime_library_dirs} is a list of
2707directories that will be embedded into the shared library and used
2708to search for other shared libraries that *it* depends on at
2709run-time. (This may only be relevant on \UNIX.)
2710
2711\var{export_symbols} is a list of symbols that the shared library will
2712export. (This appears to be relevant only on Windows.)
2713
2714\var{debug} is as for \method{compile()} and \method{create_static_lib()},
2715with the slight distinction that it actually matters on most platforms (as
2716opposed to \method{create_static_lib()}, which includes a \var{debug} flag
2717mostly for form's sake).
2718
2719\var{extra_preargs} and \var{extra_postargs} are as for \method{compile()}
2720(except of course that they supply command-line arguments for the
2721particular linker being used).
2722
2723\var{target_lang} is the target language for which the given objects
2724are being compiled. This allows specific linkage time treatment of
2725certain languages.
2726
2727Raises \exception{LinkError} on failure.
2728\end{methoddesc}
2729
2730\begin{methoddesc}{link_executable}{objects, output_progname\optional{, output_dir=\code{None}, libraries=\code{None}, library_dirs=\code{None}, runtime_library_dirs=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, target_lang=\code{None}}}
2731Link an executable.
2732\var{output_progname} is the name of the file executable,
2733while \var{objects} are a list of object filenames to link in. Other arguments
2734are as for the \method{link} method.
2735\end{methoddesc}
2736
2737\begin{methoddesc}{link_shared_lib}{objects, output_libname\optional{, output_dir=\code{None}, libraries=\code{None}, library_dirs=\code{None}, runtime_library_dirs=\code{None}, export_symbols=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, build_temp=\code{None}, target_lang=\code{None}}}
2738Link a shared library. \var{output_libname} is the name of the output
2739library, while \var{objects} is a list of object filenames to link in.
2740Other arguments are as for the \method{link} method.
2741\end{methoddesc}
2742
2743\begin{methoddesc}{link_shared_object}{objects, output_filename\optional{, output_dir=\code{None}, libraries=\code{None}, library_dirs=\code{None}, runtime_library_dirs=\code{None}, export_symbols=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, build_temp=\code{None}, target_lang=\code{None}}}
2744Link a shared object. \var{output_filename} is the name of the shared object
2745that will be created, while \var{objects} is a list of object filenames
2746to link in. Other arguments are as for the \method{link} method.
2747\end{methoddesc}
2748
2749\begin{methoddesc}{preprocess}{source\optional{, output_file=\code{None}, macros=\code{None}, include_dirs=\code{None}, extra_preargs=\code{None}, extra_postargs=\code{None}}}
2750Preprocess a single C/\Cpp{} source file, named in \var{source}.
2751Output will be written to file named \var{output_file}, or \var{stdout} if
2752\var{output_file} not supplied. \var{macros} is a list of macro
2753definitions as for \method{compile()}, which will augment the macros set
2754with \method{define_macro()} and \method{undefine_macro()}.
2755\var{include_dirs} is a list of directory names that will be added to the
2756default list, in the same way as \method{add_include_dir()}.
2757
2758Raises \exception{PreprocessError} on failure.
2759\end{methoddesc}
2760
2761The following utility methods are defined by the \class{CCompiler} class,
2762for use by the various concrete subclasses.
2763
2764\begin{methoddesc}{executable_filename}{basename\optional{, strip_dir=\code{0}, output_dir=\code{''}}}
2765Returns the filename of the executable for the given \var{basename}.
2766Typically for non-Windows platforms this is the same as the basename,
2767while Windows will get a \file{.exe} added.
2768\end{methoddesc}
2769
2770\begin{methoddesc}{library_filename}{libname\optional{, lib_type=\code{'static'}, strip_dir=\code{0}, output_dir=\code{''}}}
2771Returns the filename for the given library name on the current platform.
2772On \UNIX{} a library with \var{lib_type} of \code{'static'} will typically
2773be of the form \file{liblibname.a}, while a \var{lib_type} of \code{'dynamic'}
2774will be of the form \file{liblibname.so}.
2775\end{methoddesc}
2776
2777\begin{methoddesc}{object_filenames}{source_filenames\optional{, strip_dir=\code{0}, output_dir=\code{''}}}
2778Returns the name of the object files for the given source files.
2779\var{source_filenames} should be a list of filenames.
2780\end{methoddesc}
2781
2782\begin{methoddesc}{shared_object_filename}{basename\optional{, strip_dir=\code{0}, output_dir=\code{''}}}
2783Returns the name of a shared object file for the given file name \var{basename}.
2784\end{methoddesc}
2785
2786\begin{methoddesc}{execute}{func, args\optional{, msg=\code{None}, level=\code{1}}}
2787Invokes \function{distutils.util.execute()} This method invokes a
2788Python function \var{func} with the given arguments \var{args}, after
2789logging and taking into account the \var{dry_run} flag. XXX see also.
2790\end{methoddesc}
2791
2792\begin{methoddesc}{spawn}{cmd}
2793Invokes \function{distutils.util.spawn()}. This invokes an external
2794process to run the given command. XXX see also.
2795\end{methoddesc}
2796
2797\begin{methoddesc}{mkpath}{name\optional{, mode=\code{511}}}
2798
2799Invokes \function{distutils.dir_util.mkpath()}. This creates a directory
2800and any missing ancestor directories. XXX see also.
2801\end{methoddesc}
2802
2803\begin{methoddesc}{move_file}{src, dst}
2804Invokes \method{distutils.file_util.move_file()}. Renames \var{src} to
2805\var{dst}. XXX see also.
2806\end{methoddesc}
2807
2808\begin{methoddesc}{announce}{msg\optional{, level=\code{1}}}
2809Write a message using \function{distutils.log.debug()}. XXX see also.
2810\end{methoddesc}
2811
2812\begin{methoddesc}{warn}{msg}
2813Write a warning message \var{msg} to standard error.
2814\end{methoddesc}
2815
2816\begin{methoddesc}{debug_print}{msg}
2817If the \var{debug} flag is set on this \class{CCompiler} instance, print
2818\var{msg} to standard output, otherwise do nothing.
2819\end{methoddesc}
2820
2821\end{classdesc}
2822
2823%\subsection{Compiler-specific modules}
2824%
2825%The following modules implement concrete subclasses of the abstract
2826%\class{CCompiler} class. They should not be instantiated directly, but should
2827%be created using \function{distutils.ccompiler.new_compiler()} factory
2828%function.
2829
2830\section{\module{distutils.unixccompiler} --- Unix C Compiler}
2831\declaremodule{standard}{distutils.unixccompiler}
2832\modulesynopsis{UNIX C Compiler}
2833
2834This module provides the \class{UnixCCompiler} class, a subclass of
2835\class{CCompiler} that handles the typical \UNIX-style command-line
2836C compiler:
2837
2838\begin{itemize}
2839\item macros defined with \programopt{-D\var{name}\optional{=value}}
2840\item macros undefined with \programopt{-U\var{name}}
2841\item include search directories specified with
2842 \programopt{-I\var{dir}}
2843\item libraries specified with \programopt{-l\var{lib}}
2844\item library search directories specified with \programopt{-L\var{dir}}
2845\item compile handled by \program{cc} (or similar) executable with
2846 \programopt{-c} option: compiles \file{.c} to \file{.o}
2847\item link static library handled by \program{ar} command (possibly
2848 with \program{ranlib})
2849\item link shared library handled by \program{cc} \programopt{-shared}
2850\end{itemize}
2851
2852\section{\module{distutils.msvccompiler} --- Microsoft Compiler}
2853\declaremodule{standard}{distutils.msvccompiler}
2854\modulesynopsis{Microsoft Compiler}
2855
2856This module provides \class{MSVCCompiler}, an implementation of the abstract
2857\class{CCompiler} class for Microsoft Visual Studio. It should also work using
2858the freely available compiler provided as part of the .Net SDK download. XXX
2859download link.
2860
2861\section{\module{distutils.bcppcompiler} --- Borland Compiler}
2862\declaremodule{standard}{distutils.bcppcompiler}
2863This module provides \class{BorlandCCompiler}, an subclass of the abstract \class{CCompiler} class for the Borland \Cpp{} compiler.
2864
2865\section{\module{distutils.cygwincompiler} --- Cygwin Compiler}
2866\declaremodule{standard}{distutils.cygwinccompiler}
2867
2868This module provides the \class{CygwinCCompiler} class, a subclass of \class{UnixCCompiler} that
2869handles the Cygwin port of the GNU C compiler to Windows. It also contains
2870the Mingw32CCompiler class which handles the mingw32 port of GCC (same as
2871cygwin in no-cygwin mode).
2872
2873\section{\module{distutils.emxccompiler} --- OS/2 EMX Compiler}
2874\declaremodule{standard}{distutils.emxccompiler}
2875\modulesynopsis{OS/2 EMX Compiler support}
2876
2877This module provides the EMXCCompiler class, a subclass of \class{UnixCCompiler} that handles the EMX port of the GNU C compiler to OS/2.
2878
2879\section{\module{distutils.mwerkscompiler} --- Metrowerks CodeWarrior support}
2880\declaremodule{standard}{distutils.mwerkscompiler}
2881\modulesynopsis{Metrowerks CodeWarrior support}
2882
2883Contains \class{MWerksCompiler}, an implementation of the abstract
Brett Cannon7706c2d2005-02-13 22:50:04 +00002884\class{CCompiler} class for MetroWerks CodeWarrior on the pre-Mac OS X Macintosh.
2885Needs work to support CW on Windows or Mac OS X.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002886
2887
2888%\subsection{Utility modules}
2889%
2890%The following modules all provide general utility functions. They haven't
2891%all been documented yet.
2892
2893\section{\module{distutils.archive_util} ---
2894 Archiving utilities}
2895\declaremodule[distutils.archiveutil]{standard}{distutils.archive_util}
2896\modulesynopsis{Utility functions for creating archive files (tarballs, zip files, ...)}
2897
2898This module provides a few functions for creating archive files, such as
2899tarballs or zipfiles.
2900
2901\begin{funcdesc}{make_archive}{base_name, format\optional{, root_dir=\code{None}, base_dir=\code{None}, verbose=\code{0}, dry_run=\code{0}}}
2902Create an archive file (eg. \code{zip} or \code{tar}). \var{base_name}
2903is the name of the file to create, minus any format-specific extension;
2904\var{format} is the archive format: one of \code{zip}, \code{tar},
2905\code{ztar}, or \code{gztar}.
2906\var{root_dir} is a directory that will be the root directory of the
2907archive; ie. we typically \code{chdir} into \var{root_dir} before
2908creating the archive. \var{base_dir} is the directory where we start
2909archiving from; ie. \var{base_dir} will be the common prefix of all files and
2910directories in the archive. \var{root_dir} and \var{base_dir} both default
2911to the current directory. Returns the name of the archive file.
2912
2913\warning{This should be changed to support bz2 files}
2914\end{funcdesc}
2915
2916\begin{funcdesc}{make_tarball}{base_name, base_dir\optional{, compress=\code{'gzip'}, verbose=\code{0}, dry_run=\code{0}}}'Create an (optional compressed) archive as a tar file from all files in and under \var{base_dir}. \var{compress} must be \code{'gzip'} (the default),
Fred Drake9687b4d2005-03-10 03:48:14 +00002917\code{'compress'}, \code{'bzip2'}, or \code{None}. Both \program{tar}
2918and the compression utility named by \var{compress} must be on the
Fred Drake6fca7cc2004-03-23 18:43:03 +00002919default program search path, so this is probably \UNIX-specific. The
2920output tar file will be named \file{\var{base_dir}.tar}, possibly plus
2921the appropriate compression extension (\file{.gz}, \file{.bz2} or
2922\file{.Z}). Return the output filename.
2923
2924\warning{This should be replaced with calls to the \module{tarfile} module.}
2925\end{funcdesc}
2926
2927\begin{funcdesc}{make_zipfile}{base_name, base_dir\optional{, verbose=\code{0}, dry_run=\code{0}}}
2928Create a zip file from all files in and under \var{base_dir}. The output
2929zip file will be named \var{base_dir} + \file{.zip}. Uses either the
2930\module{zipfile} Python module (if available) or the InfoZIP \file{zip}
2931utility (if installed and found on the default search path). If neither
2932tool is available, raises \exception{DistutilsExecError}.
2933Returns the name of the output zip file.
2934\end{funcdesc}
2935
2936\section{\module{distutils.dep_util} --- Dependency checking}
2937\declaremodule[distutils.deputil]{standard}{distutils.dep_util}
2938\modulesynopsis{Utility functions for simple dependency checking}
2939
2940This module provides functions for performing simple, timestamp-based
2941dependency of files and groups of files; also, functions based entirely
2942on such timestamp dependency analysis.
2943
2944\begin{funcdesc}{newer}{source, target}
2945Return true if \var{source} exists and is more recently modified than
2946\var{target}, or if \var{source} exists and \var{target} doesn't.
2947Return false if both exist and \var{target} is the same age or newer
2948than \var{source}.
2949Raise \exception{DistutilsFileError} if \var{source} does not exist.
2950\end{funcdesc}
2951
2952\begin{funcdesc}{newer_pairwise}{sources, targets}
2953Walk two filename lists in parallel, testing if each source is newer
2954than its corresponding target. Return a pair of lists (\var{sources},
2955\var{targets}) where source is newer than target, according to the semantics
2956of \function{newer()}
2957%% equivalent to a listcomp...
2958\end{funcdesc}
2959
2960\begin{funcdesc}{newer_group}{sources, target\optional{, missing=\code{'error'}}}
2961Return true if \var{target} is out-of-date with respect to any file
2962listed in \var{sources} In other words, if \var{target} exists and is newer
2963than every file in \var{sources}, return false; otherwise return true.
2964\var{missing} controls what we do when a source file is missing; the
2965default (\code{'error'}) is to blow up with an \exception{OSError} from
2966inside \function{os.stat()};
2967if it is \code{'ignore'}, we silently drop any missing source files; if it is
2968\code{'newer'}, any missing source files make us assume that \var{target} is
2969out-of-date (this is handy in ``dry-run'' mode: it'll make you pretend to
2970carry out commands that wouldn't work because inputs are missing, but
2971that doesn't matter because you're not actually going to run the
2972commands).
2973\end{funcdesc}
2974
2975\section{\module{distutils.dir_util} --- Directory tree operations}
2976\declaremodule[distutils.dirutil]{standard}{distutils.dir_util}
2977\modulesynopsis{Utility functions for operating on directories and directory trees}
2978
2979This module provides functions for operating on directories and trees
2980of directories.
2981
2982\begin{funcdesc}{mkpath}{name\optional{, mode=\code{0777}, verbose=\code{0}, dry_run=\code{0}}}
2983Create a directory and any missing ancestor directories. If the
2984directory already exists (or if \var{name} is the empty string, which
2985means the current directory, which of course exists), then do
2986nothing. Raise \exception{DistutilsFileError} if unable to create some
2987directory along the way (eg. some sub-path exists, but is a file
2988rather than a directory). If \var{verbose} is true, print a one-line
2989summary of each mkdir to stdout. Return the list of directories
2990actually created.
2991\end{funcdesc}
2992
2993\begin{funcdesc}{create_tree}{base_dir, files\optional{, mode=\code{0777}, verbose=\code{0}, dry_run=\code{0}}}
2994Create all the empty directories under \var{base_dir} needed to
2995put \var{files} there. \var{base_dir} is just the a name of a directory
2996which doesn't necessarily exist yet; \var{files} is a list of filenames
2997to be interpreted relative to \var{base_dir}. \var{base_dir} + the
2998directory portion of every file in \var{files} will be created if it
2999doesn't already exist. \var{mode}, \var{verbose} and \var{dry_run} flags
3000are as for \function{mkpath()}.
3001\end{funcdesc}
3002
3003\begin{funcdesc}{copy_tree}{src, dst\optional{preserve_mode=\code{1}, preserve_times=\code{1}, preserve_symlinks=\code{0}, update=\code{0}, verbose=\code{0}, dry_run=\code{0}}}
3004Copy an entire directory tree \var{src} to a new location \var{dst}. Both
3005\var{src} and \var{dst} must be directory names. If \var{src} is not a
3006directory, raise \exception{DistutilsFileError}. If \var{dst} does
Fred Drake9687b4d2005-03-10 03:48:14 +00003007not exist, it is created with \function{mkpath()}. The end result of the
Fred Drake6fca7cc2004-03-23 18:43:03 +00003008copy is that every file in \var{src} is copied to \var{dst}, and
3009directories under \var{src} are recursively copied to \var{dst}.
3010Return the list of files that were copied or might have been copied,
3011using their output name. The return value is unaffected by \var{update}
3012or \var{dry_run}: it is simply the list of all files under \var{src},
3013with the names changed to be under \var{dst}.
3014
3015\var{preserve_mode} and \var{preserve_times} are the same as for
3016\function{copy_file} in \refmodule[distutils.fileutil]{distutils.file_util};
3017note that they only apply to regular files, not to directories. If
3018\var{preserve_symlinks} is true, symlinks will be copied as symlinks
3019(on platforms that support them!); otherwise (the default), the
3020destination of the symlink will be copied. \var{update} and
3021\var{verbose} are the same as for
3022\function{copy_file()}.
3023\end{funcdesc}
3024
3025\begin{funcdesc}{remove_tree}{directory\optional{verbose=\code{0}, dry_run=\code{0}}}
3026Recursively remove \var{directory} and all files and directories underneath
Fred Drake9687b4d2005-03-10 03:48:14 +00003027it. Any errors are ignored (apart from being reported to \code{sys.stdout} if
Fred Drake6fca7cc2004-03-23 18:43:03 +00003028\var{verbose} is true).
3029\end{funcdesc}
3030
3031\XXX{Some of this could be replaced with the shutil module?}
3032
3033\section{\module{distutils.file_util} --- Single file operations}
3034\declaremodule[distutils.fileutil]{standard}{distutils.file_util}
3035\modulesynopsis{Utility functions for operating on single files}
3036
3037This module contains some utility functions for operating on individual files.
3038
3039\begin{funcdesc}{copy_file}{src, dst\optional{preserve_mode=\code{1}, preserve_times=\code{1}, update=\code{0}, link=\code{None}, verbose=\code{0}, dry_run=\code{0}}}
3040Copy file \var{src} to \var{dst}. If \var{dst} is a directory, then
3041\var{src} is copied there with the same name; otherwise, it must be a
3042filename. (If the file exists, it will be ruthlessly clobbered.) If
3043\var{preserve_mode} is true (the default), the file's mode (type and
3044permission bits, or whatever is analogous on the current platform) is
3045copied. If \var{preserve_times} is true (the default), the last-modified
3046and last-access times are copied as well. If \var{update} is true,
3047\var{src} will only be copied if \var{dst} does not exist, or if
3048\var{dst} does exist but is older than \var{src}.
3049
3050\var{link} allows you to make hard links (using \function{os.link}) or
3051symbolic links (using \function{os.symlink}) instead of copying: set it
3052to \code{'hard'} or \code{'sym'}; if it is \code{None} (the default),
3053files are copied. Don't set \var{link} on systems that don't support
3054it: \function{copy_file()} doesn't check if hard or symbolic linking is
Fred Drake9687b4d2005-03-10 03:48:14 +00003055available. It uses \function{_copy_file_contents()} to copy file contents.
Fred Drake6fca7cc2004-03-23 18:43:03 +00003056
3057Return a tuple \samp{(dest_name, copied)}: \var{dest_name} is the actual
3058name of the output file, and \var{copied} is true if the file was copied
3059(or would have been copied, if \var{dry_run} true).
3060% XXX if the destination file already exists, we clobber it if
3061% copying, but blow up if linking. Hmmm. And I don't know what
3062% macostools.copyfile() does. Should definitely be consistent, and
3063% should probably blow up if destination exists and we would be
3064% changing it (ie. it's not already a hard/soft link to src OR
3065% (not update) and (src newer than dst)).
3066\end{funcdesc}
3067
3068\begin{funcdesc}{move_file}{src, dst\optional{verbose, dry_run}}
3069Move file \var{src} to \var{dst}. If \var{dst} is a directory, the file will
3070be moved into it with the same name; otherwise, \var{src} is just renamed
3071to \var{dst}. Returns the new full name of the file.
3072\warning{Handles cross-device moves on Unix using \function{copy_file()}.
3073What about other systems???}
3074\end{funcdesc}
3075
3076\begin{funcdesc}{write_file}{filename, contents}
3077Create a file called \var{filename} and write \var{contents} (a
3078sequence of strings without line terminators) to it.
3079\end{funcdesc}
3080
Thomas Heller949f6612004-06-18 06:55:28 +00003081\section{\module{distutils.util} --- Miscellaneous other utility functions}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003082\declaremodule{standard}{distutils.util}
3083\modulesynopsis{Miscellaneous other utility functions}
3084
3085This module contains other assorted bits and pieces that don't fit into
3086any other utility module.
3087
3088\begin{funcdesc}{get_platform}{}
3089Return a string that identifies the current platform. This is used
3090mainly to distinguish platform-specific build directories and
3091platform-specific built distributions. Typically includes the OS name
3092and version and the architecture (as supplied by 'os.uname()'),
3093although the exact information included depends on the OS; eg. for IRIX
3094the architecture isn't particularly important (IRIX only runs on SGI
3095hardware), but for Linux the kernel version isn't particularly
3096important.
3097
3098Examples of returned values:
3099\begin{itemize}
3100\item \code{linux-i586}
3101\item \code{linux-alpha}
3102\item \code{solaris-2.6-sun4u}
3103\item \code{irix-5.3}
3104\item \code{irix64-6.2}
3105\end{itemize}
3106
3107For non-\POSIX{} platforms, currently just returns \code{sys.platform}.
3108% XXX isn't this also provided by some other non-distutils module?
3109\end{funcdesc}
3110
3111\begin{funcdesc}{convert_path}{pathname}
3112Return 'pathname' as a name that will work on the native filesystem,
3113i.e. split it on '/' and put it back together again using the current
3114directory separator. Needed because filenames in the setup script are
3115always supplied in Unix style, and have to be converted to the local
3116convention before we can actually use them in the filesystem. Raises
3117\exception{ValueError} on non-\UNIX-ish systems if \var{pathname} either
3118starts or ends with a slash.
3119\end{funcdesc}
3120
3121\begin{funcdesc}{change_root}{new_root, pathname}
3122Return \var{pathname} with \var{new_root} prepended. If \var{pathname} is
3123relative, this is equivalent to \samp{os.path.join(new_root,pathname)}
3124Otherwise, it requires making \var{pathname} relative and then joining the
Brett Cannon7706c2d2005-02-13 22:50:04 +00003125two, which is tricky on DOS/Windows.
Fred Drake6fca7cc2004-03-23 18:43:03 +00003126\end{funcdesc}
3127
3128\begin{funcdesc}{check_environ}{}
3129Ensure that 'os.environ' has all the environment variables we
3130guarantee that users can use in config files, command-line options,
3131etc. Currently this includes:
3132\begin{itemize}
3133\item \envvar{HOME} - user's home directory (\UNIX{} only)
3134\item \envvar{PLAT} - description of the current platform, including
3135 hardware and OS (see \function{get_platform()})
3136\end{itemize}
3137\end{funcdesc}
3138
3139\begin{funcdesc}{subst_vars}{s, local_vars}
3140Perform shell/Perl-style variable substitution on \var{s}. Every
3141occurrence of \code{\$} followed by a name is considered a variable, and
3142variable is substituted by the value found in the \var{local_vars}
3143dictionary, or in \code{os.environ} if it's not in \var{local_vars}.
3144\var{os.environ} is first checked/augmented to guarantee that it contains
3145certain values: see \function{check_environ()}. Raise \exception{ValueError}
3146for any variables not found in either \var{local_vars} or \code{os.environ}.
3147
3148Note that this is not a fully-fledged string interpolation function. A
3149valid \code{\$variable} can consist only of upper and lower case letters,
3150numbers and an underscore. No \{ \} or \( \) style quoting is available.
3151\end{funcdesc}
3152
3153\begin{funcdesc}{grok_environment_error}{exc\optional{, prefix=\samp{'error: '}}}
3154Generate a useful error message from an \exception{EnvironmentError}
3155(\exception{IOError} or \exception{OSError}) exception object.
3156Handles Python 1.5.1 and later styles, and does what it can to deal with
3157exception objects that don't have a filename (which happens when the error
3158is due to a two-file operation, such as \function{rename()} or
3159\function{link()}). Returns the error message as a string prefixed
3160with \var{prefix}.
3161\end{funcdesc}
3162
3163\begin{funcdesc}{split_quoted}{s}
3164Split a string up according to Unix shell-like rules for quotes and
3165backslashes. In short: words are delimited by spaces, as long as those
3166spaces are not escaped by a backslash, or inside a quoted string.
3167Single and double quotes are equivalent, and the quote characters can
3168be backslash-escaped. The backslash is stripped from any two-character
3169escape sequence, leaving only the escaped character. The quote
3170characters are stripped from any quoted string. Returns a list of
3171words.
3172% Should probably be moved into the standard library.
3173\end{funcdesc}
3174
3175\begin{funcdesc}{execute}{func, args\optional{, msg=\code{None}, verbose=\code{0}, dry_run=\code{0}}}
3176Perform some action that affects the outside world (for instance,
3177writing to the filesystem). Such actions are special because they
3178are disabled by the \var{dry_run} flag. This method takes
3179care of all that bureaucracy for you; all you have to do is supply the
3180function to call and an argument tuple for it (to embody the
3181``external action'' being performed), and an optional message to
3182print.
3183\end{funcdesc}
3184
3185\begin{funcdesc}{strtobool}{val}
3186Convert a string representation of truth to true (1) or false (0).
3187
3188True values are \code{y}, \code{yes}, \code{t}, \code{true}, \code{on}
3189and \code{1}; false values are \code{n}, \code{no}, \code{f}, \code{false},
3190\code{off} and \code{0}. Raises \exception{ValueError} if \var{val}
3191is anything else.
3192\end{funcdesc}
3193
3194\begin{funcdesc}{byte_compile}{py_files\optional{,
3195 optimize=\code{0}, force=\code{0},
3196 prefix=\code{None}, base_dir=\code{None},
3197 verbose=\code{1}, dry_run=\code{0},
3198 direct=\code{None}}}
3199Byte-compile a collection of Python source files to either \file{.pyc}
3200or \file{.pyo} files in the same directory. \var{py_files} is a list of files
3201to compile; any files that don't end in \file{.py} are silently skipped.
3202\var{optimize} must be one of the following:
3203\begin{itemize}
3204\item \code{0} - don't optimize (generate \file{.pyc})
3205\item \code{1} - normal optimization (like \samp{python -O})
3206\item \code{2} - extra optimization (like \samp{python -OO})
3207\end{itemize}
3208
3209If \var{force} is true, all files are recompiled regardless of
3210timestamps.
3211
3212The source filename encoded in each bytecode file defaults to the
3213filenames listed in \var{py_files}; you can modify these with \var{prefix} and
3214\var{basedir}. \var{prefix} is a string that will be stripped off of each
3215source filename, and \var{base_dir} is a directory name that will be
3216prepended (after \var{prefix} is stripped). You can supply either or both
3217(or neither) of \var{prefix} and \var{base_dir}, as you wish.
3218
3219If \var{dry_run} is true, doesn't actually do anything that would
3220affect the filesystem.
3221
3222Byte-compilation is either done directly in this interpreter process
3223with the standard \module{py_compile} module, or indirectly by writing a
3224temporary script and executing it. Normally, you should let
3225\function{byte_compile()} figure out to use direct compilation or not (see
3226the source for details). The \var{direct} flag is used by the script
3227generated in indirect mode; unless you know what you're doing, leave
3228it set to \code{None}.
3229\end{funcdesc}
3230
3231\begin{funcdesc}{rfc822_escape}{header}
3232Return a version of \var{header} escaped for inclusion in an
3233\rfc{822} header, by ensuring there are 8 spaces space after each newline.
3234Note that it does no other modification of the string.
3235% this _can_ be replaced
3236\end{funcdesc}
3237
3238%\subsection{Distutils objects}
3239
3240\section{\module{distutils.dist} --- The Distribution class}
3241\declaremodule{standard}{distutils.dist}
3242\modulesynopsis{Provides the Distribution class, which represents the
3243 module distribution being built/installed/distributed}
3244
3245This module provides the \class{Distribution} class, which represents
3246the module distribution being built/installed/distributed.
3247
3248
3249\section{\module{distutils.extension} --- The Extension class}
3250\declaremodule{standard}{distutils.extension}
3251\modulesynopsis{Provides the Extension class, used to describe
3252 C/\Cpp{} extension modules in setup scripts}
3253
3254This module provides the \class{Extension} class, used to describe
3255C/\Cpp{} extension modules in setup scripts.
3256
3257%\subsection{Ungrouped modules}
3258%The following haven't been moved into a more appropriate section yet.
3259
3260\section{\module{distutils.debug} --- Distutils debug mode}
3261\declaremodule{standard}{distutils.debug}
3262\modulesynopsis{Provides the debug flag for distutils}
3263
3264This module provides the DEBUG flag.
3265
3266\section{\module{distutils.errors} --- Distutils exceptions}
3267\declaremodule{standard}{distutils.errors}
3268\modulesynopsis{Provides standard distutils exceptions}
3269
3270Provides exceptions used by the Distutils modules. Note that Distutils
3271modules may raise standard exceptions; in particular, SystemExit is
3272usually raised for errors that are obviously the end-user's fault
3273(eg. bad command-line arguments).
3274
3275This module is safe to use in \samp{from ... import *} mode; it only exports
3276symbols whose names start with \code{Distutils} and end with \code{Error}.
3277
3278\section{\module{distutils.fancy_getopt}
3279 --- Wrapper around the standard getopt module}
3280\declaremodule[distutils.fancygetopt]{standard}{distutils.fancy_getopt}
3281\modulesynopsis{Additional \module{getopt} functionality}
3282
3283This module provides a wrapper around the standard \module{getopt}
3284module that provides the following additional features:
3285
3286\begin{itemize}
3287\item short and long options are tied together
3288\item options have help strings, so \function{fancy_getopt} could potentially
3289create a complete usage summary
3290\item options set attributes of a passed-in object
3291\item boolean options can have ``negative aliases'' --- eg. if
3292\longprogramopt{quiet} is the ``negative alias'' of
3293\longprogramopt{verbose}, then \longprogramopt{quiet} on the command
3294line sets \var{verbose} to false.
3295
3296\end{itemize}
3297
3298\XXX{Should be replaced with \module{optik} (which is also now
3299known as \module{optparse} in Python 2.3 and later).}
3300
3301\begin{funcdesc}{fancy_getopt}{options, negative_opt, object, args}
3302Wrapper function. \var{options} is a list of
3303\samp{(long_option, short_option, help_string)} 3-tuples as described in the
3304constructor for \class{FancyGetopt}. \var{negative_opt} should be a dictionary
3305mapping option names to option names, both the key and value should be in the
3306\var{options} list. \var{object} is an object which will be used to store
3307values (see the \method{getopt()} method of the \class{FancyGetopt} class).
3308\var{args} is the argument list. Will use \code{sys.argv[1:]} if you
3309pass \code{None} as \var{args}.
3310\end{funcdesc}
3311
3312\begin{funcdesc}{wrap_text}{text, width}
3313Wraps \var{text} to less than \var{width} wide.
3314
3315\warning{Should be replaced with \module{textwrap} (which is available
3316in Python 2.3 and later).}
3317\end{funcdesc}
3318
3319\begin{classdesc}{FancyGetopt}{\optional{option_table=\code{None}}}
3320The option_table is a list of 3-tuples: \samp{(long_option,
3321short_option, help_string)}
3322
3323If an option takes an argument, it's \var{long_option} should have \code{'='}
3324appended; \var{short_option} should just be a single character, no \code{':'}
3325in any case. \var{short_option} should be \code{None} if a \var{long_option}
3326doesn't have a corresponding \var{short_option}. All option tuples must have
3327long options.
3328\end{classdesc}
3329
3330The \class{FancyGetopt} class provides the following methods:
3331
3332\begin{methoddesc}{getopt}{\optional{args=\code{None}, object=\code{None}}}
3333Parse command-line options in args. Store as attributes on \var{object}.
3334
3335If \var{args} is \code{None} or not supplied, uses \code{sys.argv[1:]}. If
3336\var{object} is \code{None} or not supplied, creates a new \class{OptionDummy}
3337instance, stores option values there, and returns a tuple \samp{(args,
3338object)}. If \var{object} is supplied, it is modified in place and
3339\function{getopt()} just returns \var{args}; in both cases, the returned
3340\var{args} is a modified copy of the passed-in \var{args} list, which
3341is left untouched.
3342% and args returned are?
3343\end{methoddesc}
3344
3345\begin{methoddesc}{get_option_order}{}
3346Returns the list of \samp{(option, value)} tuples processed by the
3347previous run of \method{getopt()} Raises \exception{RuntimeError} if
3348\method{getopt()} hasn't been called yet.
3349\end{methoddesc}
3350
3351\begin{methoddesc}{generate_help}{\optional{header=\code{None}}}
3352Generate help text (a list of strings, one per suggested line of
3353output) from the option table for this \class{FancyGetopt} object.
3354
3355If supplied, prints the supplied \var{header} at the top of the help.
3356\end{methoddesc}
3357
3358\section{\module{distutils.filelist} --- The FileList class}
3359\declaremodule{standard}{distutils.filelist}
3360\modulesynopsis{The \class{FileList} class, used for poking about the
3361 file system and building lists of files.}
3362
3363This module provides the \class{FileList} class, used for poking about
3364the filesystem and building lists of files.
3365
3366
3367\section{\module{distutils.log} --- Simple PEP 282-style logging}
3368\declaremodule{standard}{distutils.log}
3369\modulesynopsis{A simple logging mechanism, \pep{282}-style}
3370
3371\warning{Should be replaced with standard \module{logging} module.}
3372
3373%\subsubsection{\module{} --- }
3374%\declaremodule{standard}{distutils.magic}
3375%\modulesynopsis{ }
3376
3377
3378\section{\module{distutils.spawn} --- Spawn a sub-process}
3379\declaremodule{standard}{distutils.spawn}
3380\modulesynopsis{Provides the spawn() function}
3381
3382This module provides the \function{spawn()} function, a front-end to
3383various platform-specific functions for launching another program in a
3384sub-process.
3385Also provides \function{find_executable()} to search the path for a given
3386executable name.
3387
3388
Fred Drakeab70b382001-08-02 15:13:15 +00003389\input{sysconfig}
Greg Ward16aafcd2000-04-09 04:06:44 +00003390
3391
Fred Drake6fca7cc2004-03-23 18:43:03 +00003392\section{\module{distutils.text_file} --- The TextFile class}
3393\declaremodule[distutils.textfile]{standard}{distutils.text_file}
3394\modulesynopsis{provides the TextFile class, a simple interface to text files}
3395
3396This module provides the \class{TextFile} class, which gives an interface
3397to text files that (optionally) takes care of stripping comments, ignoring
3398blank lines, and joining lines with backslashes.
3399
3400\begin{classdesc}{TextFile}{\optional{filename=\code{None}, file=\code{None}, **options}}
3401This class provides a file-like object that takes care of all
3402the things you commonly want to do when processing a text file
3403that has some line-by-line syntax: strip comments (as long as \code{\#}
3404is your comment character), skip blank lines, join adjacent lines by
3405escaping the newline (ie. backslash at end of line), strip
3406leading and/or trailing whitespace. All of these are optional
3407and independently controllable.
3408
3409The class provides a \method{warn()} method so you can generate
3410warning messages that report physical line number, even if the
3411logical line in question spans multiple physical lines. Also
3412provides \method{unreadline()} for implementing line-at-a-time lookahead.
3413
3414\class{TextFile} instances are create with either \var{filename}, \var{file},
3415or both. \exception{RuntimeError} is raised if both are \code{None}.
3416\var{filename} should be a string, and \var{file} a file object (or
3417something that provides \method{readline()} and \method{close()}
3418methods). It is recommended that you supply at least \var{filename},
3419so that \class{TextFile} can include it in warning messages. If
Fred Drake9687b4d2005-03-10 03:48:14 +00003420\var{file} is not supplied, \class{TextFile} creates its own using the
3421\function{open()} built-in function.
Fred Drake6fca7cc2004-03-23 18:43:03 +00003422
3423The options are all boolean, and affect the values returned by
Fred Drake9687b4d2005-03-10 03:48:14 +00003424\method{readline()}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003425
3426\begin{tableiii}{c|l|l}{option name}{option name}{description}{default}
3427\lineiii{strip_comments}{
3428strip from \character{\#} to end-of-line, as well as any whitespace
3429leading up to the \character{\#}---unless it is escaped by a backslash}
3430{true}
3431\lineiii{lstrip_ws}{
3432strip leading whitespace from each line before returning it}
3433{false}
3434\lineiii{rstrip_ws}{
3435strip trailing whitespace (including line terminator!) from
3436each line before returning it.}
3437{true}
3438\lineiii{skip_blanks}{
3439skip lines that are empty *after* stripping comments and
3440whitespace. (If both lstrip_ws and rstrip_ws are false,
3441then some lines may consist of solely whitespace: these will
3442*not* be skipped, even if \var{skip_blanks} is true.)}
3443{true}
3444\lineiii{join_lines}{
3445if a backslash is the last non-newline character on a line
3446after stripping comments and whitespace, join the following line
3447to it to form one logical line; if N consecutive lines end
3448with a backslash, then N+1 physical lines will be joined to
3449form one logical line.}
3450{false}
3451\lineiii{collapse_join}{
3452strip leading whitespace from lines that are joined to their
3453predecessor; only matters if \samp{(join_lines and not lstrip_ws)}}
3454{false}
3455\end{tableiii}
3456
3457Note that since \var{rstrip_ws} can strip the trailing newline, the
3458semantics of \method{readline()} must differ from those of the builtin file
3459object's \method{readline()} method! In particular, \method{readline()}
3460returns \code{None} for end-of-file: an empty string might just be a
3461blank line (or an all-whitespace line), if \var{rstrip_ws} is true
3462but \var{skip_blanks} is not.
3463
3464\begin{methoddesc}{open}{filename}
3465Open a new file \var{filename}. This overrides any \var{file} or
3466\var{filename} constructor arguments.
3467\end{methoddesc}
3468
3469\begin{methoddesc}{close}{}
3470Close the current file and forget everything we know about it (including
3471the filename and the current line number).
3472\end{methoddesc}
3473
3474\begin{methoddesc}{warn}{msg\optional{,line=\code{None}}}
3475Print (to stderr) a warning message tied to the current logical
3476line in the current file. If the current logical line in the
3477file spans multiple physical lines, the warning refers to the
3478whole range, such as \samp{"lines 3-5"}. If \var{line} is supplied,
3479it overrides the current line number; it may be a list or tuple
3480to indicate a range of physical lines, or an integer for a
3481single physical line.
3482\end{methoddesc}
3483
3484\begin{methoddesc}{readline}{}
3485Read and return a single logical line from the current file (or
3486from an internal buffer if lines have previously been ``unread''
3487with \method{unreadline()}). If the \var{join_lines} option
3488is true, this may involve reading multiple physical lines
3489concatenated into a single string. Updates the current line number,
3490so calling \method{warn()} after \method{readline()} emits a warning
3491about the physical line(s) just read. Returns \code{None} on end-of-file,
3492since the empty string can occur if \var{rstrip_ws} is true but
3493\var{strip_blanks} is not.
3494\end{methoddesc}
3495\begin{methoddesc}{readlines}{}
3496Read and return the list of all logical lines remaining in the current file.
3497This updates the current line number to the last line of the file.
3498\end{methoddesc}
3499\begin{methoddesc}{unreadline}{line}
3500Push \var{line} (a string) onto an internal buffer that will be
3501checked by future \method{readline()} calls. Handy for implementing
3502a parser with line-at-a-time lookahead. Note that lines that are ``unread''
3503with \method{unreadline} are not subsequently re-cleansed (whitespace
3504stripped, or whatever) when read with \method{readline}. If multiple
3505calls are made to \method{unreadline} before a call to \method{readline},
3506the lines will be returned most in most recent first order.
3507\end{methoddesc}
3508
3509\end{classdesc}
3510
3511
3512\section{\module{distutils.version} --- Version number classes}
3513\declaremodule{standard}{distutils.version}
3514\modulesynopsis{implements classes that represent module version numbers. }
3515
3516% todo
3517
3518%\section{Distutils Commands}
3519%
3520%This part of Distutils implements the various Distutils commands, such
3521%as \code{build}, \code{install} \&c. Each command is implemented as a
3522%separate module, with the command name as the name of the module.
3523
3524\section{\module{distutils.cmd} --- Abstract base class for Distutils commands}
3525\declaremodule{standard}{distutils.cmd}
3526\modulesynopsis{This module provides the abstract base class Command. This
3527class is subclassed by the modules in the \refmodule{distutils.command}
3528subpackage. }
3529
3530This module supplies the abstract base class \class{Command}.
3531
3532\begin{classdesc}{Command}{dist}
3533Abstract base class for defining command classes, the ``worker bees''
3534of the Distutils. A useful analogy for command classes is to think of
3535them as subroutines with local variables called \var{options}. The
3536options are declared in \method{initialize_options()} and defined
3537(given their final values) in \method{finalize_options()}, both of
3538which must be defined by every command class. The distinction between
3539the two is necessary because option values might come from the outside
3540world (command line, config file, ...), and any options dependent on
3541other options must be computed after these outside influences have
3542been processed --- hence \method{finalize_options()}. The body of the
3543subroutine, where it does all its work based on the values of its
3544options, is the \method{run()} method, which must also be implemented
3545by every command class.
3546
3547The class constructor takes a single argument \var{dist}, a
3548\class{Distribution} instance.
3549\end{classdesc}
3550
3551
3552\section{\module{distutils.command} --- Individual Distutils commands}
3553\declaremodule{standard}{distutils.command}
3554\modulesynopsis{This subpackage contains one module for each standard Distutils command.}
3555
3556%\subsubsection{Individual Distutils commands}
3557
3558% todo
3559
3560\section{\module{distutils.command.bdist} --- Build a binary installer}
3561\declaremodule{standard}{distutils.command.bdist}
3562\modulesynopsis{Build a binary installer for a package}
3563
3564% todo
3565
3566\section{\module{distutils.command.bdist_packager} --- Abstract base class for packagers}
3567\declaremodule[distutils.command.bdistpackager]{standard}{distutils.command.bdist_packager}
3568\modulesynopsis{Abstract base class for packagers}
3569
3570% todo
3571
3572\section{\module{distutils.command.bdist_dumb} --- Build a ``dumb'' installer}
3573\declaremodule[distutils.command.bdistdumb]{standard}{distutils.command.bdist_dumb}
3574\modulesynopsis{Build a ``dumb'' installer - a simple archive of files}
3575
3576% todo
3577
3578
3579\section{\module{distutils.command.bdist_rpm} --- Build a binary distribution as a Redhat RPM and SRPM}
3580\declaremodule[distutils.command.bdistrpm]{standard}{distutils.command.bdist_rpm}
3581\modulesynopsis{Build a binary distribution as a Redhat RPM and SRPM}
3582
3583% todo
3584
3585\section{\module{distutils.command.bdist_wininst} --- Build a Windows installer}
3586\declaremodule[distutils.command.bdistwininst]{standard}{distutils.command.bdist_wininst}
3587\modulesynopsis{Build a Windows installer}
3588
3589% todo
3590
3591\section{\module{distutils.command.sdist} --- Build a source distribution}
3592\declaremodule{standard}{distutils.command.sdist}
3593\modulesynopsis{Build a source distribution}
3594
3595% todo
3596
3597\section{\module{distutils.command.build} --- Build all files of a package}
3598\declaremodule{standard}{distutils.command.build}
3599\modulesynopsis{Build all files of a package}
3600
3601% todo
3602
3603\section{\module{distutils.command.build_clib} --- Build any C libraries in a package}
3604\declaremodule[distutils.command.buildclib]{standard}{distutils.command.build_clib}
3605\modulesynopsis{Build any C libraries in a package}
3606
3607% todo
3608
3609\section{\module{distutils.command.build_ext} --- Build any extensions in a package}
3610\declaremodule[distutils.command.buildext]{standard}{distutils.command.build_ext}
3611\modulesynopsis{Build any extensions in a package}
3612
3613% todo
3614
3615\section{\module{distutils.command.build_py} --- Build the .py/.pyc files of a package}
3616\declaremodule[distutils.command.buildpy]{standard}{distutils.command.build_py}
3617\modulesynopsis{Build the .py/.pyc files of a package}
3618
3619% todo
3620
3621\section{\module{distutils.command.build_scripts} --- Build the scripts of a package}
3622\declaremodule[distutils.command.buildscripts]{standard}{distutils.command.build_scripts}
3623\modulesynopsis{Build the scripts of a package}
3624
3625% todo
3626
3627\section{\module{distutils.command.clean} --- Clean a package build area}
3628\declaremodule{standard}{distutils.command.clean}
3629\modulesynopsis{Clean a package build area}
3630
3631% todo
3632
3633\section{\module{distutils.command.config} --- Perform package configuration}
3634\declaremodule{standard}{distutils.command.config}
3635\modulesynopsis{Perform package configuration}
3636
3637% todo
3638
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003639\section{\module{distutils.command.install} --- Install a package}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003640\declaremodule{standard}{distutils.command.install}
3641\modulesynopsis{Install a package}
3642
3643% todo
3644
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003645\section{\module{distutils.command.install_data}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003646 --- Install data files from a package}
3647\declaremodule[distutils.command.installdata]{standard}{distutils.command.install_data}
3648\modulesynopsis{Install data files from a package}
3649
3650% todo
3651
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003652\section{\module{distutils.command.install_headers}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003653 --- Install C/\Cpp{} header files from a package}
3654\declaremodule[distutils.command.installheaders]{standard}{distutils.command.install_headers}
3655\modulesynopsis{Install C/\Cpp{} header files from a package}
3656
3657% todo
3658
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003659\section{\module{distutils.command.install_lib}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003660 --- Install library files from a package}
3661\declaremodule[distutils.command.installlib]{standard}{distutils.command.install_lib}
3662\modulesynopsis{Install library files from a package}
3663
3664% todo
3665
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003666\section{\module{distutils.command.install_scripts}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003667 --- Install script files from a package}
3668\declaremodule[distutils.command.installscripts]{standard}{distutils.command.install_scripts}
3669\modulesynopsis{Install script files from a package}
3670
3671% todo
3672
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003673\section{\module{distutils.command.register}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003674 --- Register a module with the Python Package Index}
3675\declaremodule{standard}{distutils.command.register}
3676\modulesynopsis{Register a module with the Python Package Index}
3677
3678The \code{register} command registers the package with the Python Package
3679Index. This is described in more detail in \pep{301}.
3680% todo
3681
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003682\section{Creating a new Distutils command}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003683
3684This section outlines the steps to create a new Distutils command.
3685
3686A new command lives in a module in the \module{distutils.command}
3687package. There is a sample template in that directory called
3688\file{command_template}. Copy this file to a new module with the
3689same name as the new command you're implementing. This module should
3690implement a class with the same name as the module (and the command).
3691So, for instance, to create the command \code{peel_banana} (so that users
3692can run \samp{setup.py peel_banana}), you'd copy \file{command_template}
3693to \file{distutils/command/peel_banana.py}, then edit it so that it's
3694implementing the class \class{peel_banana}, a subclass of
3695\class{distutils.cmd.Command}.
3696
3697Subclasses of \class{Command} must define the following methods.
3698
3699\begin{methoddesc}{initialize_options()}
3700Set default values for all the options that this command
3701supports. Note that these defaults may be overridden by other
3702commands, by the setup script, by config files, or by the
3703command-line. Thus, this is not the place to code dependencies
3704between options; generally, \method{initialize_options()} implementations
3705are just a bunch of \samp{self.foo = None} assignments.
3706\end{methoddesc}
3707
3708\begin{methoddesc}{finalize_options}{}
3709Set final values for all the options that this command supports.
3710This is always called as late as possible, ie. after any option
3711assignments from the command-line or from other commands have been
3712done. Thus, this is the place to to code option dependencies: if
3713\var{foo} depends on \var{bar}, then it is safe to set \var{foo} from
3714\var{bar} as long as \var{foo} still has the same value it was assigned in
3715\method{initialize_options()}.
3716\end{methoddesc}
3717\begin{methoddesc}{run}{}
3718A command's raison d'etre: carry out the action it exists to
3719perform, controlled by the options initialized in
3720\method{initialize_options()}, customized by other commands, the setup
3721script, the command-line, and config files, and finalized in
3722\method{finalize_options()}. All terminal output and filesystem
3723interaction should be done by \method{run()}.
3724\end{methoddesc}
3725
3726\var{sub_commands} formalizes the notion of a ``family'' of commands,
3727eg. \code{install} as the parent with sub-commands \code{install_lib},
3728\code{install_headers}, etc. The parent of a family of commands
3729defines \var{sub_commands} as a class attribute; it's a list of
37302-tuples \samp{(command_name, predicate)}, with \var{command_name} a string
3731and \var{predicate} an unbound method, a string or None.
3732\var{predicate} is a method of the parent command that
3733determines whether the corresponding command is applicable in the
3734current situation. (Eg. we \code{install_headers} is only applicable if
3735we have any C header files to install.) If \var{predicate} is None,
3736that command is always applicable.
3737
3738\var{sub_commands} is usually defined at the *end* of a class, because
3739predicates can be unbound methods, so they must already have been
3740defined. The canonical example is the \command{install} command.
3741
Fred Drake6356fff2004-03-23 19:02:38 +00003742%
3743% The ugly "%begin{latexonly}" pseudo-environments are really just to
3744% keep LaTeX2HTML quiet during the \renewcommand{} macros; they're
3745% not really valuable.
3746%
3747
3748%begin{latexonly}
3749\renewcommand{\indexname}{Module Index}
3750%end{latexonly}
Fred Drakead622022004-03-25 16:35:10 +00003751\input{moddist.ind} % Module Index
Fred Drake6356fff2004-03-23 19:02:38 +00003752
3753%begin{latexonly}
3754\renewcommand{\indexname}{Index}
3755%end{latexonly}
Fred Drakead622022004-03-25 16:35:10 +00003756\input{dist.ind} % Index
Fred Drake6fca7cc2004-03-23 18:43:03 +00003757
Greg Wardabc52162000-02-26 00:52:48 +00003758\end{document}