The branch, master has been updated
       via  a6733ff6843 third_party: Update waf to version 2.0.27
      from  68c7c19a0fb utils: Fix CID 1638831 Division or modulo by zero

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a6733ff6843ab89361daaf789329eedb4e73ca19
Author: Andreas Schneider <[email protected]>
Date:   Mon Apr 28 13:28:56 2025 +0200

    third_party: Update waf to version 2.0.27
    
    This is the last 2.0.x version.
    
    Signed-off-by: Andreas Schneider <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>
    
    Autobuild-User(master): Andreas Schneider <[email protected]>
    Autobuild-Date(master): Fri May 16 08:48:22 UTC 2025 on atb-devel-224

-----------------------------------------------------------------------

Summary of changes:
 buildtools/bin/waf                          |  2 +-
 buildtools/wafsamba/wafsamba.py             |  2 +-
 third_party/waf/waflib/Configure.py         |  4 +--
 third_party/waf/waflib/Context.py           | 20 ++++++++-----
 third_party/waf/waflib/Options.py           |  3 +-
 third_party/waf/waflib/Tools/c_config.py    | 16 +++++++----
 third_party/waf/waflib/Tools/glib2.py       |  5 +---
 third_party/waf/waflib/Tools/icc.py         | 44 +++++++++++++++++++++++------
 third_party/waf/waflib/Tools/icpc.py        | 43 ++++++++++++++++++++++------
 third_party/waf/waflib/Tools/ifort.py       |  2 +-
 third_party/waf/waflib/Tools/qt5.py         | 24 ++++++++++------
 third_party/waf/waflib/Tools/tex.py         |  8 +++---
 third_party/waf/waflib/extras/color_gcc.py  |  4 ++-
 third_party/waf/waflib/extras/color_msvc.py |  6 ++--
 third_party/waf/waflib/extras/msvcdeps.py   |  8 ++++--
 third_party/waf/waflib/extras/stale.py      | 30 ++++++++++++++------
 16 files changed, 151 insertions(+), 70 deletions(-)


Changeset truncated at 500 lines:

diff --git a/buildtools/bin/waf b/buildtools/bin/waf
index c103979cc00..18ba6c4ec62 100755
--- a/buildtools/bin/waf
+++ b/buildtools/bin/waf
@@ -32,7 +32,7 @@ POSSIBILITY OF SUCH DAMAGE.
 
 import os, sys, inspect
 
-VERSION="2.0.26"
+VERSION="2.0.27"
 REVISION="x"
 GIT="x"
 INSTALL="x"
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 1a4943d6c5c..6140c8c0725 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -40,7 +40,7 @@ LIB_PATH="shared"
 
 os.environ['PYTHONUNBUFFERED'] = '1'
 
