mirror of https://gitlab.com/ita1024/waf.git
Merge pull request #1829 from mortenvp/support-directory-tools
Allow using directories as waf tools
This commit is contained in:
commit
44dec78555
37
wscript
37
wscript
|
@ -232,11 +232,33 @@ def create_waf(self, *k, **kw):
|
||||||
if zipType not in zip_types:
|
if zipType not in zip_types:
|
||||||
zipType = zip_types[0]
|
zipType = zip_types[0]
|
||||||
|
|
||||||
|
directory_files = {}
|
||||||
files = []
|
files = []
|
||||||
add3rdparty = []
|
add3rdparty = []
|
||||||
for x in Options.options.add3rdparty.split(','):
|
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)
|
files.append(x)
|
||||||
else:
|
else:
|
||||||
add3rdparty.append(x + '.py')
|
add3rdparty.append(x + '.py')
|
||||||
|
@ -283,13 +305,17 @@ def create_waf(self, *k, **kw):
|
||||||
(code, size, cnt) = sfilter(x)
|
(code, size, cnt) = sfilter(x)
|
||||||
tarinfo.size = size
|
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]
|
tarinfo.name = 'waflib/extras/' + os.path.split(x)[1]
|
||||||
|
|
||||||
print(' adding %s as %s' % (x, tarinfo.name))
|
print(' adding %s as %s' % (x, tarinfo.name))
|
||||||
def dest(x):
|
def dest(x):
|
||||||
if os.path.isabs(x):
|
if x in directory_files:
|
||||||
return os.path.join('extras', os.path.basename(x))
|
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:
|
else:
|
||||||
return os.path.normpath(os.path.relpath(x, "."))
|
return os.path.normpath(os.path.relpath(x, "."))
|
||||||
|
|
||||||
|
@ -408,4 +434,3 @@ def build(bld):
|
||||||
class Dist(Scripting.Dist):
|
class Dist(Scripting.Dist):
|
||||||
def get_excl(self):
|
def get_excl(self):
|
||||||
return super(self.__class__, self).get_excl() + ' **/waflib.zip'
|
return super(self.__class__, self).get_excl() + ' **/waflib.zip'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue