[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Fri Jan 6 15:05:01 UTC 2023
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 <slow at 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 <slow at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
Autobuild-Date(master): Fri Jan 6 15:04:46 UTC 2023 on sn-devel-184
commit 0d096931196524a2d1bf59470bc629dc9231131e
Author: Stefan Metzmacher <metze at 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 <metze at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit c29c487c5ab68560a73012a2dddad78009b08eef
Author: Andreas Schneider <asn at 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 <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at 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
More information about the samba-cvs
mailing list