[Fred]
How about something like:
strip_extensions = {"posix": "txt py pyw", "darwin": "txt" }
Where strip_extensions is a dictionary, keyed by the platform name (either sys.platform or os.name - whatever makes sense. The value is the list of extensions that should be stripped.
So how do you spell "I want the extension stripped from this one file on one platform, and that's it."?
I guess we change the strip_extensions to a complete filespec - '*.txt', 'foo.txt', etc
I'm also confused by your inclusion of "txt"; does this apply to all file copies, just scripts, or some magically determined set of file copies?
I was replying to your original '--strip-extensions' idea, so it would apply to whatever files you had in mind originally <wink>.
That would allow something like this in setup.py:
from distutils.core import setup, Script
setup(name='Some Python Utilities', packages=['mytools'], scripts=[Script('bin/dostuff.py', strip_extension=1), Script('bin/morestuff.py', strip_extension=1, sbin=1), ], )
Additional keywords might be used to mark a script to be installed only on certain platforms. This could be used to install different scripts under the same name on different platforms (for example, a Mac OS X-specific script on Mac OS X, and a Tkinter script on Windows and other Unix systems).
It would seem more general to specify the full target name: scripts=[ Script('bin/dostuff.py', platforms="windows"), Script('bin/dostuff.py', target="bin/dostuff", platforms="posix"), This doesn't handle a "default" platform though (ie, what would OSX do given the above?) Maybe we need "exclude_platforms" and "include_platforms"? Script('bin/dostuff.py', include_platforms="windows"), Script('bin/dostuff.py', target="bin/dostuff", exclude_platforms="windows"), It is a real shame that setup.py has no foolproof access to the options (such as the target platform) - then we could punt the problem right back into setup.py - have it provide a different script list, possibly with explicit target names, depending on the platform. I'm wondering how close we are getting to YAGNI though.
I've not determined what just the right interface would be between Script and the build_scripts and install_scripts commands; still thinking about that.
I'm still confused by build_scripts and install_scripts in general, and still trying to understand a number of things I can't explain. But I'm getting there :) Mark