mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-26 16:11:08 +00:00
144 lines
3.9 KiB
Plaintext
144 lines
3.9 KiB
Plaintext
|
|
||
|
setuptools_darcs Manual
|
||
|
=======================
|
||
|
|
||
|
About
|
||
|
-----
|
||
|
|
||
|
This is a plugin for setuptools that integrates darcs. Once
|
||
|
installed, Setuptools can be told to include in a package distribution
|
||
|
all the files tracked by darcs. This is an alternative to explicit
|
||
|
inclusion specifications with `MANIFEST.in`.
|
||
|
|
||
|
A distribution here refers to a package that you create using
|
||
|
setup.py, ex:
|
||
|
|
||
|
python setup.py sdist
|
||
|
python setup.py bdist_egg
|
||
|
python setup.py bdist_rpm
|
||
|
|
||
|
This package was formerly known as setuptools_darcs_plugin. The name
|
||
|
change is the result of an agreement by the setuptools plugin
|
||
|
developers to provide a uniform naming convention.
|
||
|
|
||
|
|
||
|
Installation
|
||
|
------------
|
||
|
|
||
|
With easy_install:
|
||
|
|
||
|
easy_install setuptools_darcs
|
||
|
|
||
|
Alternative manual installation:
|
||
|
|
||
|
tar -zxvf setuptools_darcs-X.Y.Z.tar.gz
|
||
|
cd setuptools_darcs-X.Y.Z
|
||
|
python setup.py install
|
||
|
|
||
|
Where X.Y.Z is a version number.
|
||
|
|
||
|
Alternative to make a specific package use setuptools_darcs without
|
||
|
installing setuptools_darcs into the system:
|
||
|
|
||
|
Put "setup_requires=['setuptools_darcs']" in the call to setup() in
|
||
|
the package's setup.py file.
|
||
|
|
||
|
|
||
|
Usage
|
||
|
-----
|
||
|
|
||
|
To use this plugin, you must first package your python module with
|
||
|
`setup.py` and use setuptools. The former is well documented in the
|
||
|
distutils manual:
|
||
|
|
||
|
http://docs.python.org/dist/dist.html
|
||
|
|
||
|
To use setuptools instead of distutils, just edit `setup.py` and
|
||
|
change
|
||
|
|
||
|
from distutils.core import setup
|
||
|
|
||
|
to
|
||
|
|
||
|
from setuptools import setup
|
||
|
|
||
|
When setuptools builds a source package, it always includes all files
|
||
|
tracked by your revision control system, if it knows how to learn what
|
||
|
those files are.
|
||
|
|
||
|
When setuptools builds a binary package, you can ask it to include all
|
||
|
files tracked by your revision control system, by adding this argument
|
||
|
to your invocation of `setup()`:
|
||
|
|
||
|
setup(...,
|
||
|
include_package_data=True,
|
||
|
...)
|
||
|
|
||
|
This plugin lets setuptools know what files are tracked by your darcs
|
||
|
revision control tool. setuptools ships with support for cvs and
|
||
|
subversion. Other plugins like this one are available for bzr, git,
|
||
|
monotone, and mercurial, at least.
|
||
|
|
||
|
It might happen that you track files with your revision control system
|
||
|
that you don't want to include in your packages. In that case, you
|
||
|
can prevent setuptools from packaging those files with a directive in
|
||
|
your `MANIFEST.in`, ex:
|
||
|
|
||
|
exclude .darcs-boringfile
|
||
|
recursive-exclude images *.xcf *.blend
|
||
|
|
||
|
In this example, we prevent setuptools from packaging
|
||
|
`.darcs-boringfile` and the Gimp and Blender source files found under
|
||
|
the `images` directory.
|
||
|
|
||
|
Alternatively, files to exclude from the package can be listed in the
|
||
|
`setup()` directive:
|
||
|
|
||
|
setup(...,
|
||
|
exclude_package_data = {'': ['.darcs-boringfile'],
|
||
|
'images': ['*.xcf', '*.blend']},
|
||
|
...)
|
||
|
|
||
|
|
||
|
Gotchas
|
||
|
-------
|
||
|
|
||
|
If someone clones your darcs repository using darcs but does not
|
||
|
install this plugin, then when they run a package building command
|
||
|
they will not get all the right files. On the other hand if someone
|
||
|
gets a source distribution that was created by "./setup.py sdist",
|
||
|
then it will come with a list of all files, so they will not need
|
||
|
darcs in order to build a distribution themselves.
|
||
|
|
||
|
You can make sure that anyone who uses your setup.py file has this
|
||
|
plugin by adding a `setup_requires` argument.
|
||
|
|
||
|
setup_requires=[]
|
||
|
# setuptools_darcs is required to produce complete distributions (such as with
|
||
|
# "sdist" or "bdist_egg"), unless there is a ${PKG}.egg-info/SOURCES.txt file
|
||
|
# present which contains a complete list of files that should be included in
|
||
|
# distributions.
|
||
|
# http://pypi.python.org/pypi/setuptools_darcs
|
||
|
setup_requires.append('setuptools_darcs >= 1.1.0')
|
||
|
|
||
|
setup(...,
|
||
|
setup_requires = setup_requires,
|
||
|
...)
|
||
|
|
||
|
|
||
|
References
|
||
|
----------
|
||
|
|
||
|
How to distribute Python modules with Distutils:
|
||
|
|
||
|
http://docs.python.org/dist/dist.html
|
||
|
|
||
|
|
||
|
Setuptools complete manual:
|
||
|
|
||
|
http://peak.telecommunity.com/DevCenter/setuptools
|
||
|
|
||
|
|
||
|
Thanks to Yannick Gingras for providing the prototype for this
|
||
|
README.txt.
|