-if Context.HEXVERSION not in (0x2001a00,):
+if Context.HEXVERSION not in (0x2001b00,):
     Logs.error('''
 Please use the version of waf that comes with Samba, not
 a system installed version. See http://wiki.samba.org/index.php/Waf
diff --git a/third_party/waf/waflib/Configure.py 
b/third_party/waf/waflib/Configure.py
index f6fdc4e94a7..a8080b6f429 100644
--- a/third_party/waf/waflib/Configure.py
+++ b/third_party/waf/waflib/Configure.py
@@ -496,12 +496,12 @@ def find_binary(self, filenames, exts, paths):
                for ext in exts:
                        exe_name = f + ext
                        if os.path.isabs(exe_name):
-                               if os.path.isfile(exe_name):
+                               if os.path.isfile(exe_name) and 
os.access(exe_name, os.X_OK):
                                        return exe_name
                        else:
                                for path in paths:
                                        x = 
os.path.expanduser(os.path.join(path, exe_name))
-                                       if os.path.isfile(x):
+                                       if os.path.isfile(x) and os.access(x, 
os.X_OK):
                                                return x
        return None
 
diff --git a/third_party/waf/waflib/Context.py 
b/third_party/waf/waflib/Context.py
index 369664819b6..971a9e6b5c1 100644
--- a/third_party/waf/waflib/Context.py
+++ b/third_party/waf/waflib/Context.py
@@ -18,13 +18,13 @@ else:
        import imp
 
 # the following 3 constants are updated on each new release (do not touch)
-HEXVERSION=0x2001a00
+HEXVERSION=0x2001b00
 """Constant updated on new releases"""
 
-WAFVERSION="2.0.26"
+WAFVERSION="2.0.27"
 """Constant updated on new releases"""
 
-WAFREVISION="0fb985ce1932c6f3e7533f435e4ee209d673776e"
+WAFREVISION="c3e645e395505cb5faa115172b1fc9abdaeaf146"
 """Git revision when the waf version is updated"""
 
 WAFNAME="waf"
@@ -347,8 +347,11 @@ class Context(ctx):
                if 'stderr' not in kw:
                        kw['stderr'] = subprocess.PIPE
 
-               if Logs.verbose and not kw['shell'] and not 
Utils.check_exe(cmd[0]):
-                       raise Errors.WafError('Program %s not found!' % cmd[0])
+               if Logs.verbose and not kw['shell'] and not 
Utils.check_exe(cmd[0], env=kw.get('env', os.environ)):
+                       # This call isn't a shell command, and if the specified 
exe doesn't exist, check for a relative path being set
+                       # with cwd and if so assume the caller knows what 
they're doing and don't pre-emptively fail
+                       if not (cmd[0][0] == '.' and 'cwd' in kw):
+                               raise Errors.WafError('Program %s not found!' % 
cmd[0])
 
                cargs = {}
                if 'timeout' in kw:
@@ -422,8 +425,11 @@ class Context(ctx):
                quiet = kw.pop('quiet', None)
                to_ret = kw.pop('output', STDOUT)
 
-               if Logs.verbose and not kw['shell'] and not 
Utils.check_exe(cmd[0]):
-                       raise Errors.WafError('Program %r not found!' % cmd[0])
+               if Logs.verbose and not kw['shell'] and not 
Utils.check_exe(cmd[0], env=kw.get('env', os.environ)):
+                       # This call isn't a shell command, and if the specified 
exe doesn't exist, check for a relative path being set
+                       # with cwd and if so assume the caller knows what 
they're doing and don't pre-emptively fail
+                       if not (cmd[0][0] == '.' and 'cwd' in kw):
+                               raise Errors.WafError('Program %s not found!' % 
cmd[0])
 
                kw['stdout'] = kw['stderr'] = subprocess.PIPE
                if quiet is None:
diff --git a/third_party/waf/waflib/Options.py 
b/third_party/waf/waflib/Options.py
index d4104917c82..c1ee381a5e3 100644
--- a/third_party/waf/waflib/Options.py
+++ b/third_party/waf/waflib/Options.py
@@ -345,7 +345,7 @@ class OptionsContext(Context.Context):
                :param _args: arguments
                :type _args: list of strings
                """
-               options, commands, envvars = self.parse_cmd_args()
+               options, commands, envvars = self.parse_cmd_args(_args)
                self.init_logs(options, commands, envvars)
                self.init_module_vars(options, commands, envvars)
 
@@ -356,4 +356,3 @@ class OptionsContext(Context.Context):
                super(OptionsContext, self).execute()
                self.parse_args()
                Utils.alloc_process_pool(options.jobs)
-
diff --git a/third_party/waf/waflib/Tools/c_config.py 
b/third_party/waf/waflib/Tools/c_config.py
index f5ab19bf6ce..82a1a0ae455 100644
--- a/third_party/waf/waflib/Tools/c_config.py
+++ b/third_party/waf/waflib/Tools/c_config.py
@@ -1038,12 +1038,12 @@ def get_cc_version(conf, cc, gcc=False, icc=False, 
clang=False):
                if out.find('__GNUC__') < 0 and out.find('__clang__') < 0:
                        conf.fatal('Could not determine the compiler type')
 
-       if icc and out.find('__INTEL_COMPILER') < 0:
-               conf.fatal('Not icc/icpc')
+       if icc and out.find('__INTEL_COMPILER') < 0 and 
out.find('__INTEL_CLANG_COMPILER') < 0:
+               conf.fatal('Not icc/icx/icpc/icpx')
 
        if clang and out.find('__clang__') < 0:
                conf.fatal('Not clang/clang++')
-       if not clang and out.find('__clang__') >= 0:
+       if not clang and not icc and out.find('__clang__') >= 0:
                conf.fatal('Could not find gcc/g++ (only Clang), if renamed try 
eg: CC=gcc48 CXX=g++48 waf configure')
 
        k = {}
@@ -1094,8 +1094,14 @@ def get_cc_version(conf, cc, gcc=False, icc=False, 
clang=False):
 
                Logs.debug('ccroot: dest platform: ' + ' '.join([conf.env[x] or 
'?' for x in ('DEST_OS', 'DEST_BINFMT', 'DEST_CPU')]))
                if icc:
-                       ver = k['__INTEL_COMPILER']
-                       conf.env.CC_VERSION = (ver[:-2], ver[-2], ver[-1])
+                       if isD('__INTEL_CLANG_COMPILER'):
+                               # 20230100
+                               ver = k['__INTEL_CLANG_COMPILER']
+                               conf.env.CC_VERSION = (ver[:4], ver[4:6], 
ver[-2:])
+                               conf.env.INTEL_CLANG_COMPILER = 1
+                       else:
+                               ver = k['__INTEL_COMPILER']
+                               conf.env.CC_VERSION = (ver[:-2], ver[-2], 
ver[-1])
                else:
                        if isD('__clang__') and isD('__clang_major__'):
                                conf.env.CC_VERSION = (k['__clang_major__'], 
k['__clang_minor__'], k['__clang_patchlevel__'])
diff --git a/third_party/waf/waflib/Tools/glib2.py 
b/third_party/waf/waflib/Tools/glib2.py
index 949fe37c3b6..1589a61c876 100644
--- a/third_party/waf/waflib/Tools/glib2.py
+++ b/third_party/waf/waflib/Tools/glib2.py
@@ -439,9 +439,7 @@ def find_glib_genmarshal(conf):
 
 @conf
 def find_glib_mkenums(conf):
-       if not conf.env.PERL:
-               conf.find_program('perl', var='PERL')
-       conf.find_program('glib-mkenums', interpreter='PERL', 
var='GLIB_MKENUMS')
+       conf.find_program('glib-mkenums', var='GLIB_MKENUMS')
 
 @conf
 def find_glib_compile_schemas(conf):
@@ -486,4 +484,3 @@ def options(opt):
        """
        gr = opt.add_option_group('Installation directories')
        gr.add_option('--gsettingsschemadir', help='GSettings schema location 
[DATADIR/glib-2.0/schemas]', default='', dest='GSETTINGSSCHEMADIR')
-
diff --git a/third_party/waf/waflib/Tools/icc.py 
b/third_party/waf/waflib/Tools/icc.py
index b6492c8e1a0..1b41ffcf708 100644
--- a/third_party/waf/waflib/Tools/icc.py
+++ b/third_party/waf/waflib/Tools/icc.py
@@ -7,24 +7,50 @@
 Detects the Intel C compiler
 """
 
-import sys
+from waflib import Utils
 from waflib.Tools import ccroot, ar, gcc
 from waflib.Configure import conf
+from waflib.Tools import msvc
 
 @conf
 def find_icc(conf):
        """
        Finds the program icc and execute it to ensure it really is icc
        """
-       cc = conf.find_program(['icc', 'ICL'], var='CC')
-       conf.get_cc_version(cc, icc=True)
+       if Utils.is_win32:
+               conf.find_program(['icx-cl'], var='ICXCL', mandatory=False)
+               if conf.env.ICXCL:
+                       conf.env.INTEL_CLANG_COMPILER = True
+                       conf.env.CC = conf.env.ICXCL
+
+       if not conf.env.ICXCL:
+               cc = conf.find_program(['icx', 'icc', 'ICL'], var='CC')
+               conf.get_cc_version(cc, icc=True)
+
        conf.env.CC_NAME = 'icc'
 
 def configure(conf):
        conf.find_icc()
-       conf.find_ar()
-       conf.gcc_common_flags()
-       conf.gcc_modifier_platform()
-       conf.cc_load_tools()
-       conf.cc_add_flags()
-       conf.link_add_flags()
+       if conf.env.ICXCL and Utils.is_win32:
+               conf.find_msvc()
+               conf.find_program('MT', var='MT')
+               conf.env.MTFLAGS = ['/nologo']
+               conf.env.MSVC_MANIFEST = True
+
+               conf.msvc_common_flags()
+
+               conf.env.CFLAGS = []
+               conf.cc_load_tools()
+               conf.cc_add_flags()
+               conf.link_add_flags()
+
+               conf.visual_studio_add_flags()
+               conf.env.CC_TGT_F = ['/FC', '/c', '/Fo']
+               conf.env.CPPPATH_ST = '/I%s'
+       else:
+               conf.find_ar()
+               conf.gcc_common_flags()
+               conf.gcc_modifier_platform()
+               conf.cc_load_tools()
+               conf.cc_add_flags()
+               conf.link_add_flags()
diff --git a/third_party/waf/waflib/Tools/icpc.py 
b/third_party/waf/waflib/Tools/icpc.py
index 8a6cc6c40f9..04ec692177f 100644
--- a/third_party/waf/waflib/Tools/icpc.py
+++ b/third_party/waf/waflib/Tools/icpc.py
@@ -6,25 +6,50 @@
 Detects the Intel C++ compiler
 """
 
-import sys
+from waflib import Utils
 from waflib.Tools import ccroot, ar, gxx
 from waflib.Configure import conf
+from waflib.Tools import msvc
 
 @conf
 def find_icpc(conf):
        """
        Finds the program icpc, and execute it to ensure it really is icpc
        """
-       cxx = conf.find_program('icpc', var='CXX')
-       conf.get_cc_version(cxx, icc=True)
+       if Utils.is_win32:
+               conf.find_program(['icx-cl'], var='ICPXCL', mandatory=False)
+               if conf.env.ICPXCL:
+                       conf.env.INTEL_CLANG_COMPILER = True
+                       conf.env.CXX = conf.env.ICPXCL
+
+       if not conf.env.ICPXCL:
+               cc = conf.find_program(['icpx', 'icpc', 'ICL'], var='CXX')
+               conf.get_cc_version(cc, icc=True)
+
        conf.env.CXX_NAME = 'icc'
 
 def configure(conf):
        conf.find_icpc()
-       conf.find_ar()
-       conf.gxx_common_flags()
-       conf.gxx_modifier_platform()
-       conf.cxx_load_tools()
-       conf.cxx_add_flags()
-       conf.link_add_flags()
+       if conf.env.ICPXCL and Utils.is_win32:
+               conf.find_msvc()
+               conf.find_program('MT', var='MT')
+               conf.env.MTFLAGS = ['/nologo']
+               conf.env.MSVC_MANIFEST = True
+
+               conf.msvc_common_flags()
+
+               conf.env.CXXFLAGS = []
+               conf.cc_load_tools()
+               conf.cc_add_flags()
+               conf.link_add_flags()
 
+               conf.visual_studio_add_flags()
+               conf.env.CXX_TGT_F = ['/c', '/Fo']
+               conf.env.CPPPATH_ST = '/I%s'
+       else:
+               conf.find_ar()
+               conf.gxx_common_flags()
+               conf.gxx_modifier_platform()
+               conf.cc_load_tools()
+               conf.cc_add_flags()
+               conf.link_add_flags()
diff --git a/third_party/waf/waflib/Tools/ifort.py 
b/third_party/waf/waflib/Tools/ifort.py
index 17d3052910f..30230f5c382 100644
--- a/third_party/waf/waflib/Tools/ifort.py
+++ b/third_party/waf/waflib/Tools/ifort.py
@@ -11,7 +11,7 @@ from waflib.TaskGen import after_method, feature
 
 @conf
 def find_ifort(conf):
-       fc = conf.find_program('ifort', var='FC')
+       fc = conf.find_program(['ifx', 'ifort'], var='FC')
        conf.get_ifort_version(fc)
        conf.env.FC_NAME = 'IFORT'
 
diff --git a/third_party/waf/waflib/Tools/qt5.py 
b/third_party/waf/waflib/Tools/qt5.py
index 0932e943ae6..7f26ac5f76e 100644
--- a/third_party/waf/waflib/Tools/qt5.py
+++ b/third_party/waf/waflib/Tools/qt5.py
@@ -530,13 +530,20 @@ def configure(self):
                Logs.error('No xml.sax support was found, rcc dependencies will 
be incomplete!')
 
        feature = 'qt6' if self.want_qt6 else 'qt5'
-       # Qt6 requires C++17 (https://www.qt.io/blog/qt-6.0-released)
-       stdflag = '-std=c++17' if self.want_qt6 else '-std=c++11'
 
        # Qt5 may be compiled with '-reduce-relocations' which requires 
dependent programs to have -fPIE or -fPIC?
        frag = '#include <QMap>\nint main(int argc, char **argv) {QMap<int,int> 
m;return m.keys().size();}\n'
        uses = 'QT6CORE' if self.want_qt6 else 'QT5CORE'
-       for flag in [[], '-fPIE', '-fPIC', stdflag, [stdflag, '-fPIE'], 
[stdflag, '-fPIC']]:
+
+       # Qt6 requires C++17 (https://www.qt.io/blog/qt-6.0-released)
+       flag_list = []
+       if self.env.CXX_NAME == 'msvc':
+               stdflag = '/std:c++17' if self.want_qt6 else '/std:c++11'
+               flag_list = [[], ['/Zc:__cplusplus', '/permissive-', stdflag]]
+       else:
+               stdflag = '-std=c++17' if self.want_qt6 else '-std=c++11'
+               flag_list = [[], '-fPIE', '-fPIC', stdflag, [stdflag, '-fPIE'], 
[stdflag, '-fPIC']]
+       for flag in flag_list:
                msg = 'See if Qt files compile '
                if flag:
                        msg += 'with %s' % flag
@@ -846,14 +853,13 @@ def set_qt5_libs_to_check(self):
                if Utils.unversioned_sys_platform() == 'darwin':
                        pat = r"%s\.framework"
 
-               # We only want to match Qt5 or Qt in the case of Qt5, in the 
case
-               # of Qt6 we want to match Qt6 or Qt. This speeds up 
configuration
-               # and reduces the chattiness of the configuration. Should also 
prevent
-               # possible misconfiguration.
                if self.want_qt6:
-                       re_qt = re.compile(pat % 'Qt6?(?!\\d)(?P<name>\\w+)' + 
'$')
+                       # match Qt6Name or QtName but not Qt5Name
+                       mid_pattern = pat % 'Qt6?(?P<name>[^5]\\w+)'
                else:
-                       re_qt = re.compile(pat % 'Qt5?(?!\\d)(?P<name>\\w+)' + 
'$')
+                       # match Qt5Name or QtName but not Qt6Name
+                       mid_pattern = pat % 'Qt5?(?P<name>[^6]\\w+)'
+               re_qt = re.compile('^%s$' % mid_pattern)
 
                for x in sorted(dirlst):
                        m = re_qt.match(x)
diff --git a/third_party/waf/waflib/Tools/tex.py 
b/third_party/waf/waflib/Tools/tex.py
index b4792c3fe87..22f78d0ef8f 100644
--- a/third_party/waf/waflib/Tools/tex.py
+++ b/third_party/waf/waflib/Tools/tex.py
@@ -355,9 +355,9 @@ class tex(Task.Task):
                env = self.env
 
                if not env.PROMPT_LATEX:
-                       env.append_value('LATEXFLAGS', '-interaction=batchmode')
-                       env.append_value('PDFLATEXFLAGS', 
'-interaction=batchmode')
-                       env.append_value('XELATEXFLAGS', 
'-interaction=batchmode')
+                       env.append_value('LATEXFLAGS', 
'-interaction=nonstopmode')
+                       env.append_value('PDFLATEXFLAGS', 
'-interaction=nonstopmode')
+                       env.append_value('XELATEXFLAGS', 
'-interaction=nonstopmode')
 
                # important, set the cwd for everybody
                self.cwd = self.inputs[0].parent.get_bld()
@@ -458,7 +458,7 @@ def apply_tex(self):
 
        outs = Utils.to_list(getattr(self, 'outs', []))
 
-       # prompt for incomplete files (else the batchmode is used)
+       # prompt for incomplete files (else the nonstopmode is used)
        try:
                self.generator.bld.conf
        except AttributeError:
diff --git a/third_party/waf/waflib/extras/color_gcc.py 
b/third_party/waf/waflib/extras/color_gcc.py
index 09729035fec..b580396c818 100644
--- a/third_party/waf/waflib/extras/color_gcc.py
+++ b/third_party/waf/waflib/extras/color_gcc.py
@@ -2,6 +2,9 @@
 # encoding: utf-8
 
 # Replaces the default formatter by one which understands GCC output and 
colorizes it.
+#
+# This is mostly obsolete as gcc/g++ provide colored outputs by default:
+#    CFLAGS="-fdiagnostics-color=always" CXXFLAGS="-fdiagnostics-color=always" 
waf configure clean build
 
 __author__ = __maintainer__ = "Jérôme Carretero <[email protected]>"
 __copyright__ = "Jérôme Carretero, 2012"
@@ -36,4 +39,3 @@ class ColorGCCFormatter(Logs.formatter):
 
 def options(opt):
        Logs.log.handlers[0].setFormatter(ColorGCCFormatter(Logs.colors))
-
diff --git a/third_party/waf/waflib/extras/color_msvc.py 
b/third_party/waf/waflib/extras/color_msvc.py
index 60bacb7b240..3ea9ee635ac 100644
--- a/third_party/waf/waflib/extras/color_msvc.py
+++ b/third_party/waf/waflib/extras/color_msvc.py
@@ -14,18 +14,18 @@ class ColorMSVCFormatter(Logs.formatter):
        def __init__(self, colors):
                self.colors = colors
                Logs.formatter.__init__(self)
-       
+
        def parseMessage(self, line, color):
                # Split messaage from 'disk:filepath: type: message'
                arr = line.split(':', 3)
                if len(arr) < 4:
                        return line
-               
+
                colored = self.colors.BOLD + arr[0] + ':' + arr[1] + ':' + 
self.colors.NORMAL
                colored += color + arr[2] + ':' + self.colors.NORMAL
                colored += arr[3]
                return colored
-       
+
        def format(self, rec):
                frame = sys._getframe()
                while frame:
diff --git a/third_party/waf/waflib/extras/msvcdeps.py 
b/third_party/waf/waflib/extras/msvcdeps.py
index e8985bde7c7..263596a24f3 100644
--- a/third_party/waf/waflib/extras/msvcdeps.py
+++ b/third_party/waf/waflib/extras/msvcdeps.py
@@ -265,8 +265,11 @@ def exec_command(self, cmd, **kw):
                # Pipe through the remaining stdout content (not related to 
/showIncludes)
                if self.generator.bld.logger:
                        self.generator.bld.logger.debug('out: %s' % 
os.linesep.join(out))
-               else:
-                       sys.stdout.write(os.linesep.join(out) + os.linesep)
+               elif len(out) > 1:
+                       # msvc will output the input file name by default, 
which is not useful
+                       # in the single-file case as waf will already print 
task. For multi-file
+                       # inputs or other messages, allow the full message to 
be forwarded.
+                       Logs.info(os.linesep.join(out), 
extra={'stream':sys.stdout, 'c1': ''})
 
                return ret
        finally:
@@ -291,4 +294,3 @@ for k in ('c', 'cxx'):
 
 def options(opt):
        raise ValueError('Do not load msvcdeps options')
-
diff --git a/third_party/waf/waflib/extras/stale.py 
b/third_party/waf/waflib/extras/stale.py
index cac3f469c94..25e89059782 100644
--- a/third_party/waf/waflib/extras/stale.py
+++ b/third_party/waf/waflib/extras/stale.py
@@ -14,9 +14,16 @@ Of course, it will only work if there are no dynamically 
generated
 nodes/tasks, in which case the method will have to be modified
 to exclude some folders for example.
 
-Make sure to set bld.post_mode = waflib.Build.POST_AT_ONCE
+Make sure to specify bld.post_mode = waflib.Build.POST_AT_ONCE::
+
+       def build(bld):
+               bld.load('stale')
+               import waflib.Build
+               bld.post_mode = waflib.Build.POST_AT_ONCE
+
 """
 
+import os
 from waflib import Logs, Build
 from waflib.Runner import Parallel
 
@@ -26,7 +33,7 @@ MOC_H_EXTS = '.cpp .cxx .hpp .hxx .h'.split()
 def can_delete(node):
        """Imperfect moc cleanup which does not look for a Q_OBJECT macro in 
the files"""
        if not node.name.endswith('.moc'):
-               return True
+               return os.path.isfile(node.abspath())
        base = node.name[:-4]
        p1 = node.parent.get_src()
        p2 = node.parent.get_bld()
@@ -51,7 +58,7 @@ def stale_rec(node, nodes):
                return
 
        if getattr(node, 'children', []):
-               for x in node.children.values():
+               for x in list(node.children.values()):
                        if x.name != "c4che":
                                stale_rec(x, nodes)
        else:
@@ -75,21 +82,26 @@ def refill_task_list(self):
        self.stale_done = True
 
        # this does not work in partial builds
-       if bld.targets != '*':
+       if bld.targets not in ('', '*'):
                return iit
 


-- 
Samba Shared Repository

Reply via email to