Merge branch 'python_flat_install' into 'master'

Allow for flat install of python files via `py` feature

See merge request ita1024/waf!2249
This commit is contained in:
ita1024 2019-06-20 17:18:55 +00:00
commit 0178e6a692
4 changed files with 37 additions and 6 deletions

View File

@ -0,0 +1,3 @@
"""
Nested file in bar/
"""

View File

@ -0,0 +1,3 @@
"""
Nested file in foo/
"""

View File

@ -50,3 +50,21 @@ def build(bld):
source = 'test.c',
target = 'test')
# Install files keeping their directory structure (default: relative_trick=True)
#
# This will create two files:
# * lib/python2.7/site-packages/nested_scripts/bar/nested_bar.py
# * lib/python2.7/site-packages/nested_scripts/foo/nested_foo.py
bld(features='py',
source=bld.path.ant_glob('nested_scripts/**/*.py'),
install_from='.')
# Install files flatting the directory structure (relative_trick=False)
#
# This will create two files:
# * lib/python2.7/site-packages/nested_bar.py
# * lib/python2.7/site-packages/nested_foo.py
bld(features='py',
source=bld.path.ant_glob('nested_scripts/**/*.py'),
relative_trick=False,
install_from='.')

View File

@ -79,14 +79,19 @@ def process_py(self, node):
"""
Add signature of .py file, so it will be byte-compiled when necessary
"""
assert(hasattr(self, 'install_path')), 'add features="py"'
assert(hasattr(self, 'install_path')), 'add features="py" for target "%s" in "%s/wscript".' % (self.target, self.path.nice_path())
self.install_from = getattr(self, 'install_from', None)
relative_trick = getattr(self, 'relative_trick', True)
if self.install_from:
assert isinstance(self.install_from, Node.Node), \
'add features="py" for target "%s" in "%s/wscript" (%s).' % (self.target, self.path.nice_path(), type(self.install_from))
# where to install the python file
if self.install_path:
if self.install_from:
self.add_install_files(install_to=self.install_path, install_from=node, cwd=self.install_from, relative_trick=True)
self.add_install_files(install_to=self.install_path, install_from=node, cwd=self.install_from, relative_trick=relative_trick)
else:
self.add_install_files(install_to=self.install_path, install_from=node, relative_trick=True)
self.add_install_files(install_to=self.install_path, install_from=node, relative_trick=relative_trick)
lst = []
if self.env.PYC:
@ -96,9 +101,11 @@ def process_py(self, node):
if self.install_path:
if self.install_from:
pyd = Utils.subst_vars("%s/%s" % (self.install_path, node.path_from(self.install_from)), self.env)
target_dir = node.path_from(self.install_from) if relative_trick else node.name
pyd = Utils.subst_vars("%s/%s" % (self.install_path, target_dir), self.env)
else:
pyd = Utils.subst_vars("%s/%s" % (self.install_path, node.path_from(self.path)), self.env)
target_dir = node.path_from(self.path) if relative_trick else node.name
pyd = Utils.subst_vars("%s/%s" % (self.install_path, target_dir), self.env)
else:
pyd = node.abspath()
@ -115,7 +122,7 @@ def process_py(self, node):
tsk.pyd = pyd
if self.install_path:
self.add_install_files(install_to=os.path.dirname(pyd), install_from=pyobj, cwd=node.parent.get_bld(), relative_trick=True)
self.add_install_files(install_to=os.path.dirname(pyd), install_from=pyobj, cwd=node.parent.get_bld(), relative_trick=relative_trick)
class pyc(Task.Task):
"""