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'] A/ __init__.py moduleA.py B/ __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.