cantera/interfaces/python_minimal/SConscript
Bryan W. Weber 94ea9b585f Update SConstruct to recognize that Python 3 might be running SCons
Update and make more consistent the specification of Python package
building. Since SCons can be run by Python 3 now, we cannot assume that
the Python running SCons is Python 2. This changes a bunch of
assumptions in SConstruct about where things should be built or
installed. This commit addresses those assumptions by making the options
for Python 2 and Python 3 symmetric.
2017-11-26 16:48:40 -05:00

62 lines
3.1 KiB
Python

"""Minimal Python Module"""
from buildutils import *
Import('env', 'build', 'install')
localenv = env.Clone()
for py_ver in [2, 3]:
if env['python{}_package'.format(py_ver)] == 'minimal':
make_setup = build(localenv.SubstFile('setup{}.py'.format(py_ver), 'setup.py.in'))
# copy scripts from the full Cython module
for script in ['ctml_writer', 'ck2cti']:
# The actual script
s = build(env.Command('cantera/%s.py' % script,
'#interfaces/cython/cantera/%s.py' % script,
Copy('$TARGET', '$SOURCE')))
localenv.Depends(make_setup, s)
localenv['python{}_cmd_esc'.format(py_ver)] = quoted(localenv['python{}_cmd'.format(py_ver)])
build_cmd = ('cd interfaces/python_minimal &&'
' $python{py_ver}_cmd_esc setup{py_ver}.py build --build-lib=../../build/python{py_ver}'.format(py_ver=py_ver))
mod = build(localenv.Command('#build/python{}/cantera/__init__.py'.format(py_ver),
'setup{}.py'.format(py_ver),
build_cmd))
env['python{}_module'.format(py_ver)] = mod
if localenv['PYTHON_INSTALLER'] == 'direct':
if localenv['python{}_prefix'.format(py_ver)] == 'USER':
# Install to the OS-dependent user site-packages directory
extra = '--user'
if localenv['OS'] == 'Darwin':
extra += ' --prefix=""'
elif localenv['python{}_prefix'.format(py_ver)]:
# A specific location for the Cantera python module has been given
extra = '--user'
if localenv['OS'] == 'Darwin':
extra += ' --prefix=""'
localenv.AppendENVPath(
'PYTHONUSERBASE',
normpath(localenv.subst('$python{}_prefix'.format(py_ver)))
)
else:
# Install Python module in the default location
extra = ''
mod_inst = install(localenv.Command, 'dummy{}'.format(py_ver), mod,
build_cmd + ' install %s' % extra +
' --record=../../build/python{}-installed-files.txt'.format(py_ver) +
' --single-version-externally-managed')
global_env = env
def find_module_dir(target, source, env):
check = pjoin('cantera', '__init__.py')
py_ver = str(source[0]).split('/')[1][-1]
for filename in open('build/python{}-installed-files.txt'.format(py_ver)).readlines():
filename = filename.strip()
if filename.endswith(check):
filename = filename.replace(check, '')
global_env['python{}_module_loc'.format(py_ver)] = normpath(filename)
break
localenv.AlwaysBuild(localenv.AddPostAction(mod_inst, find_module_dir))
env['install_python{}_action'.format(py_ver)] = mod_inst