Bastian Kleineidam wrote:
How can I enable running the "config" command prior to all "build" commands ? Suppose your custom "config" command writes out a file "configdata". When running the install command you can check if this file exists and if not raise an exception which demands to run "python setup.py config":
class MyDistribution(Distribution): def __init__(self, attrs=None): Distribution.__init__(self, attrs=attrs) self.config_file = "configdata"
def run_commands(self): if "config" not in self.commands: if not os.path.exists(self.config_file): raise SystemExit, "please run 'python setup.py config'" Distribution.run_commands(self)
class MyConfig(config): def run(self): # ... write "configdata" file
Thanks for the example. What I was thinking of is a little different though: I have a configuration class which will do some environment testing in order to determine flags and options for the build_ext class. Now in order to have this information available before the build I need to assure that the config command is executed before the build step. After some hacking I found that the following trick enables this: from distutils.command.config import config from distutils.command.build import build class autoconf(config): def run(self): ...config code... build_ext = self.distribution.reinitialize_command('build_ext') # Set options build_ext.define = mydefines class autoconf_build(build): def run(self): self.run_command('autoconf') build.run(self) and then in setup(): cmdclass = {'autoconf': autoconf, 'build': autoconf_build}, With this setup you can execute "setup.py bdist_rpm" and the autoconf command will get executed automatically or you can run "setup.py autoconf --autoconf-option build" to pass additional options to the autoconf command. Unfortunately, bdist_rpm doesn't seem to inherit the command options you passed to the setup.py script -- the build is done in a separate process which is invoked by RPM rather than from the original setup.py process. Thanks, -- Marc-Andre Lemburg ______________________________________________________________________ Company: http://www.egenix.com/ Consulting: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/