The branch, master has been updated
       via  7545e2c77b6 nsswitch: avoid calling pthread_getspecific() on an 
uninitialized key
       via  0d096931196 s4:lib/messaging: fix interaction between 
imessaging_context_destructor and irpc_destructor
       via  c29c487c5ab third_party: Update waf to version 2.0.25
      from  dd86376294f smbd: Fix indentation

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


- Log -----------------------------------------------------------------
commit 7545e2c77b69fc57e436e3ed298fdb68033ce49f
Author: Ralph Boehme <s...@samba.org>
Date:   Thu Jan 5 16:25:11 2023 +0100

    nsswitch: avoid calling pthread_getspecific() on an uninitialized key
    
    Found by ASAN:
    
    $ bin/stress-nss-libwbclient
    ...
    ==1639426==ERROR: AddressSanitizer: unknown-crash on address 0x7f3907d85000 
at pc 0x7f3907d649fb bp 0x7ffc6545f5b0 sp 0x7ffc6545f5a8
    READ of size 4 at 0x7f3907d85000 thread T0
        #0 0x7f3907d649fa in winbind_close_sock ../../nsswitch/wb_common.c:220
        #1 0x7f3907d65866 in winbind_destructor ../../nsswitch/wb_common.c:246
        #2 0x7f3907da5d3d in _dl_fini 
/usr/src/debug/glibc-2.35-20.fc36.x86_64/elf/dl-fini.c:142
        #3 0x7f3907241044 in __run_exit_handlers (/lib64/libc.so.6+0x41044)
        #4 0x7f39072411bf in exit (/lib64/libc.so.6+0x411bf)
        #5 0x7f3907229516 in __libc_start_call_main (/lib64/libc.so.6+0x29516)
        #6 0x7f39072295c8 in __libc_start_main_impl (/lib64/libc.so.6+0x295c8)
        #7 0x56236a2042b4 in _start 
(/data/git/samba/scratch3/bin/default/nsswitch/stress-nss-libwbclient+0x22b4)
    
    Address 0x7f3907d85000 is a wild pointer inside of access range of size 
0x000000000004.
    SUMMARY: AddressSanitizer: unknown-crash ../../nsswitch/wb_common.c:220 in 
winbind_close_sock
    
    The pthread key in wb_global_ctx.key is only initialized if
    wb_thread_ctx_initialize() is called via get_wb_global_ctx() -> 
get_wb_thread_ctx().
    
    Signed-off-by: Ralph Boehme <s...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <me...@samba.org>
    Autobuild-Date(master): Fri Jan  6 15:04:46 UTC 2023 on sn-devel-184

commit 0d096931196524a2d1bf59470bc629dc9231131e
Author: Stefan Metzmacher <me...@samba.org>
Date:   Sat Dec 31 01:24:57 2022 +0100

    s4:lib/messaging: fix interaction between imessaging_context_destructor and 
irpc_destructor
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15280
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit c29c487c5ab68560a73012a2dddad78009b08eef
Author: Andreas Schneider <a...@samba.org>
Date:   Wed Jan 4 09:39:45 2023 +0100

    third_party: Update waf to version 2.0.25
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

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

Summary of changes:
 buildtools/bin/waf                                 |   2 +-
 buildtools/wafsamba/wafsamba.py                    |   2 +-
 nsswitch/wb_common.c                               |  22 +++-
 source4/lib/messaging/messaging.c                  |  13 +++
 source4/lib/messaging/messaging_internal.h         |   3 +
 third_party/waf/waflib/Configure.py                |   2 +-
 third_party/waf/waflib/Context.py                  |   6 +-
 third_party/waf/waflib/TaskGen.py                  |   2 +-
 third_party/waf/waflib/Tools/msvc.py               |   2 +-
 third_party/waf/waflib/Tools/python.py             |  62 ++++++-----
 third_party/waf/waflib/Utils.py                    |  15 +++
 third_party/waf/waflib/extras/cpplint.py           |   2 +-
 .../waflib/extras/{fc_nfort.py => fc_fujitsu.py}   |  26 ++---
 third_party/waf/waflib/extras/gccdeps.py           |   2 +-
 third_party/waf/waflib/extras/pyqt5.py             |  18 +--
 third_party/waf/waflib/extras/sphinx.py            |  55 +++++----
 third_party/waf/waflib/extras/wafcache.py          | 123 ++++++++++++++++-----
 17 files changed, 243 insertions(+), 114 deletions(-)
 copy third_party/waf/waflib/extras/{fc_nfort.py => fc_fujitsu.py} (60%)


