mirror of https://gitlab.com/ita1024/waf.git
Enable more advanced warnings of ant_glob on build folders in verbose mode
This commit is contained in:
parent
cd07df4a85
commit
5996879673
|
@ -573,7 +573,7 @@ class Node(object):
|
|||
p = p.parent
|
||||
return p is node
|
||||
|
||||
def ant_iter(self, accept=None, maxdepth=25, pats=[], dir=False, src=True, remove=True):
|
||||
def ant_iter(self, accept=None, maxdepth=25, pats=[], dir=False, src=True, remove=True, quiet=False):
|
||||
"""
|
||||
Recursive method used by :py:meth:`waflib.Node.ant_glob`.
|
||||
|
||||
|
@ -589,6 +589,8 @@ class Node(object):
|
|||
:type src: bool
|
||||
:param remove: remove files/folders that do not exist (True by default)
|
||||
:type remove: bool
|
||||
:param quiet: disable build directory traversal warnings (verbose mode)
|
||||
:type quiet: bool
|
||||
:returns: A generator object to iterate from
|
||||
:rtype: iterator
|
||||
"""
|
||||
|
@ -622,7 +624,7 @@ class Node(object):
|
|||
if isdir:
|
||||
node.cache_isdir = True
|
||||
if maxdepth:
|
||||
for k in node.ant_iter(accept=accept, maxdepth=maxdepth - 1, pats=npats, dir=dir, src=src, remove=remove):
|
||||
for k in node.ant_iter(accept=accept, maxdepth=maxdepth - 1, pats=npats, dir=dir, src=src, remove=remove, quiet=quiet):
|
||||
yield k
|
||||
raise StopIteration
|
||||
|
||||
|
@ -654,14 +656,16 @@ class Node(object):
|
|||
:type dir: bool
|
||||
:param src: return files (True by default)
|
||||
:type src: bool
|
||||
:param remove: remove files/folders that do not exist (True by default)
|
||||
:type remove: bool
|
||||
:param maxdepth: maximum depth of recursion
|
||||
:type maxdepth: int
|
||||
:param ignorecase: ignore case while matching (False by default)
|
||||
:type ignorecase: bool
|
||||
:returns: The corresponding Nodes
|
||||
:type generator: bool
|
||||
:param remove: remove files/folders that do not exist (True by default)
|
||||
:type remove: bool
|
||||
:param quiet: disable build directory traversal warnings (verbose mode)
|
||||
:type quiet: bool
|
||||
:returns: Whether to evaluate the Nodes lazily, alters the type of the returned value
|
||||
:rtype: by default, list of :py:class:`waflib.Node.Node` instances
|
||||
"""
|
||||
|
@ -672,12 +676,13 @@ class Node(object):
|
|||
remove = kw.get('remove', True)
|
||||
maxdepth = kw.get('maxdepth', 25)
|
||||
ignorecase = kw.get('ignorecase', False)
|
||||
quiet = kw.get('quiet', False)
|
||||
pats = (ant_matcher(incl, ignorecase), ant_matcher(excl, ignorecase))
|
||||
|
||||
if kw.get('generator'):
|
||||
return Utils.lazy_generator(self.ant_iter, (ant_sub_matcher, maxdepth, pats, dir, src, remove))
|
||||
return Utils.lazy_generator(self.ant_iter, (ant_sub_matcher, maxdepth, pats, dir, src, remove, quiet))
|
||||
|
||||
it = self.ant_iter(ant_sub_matcher, maxdepth, pats, dir, src, remove)
|
||||
it = self.ant_iter(ant_sub_matcher, maxdepth, pats, dir, src, remove, quiet)
|
||||
if kw.get('flat'):
|
||||
# returns relative paths as a space-delimited string
|
||||
# prefer Node objects whenever possible
|
||||
|
|
|
@ -492,10 +492,6 @@ def extension(*k):
|
|||
return func
|
||||
return deco
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# The following methods are task generator methods commonly used
|
||||
# they are almost examples, the rest of waf core does not depend on them
|
||||
|
||||
@taskgen_method
|
||||
def to_nodes(self, lst, path=None):
|
||||
"""
|
||||
|
|
|
@ -135,16 +135,23 @@ def enhance_lib():
|
|||
Logs.error("In ant_glob pattern %r: '..' means 'two dots', not 'parent directory'", k[0])
|
||||
if '.' in sp:
|
||||
Logs.error("In ant_glob pattern %r: '.' means 'one dot', not 'current directory'", k[0])
|
||||
if kw.get('remove', True):
|
||||
try:
|
||||
if self.is_child_of(self.ctx.bldnode) and not kw.get('quiet'):
|
||||
Logs.error('Using ant_glob on the build folder (%r) is dangerous (quiet=True to disable this warning)', self)
|
||||
except AttributeError:
|
||||
pass
|
||||
return self.old_ant_glob(*k, **kw)
|
||||
Node.Node.old_ant_glob = Node.Node.ant_glob
|
||||
Node.Node.ant_glob = ant_glob
|
||||
|
||||
# catch ant_glob on build folders
|
||||
def ant_iter(self, accept=None, maxdepth=25, pats=[], dir=False, src=True, remove=True, quiet=False):
|
||||
if remove:
|
||||
try:
|
||||
if self.is_child_of(self.ctx.bldnode) and not quiet:
|
||||
quiet = True
|
||||
Logs.error('Calling ant_glob on build folders (%r) is dangerous: add quiet=True / remove=False', self)
|
||||
except AttributeError:
|
||||
pass
|
||||
return self.old_ant_iter(accept, maxdepth, pats, dir, src, remove, quiet)
|
||||
Node.Node.old_ant_iter = Node.Node.ant_iter
|
||||
Node.Node.ant_iter = ant_iter
|
||||
|
||||
# catch conflicting ext_in/ext_out/before/after declarations
|
||||
old = Task.is_before
|
||||
def is_before(t1, t2):
|
||||
|
|
Loading…
Reference in New Issue