• Kirill Smelkov's avatar
    [feat] zc.recipe.egg: Support environment in :develop · bc983725
    Kirill Smelkov authored
    Currently only zc.recipe.egg:custom supports setting environment
    variables, and zc.recipe.egg:develop does not.
    
    My motivation for allowing setting environment in :develop is
    wendelin.core
    
        https://lab.nexedi.cn/nexedi/slapos/blob/b5faab3b/component/wendelin.core/buildout.cfg
    
    There we have [wendelin.core] part which installs released egg from
    pypi, and [wendelin.core-dev] part which installs wendelin.core from
    its latest git version via zc.recipe.egg:develop .
    
    The problem is, wendelin.core for setup.py to work, needs git available,
    and with slapos we usually don't have git available on base system, so
    we build it by our own and do something like
    
        [wendelin.core-dev]
        recipe = zc.recipe.egg:develop
        environment = wendelin.core-dev-env
    
        [wendelin.core-dev-env]
        # wendelin.core-dev needs git to build
        PATH = ${git:location}/bin:%(PATH)s
    
    and the problem is environment does not currently work for
    zc.recipe.egg:develop, and thus git is not found -> build fails.
    
    ~~~~
    
    In order to support environment in :develop, we just move environment
    setting/restoring bits from Custom to Base, and provide Base.install() which
    uses this bits. Custom & Develop .install() becomes ._install() which gets
    hooked into Base.install() .
    
    I've tested the patch only manually, because currently automated tests are
    broken in a lot of places for slapos.buildout and zc.recipe.egg .
    
    /cc @kazuhiko, @Tyagov
    bc983725
custom.py 6.51 KB