Changeset truncated at 500 lines:

diff --git a/buildtools/bin/waf b/buildtools/bin/waf
index d9cba343623..f754b52a7bc 100755
--- a/buildtools/bin/waf
+++ b/buildtools/bin/waf
@@ -32,7 +32,7 @@ POSSIBILITY OF SUCH DAMAGE.
 
 import os, sys, inspect
 
-VERSION="2.0.24"
+VERSION="2.0.25"
 REVISION="x"
 GIT="x"
 INSTALL="x"
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 79f352878a8..17a188f5036 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -38,7 +38,7 @@ LIB_PATH="shared"
 
 os.environ['PYTHONUNBUFFERED'] = '1'
 
-if Context.HEXVERSION not in (0x2001800,):
+if Context.HEXVERSION not in (0x2001900,):
     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/nsswitch/wb_common.c b/nsswitch/wb_common.c
index 7ae3a11162d..d569e761ebe 100644
--- a/nsswitch/wb_common.c
+++ b/nsswitch/wb_common.c
@@ -43,6 +43,7 @@ struct winbindd_context {
 };
 
 static struct wb_global_ctx {
+       bool initialized;
 #ifdef HAVE_PTHREAD
        pthread_once_t control;
        pthread_key_t key;
@@ -141,16 +142,23 @@ static struct winbindd_context *get_wb_thread_ctx(void)
 
 static struct winbindd_context *get_wb_global_ctx(void)
 {
-#ifdef HAVE_PTHREAD
-       return get_wb_thread_ctx();
-#else
-       static struct winbindd_context ctx = {
+       struct winbindd_context *ctx = NULL;
+#ifndef HAVE_PTHREAD
+       static struct winbindd_context _ctx = {
                .winbindd_fd = -1,
                .is_privileged = false,
                .our_pid = 0
        };
-       return &ctx;
 #endif
+
+#ifdef HAVE_PTHREAD
+       ctx = get_wb_thread_ctx();
+#else
+       ctx = &_ctx;
+#endif
+
+       wb_global_ctx.initialized = true;
+       return ctx;
 }
 
 void winbind_set_client_name(const char *name)
@@ -234,6 +242,10 @@ static void winbind_destructor(void)
 {
        struct winbindd_context *ctx;
 
+       if (!wb_global_ctx.initialized) {
+               return;
+       }
+
 #ifdef HAVE_PTHREAD_H
        ctx = (struct winbindd_context *)pthread_getspecific(wb_global_ctx.key);
        if (ctx == NULL) {
diff --git a/source4/lib/messaging/messaging.c 
b/source4/lib/messaging/messaging.c
index 3705ffc5bef..3a9dccc1d48 100644
--- a/source4/lib/messaging/messaging.c
+++ b/source4/lib/messaging/messaging.c
@@ -48,6 +48,7 @@
   a pending irpc call
 */
 struct irpc_request {
+       struct irpc_request *prev, *next;
        struct imessaging_context *msg_ctx;
        int callid;
        struct {
@@ -400,6 +401,16 @@ NTSTATUS imessaging_process_cleanup(
 
 static int imessaging_context_destructor(struct imessaging_context *msg)
 {
+       struct irpc_request *irpc = NULL;
+       struct irpc_request *next = NULL;
+
+       for (irpc = msg->requests; irpc != NULL; irpc = next) {
+               next = irpc->next;
+
+               DLIST_REMOVE(msg->requests, irpc);
+               irpc->callid = -1;
+       }
+
        DLIST_REMOVE(msg_ctxs, msg);
        TALLOC_FREE(msg->msg_dgm_ref);
        return 0;
@@ -1035,6 +1046,7 @@ failed:
 static int irpc_destructor(struct irpc_request *irpc)
 {
        if (irpc->callid != -1) {
+               DLIST_REMOVE(irpc->msg_ctx->requests, irpc);
                idr_remove(irpc->msg_ctx->idr, irpc->callid);
                if (irpc->msg_ctx->discard_incoming) {
                        SMB_ASSERT(irpc->msg_ctx->num_incoming_listeners > 0);
@@ -1238,6 +1250,7 @@ static struct tevent_req 
*irpc_bh_raw_call_send(TALLOC_CTX *mem_ctx,
        /* make sure we accept incoming messages */
        SMB_ASSERT(state->irpc->msg_ctx->num_incoming_listeners < UINT64_MAX);
        state->irpc->msg_ctx->num_incoming_listeners += 1;
+       DLIST_ADD_END(state->irpc->msg_ctx->requests, state->irpc);
        talloc_set_destructor(state->irpc, irpc_destructor);
 
        /* setup the header */
diff --git a/source4/lib/messaging/messaging_internal.h 
b/source4/lib/messaging/messaging_internal.h
index ac254c22631..6281bda82a9 100644
--- a/source4/lib/messaging/messaging_internal.h
+++ b/source4/lib/messaging/messaging_internal.h
@@ -19,6 +19,8 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+struct irpc_request;
+
 struct imessaging_context {
        struct imessaging_context *prev, *next;
        struct tevent_context *ev;
@@ -30,6 +32,7 @@ struct imessaging_context {
        struct idr_context *dispatch_tree;
        struct irpc_list *irpc;
        struct idr_context *idr;
+       struct irpc_request *requests;
        struct server_id_db *names;
        struct timeval start_time;
        void *msg_dgm_ref;
diff --git a/third_party/waf/waflib/Configure.py 
b/third_party/waf/waflib/Configure.py
index e7333948489..f6fdc4e94a7 100644
--- a/third_party/waf/waflib/Configure.py
+++ b/third_party/waf/waflib/Configure.py
@@ -439,7 +439,7 @@ def find_program(self, filename, **kw):
 
        var = kw.get('var', '')
        if not var:
-               var = re.sub(r'[-.]', '_', filename[0].upper())
+               var = re.sub(r'\W', '_', filename[0].upper())
 
        path_list = kw.get('path_list', '')
        if path_list:
diff --git a/third_party/waf/waflib/Context.py 
b/third_party/waf/waflib/Context.py
index 4a0130b24a0..ee8c5c9c5df 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=0x2001800
+HEXVERSION=0x2001900
 """Constant updated on new releases"""
 
-WAFVERSION="2.0.24"
+WAFVERSION="2.0.25"
 """Constant updated on new releases"""
 
-WAFREVISION="1af97c71f5a6756abf36d0f78ed8fd551596d7cb"
+WAFREVISION="2db0b41b2805cd5db3b55476c06b23c1e46d319f"
 """Git revision when the waf version is updated"""
 
 WAFNAME="waf"
diff --git a/third_party/waf/waflib/TaskGen.py 
b/third_party/waf/waflib/TaskGen.py
index 89f63169910..32468f03d3c 100644
--- a/third_party/waf/waflib/TaskGen.py
+++ b/third_party/waf/waflib/TaskGen.py
@@ -400,7 +400,7 @@ def feature(*k):
        Decorator that registers a task generator method that will be executed 
when the
        object attribute ``feature`` contains the corresponding key(s)::
 
-               from waflib.Task import feature
+               from waflib.TaskGen import feature
                @feature('myfeature')
                def myfunction(self):
                        print('that is my feature!')
diff --git a/third_party/waf/waflib/Tools/msvc.py 
b/third_party/waf/waflib/Tools/msvc.py
index 026a4c7fc48..d60f6702681 100644
--- a/third_party/waf/waflib/Tools/msvc.py
+++ b/third_party/waf/waflib/Tools/msvc.py
@@ -111,7 +111,7 @@ def options(opt):
 
 class MSVCVersion(object):
        def __init__(self, ver):
-               m = re.search('^(.*)\s+(\d+[.]\d+)', ver)
+               m = re.search(r'^(.*)\s+(\d+[.]\d+)', ver)
                if m:
                        self.name = m.group(1)
                        self.number = float(m.group(2))
diff --git a/third_party/waf/waflib/Tools/python.py 
b/third_party/waf/waflib/Tools/python.py
index a23bd019335..b2dd1a9bcc3 100644
--- a/third_party/waf/waflib/Tools/python.py
+++ b/third_party/waf/waflib/Tools/python.py
@@ -53,7 +53,17 @@ py_compile.compile(sys.argv[1], sys.argv[2], sys.argv[3], 
True)
 Piece of Python code used in :py:class:`waflib.Tools.python.pyo` and 
:py:class:`waflib.Tools.python.pyc` for byte-compiling python files
 """
 
-DISTUTILS_IMP = ['from distutils.sysconfig import get_config_var, 
get_python_lib']
+DISTUTILS_IMP = """
+try:
+       from distutils.sysconfig import get_config_var, get_python_lib
+except ImportError:
+       from sysconfig import get_config_var, get_path
+       def get_python_lib(*k, **kw):
+               keyword='platlib' if kw.get('plat_specific') else 'purelib'
+               if 'prefix' in kw:
+                       return get_path(keyword, vars={'installed_base': 
kw['prefix'], 'platbase': kw['prefix']})
+               return get_path(keyword)
+""".splitlines()
 
 @before_method('process_source')
 @feature('py')
@@ -219,7 +229,7 @@ def get_python_variables(self, variables, imports=None):
        try:
                out = self.cmd_and_log(self.env.PYTHON + ['-c', 
'\n'.join(program)], env=os_env)
        except Errors.WafError:
-               self.fatal('The distutils module is unusable: install 
"python-devel"?')
+               self.fatal('Could not run %r' % self.env.PYTHON)
        self.to_log(out)
        return_values = []
        for s in out.splitlines():
@@ -291,7 +301,8 @@ def python_cross_compile(self, features='pyembed pyext'):
 @conf
 def check_python_headers(conf, features='pyembed pyext'):
        """
-       Check for headers and libraries necessary to extend or embed python by 
using the module *distutils*.
+       Check for headers and libraries necessary to extend or embed python.
+       It may use the module *distutils* or sysconfig in newer Python versions.
        On success the environment variables xxx_PYEXT and xxx_PYEMBED are 
added:
 
        * PYEXT: for compiling python extensions
@@ -439,7 +450,7 @@ def check_python_headers(conf, features='pyembed pyext'):
                env.LIBPATH_PYEXT = env.LIBPATH_PYEMBED
                env.LIB_PYEXT = env.LIB_PYEMBED
 
-       conf.to_log("Include path for Python extensions (found via distutils 
module): %r\n" % (dct['INCLUDEPY'],))
+       conf.to_log("Found an include path for Python extensions: %r\n" % 
(dct['INCLUDEPY'],))
        env.INCLUDES_PYEXT = [dct['INCLUDEPY']]
        env.INCLUDES_PYEMBED = [dct['INCLUDEPY']]
 
@@ -452,15 +463,21 @@ def check_python_headers(conf, features='pyembed pyext'):
                env.append_unique('CXXFLAGS_PYEXT', ['-fno-strict-aliasing'])
 
        if env.CC_NAME == "msvc":
-               from distutils.msvccompiler import MSVCCompiler
-               dist_compiler = MSVCCompiler()
-               dist_compiler.initialize()
-               env.append_value('CFLAGS_PYEXT', dist_compiler.compile_options)
-               env.append_value('CXXFLAGS_PYEXT', 
dist_compiler.compile_options)
-               env.append_value('LINKFLAGS_PYEXT', 
dist_compiler.ldflags_shared)
+               try:
+                       from distutils.msvccompiler import MSVCCompiler
+               except ImportError:
+                       # From 
https://github.com/python/cpython/blob/main/Lib/distutils/msvccompiler.py
+                       env.append_value('CFLAGS_PYEXT', [ '/nologo', '/Ox', 
'/MD', '/W3', '/GX', '/DNDEBUG'])
+                       env.append_value('CXXFLAGS_PYEXT', [ '/nologo', '/Ox', 
'/MD', '/W3', '/GX', '/DNDEBUG'])
+                       env.append_value('LINKFLAGS_PYEXT', ['/DLL', '/nologo', 
'/INCREMENTAL:NO'])
+               else:
+                       dist_compiler = MSVCCompiler()
+                       dist_compiler.initialize()
+                       env.append_value('CFLAGS_PYEXT', 
dist_compiler.compile_options)
+                       env.append_value('CXXFLAGS_PYEXT', 
dist_compiler.compile_options)
+                       env.append_value('LINKFLAGS_PYEXT', 
dist_compiler.ldflags_shared)
 
-       # See if it compiles
-       conf.check(header_name='Python.h', define_name='HAVE_PYTHON_H', 
uselib='PYEMBED', fragment=FRAG, errmsg='Distutils not installed? Broken python 
installation? Get python-config now!')
+       conf.check(header_name='Python.h', define_name='HAVE_PYTHON_H', 
uselib='PYEMBED', fragment=FRAG, errmsg='Could not build a Python embedded 
interpreter')
 
 @conf
 def check_python_version(conf, minver=None):
@@ -506,17 +523,9 @@ def check_python_version(conf, minver=None):
                else:
                        # Finally, try to guess
                        if Utils.is_win32:
-                               (python_LIBDEST, pydir) = 
conf.get_python_variables(
-                                         ["get_config_var('LIBDEST') or ''",
-                                          "get_python_lib(standard_lib=0) or 
''"])
+                               (pydir,) = 
conf.get_python_variables(["get_python_lib(standard_lib=0) or ''"])
                        else:
-                               python_LIBDEST = None
-                               (pydir,) = conf.get_python_variables( 
["get_python_lib(standard_lib=0, prefix=%r) or ''" % conf.env.PREFIX])
-                       if python_LIBDEST is None:
-                               if conf.env.LIBDIR:
-                                       python_LIBDEST = 
os.path.join(conf.env.LIBDIR, 'python' + pyver)
-                               else:
-                                       python_LIBDEST = 
os.path.join(conf.env.PREFIX, 'lib', 'python' + pyver)
+                               (pydir,) = 
conf.get_python_variables(["get_python_lib(standard_lib=0, prefix=%r) or ''" % 
conf.env.PREFIX])
 
                if 'PYTHONARCHDIR' in conf.env:
                        # Check if --pythonarchdir was specified
@@ -526,7 +535,7 @@ def check_python_version(conf, minver=None):
                        pyarchdir = conf.environ['PYTHONARCHDIR']
                else:
                        # Finally, try to guess
-                       (pyarchdir, ) = conf.get_python_variables( 
["get_python_lib(plat_specific=1, standard_lib=0, prefix=%r) or ''" % 
conf.env.PREFIX])
+                       (pyarchdir, ) = 
conf.get_python_variables(["get_python_lib(plat_specific=1, standard_lib=0, 
prefix=%r) or ''" % conf.env.PREFIX])
                        if not pyarchdir:
                                pyarchdir = pydir
 
@@ -585,13 +594,12 @@ def check_python_module(conf, module_name, condition=''):
                if ret == 'unknown version':
                        conf.fatal('Could not check the %s version' % 
module_name)
 
-               from distutils.version import LooseVersion
                def num(*k):
                        if isinstance(k[0], int):
-                               return LooseVersion('.'.join([str(x) for x in 
k]))
+                               return Utils.loose_version('.'.join([str(x) for 
x in k]))
                        else:
-                               return LooseVersion(k[0])
-               d = {'num': num, 'ver': LooseVersion(ret)}
+                               return Utils.loose_version(k[0])
+               d = {'num': num, 'ver': Utils.loose_version(ret)}
                ev = eval(condition, {}, d)
                if not ev:
                        conf.fatal('The %s version does not satisfy the 
requirements' % module_name)
diff --git a/third_party/waf/waflib/Utils.py b/third_party/waf/waflib/Utils.py
index 669490ca908..ea0f7a9db88 100644
--- a/third_party/waf/waflib/Utils.py
+++ b/third_party/waf/waflib/Utils.py
@@ -452,6 +452,8 @@ def console_encoding():
                        pass
                else:
                        if codepage:
+                               if 65001 == codepage and sys.version_info < (3, 
3):
+                                       return 'utf-8'
                                return 'cp%d' % codepage
        return sys.stdout.encoding or ('cp1252' if is_win32 else 'latin-1')
 
@@ -868,6 +870,19 @@ def lib64():
                                return '64'
        return ''
 
+def loose_version(ver_str):
+       # private for the time being!
+       # see #2402
+       lst = re.split(r'([.]|\\d+|[a-zA-Z])', ver_str)
+       ver = []
+       for i, val in enumerate(lst):
+               try:
+                       ver.append(int(val))
+               except ValueError:
+                       if val != '.':
+                               ver.append(val)
+       return ver
+
 def sane_path(p):
        # private function for the time being!
        return os.path.abspath(os.path.expanduser(p))
diff --git a/third_party/waf/waflib/extras/cpplint.py 
b/third_party/waf/waflib/extras/cpplint.py
index 8cdd6ddacb3..afc09c9472c 100644
--- a/third_party/waf/waflib/extras/cpplint.py
+++ b/third_party/waf/waflib/extras/cpplint.py
@@ -169,7 +169,7 @@ class cpplint(Task.Task):
         global critical_errors
         with cpplint_wrapper(get_cpplint_logger(self.env.CPPLINT_OUTPUT), 
self.env.CPPLINT_BREAK, self.env.CPPLINT_OUTPUT):
             params = {key: str(self.env[key]) for key in self.env if 
'CPPLINT_' in key}
-            if params['CPPLINT_OUTPUT'] is 'waf':
+            if params['CPPLINT_OUTPUT'] == 'waf':
                 params['CPPLINT_OUTPUT'] = 'emacs'
             params['CPPLINT'] = self.env.get_flat('CPPLINT')
             cmd = Utils.subst_vars(CPPLINT_STR, params)
diff --git a/third_party/waf/waflib/extras/fc_nfort.py 
b/third_party/waf/waflib/extras/fc_fujitsu.py
similarity index 60%
copy from third_party/waf/waflib/extras/fc_nfort.py
copy to third_party/waf/waflib/extras/fc_fujitsu.py
index c25886b8e70..cae676c207c 100644
--- a/third_party/waf/waflib/extras/fc_nfort.py
+++ b/third_party/waf/waflib/extras/fc_fujitsu.py
@@ -1,22 +1,22 @@
 #! /usr/bin/env python
 # encoding: utf-8
-# Detection of the NEC Fortran compiler for Aurora Tsubasa
+# Detection of the Fujitsu Fortran compiler for ARM64FX
 
 import re
 from waflib.Tools import fc,fc_config,fc_scan
 from waflib.Configure import conf
 from waflib.Tools.compiler_fc import fc_compiler
-fc_compiler['linux'].append('fc_nfort')
+fc_compiler['linux'].append('fc_fujitsu')
 
 @conf
-def find_nfort(conf):
-       fc=conf.find_program(['nfort'],var='FC')
-       conf.get_nfort_version(fc)
-       conf.env.FC_NAME='NFORT'
+def find_fujitsu(conf):
+       fc=conf.find_program(['frtpx'],var='FC')
+       conf.get_fujitsu_version(fc)
+       conf.env.FC_NAME='FUJITSU'
        conf.env.FC_MOD_CAPITALIZATION='lower'
 
 @conf
-def nfort_flags(conf):
+def fujitsu_flags(conf):
        v=conf.env
        v['_FCMODOUTFLAGS']=[]
        v['FCFLAGS_DEBUG']=[]
@@ -26,8 +26,8 @@ def nfort_flags(conf):
        v['FCSHLIB_MARKER']=''
 
 @conf
-def get_nfort_version(conf,fc):
-       
version_re=re.compile(r"nfort\s*\(NFORT\)\s*(?P<major>\d+)\.(?P<minor>\d+)\.",re.I).search
+def get_fujitsu_version(conf,fc):
+       
version_re=re.compile(r"frtpx\s*\(FRT\)\s*(?P<major>\d+)\.(?P<minor>\d+)\.",re.I).search
        cmd=fc+['--version']
        out,err=fc_config.getoutput(conf,cmd,stdin=False)
        if out:
@@ -36,17 +36,17 @@ def get_nfort_version(conf,fc):
                match=version_re(err)
        if not match:
                return(False)
-               conf.fatal('Could not determine the NEC NFORT Fortran compiler 
version.')
+               conf.fatal('Could not determine the Fujitsu FRT Fortran 
compiler version.')
        else:
                k=match.groupdict()
                conf.env['FC_VERSION']=(k['major'],k['minor'])
 
 def configure(conf):
-       conf.find_nfort()
-       conf.find_program('nar',var='AR')
+       conf.find_fujitsu()
+       conf.find_program('ar',var='AR')
        conf.add_os_flags('ARFLAGS')
        if not conf.env.ARFLAGS:
                conf.env.ARFLAGS=['rcs']
        conf.fc_flags()
        conf.fc_add_flags()
-       conf.nfort_flags()
+       conf.fujitsu_flags()
diff --git a/third_party/waf/waflib/extras/gccdeps.py 
b/third_party/waf/waflib/extras/gccdeps.py
index 9e9952f2f7d..5d2f0dd230c 100644
--- a/third_party/waf/waflib/extras/gccdeps.py
+++ b/third_party/waf/waflib/extras/gccdeps.py
@@ -17,7 +17,7 @@ Usage::
 
 import os, re, threading
 from waflib import Task, Logs, Utils, Errors
-from waflib.Tools import c_preproc
+from waflib.Tools import asm, c, c_preproc, cxx
 from waflib.TaskGen import before_method, feature
 
 lock = threading.Lock()
diff --git a/third_party/waf/waflib/extras/pyqt5.py 
b/third_party/waf/waflib/extras/pyqt5.py
index 9c941764cc2..0c083a1247a 100644
--- a/third_party/waf/waflib/extras/pyqt5.py
+++ b/third_party/waf/waflib/extras/pyqt5.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # encoding: utf-8
-# Federico Pellegrin, 2016-2019 (fedepell) adapted for Python
+# Federico Pellegrin, 2016-2022 (fedepell) adapted for Python
 
 """
 This tool helps with finding Python Qt5 tools and libraries,
@@ -137,7 +137,7 @@ class pyrcc(Task.Task):
        Processes ``.qrc`` files
        """
        color   = 'BLUE'
-       run_str = '${QT_PYRCC} ${SRC} -o ${TGT}'
+       run_str = '${QT_PYRCC} ${QT_PYRCC_FLAGS} ${SRC} -o ${TGT}'
        ext_out = ['.py']
 
        def rcname(self):
@@ -175,7 +175,7 @@ class ui5py(Task.Task):
        Processes ``.ui`` files for python
        """
        color   = 'BLUE'
-       run_str = '${QT_PYUIC} ${SRC} -o ${TGT}'
+       run_str = '${QT_PYUIC} ${QT_PYUIC_FLAGS} ${SRC} -o ${TGT}'
        ext_out = ['.py']
 
 class ts2qm(Task.Task):
@@ -216,17 +216,17 @@ def find_pyqt5_binaries(self):
                self.find_program(['pyrcc5'], var='QT_PYRCC')
                self.find_program(['pylupdate5'], var='QT_PYLUPDATE')
        elif getattr(Options.options, 'want_pyside2', True):
-               self.find_program(['pyside2-uic'], var='QT_PYUIC')
-               self.find_program(['pyside2-rcc'], var='QT_PYRCC')
-               self.find_program(['pyside2-lupdate'], var='QT_PYLUPDATE')
+               self.find_program(['pyside2-uic','uic-qt5'], var='QT_PYUIC')
+               self.find_program(['pyside2-rcc','rcc-qt5'], var='QT_PYRCC')
+               self.find_program(['pyside2-lupdate','lupdate-qt5'], 
var='QT_PYLUPDATE')


-- 
Samba Shared Repository

Reply via email to