[Distutils] setuputils cvs based source detection?

Phillip J. Eby pje at telecommunity.com
Sun Oct 15 05:18:04 CEST 2006

At 07:55 PM 10/14/2006 -0700, S Joshua Swamidass wrote:
>Here is the situation:
>I have a large project in one big cvs tree.  i want to be able to
>release in differen't packages from this tree using different
>setup.py's. My project is organized like:
>./ (root dir)
>setup_A.py  #package = ['A']
>setup_B.py  #package = ['B']
>     __init__.py
>     moduleA.py
>     __init__.py
>    moduleB.py
>The bdist command works fine with this setup. If i use the
>distutils.core.setup, the sdist command works correctly too. So here
>is the problem: using setuputils.setup, the sdist command will package
>the WHOLE source tree (both directories A and B) when using either of
>the setup_*.py.
>I'm quite certain this is because both A/ and B/ are under cvs source
>control, and setup assumes that the whole source tree is required for
>the sdist. How do i turn this behaivior off or develop a work around?

setuptools doesn't provide a way to support this behavior.

Even if you were to manually modify MANIFEST.in to exclude the files you 
didn't want, you'd have to change it every time you issued a release, and 
your source distributions wouldn't be distutils-standard or 
easy_install-compatible anyway, because you wouldn't have a *single* 
"setup.py" file in the distribution, and having a "setup_A.py" isn't the 
same thing.

My suggestion would be for you to change how you're doing this, so that you 
have a single setup.py for each thing you want to distribute separately, or 
else distribute the whole thing as one giant package.

If you want to minimize the amount of directory reorganization needed, one 
possible approach is to put a setup.py in each of A and B, and adjust the 
package_dir setting of setup() accordingly.  There are some drawbacks to 
that layout, but at least you would be able to keep your package 
directories where they are now.

More information about the Distutils-SIG mailing list