Add setup_extension_environment() method.
- lets packages do some setup before their extensions run install()
This commit is contained in:
@@ -783,6 +783,12 @@ def do_install(self, **kwargs):
|
||||
self.stage.chdir_to_source()
|
||||
build_env.setup_package(self)
|
||||
|
||||
# Allow extendees to further set up the environment.
|
||||
for ext_name in self.extendees:
|
||||
ext_spec = self.spec[ext_name]
|
||||
ext_spec.package.setup_extension_environment(
|
||||
self.module, ext_spec, self.spec)
|
||||
|
||||
if fake_install:
|
||||
self.do_fake_install()
|
||||
else:
|
||||
@@ -854,6 +860,30 @@ def module(self):
|
||||
fromlist=[self.__class__.__name__])
|
||||
|
||||
|
||||
def setup_extension_environment(self, module, spec, ext_spec):
|
||||
"""Called before the install() method of extensions.
|
||||
|
||||
Default implementation does nothing, but this can be
|
||||
overridden by an extendable package to set up the install
|
||||
environment for its extensions. This is useful if there are
|
||||
some common steps to installing all extensions for a
|
||||
certain package.
|
||||
|
||||
Some examples:
|
||||
|
||||
1. Installing python modules generally requires PYTHONPATH to
|
||||
point to the lib/pythonX.Y/site-packages directory in the
|
||||
module's install prefix. This could set that variable.
|
||||
|
||||
2. Extensions often need to invoke the 'python' interpreter
|
||||
from the Python installation being extended. This routine can
|
||||
put a 'python' Execuable object in the module scope for the
|
||||
extension package to simplify extension installs.
|
||||
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
"""Package implementations override this with their own build configuration."""
|
||||
raise InstallError("Package %s provides no install method!" % self.name)
|
||||
|
Reference in New Issue
Block a user