diff options
author | PJ Eby <distutils-sig@python.org> | 2005-11-18 03:45:16 +0000 |
---|---|---|
committer | PJ Eby <distutils-sig@python.org> | 2005-11-18 03:45:16 +0000 |
commit | f3694a0388e4e15d9cbdd84e4c8ca7817c87a52c (patch) | |
tree | d72ca4fc258a4c7730758d84bc26fcf2a36a5a28 | |
parent | 873ebe91a8de43df836c873d9106e5af31c302e4 (diff) | |
download | external_python_setuptools-f3694a0388e4e15d9cbdd84e4c8ca7817c87a52c.tar.gz external_python_setuptools-f3694a0388e4e15d9cbdd84e4c8ca7817c87a52c.tar.bz2 external_python_setuptools-f3694a0388e4e15d9cbdd84e4c8ca7817c87a52c.zip |
The ``sdist`` command no longer uses the traditional ``MANIFEST`` file to
create source distributions. ``MANIFEST.in`` is still read and processed,
as are the standard defaults and pruning. But the manifest is built inside
the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt
every time the ``egg_info`` command is run.
--HG--
branch : setuptools
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4041472
-rwxr-xr-x | setuptools.txt | 44 | ||||
-rwxr-xr-x | setuptools/command/egg_info.py | 4 | ||||
-rwxr-xr-x | setuptools/command/sdist.py | 57 |
3 files changed, 84 insertions, 21 deletions
diff --git a/setuptools.txt b/setuptools.txt index 4b67f3ce..01a74b17 100755 --- a/setuptools.txt +++ b/setuptools.txt @@ -1040,16 +1040,29 @@ revision control, don't create a a ``MANIFEST.in`` file for your project. (And, if you already have one, you might consider deleting it the next time you would otherwise have to change it.) -Unlike the distutils, ``setuptools`` regenerates the source distribution -``MANIFEST`` file every time you build a source distribution, as long as you -*don't* have a ``MANIFEST.in`` file. If you do have a ``MANIFEST.in`` (e.g. -because you aren't using CVS or Subversion), then you'll have to follow the -normal distutils procedures for managing what files get included in a source -distribution, and setuptools' enhanced algorithms will *not* be used. - -(Note, by the way, that if you're using some other revision control system, you -might consider submitting a patch to the ``setuptools.command.sdist`` module -so we can include support for it, too.) +If you need to include automatically generated files, or files that are kept in +an unsupported revision control system, you'll need to create a ``MANIFEST.in`` +file to specify any files that the default file location algorithm doesn't +catch. See the distutils documentation for more information on the format of +the ``MANIFEST.in`` file. + +But, be sure to ignore any part of the distutils documentation that deals with +``MANIFEST`` or how it's generated from ``MANIFEST.in``; setuptools shields you +from these issues and doesn't work the same way in any case. Unlike the +distutils, setuptools regenerates the source distribution manifest file +every time you build a source distribution, and it builds it inside the +project's ``.egg-info`` directory, out of the way of your main project +directory. You therefore need not worry about whether it is up-to-date or not. + +Indeed, because setuptools' approach to determining the contents of a source +distribution is so much simpler, its ``sdist`` command omits nearly all of +the options that the distutils' more complex ``sdist`` process requires. For +all practical purposes, you'll probably use only the ``--formats`` option, if +you use any option at all. + +(By the way, if you're using some other revision control system, you might +consider submitting a patch to the ``setuptools.command.sdist`` module, +so we can include support for your system.) Making your package available for EasyInstall @@ -1465,7 +1478,9 @@ commands), and it allows you to temporarily change a project's version string, to support "daily builds" or "snapshot" releases. It is run automatically by the ``sdist``, ``bdist_egg``, ``develop``, and ``test`` commands in order to update the project's metadata, but you can also specify it explicitly in order -to temporarily change the project's version string. +to temporarily change the project's version string. (It also generates the +``.egg-info/SOURCES.txt`` manifest file, which is used when you are building +source distributions.) The following options can be used to modify the project's version string for all remaining commands on the setup command line. The options are processed @@ -1960,6 +1975,13 @@ XXX Release Notes/Change History ---------------------------- +0.6a9 + * The ``sdist`` command no longer uses the traditional ``MANIFEST`` file to + create source distributions. ``MANIFEST.in`` is still read and processed, + as are the standard defaults and pruning. But the manifest is built inside + the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt + every time the ``egg_info`` command is run. + 0.6a8 * Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG. diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py index 2375eb96..3f17c041 100755 --- a/setuptools/command/egg_info.py +++ b/setuptools/command/egg_info.py @@ -246,7 +246,8 @@ class manifest_maker(sdist): def add_defaults(self): sdist.add_defaults(self) - self.filelist.extend([self.template,self.manifest]) + self.filelist.append(self.template) + self.filelist.append(self.manifest) rcfiles = list(walk_revctrl()) if rcfiles: self.filelist.extend(rcfiles) @@ -284,7 +285,6 @@ class manifest_maker(sdist): - def write_pkg_info(cmd, basename, filename): log.info("writing %s", filename) if not cmd.dry_run: diff --git a/setuptools/command/sdist.py b/setuptools/command/sdist.py index cdbc5248..41798b60 100755 --- a/setuptools/command/sdist.py +++ b/setuptools/command/sdist.py @@ -93,26 +93,67 @@ finders = [ ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + class sdist(_sdist): """Smart sdist that finds anything supported by revision control""" + user_options = [ + ('formats=', None, + "formats for source distribution (comma-separated list)"), + ('keep-temp', 'k', + "keep the distribution tree around after creating " + + "archive file(s)"), + ('dist-dir=', 'd', + "directory to put the source distribution archive(s) in " + "[default: dist]"), + ] + + negative_opt = {} + def run(self): self.run_command('egg_info') - _sdist.run(self) + ei_cmd = self.get_finalized_command('egg_info') + self.filelist = ei_cmd.filelist + self.filelist.append(os.path.join(ei_cmd.egg_info,'SOURCES.txt')) + + self.check_metadata() + self.make_distribution() + dist_files = getattr(self.distribution,'dist_files',[]) for file in self.archive_files: data = ('sdist', '', file) if data not in dist_files: dist_files.append(data) - def finalize_options(self): - _sdist.finalize_options(self) - if not os.path.isfile(self.template): - self.force_manifest = 1 # always regen if no template - def add_defaults(self): - _sdist.add_defaults(self) - self.filelist.extend(walk_revctrl()) + |