Commit 0db70c29 authored by PJ Eby's avatar PJ Eby

Made ``develop`` command accept all the same options as ``easy_install``,

and use the ``easy_install`` command's configuration settings as defaults.

--HG--
branch : setuptools
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4041394
parent d092afc4
...@@ -1376,13 +1376,13 @@ rerunning ``develop``, but keep in mind that even minor changes to the setup ...@@ -1376,13 +1376,13 @@ rerunning ``develop``, but keep in mind that even minor changes to the setup
script (e.g. changing an entry point definition) require you to re-run the script (e.g. changing an entry point definition) require you to re-run the
``develop`` or ``test`` commands to keep the distribution updated. ``develop`` or ``test`` commands to keep the distribution updated.
Here are the options that the ``develop`` command accepts. Note that they Here are some of the options that the ``develop`` command accepts. Note that
affect the project's dependencies as well as the project itself, so if you have they affect the project's dependencies as well as the project itself, so if you
dependencies that need to be installed and you use ``--exclude-scripts`` (for have dependencies that need to be installed and you use ``--exclude-scripts``
example), the dependencies' scripts will not be installed either! For this (for example), the dependencies' scripts will not be installed either! For
reason, you may want to use EasyInstall to install the project's dependencies this reason, you may want to use EasyInstall to install the project's
before using the ``develop`` command, if you need finer control over the dependencies before using the ``develop`` command, if you need finer control
installation options for dependencies. over the installation options for dependencies.
``--uninstall, -u`` ``--uninstall, -u``
Un-deploy the current project. You may use the ``--install-dir`` or ``-d`` Un-deploy the current project. You may use the ``--install-dir`` or ``-d``
...@@ -1442,6 +1442,12 @@ installation options for dependencies. ...@@ -1442,6 +1442,12 @@ installation options for dependencies.
a requirement can be met using a distribution that is already available in a requirement can be met using a distribution that is already available in
a directory on ``sys.path``, it will not be copied to the staging area. a directory on ``sys.path``, it will not be copied to the staging area.
In addition to the above options, the ``develop`` command also accepts all of
the same options accepted by ``easy_install``. If you've configured any
``easy_install`` settings in your ``setup.cfg`` (or other distutils config
files), the ``develop`` command will use them as defaults, unless you override
them in a ``[develop]`` section or on the command line.
.. _egg_info: .. _egg_info:
...@@ -1942,6 +1948,9 @@ Release Notes/Change History ...@@ -1942,6 +1948,9 @@ Release Notes/Change History
* Fixed some problems building extensions when Pyrex was installed, especially * Fixed some problems building extensions when Pyrex was installed, especially
with Python 2.4 and/or packages using SWIG. with Python 2.4 and/or packages using SWIG.
* Made ``develop`` command accept all the same options as ``easy_install``,
and use the ``easy_install`` command's configuration settings as defaults.
0.6a5 0.6a5
* Fixed missing gui/cli .exe files in distribution. Fixed bugs in tests. * Fixed missing gui/cli .exe files in distribution. Fixed bugs in tests.
......
...@@ -9,23 +9,14 @@ class develop(easy_install): ...@@ -9,23 +9,14 @@ class develop(easy_install):
description = "install package in 'development mode'" description = "install package in 'development mode'"
user_options = [ user_options = easy_install.user_options + [
("install-dir=", "d", "link package from DIR"),
("script-dir=", "s", "create script wrappers in DIR"),
("multi-version", "m", "make apps have to require() a version"),
("exclude-scripts", "x", "Don't install scripts"),
("always-copy", "a", "Copy all needed dependencies to install dir"),
("uninstall", "u", "Uninstall this source package"), ("uninstall", "u", "Uninstall this source package"),
] ]
boolean_options = [ boolean_options = easy_install.boolean_options + ['uninstall']
'multi-version', 'exclude-scripts', 'always-copy', 'uninstall'
]
command_consumes_arguments = False # override base command_consumes_arguments = False # override base
negative_opt = {}
def run(self): def run(self):
if self.uninstall: if self.uninstall:
self.multi_version = True self.multi_version = True
...@@ -37,11 +28,21 @@ class develop(easy_install): ...@@ -37,11 +28,21 @@ class develop(easy_install):
self.uninstall = None self.uninstall = None
easy_install.initialize_options(self) easy_install.initialize_options(self)
# Pull in any easy_install configuration options
self.distribution._set_command_options(
self, self.distribution.get_option_dict('easy_install')
)
def finalize_options(self): def finalize_options(self):
ei = self.get_finalized_command("egg_info") ei = self.get_finalized_command("egg_info")
self.args = [ei.egg_name] self.args = [ei.egg_name]
easy_install.finalize_options(self) easy_install.finalize_options(self)
self.egg_link = os.path.join(self.install_dir, ei.egg_name+'.egg-link') self.egg_link = os.path.join(self.install_dir, ei.egg_name+'.egg-link')
self.egg_base = ei.egg_base self.egg_base = ei.egg_base
...@@ -57,13 +58,11 @@ class develop(easy_install): ...@@ -57,13 +58,11 @@ class develop(easy_install):
def install_for_development(self): def install_for_development(self):
# Ensure metadata is up-to-date # Ensure metadata is up-to-date
self.run_command('egg_info') self.run_command('egg_info')
ei = self.get_finalized_command("egg_info")
# Build extensions in-place # Build extensions in-place
self.reinitialize_command('build_ext', inplace=1) self.reinitialize_command('build_ext', inplace=1)
self.run_command('build_ext') self.run_command('build_ext')
# create an .egg-link in the installation dir, pointing to our egg # create an .egg-link in the installation dir, pointing to our egg
log.info("Creating %s (link to %s)", self.egg_link, self.egg_base) log.info("Creating %s (link to %s)", self.egg_link, self.egg_base)
if not self.dry_run: if not self.dry_run:
...@@ -80,6 +79,7 @@ class develop(easy_install): ...@@ -80,6 +79,7 @@ class develop(easy_install):
def uninstall_link(self): def uninstall_link(self):
if os.path.exists(self.egg_link): if os.path.exists(self.egg_link):
log.info("Removing %s (link to %s)", self.egg_link, self.egg_base) log.info("Removing %s (link to %s)", self.egg_link, self.egg_base)
...@@ -92,6 +92,7 @@ class develop(easy_install): ...@@ -92,6 +92,7 @@ class develop(easy_install):
if not self.dry_run: if not self.dry_run:
self.update_pth(self.dist) # remove any .pth link to us self.update_pth(self.dist) # remove any .pth link to us
if self.distribution.scripts: if self.distribution.scripts:
# XXX should also check for entry point scripts!
log.warn("Note: you must uninstall or replace scripts manually!") log.warn("Note: you must uninstall or replace scripts manually!")
...@@ -120,4 +121,3 @@ class develop(easy_install): ...@@ -120,4 +121,3 @@ class develop(easy_install):
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment