Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / src / nas,5.n2.os.2 / lib / python / html / python / dist / node29.html
CommitLineData
86530b38
AT
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3<head>
4<link rel="STYLESHEET" href="dist.css" type='text/css' />
5<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
6<link rel='start' href='../index.html' title='Python Documentation Index' />
7<link rel="first" href="dist.html" title='Distributing Python Modules' />
8<link rel='index' href='genindex.html' title='Index' />
9<link rel='last' href='about.html' title='About this document...' />
10<link rel='help' href='about.html' title='About this document...' />
11<link rel="prev" href="extending.html" />
12<link rel="parent" href="extending.html" />
13<link rel="next" href="reference.html" />
14<meta name='aesop' content='information' />
15<title>8.1 Integrating new commands</title>
16</head>
17<body>
18<DIV CLASS="navigation">
19<div id='top-navigation-panel' xml:id='top-navigation-panel'>
20<table align="center" width="100%" cellpadding="0" cellspacing="2">
21<tr>
22<td class='online-navigation'><a rel="prev" title="8. Extending Distutils"
23 href="extending.html"><img src='../icons/previous.png'
24 border='0' height='32' alt='Previous Page' width='32' /></A></td>
25<td class='online-navigation'><a rel="parent" title="8. Extending Distutils"
26 href="extending.html"><img src='../icons/up.png'
27 border='0' height='32' alt='Up One Level' width='32' /></A></td>
28<td class='online-navigation'><a rel="next" title="9. Command Reference"
29 href="reference.html"><img src='../icons/next.png'
30 border='0' height='32' alt='Next Page' width='32' /></A></td>
31<td align="center" width="100%">Distributing Python Modules</td>
32<td class='online-navigation'><img src='../icons/blank.png'
33 border='0' height='32' alt='' width='32' /></td>
34<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
35 border='0' height='32' alt='Module Index' width='32' /></a></td>
36<td class='online-navigation'><a rel="index" title="Index"
37 href="genindex.html"><img src='../icons/index.png'
38 border='0' height='32' alt='Index' width='32' /></A></td>
39</tr></table>
40<div class='online-navigation'>
41<b class="navlabel">Previous:</b>
42<a class="sectref" rel="prev" href="extending.html">8. Extending Distutils</A>
43<b class="navlabel">Up:</b>
44<a class="sectref" rel="parent" href="extending.html">8. Extending Distutils</A>
45<b class="navlabel">Next:</b>
46<a class="sectref" rel="next" href="reference.html">9. Command Reference</A>
47</div>
48<hr /></div>
49</DIV>
50<!--End of Navigation Panel-->
51
52<H1><A NAME="SECTION008100000000000000000">
538.1 Integrating new commands</A>
54</H1>
55
56<P>
57There are different ways to integrate new command implementations into
58distutils. The most difficult is to lobby for the inclusion of the
59new features in distutils itself, and wait for (and require) a version
60of Python that provides that support. This is really hard for many
61reasons.
62
63<P>
64The most common, and possibly the most reasonable for most needs, is
65to include the new implementations with your <span class="file">setup.py</span> script,
66and cause the <tt class="function">distutils.core.setup()</tt> function use them:
67
68<P>
69<div class="verbatim"><pre>
70from distutils.command.build_py import build_py as _build_py
71from distutils.core import setup
72
73class build_py(_build_py):
74 """Specialized Python source builder."""
75
76 # implement whatever needs to be different...
77
78setup(cmdclass={'build_py': build_py},
79 ...)
80</pre></div>
81
82<P>
83This approach is most valuable if the new implementations must be used
84to use a particular package, as everyone interested in the package
85will need to have the new command implementation.
86
87<P>
88Beginning with Python 2.4, a third option is available, intended to
89allow new commands to be added which can support existing
90<span class="file">setup.py</span> scripts without requiring modifications to the Python
91installation. This is expected to allow third-party extensions to
92provide support for additional packaging systems, but the commands can
93be used for anything distutils commands can be used for. A new
94configuration option, <span class="du-option">command_packages</span> (command-line option
95<b class="programopt">--command-packages</b>), can be used to specify additional
96packages to be searched for modules implementing commands. Like all
97distutils options, this can be specified on the command line or in a
98configuration file. This option can only be set in the
99<code>[global]</code> section of a configuration file, or before any
100commands on the command line. If set in a configuration file, it can
101be overridden from the command line; setting it to an empty string on
102the command line causes the default to be used. This should never be
103set in a configuration file provided with a package.
104
105<P>
106This new option can be used to add any number of packages to the list
107of packages searched for command implementations; multiple package
108names should be separated by commas. When not specified, the search
109is only performed in the <tt class="module">distutils.command</tt> package. When
110<span class="file">setup.py</span> is run with the option
111<b class="programopt">--command-packages</b> <b class="programopt">distcmds,buildcmds</b>,
112however, the packages <tt class="module">distutils.command</tt>, <tt class="module">distcmds</tt>,
113and <tt class="module">buildcmds</tt> will be searched in that order. New commands
114are expected to be implemented in modules of the same name as the
115command by classes sharing the same name. Given the example command
116line option above, the command <code class="du-command">bdist_openpkg</code> could be
117implemented by the class <tt class="class">distcmds.bdist_openpkg.bdist_openpkg</tt>
118or <tt class="class">buildcmds.bdist_openpkg.bdist_openpkg</tt>.
119
120<P>
121
122<DIV CLASS="navigation">
123<div class='online-navigation'>
124<p></p><hr />
125<table align="center" width="100%" cellpadding="0" cellspacing="2">
126<tr>
127<td class='online-navigation'><a rel="prev" title="8. Extending Distutils"
128 href="extending.html"><img src='../icons/previous.png'
129 border='0' height='32' alt='Previous Page' width='32' /></A></td>
130<td class='online-navigation'><a rel="parent" title="8. Extending Distutils"
131 href="extending.html"><img src='../icons/up.png'
132 border='0' height='32' alt='Up One Level' width='32' /></A></td>
133<td class='online-navigation'><a rel="next" title="9. Command Reference"
134 href="reference.html"><img src='../icons/next.png'
135 border='0' height='32' alt='Next Page' width='32' /></A></td>
136<td align="center" width="100%">Distributing Python Modules</td>
137<td class='online-navigation'><img src='../icons/blank.png'
138 border='0' height='32' alt='' width='32' /></td>
139<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
140 border='0' height='32' alt='Module Index' width='32' /></a></td>
141<td class='online-navigation'><a rel="index" title="Index"
142 href="genindex.html"><img src='../icons/index.png'
143 border='0' height='32' alt='Index' width='32' /></A></td>
144</tr></table>
145<div class='online-navigation'>
146<b class="navlabel">Previous:</b>
147<a class="sectref" rel="prev" href="extending.html">8. Extending Distutils</A>
148<b class="navlabel">Up:</b>
149<a class="sectref" rel="parent" href="extending.html">8. Extending Distutils</A>
150<b class="navlabel">Next:</b>
151<a class="sectref" rel="next" href="reference.html">9. Command Reference</A>
152</div>
153</div>
154<hr />
155<span class="release-info">Release 2.4.2, documentation updated on 28 September 2005.</span>
156</DIV>
157<!--End of Navigation Panel-->
158<ADDRESS>
159See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
160</ADDRESS>
161</BODY>
162</HTML>