Merge pull request #1829 from mortenvp/support-directory-tools

Allow using directories as waf tools
This commit is contained in:
ita1024 2016-10-10 19:27:39 +02:00 committed by GitHub
commit 44dec78555
1 changed files with 31 additions and 6 deletions

37
wscript
View File

@ -232,11 +232,33 @@ def create_waf(self, *k, **kw):
if zipType not in zip_types:
zipType = zip_types[0]
directory_files = {}
files = []
add3rdparty = []
for x in Options.options.add3rdparty.split(','):
if os.path.isabs(x):
if os.path.isdir(x):
# Create mapping from files absolute path to path in module
# directory (for module mylib):
#
# {"/home/path/mylib/__init__.py": "mylib/__init__.py",
# "/home/path/mylib/lib.py": "mylib/lib.py",
# "/home/path/mylib/sub/sub.py": "mylib/sub/lib.py"
# }
#
x_dir = self.generator.bld.root.find_dir(
os.path.abspath(os.path.expanduser(x)))
file_list = x_dir.ant_glob('**/*.py')
for f in file_list:
file_from = f.abspath()
file_to = os.path.join(x_dir.name, f.path_from(x_dir))
directory_files[file_from] = file_to
files.append(file_from)
elif os.path.isabs(x):
files.append(x)
else:
add3rdparty.append(x + '.py')
@ -283,13 +305,17 @@ def create_waf(self, *k, **kw):
(code, size, cnt) = sfilter(x)
tarinfo.size = size
if os.path.isabs(x):
if x in directory_files:
tarinfo.name = 'waflib/extras/' + directory_files[x]
elif os.path.isabs(x):
tarinfo.name = 'waflib/extras/' + os.path.split(x)[1]
print(' adding %s as %s' % (x, tarinfo.name))
def dest(x):
if os.path.isabs(x):
return os.path.join('extras', os.path.basename(x))
if x in directory_files:
return os.path.join('waflib', 'extras', directory_files[x])
elif os.path.isabs(x):
return os.path.join('waflib', 'extras', os.path.basename(x))
else:
return os.path.normpath(os.path.relpath(x, "."))
@ -408,4 +434,3 @@ def build(bld):
class Dist(Scripting.Dist):
def get_excl(self):
return super(self.__class__, self).get_excl() + ' **/waflib.zip'