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:
|
||||
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'
|
||||
|
||||
|
|
Loading…
Reference in New Issue