• Kirill Smelkov's avatar
    Generalize how nxdtest python script is generated into pyprog recipe macro · 0ee52376
    Kirill Smelkov authored
    In e328aa49 (component/nxdtest: Prepare for nexedi/nxdtest!13)
    I reworked how nxdtest script is generated and splitted it into nxdtest itself
    and .nxdtest.pyexe python interpreter, so that sys.executable could be used to
    correctly spawn other python scripts:
    
        3) rework how nxdtest script is generated and split it into .nxdtest.pyexe and
           nxdtest itself. .nxdtest.pyexe is python interpreter via which nxdtest is run.
           This interpreter has all eggs required by nxdtest in sys.path, so that
           nxdtest could spawn its trun.py via sys.executable. If we don't care to have
           properly setup sys.executable, trun.py will fail when importing any module that
           nxdtest.py could already successfully import.
    
           Initially I tried to workaround this issue via adjusting $PYTHONPATH <-
           sys.path in main nxdtest script, but @jerome points out that, $PYTHONPATH,
           if set, also affects processes that trun.py spawns, which is not good:
    
           nexedi/slapos!1095 (comment 146799)
    
           -> so fix this via running nxdtest via environment where sys.executable is
           properly setup python interpreter with path for all eggs that nxdtest has
           access to.
    
           Because we already have half-way workarounds for similar problem in several
           places, and because running a script with correctly setup sys.executable is
           generally better, I would say it should be a good idea to rework
           zc.recipe.egg:scripts to generate all scripts to work this way, but I do not
           want to fight about it.
    
           So let's leave this scheme nxdtest-specific for now.
    
    This patch addresses the last paragraph and provides a general pyprog buildout
    macro that could be used to generate python script for any entry point to run
    with correctly set sys.executable.
    
    /reviewed-by @jerome
    /reviewed-on nexedi/slapos!1108
    0ee52376
buildout.cfg 880 Bytes