Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package talloc for openSUSE:Factory checked 
in at 2024-05-24 19:50:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/talloc (Old)
 and      /work/SRC/openSUSE:Factory/.talloc.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "talloc"

Fri May 24 19:50:28 2024 rev:46 rq:1176456 version:2.4.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/talloc/talloc-man.changes        2023-10-05 
20:02:34.137446791 +0200
+++ /work/SRC/openSUSE:Factory/.talloc.new.24587/talloc-man.changes     
2024-05-24 19:50:38.340410898 +0200
@@ -1,0 +2,8 @@
+Thu May 16 11:17:35 UTC 2024 - Samuel Cabrero <scabr...@suse.de>
+
+- Update to 2.4.2
+  * build with Python 3.12 (bso#15513)
+  * documentation fixes
+  * Update patch talloc-python3.5-fix-soabi_name.patch
+
+-------------------------------------------------------------------
talloc.changes: same change

Old:
----
  talloc-2.4.1.tar.asc
  talloc-2.4.1.tar.gz

New:
----
  talloc-2.4.2.tar.asc
  talloc-2.4.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ talloc-man.spec ++++++
--- /var/tmp/diff_new_pack.h6eTyW/_old  2024-05-24 19:50:42.036545863 +0200
+++ /var/tmp/diff_new_pack.h6eTyW/_new  2024-05-24 19:50:42.052546448 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package talloc-man
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -35,7 +35,7 @@
 #!BuildIgnore:  python
 %endif # build_man
 URL:            http://talloc.samba.org/
-Version:        2.4.1
+Version:        2.4.2
 Release:        0
 Summary:        Samba talloc Library
 License:        LGPL-3.0-or-later

++++++ talloc.spec ++++++
--- /var/tmp/diff_new_pack.h6eTyW/_old  2024-05-24 19:50:42.380558425 +0200
+++ /var/tmp/diff_new_pack.h6eTyW/_new  2024-05-24 19:50:42.392558863 +0200
@@ -1,7 +1,7 @@
 #
-# spec file for package talloc-man
+# spec file for package talloc
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -35,7 +35,7 @@
 #!BuildIgnore:  python
 %endif # build_man
 URL:            http://talloc.samba.org/
-Version:        2.4.1
+Version:        2.4.2
 Release:        0
 Summary:        Samba talloc Library
 License:        LGPL-3.0-or-later

++++++ talloc-2.4.1.tar.gz -> talloc-2.4.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/ABI/pytalloc-util-2.4.2.sigs 
new/talloc-2.4.2/ABI/pytalloc-util-2.4.2.sigs
--- old/talloc-2.4.1/ABI/pytalloc-util-2.4.2.sigs       1970-01-01 
01:00:00.000000000 +0100
+++ new/talloc-2.4.2/ABI/pytalloc-util-2.4.2.sigs       2024-01-29 
17:16:45.538622600 +0100
@@ -0,0 +1,16 @@
+_pytalloc_check_type: int (PyObject *, const char *)
+_pytalloc_get_mem_ctx: TALLOC_CTX *(PyObject *)
+_pytalloc_get_name: const char *(PyObject *)
+_pytalloc_get_ptr: void *(PyObject *)
+_pytalloc_get_type: void *(PyObject *, const char *)
+pytalloc_BaseObject_PyType_Ready: int (PyTypeObject *)
+pytalloc_BaseObject_check: int (PyObject *)
+pytalloc_BaseObject_size: size_t (void)
+pytalloc_Check: int (PyObject *)
+pytalloc_GenericObject_reference_ex: PyObject *(TALLOC_CTX *, void *)
+pytalloc_GenericObject_steal_ex: PyObject *(TALLOC_CTX *, void *)
+pytalloc_GetBaseObjectType: PyTypeObject *(void)
+pytalloc_GetObjectType: PyTypeObject *(void)
+pytalloc_reference_ex: PyObject *(PyTypeObject *, TALLOC_CTX *, void *)
+pytalloc_steal: PyObject *(PyTypeObject *, void *)
+pytalloc_steal_ex: PyObject *(PyTypeObject *, TALLOC_CTX *, void *)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/ABI/talloc-2.4.2.sigs 
new/talloc-2.4.2/ABI/talloc-2.4.2.sigs
--- old/talloc-2.4.1/ABI/talloc-2.4.2.sigs      1970-01-01 01:00:00.000000000 
+0100
+++ new/talloc-2.4.2/ABI/talloc-2.4.2.sigs      2024-01-29 17:16:45.538622600 
+0100
@@ -0,0 +1,66 @@
+_talloc: void *(const void *, size_t)
+_talloc_array: void *(const void *, size_t, unsigned int, const char *)
+_talloc_free: int (void *, const char *)
+_talloc_get_type_abort: void *(const void *, const char *, const char *)
+_talloc_memdup: void *(const void *, const void *, size_t, const char *)
+_talloc_move: void *(const void *, const void *)
+_talloc_pooled_object: void *(const void *, size_t, const char *, unsigned 
int, size_t)
+_talloc_realloc: void *(const void *, void *, size_t, const char *)
+_talloc_realloc_array: void *(const void *, void *, size_t, unsigned int, 
const char *)
+_talloc_reference_loc: void *(const void *, const void *, const char *)
+_talloc_set_destructor: void (const void *, int (*)(void *))
+_talloc_steal_loc: void *(const void *, const void *, const char *)
+_talloc_zero: void *(const void *, size_t, const char *)
+_talloc_zero_array: void *(const void *, size_t, unsigned int, const char *)
+talloc_asprintf: char *(const void *, const char *, ...)
+talloc_asprintf_addbuf: void (char **, const char *, ...)
+talloc_asprintf_append: char *(char *, const char *, ...)
+talloc_asprintf_append_buffer: char *(char *, const char *, ...)
+talloc_autofree_context: void *(void)
+talloc_check_name: void *(const void *, const char *)
+talloc_disable_null_tracking: void (void)
+talloc_enable_leak_report: void (void)
+talloc_enable_leak_report_full: void (void)
+talloc_enable_null_tracking: void (void)
+talloc_enable_null_tracking_no_autofree: void (void)
+talloc_find_parent_byname: void *(const void *, const char *)
+talloc_free_children: void (void *)
+talloc_get_name: const char *(const void *)
+talloc_get_size: size_t (const void *)
+talloc_increase_ref_count: int (const void *)
+talloc_init: void *(const char *, ...)
+talloc_is_parent: int (const void *, const void *)
+talloc_named: void *(const void *, size_t, const char *, ...)
+talloc_named_const: void *(const void *, size_t, const char *)
+talloc_parent: void *(const void *)
+talloc_parent_name: const char *(const void *)
+talloc_pool: void *(const void *, size_t)
+talloc_realloc_fn: void *(const void *, void *, size_t)
+talloc_reference_count: size_t (const void *)
+talloc_reparent: void *(const void *, const void *, const void *)
+talloc_report: void (const void *, FILE *)
+talloc_report_depth_cb: void (const void *, int, int, void (*)(const void *, 
int, int, int, void *), void *)
+talloc_report_depth_file: void (const void *, int, int, FILE *)
+talloc_report_full: void (const void *, FILE *)
+talloc_set_abort_fn: void (void (*)(const char *))
+talloc_set_log_fn: void (void (*)(const char *))
+talloc_set_log_stderr: void (void)
+talloc_set_memlimit: int (const void *, size_t)
+talloc_set_name: const char *(const void *, const char *, ...)
+talloc_set_name_const: void (const void *, const char *)
+talloc_show_parents: void (const void *, FILE *)
+talloc_strdup: char *(const void *, const char *)
+talloc_strdup_append: char *(char *, const char *)
+talloc_strdup_append_buffer: char *(char *, const char *)
+talloc_strndup: char *(const void *, const char *, size_t)
+talloc_strndup_append: char *(char *, const char *, size_t)
+talloc_strndup_append_buffer: char *(char *, const char *, size_t)
+talloc_test_get_magic: int (void)
+talloc_total_blocks: size_t (const void *)
+talloc_total_size: size_t (const void *)
+talloc_unlink: int (const void *, void *)
+talloc_vasprintf: char *(const void *, const char *, va_list)
+talloc_vasprintf_append: char *(char *, const char *, va_list)
+talloc_vasprintf_append_buffer: char *(char *, const char *, va_list)
+talloc_version_major: int (void)
+talloc_version_minor: int (void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/bin/waf 
new/talloc-2.4.2/buildtools/bin/waf
--- old/talloc-2.4.1/buildtools/bin/waf 2023-01-19 12:39:12.715112000 +0100
+++ new/talloc-2.4.2/buildtools/bin/waf 2024-01-22 09:56:34.366532600 +0100
@@ -32,7 +32,7 @@
 
 import os, sys, inspect
 
-VERSION="2.0.25"
+VERSION="2.0.26"
 REVISION="x"
 GIT="x"
 INSTALL="x"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/pkgconfig.py 
new/talloc-2.4.2/buildtools/wafsamba/pkgconfig.py
--- old/talloc-2.4.1/buildtools/wafsamba/pkgconfig.py   2023-01-23 
06:37:57.751581200 +0100
+++ new/talloc-2.4.2/buildtools/wafsamba/pkgconfig.py   2023-09-28 
11:28:07.477609200 +0200
@@ -5,7 +5,7 @@
 from samba_utils import SUBST_VARS_RECURSIVE, TO_LIST
 
 def subst_at_vars(task):
-    '''substiture @VAR@ style variables in a file'''
+    '''substitute @VAR@ style variables in a file'''
 
     s = task.inputs[0].read()
     # split on the vars
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_abi.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_abi.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_abi.py   2023-05-15 
12:15:14.013386500 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_abi.py   2023-10-25 
09:25:01.405660000 +0200
@@ -225,7 +225,7 @@
         if k in sorted(invmap.keys()):
             f.write("\tglobal:\n")
             for s in invmap.get(k, []):
-                f.write("\t\t%s;\n" % s);
+                f.write("\t\t%s;\n" % s)
         f.write("}%s;\n\n" % last_key)
         last_key = " %s" % symver
     f.write("%s {\n" % current_version)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_autoconf.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_autoconf.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_autoconf.py      2023-05-19 
10:55:21.091587500 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_autoconf.py      2024-01-22 
09:56:34.366532600 +0100
@@ -625,7 +625,7 @@
 
         if not res:
             if mandatory:
-                Logs.error("Mandatory library '%s' not found for functions 
'%s'" % (lib, list))
+                Logs.error("Mandatory library '%s' not found for functions 
'%s'" % (lib, libs))
                 sys.exit(1)
             if empty_decl:
                 # if it isn't a mandatory library, then remove it from 
dependency lists
@@ -817,6 +817,12 @@
         if CHECK_CFLAGS(conf, ["-Wno-error=array-bounds"]):
             conf.define('HAVE_WNO_ERROR_ARRAY_BOUNDS', 1)
 
+        if CHECK_CFLAGS(conf, ["-Wno-error=stringop-overflow"]):
+            conf.define('HAVE_WNO_ERROR_STRINGOP_OVERFLOW', 1)
+
+        if CHECK_CFLAGS(conf, ["-Wno-error=declaration-after-statement"]):
+            conf.define('HAVE_WNO_ERROR_DECLARATION_AFTER_STATEMENT', 1)
+
         if not Options.options.disable_warnings_as_errors:
             conf.ADD_NAMED_CFLAGS('PICKY_CFLAGS', '-Werror 
-Wno-error=deprecated-declarations', testflags=True)
             conf.ADD_NAMED_CFLAGS('PICKY_CFLAGS', 
'-Wno-error=tautological-compare', testflags=True)
@@ -960,10 +966,10 @@
     if not 'EXTRA_CFLAGS' in bld.env:
         list = []
     else:
-        list = bld.env['EXTRA_CFLAGS'];
+        list = bld.env['EXTRA_CFLAGS']
     ret.extend(list)
     if not allow_warnings and 'PICKY_CFLAGS' in bld.env:
-        list = bld.env['PICKY_CFLAGS'];
+        list = bld.env['PICKY_CFLAGS']
         ret.extend(list)
     if hide_symbols and bld.env.HAVE_VISIBILITY_ATTR:
         ret.append(bld.env.VISIBILITY_CFLAGS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_bundled.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_bundled.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_bundled.py       2023-04-04 
16:54:16.532374000 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_bundled.py       2024-01-22 
09:56:34.374532500 +0100
@@ -10,6 +10,9 @@
 
     extension = bld.env.PRIVATE_EXTENSION
 
+    if name in bld.env.PRIVATE_EXTENSION_EXCEPTION:
+        return name
+
     if extension and name.startswith('%s' % extension):
         return name
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_conftests.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_conftests.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_conftests.py     2023-04-04 
16:54:16.532374000 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_conftests.py     2023-10-25 
09:25:01.405660000 +0200
@@ -84,7 +84,7 @@
 @conf
 def CHECK_LARGEFILE(conf, define='HAVE_LARGEFILE'):
     '''see what we need for largefile support'''
-    getconf_cflags = conf.CHECK_COMMAND(['getconf', 'LFS_CFLAGS']);
+    getconf_cflags = conf.CHECK_COMMAND(['getconf', 'LFS_CFLAGS'])
     if getconf_cflags is not False:
         if (conf.CHECK_CODE('if (sizeof(off_t) < 8) return 1',
                             define='WORKING_GETCONF_LFS_CFLAGS',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_deps.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_deps.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_deps.py  2022-07-22 
10:48:01.783334000 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_deps.py  2023-09-28 
11:28:07.481609000 +0200
@@ -360,7 +360,7 @@
 
 
 def add_samba_attributes(bld, tgt_list):
-    '''ensure a target has a the required samba attributes'''
+    '''ensure a target has the required samba attributes'''
 
     targets = LOCAL_CACHE(bld, 'TARGET_TYPE')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_install.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_install.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_install.py       2020-02-03 
11:43:17.748698700 +0100
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_install.py       2023-09-28 
11:28:07.481609000 +0200
@@ -188,7 +188,7 @@
     blddir = os.path.dirname(self.bld.srcnode.abspath(self.bld.env))
     libpath = self.link_task.outputs[0].abspath(self.env)
 
-    # calculat the link target and put it in the environment
+    # calculate the link target and put it in the environment
     soext=""
     vnum = getattr(self, 'vnum', None)
     if vnum is not None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_patterns.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_patterns.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_patterns.py      2022-02-01 
16:01:28.493139700 +0100
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_patterns.py      2024-01-22 
09:56:34.374532500 +0100
@@ -15,7 +15,7 @@
     return 0
 
 
-def SAMBA_MKVERSION(bld, target, source='VERSION'):
+def SAMBA_MKVERSION(bld, target, source='VERSION 
buildtools/wafsamba/samba_version.py'):
     '''generate the version.h header for Samba'''
 
     # We only force waf to re-generate this file if we are installing,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_perl.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_perl.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_perl.py  2022-07-22 
10:48:01.783334000 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_perl.py  2023-10-25 
09:25:01.405660000 +0200
@@ -34,18 +34,18 @@
 
     perl_arch_install_dir = None
     if vendor_prefix == conf.env.PREFIX:
-        perl_arch_install_dir = check_perl_config_var('vendorarch');
+        perl_arch_install_dir = check_perl_config_var('vendorarch')
     if perl_arch_install_dir is None:
-        perl_arch_install_dir = "${LIBDIR}/perl5";
+        perl_arch_install_dir = "${LIBDIR}/perl5"
     conf.start_msg("PERL_ARCH_INSTALL_DIR: ")
     conf.end_msg("'%s'" % (perl_arch_install_dir), 'GREEN')
     conf.env.PERL_ARCH_INSTALL_DIR = perl_arch_install_dir
 
     perl_lib_install_dir = None
     if vendor_prefix == conf.env.PREFIX:
-        perl_lib_install_dir = check_perl_config_var('vendorlib');
+        perl_lib_install_dir = check_perl_config_var('vendorlib')
     if perl_lib_install_dir is None:
-        perl_lib_install_dir = "${DATADIR}/perl5";
+        perl_lib_install_dir = "${DATADIR}/perl5"
     conf.start_msg("PERL_LIB_INSTALL_DIR: ")
     conf.end_msg("'%s'" % (perl_lib_install_dir), 'GREEN')
     conf.env.PERL_LIB_INSTALL_DIR = perl_lib_install_dir
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_pidl.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_pidl.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_pidl.py  2021-07-08 
17:48:26.493492100 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_pidl.py  2024-01-22 
09:56:34.374532500 +0100
@@ -10,9 +10,9 @@
                output_dir='.',
                generate_tables=True):
     '''Build a IDL file using pidl.
-       This will produce up to 13 output files depending on the options used'''
+       This will produce up to 17 output files depending on the options used'''
 
-    bname = source[0:-4]; # strip off the .idl suffix
+    bname = source[0:-4] # strip off the .idl suffix
     bname = os.path.basename(bname)
     name = "%s_%s" % (pname, bname.upper())
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_utils.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_utils.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_utils.py 2023-04-04 
16:54:16.532374000 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_utils.py 2023-10-25 
09:25:01.405660000 +0200
@@ -469,8 +469,7 @@
         return ctx.recurse(relpath)
     if 'waflib.extras.compat15' in sys.modules:
         return ctx.recurse(relpath)
-    Logs.error('Unknown RECURSE context class: {}'.format(ctxclass))
-    raise
+    raise Errors.WafError('Unknown RECURSE context class: {}'.format(ctxclass))
 Options.OptionsContext.RECURSE = RECURSE
 Build.BuildContext.RECURSE = RECURSE
 
@@ -710,8 +709,9 @@
     """before apply_obj_vars for uselib, this removes the standard paths"""
 
     def is_standard_libpath(env, path):
+        normalized_path = os.path.normpath(path)
         for _path in env.STANDARD_LIBPATH:
-            if _path == os.path.normpath(path):
+            if _path == normalized_path:
                 return True
         return False
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/samba_version.py 
new/talloc-2.4.2/buildtools/wafsamba/samba_version.py
--- old/talloc-2.4.1/buildtools/wafsamba/samba_version.py       2023-04-04 
16:54:16.532374000 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/samba_version.py       2024-01-22 
09:56:34.374532500 +0100
@@ -174,6 +174,7 @@
 
     def __str__(self):
         string="/* Autogenerated by waf */\n" +\
+                "#define SAMBA_COPYRIGHT_STRING \"%s\"\n" % 
self.SAMBA_COPYRIGHT_STRING +\
                 "#define SAMBA_VERSION_MAJOR %u\n" % self.MAJOR +\
                 "#define SAMBA_VERSION_MINOR %u\n" % self.MINOR +\
                 "#define SAMBA_VERSION_RELEASE %u\n" % self.RELEASE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/stale_files.py 
new/talloc-2.4.2/buildtools/wafsamba/stale_files.py
--- old/talloc-2.4.1/buildtools/wafsamba/stale_files.py 2022-02-01 
16:01:28.493139700 +0100
+++ new/talloc-2.4.2/buildtools/wafsamba/stale_files.py 2023-09-28 
11:28:07.481609000 +0200
@@ -107,6 +107,7 @@
 
 def AUTOCLEANUP_STALE_FILES(bld):
     """automatically clean up any files in bin that shouldn't be there"""
+    global old_refill_task_list
     old_refill_task_list = Parallel.refill_task_list
     Parallel.refill_task_list = replace_refill_task_list
     Parallel.bld = bld
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/wafsamba.py 
new/talloc-2.4.2/buildtools/wafsamba/wafsamba.py
--- old/talloc-2.4.1/buildtools/wafsamba/wafsamba.py    2023-04-04 
16:54:16.532374000 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/wafsamba.py    2024-01-22 
09:56:34.378532400 +0100
@@ -38,7 +38,7 @@
 
 os.environ['PYTHONUNBUFFERED'] = '1'
 
-if Context.HEXVERSION not in (0x2001900,):
+if Context.HEXVERSION not in (0x2001a00,):
     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
@@ -82,7 +82,7 @@
         return
     bld.ASSERT(subsystem is not None, "You must specify a subsystem for 
init_function '%s'" % init_function)
     cache = LOCAL_CACHE(bld, 'INIT_FUNCTIONS')
-    if not subsystem in cache:
+    if subsystem not in cache:
         cache[subsystem] = []
     cache[subsystem].append( { 'TARGET':target, 'INIT_FUNCTION':init_function 
} )
 Build.BuildContext.ADD_INIT_FUNCTION = ADD_INIT_FUNCTION
@@ -109,7 +109,6 @@
                   ldflags='',
                   external_library=False,
                   realname=None,
-                  keep_underscore=False,
                   autoproto=None,
                   autoproto_extra_source='',
                   group='main',
@@ -135,13 +134,14 @@
                   require_builtin_deps=False,
                   provide_builtin_linking=False,
                   builtin_cflags='',
+                  force_unversioned=False,
                   allow_undefined_symbols=False,
                   allow_warnings=False,
                   enabled=True):
     '''define a Samba library'''
 
     # We support:
-    # - LIBRARY: this can be use to link via -llibname
+    # - LIBRARY: this can be used to link via -llibname
     # - MODULE:  this is module from SAMBA_MODULE()
     # - PLUGIN:  this is plugin for external consumers to be
     #            loaded via dlopen()
@@ -172,9 +172,20 @@
         raise Errors.WafError("private library '%s' with orig_vscript_map must 
not have abi_match" %
                              libname)
 
+    if force_unversioned and private_library:
+        raise Errors.WafError("private library '%s': can't have 
force_unversioned=True" %
+                             libname)
+
+    if force_unversioned and realname is None:
+        raise Errors.WafError("library '%s': force_unversioned=True needs 
realname too" %
+                             libname)
+
     if LIB_MUST_BE_PRIVATE(bld, libname) and target_type not in ['PLUGIN']:
         private_library = True
 
+    if force_unversioned:
+        private_library = False
+
     if not enabled:
         SET_TARGET_TYPE(bld, libname, 'DISABLED')
         return
@@ -298,12 +309,9 @@
     if bundled_name is not None:
         pass
     elif target_type == 'PYTHON' or realname or not private_library:
-        if keep_underscore:
-            bundled_name = libname
-        else:
-            bundled_name = libname.replace('_', '-')
+        bundled_name = libname.replace('_', '-')
     else:
-        assert (private_library == True and realname is None)
+        assert (private_library is True and realname is None)
         bundled_name = PRIVATE_NAME(bld, libname.replace('_', '-'))
         vnum = None
 
@@ -331,7 +339,9 @@
 
     vscript = None
     if bld.env.HAVE_LD_VERSION_SCRIPT:
-        if private_library:
+        if force_unversioned:
+            version = None
+        elif private_library:
             version = bld.env.PRIVATE_VERSION
         elif vnum:
             version = "%s_%s" % (libname, vnum)
@@ -654,7 +664,6 @@
                  vars=None,
                  subdir=None,
                  realname=None,
-                 keep_underscore=False,
                  autoproto=None,
                  autoproto_extra_source='',
                  install_path=None,
@@ -1058,7 +1067,7 @@
     lineno = 0
     for line in source_file:
         newline = line
-        if lineno == 0 and task.env["PERL_SPECIFIED"] == True and line[:2] == 
"#!":
+        if lineno == 0 and task.env["PERL_SPECIFIED"] is True and line[:2] == 
"#!":
             newline = replacement_shebang
         elif pattern in line:
             newline = line.replace(pattern, replacement)
@@ -1133,7 +1142,7 @@
                   python_fixup=python_fixup, base_name=trim_path)
 Build.BuildContext.INSTALL_WILDCARD = INSTALL_WILDCARD
 
-def INSTALL_DIR(bld, path, chmod=0o755, env=None):
+def INSTALL_DIR(bld, path, chmod=0o755):
     """Install a directory if it doesn't exist, always set permissions."""
 
     if not path:
@@ -1154,12 +1163,12 @@
                     raise Errors.WafError("Cannot create the folder '%s' 
(error: %s)" % (path, e))
 Build.BuildContext.INSTALL_DIR = INSTALL_DIR
 
-def INSTALL_DIRS(bld, destdir, dirs, chmod=0o755, env=None):
+def INSTALL_DIRS(bld, destdir, dirs, chmod=0o755):
     '''install a set of directories'''
     destdir = bld.EXPAND_VARIABLES(destdir)
     dirs = bld.EXPAND_VARIABLES(dirs)
     for d in TO_LIST(dirs):
-        INSTALL_DIR(bld, os.path.join(destdir, d), chmod, env)
+        INSTALL_DIR(bld, os.path.join(destdir, d), chmod)
 Build.BuildContext.INSTALL_DIRS = INSTALL_DIRS
 
 
@@ -1183,7 +1192,7 @@
     bld.env.SAMBA_EXPAND_XSL = bld.srcnode.abspath() + 
'/docs-xml/xslt/expand-sambadoc.xsl'
     bld.env.SAMBA_MAN_XSL = bld.srcnode.abspath() + '/docs-xml/xslt/man.xsl'
     bld.env.SAMBA_CATALOG = bld.bldnode.abspath() + 
'/docs-xml/build/catalog.xml'
-    bld.env.SAMBA_CATALOGS = 'file:///etc/xml/catalog 
file:///usr/local/share/xml/catalog file://' + bld.env.SAMBA_CATALOG
+    bld.env.SAMBA_CATALOGS = os.getenv('XML_CATALOG_FILES', 
'file:///etc/xml/catalog file:///usr/local/share/xml/catalog') + ' file://' + 
bld.env.SAMBA_CATALOG
 
     for m in manpages.split():
         source = [m + '.xml']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/buildtools/wafsamba/wscript 
new/talloc-2.4.2/buildtools/wafsamba/wscript
--- old/talloc-2.4.1/buildtools/wafsamba/wscript        2023-04-04 
16:54:16.532374000 +0200
+++ new/talloc-2.4.2/buildtools/wafsamba/wscript        2023-09-28 
11:28:07.481609000 +0200
@@ -37,7 +37,7 @@
                    help=(f'''comma separated list of bundled libraries.
 
 {Context.g_module.APPNAME} includes copies of externally maintained
-system libraries (such as popt, cmokca) as well as Samba-maintained
+system libraries (such as popt, cmocka) as well as Samba-maintained
 libraries that can be found on the system already (such as talloc,
 tdb).
 
@@ -99,7 +99,7 @@
 before we will select not to 'bundle'.
 
 This option, possibly useful for packagers, allows that specified
-version to be overridden (say, if it is absolutely known that a the
+version to be overridden (say, if it is absolutely known that the
 newer version included in this tarball has no relevant changes).
 
 Use this with extreme care
@@ -539,7 +539,7 @@
         # conf.DEFINE('_XOPEN_SOURCE', 600, add_to_cflags=True)
 
     # we should use the PIC options in waf instead
-    # Some compilo didn't support -fPIC but just print a warning
+    # Some compiler didn't support -fPIC but just print a warning
     if conf.env['COMPILER_CC'] == "suncc":
         conf.ADD_CFLAGS('-KPIC', testflags=True)
         # we really want define here as we need to have this
@@ -552,7 +552,7 @@
 
     # On Solaris 8 with suncc (at least) the flags for the linker to define 
the name of the
     # library are not always working (if the command line is very very long 
and with a lot
-    # files)
+    # of files)
 
     if conf.env['COMPILER_CC'] == "suncc":
         save = conf.env['SONAME_ST']
@@ -615,7 +615,7 @@
 
     # see if we need special largefile flags
     if not conf.CHECK_LARGEFILE():
-        raise Errors.WafError('Samba requires large file support support, but 
not available on this platform: sizeof(off_t) < 8')
+        raise Errors.WafError('Samba requires large file support, but not 
available on this platform: sizeof(off_t) < 8')
 
     if conf.env.HAVE_STDDEF_H and conf.env.HAVE_STDLIB_H:
         conf.DEFINE('STDC_HEADERS', 1)
@@ -632,7 +632,7 @@
     else:
         conf.define('SHLIBEXT', "so", quote=True)
 
-    # First try a header check for cross-compile friendlyness
+    # First try a header check for cross-compile friendliness
     conf.CHECK_CODE(code = """#ifdef __BYTE_ORDER
                         #define B __BYTE_ORDER
                         #elif defined(BYTE_ORDER)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/lib/replace/replace.h 
new/talloc-2.4.2/lib/replace/replace.h
--- old/talloc-2.4.1/lib/replace/replace.h      2023-04-04 16:54:16.552373600 
+0200
+++ new/talloc-2.4.2/lib/replace/replace.h      2023-09-28 11:28:07.501609300 
+0200
@@ -41,7 +41,7 @@
  * As it's also needed when Python.h is the first header we
  * require a global -D__STDC_WANT_LIB_EXT1__=1
  */
-#ifndef __STDC_WANT_LIB_EXT1__
+#if __STDC_WANT_LIB_EXT1__ != 1
 #error -D__STDC_WANT_LIB_EXT1__=1 required
 #endif
 
@@ -205,7 +205,7 @@
 #endif
 
 #ifndef HAVE_STRERROR
-extern char *sys_errlist[];
+extern const char *const sys_errlist[];
 #define strerror(i) sys_errlist[i]
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/lib/replace/system/python.h 
new/talloc-2.4.2/lib/replace/system/python.h
--- old/talloc-2.4.1/lib/replace/system/python.h        1970-01-01 
01:00:00.000000000 +0100
+++ new/talloc-2.4.2/lib/replace/system/python.h        2024-01-22 
09:56:34.410532200 +0100
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2023      Andreas Schneider <a...@samba.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _SAMBA_PYTHON_H
+#define _SAMBA_PYTHON_H
+
+/*
+ * With Python 3.6 Cpython started to require C99. With Python 3.12 they
+ * started to mix code and variable declarations so disable the warnings.
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeclaration-after-statement"
+#include <Python.h>
+#pragma GCC diagnostic pop
+
+#endif /* _SAMBA_PYTHON_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/lib/replace/tests/testsuite.c 
new/talloc-2.4.2/lib/replace/tests/testsuite.c
--- old/talloc-2.4.1/lib/replace/tests/testsuite.c      2022-02-01 
15:55:19.732598300 +0100
+++ new/talloc-2.4.2/lib/replace/tests/testsuite.c      2023-10-25 
09:25:01.409659900 +0200
@@ -854,14 +854,14 @@
                return false;
        }
 
-       if (write(sock[1], "automatisch", 12) == -1) {
+       if (write(sock[1], "automatisch", 12) != 12) {
                printf("failure: socketpair [\n"
                           "write() failed: %s\n"
                           "]\n", strerror(errno));
                return false;
        }
 
-       if (read(sock[0], buf, 12) == -1) {
+       if (read(sock[0], buf, 12) != 12) {
                printf("failure: socketpair [\n"
                           "read() failed: %s\n"
                           "]\n", strerror(errno));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/lib/replace/wscript 
new/talloc-2.4.2/lib/replace/wscript
--- old/talloc-2.4.1/lib/replace/wscript        2023-07-20 12:46:15.122290600 
+0200
+++ new/talloc-2.4.2/lib/replace/wscript        2023-09-28 11:28:07.501609300 
+0200
@@ -448,6 +448,17 @@
         if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', 
headers='bsd/string.h',
                                checklibc=True):
             strlcpy_in_bsd = True
+    elif conf.env.enable_fuzzing:
+        # Just to complicate it more, some versions of Honggfuzz have
+        # got strlcpy and strlcat in libc, but not in <string.h>
+        # (unless it is there coincidentally, on a BSD). Therefore we
+        # can't use CHECK_FUNCS alone to decide whether to add the
+        # headers to replace.h.
+        #
+        # As this is only known to happen on a fuzzing compiler, we'll
+        # skip the check when not in fuzzing mode.
+        conf.CHECK_HEADERS('bsd/string.h')
+
     if not conf.CHECK_FUNCS('getpeereid'):
         conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h 
bsd/unistd.h')
     if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', 
headers='setproctitle.h'):
@@ -487,7 +498,7 @@
     conf.CHECK_FUNCS('gai_strerror get_current_dir_name')
     conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs mmap setgroups syscall 
setsid')
     conf.CHECK_FUNCS('getgrent_r getgrgid_r getgrnam_r getgrouplist 
getpagesize')
-    conf.CHECK_FUNCS('getpwent_r getpwnam_r getpwuid_r epoll_create')
+    conf.CHECK_FUNCS('getpwent_r getpwnam_r getpwuid_r epoll_create1')
     conf.CHECK_FUNCS('getprogname')
     if not conf.CHECK_FUNCS('copy_file_range'):
         conf.CHECK_CODE('''
@@ -710,7 +721,7 @@
     conf.CHECK_DECLS('getgrent_r getpwent_r', reverse=True, headers='pwd.h 
grp.h')
     conf.CHECK_DECLS('pread pwrite setenv setresgid setresuid', reverse=True)
 
-    if conf.CONFIG_SET('HAVE_EPOLL_CREATE') and 
conf.CONFIG_SET('HAVE_SYS_EPOLL_H'):
+    if conf.CONFIG_SET('HAVE_EPOLL_CREATE1') and 
conf.CONFIG_SET('HAVE_SYS_EPOLL_H'):
         conf.DEFINE('HAVE_EPOLL', 1)
 
     if conf.CHECK_FUNCS('eventfd', headers='sys/eventfd.h'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/pytalloc.c new/talloc-2.4.2/pytalloc.c
--- old/talloc-2.4.1/pytalloc.c 2023-04-04 16:54:16.552373600 +0200
+++ new/talloc-2.4.2/pytalloc.c 2024-01-22 09:56:34.410532200 +0100
@@ -21,7 +21,7 @@
    License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
-#include <Python.h>
+#include "lib/replace/system/python.h"
 #include <talloc.h>
 #include <pytalloc.h>
 #include "pytalloc_private.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/pytalloc_util.c 
new/talloc-2.4.2/pytalloc_util.c
--- old/talloc-2.4.1/pytalloc_util.c    2023-04-21 10:29:11.360781200 +0200
+++ new/talloc-2.4.2/pytalloc_util.c    2024-01-22 09:56:34.410532200 +0100
@@ -21,7 +21,7 @@
    License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
-#include <Python.h>
+#include "lib/replace/system/python.h"
 #include "replace.h"
 #include <talloc.h>
 #include "pytalloc.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/talloc.c new/talloc-2.4.2/talloc.c
--- old/talloc-2.4.1/talloc.c   2023-04-21 10:29:11.360781200 +0200
+++ new/talloc-2.4.2/talloc.c   2024-01-22 09:56:34.410532200 +0100
@@ -1253,7 +1253,7 @@
                                        struct talloc_memlimit *new_limit);
 
 /*
-   move a lump of memory from one talloc context to another return the
+   move a lump of memory from one talloc context to another returning the
    ptr on success, or NULL if it could not be transferred.
    passing NULL as ptr will always return NULL with no side effects.
 */
@@ -1335,7 +1335,7 @@
 }
 
 /*
-   move a lump of memory from one talloc context to another return the
+   move a lump of memory from one talloc context to another returning the
    ptr on success, or NULL if it could not be transferred.
    passing NULL as ptr will always return NULL with no side effects.
 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/talloc.h new/talloc-2.4.2/talloc.h
--- old/talloc-2.4.1/talloc.h   2023-04-04 16:54:16.552373600 +0200
+++ new/talloc-2.4.2/talloc.h   2023-11-20 09:58:22.817081000 +0100
@@ -726,7 +726,7 @@
  *
  * @param[in]  p        The memory chunk you want to duplicate.
  *
- * @param[in]  size     Number of char's that you want copy.
+ * @param[in]  size     Number of chars that you want to copy.
  *
  * @return              The allocated memory chunk.
  *
@@ -787,7 +787,7 @@
  *
  * This macro is used together with talloc(mem_ctx, struct foo). If you had to
  * assign the talloc chunk pointer to some void pointer variable,
- * talloc_get_type_abort() is the recommended way to get the convert the void
+ * talloc_get_type_abort() is the recommended way to convert the void
  * pointer back to a typed pointer.
  *
  * @param[in]  ptr      The void pointer to convert.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/test_pytalloc.c 
new/talloc-2.4.2/test_pytalloc.c
--- old/talloc-2.4.1/test_pytalloc.c    2023-04-04 16:54:16.552373600 +0200
+++ new/talloc-2.4.2/test_pytalloc.c    2024-01-22 09:56:34.410532200 +0100
@@ -26,7 +26,7 @@
    License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
-#include <Python.h>
+#include "lib/replace/system/python.h"
 #include <talloc.h>
 #include <pytalloc.h>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/third_party/waf/waflib/Context.py 
new/talloc-2.4.2/third_party/waf/waflib/Context.py
--- old/talloc-2.4.1/third_party/waf/waflib/Context.py  2023-01-19 
12:39:12.915113200 +0100
+++ new/talloc-2.4.2/third_party/waf/waflib/Context.py  2024-01-22 
09:56:34.590531000 +0100
@@ -18,13 +18,13 @@
        import imp
 
 # the following 3 constants are updated on each new release (do not touch)
-HEXVERSION=0x2001900
+HEXVERSION=0x2001a00
 """Constant updated on new releases"""
 
-WAFVERSION="2.0.25"
+WAFVERSION="2.0.26"
 """Constant updated on new releases"""
 
-WAFREVISION="2db0b41b2805cd5db3b55476c06b23c1e46d319f"
+WAFREVISION="0fb985ce1932c6f3e7533f435e4ee209d673776e"
 """Git revision when the waf version is updated"""
 
 WAFNAME="waf"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/third_party/waf/waflib/Scripting.py 
new/talloc-2.4.2/third_party/waf/waflib/Scripting.py
--- old/talloc-2.4.1/third_party/waf/waflib/Scripting.py        2019-12-11 
23:13:06.577426000 +0100
+++ new/talloc-2.4.2/third_party/waf/waflib/Scripting.py        2024-01-22 
09:56:34.590531000 +0100
@@ -388,7 +388,11 @@
 
                        for x in files:
                                archive_name = self.get_base_name() + '/' + 
x.path_from(self.base_path)
-                               zip.write(x.abspath(), archive_name, 
zipfile.ZIP_DEFLATED)
+                               if os.environ.get('SOURCE_DATE_EPOCH'):
+                                       # TODO: parse that timestamp
+                                       
zip.writestr(zipfile.ZipInfo(archive_name), x.read(), zipfile.ZIP_DEFLATED)
+                               else:
+                                       zip.write(x.abspath(), archive_name, 
zipfile.ZIP_DEFLATED)
                        zip.close()
                else:
                        self.fatal('Valid algo types are tar.bz2, tar.gz, 
tar.xz or zip')
@@ -425,6 +429,8 @@
                tinfo.gid   = 0
                tinfo.uname = 'root'
                tinfo.gname = 'root'
+               if os.environ.get('SOURCE_DATE_EPOCH'):
+                       tinfo.mtime = int(os.environ.get('SOURCE_DATE_EPOCH'))
 
                if os.path.isfile(p):
                        with open(p, 'rb') as f:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/third_party/waf/waflib/Tools/qt5.py 
new/talloc-2.4.2/third_party/waf/waflib/Tools/qt5.py
--- old/talloc-2.4.1/third_party/waf/waflib/Tools/qt5.py        2022-04-12 
12:29:16.780438700 +0200
+++ new/talloc-2.4.2/third_party/waf/waflib/Tools/qt5.py        2024-01-22 
09:56:34.590531000 +0100
@@ -1,10 +1,11 @@
 #!/usr/bin/env python
 # encoding: utf-8
 # Thomas Nagy, 2006-2018 (ita)
+# Rafaël Kooi, 2023 (RA-Kooi)
 
 """
-This tool helps with finding Qt5 tools and libraries,
-and also provides syntactic sugar for using Qt5 tools.
+This tool helps with finding Qt5 and Qt6 tools and libraries,
+and also provides syntactic sugar for using Qt5 and Qt6 tools.
 
 The following snippet illustrates the tool usage::
 
@@ -22,6 +23,23 @@
                        target   = 'window',
                )
 
+Alternatively the following snippet illustrates Qt6 tool usage::
+
+    def options(opt):
+        opt.load('compiler_cxx qt5')
+
+    def configure(conf):
+        conf.want_qt6 = True
+        conf.load('compiler_cxx qt5')
+
+    def build(bld):
+        bld(
+            features = 'qt6 cxx cxxprogram',
+            uselib   = 'QT6CORE QT6GUI QT6OPENGL QT6SVG',
+            source   = 'main.cpp textures.qrc aboutDialog.ui',
+            target   = 'window',
+        )
+
 Here, the UI description and resource files will be processed
 to generate code.
 
@@ -56,25 +74,32 @@
 A few options (--qt{dir,bin,...}) and environment variables
 (QT5_{ROOT,DIR,MOC,UIC,XCOMPILE}) allow finer tuning of the tool,
 tool path selection, etc; please read the source for more info.
+For Qt6 replace the QT5_ prefix with QT6_.
 
 The detection uses pkg-config on Linux by default. The list of
 libraries to be requested to pkg-config is formulated by scanning
 in the QTLIBS directory (that can be passed via --qtlibs or by
-setting the environment variable QT5_LIBDIR otherwise is derived
-by querying qmake for QT_INSTALL_LIBS directory) for shared/static
-libraries present.
+setting the environment variable QT5_LIBDIR or QT6_LIBDIR otherwise is
+derived by querying qmake for QT_INSTALL_LIBS directory) for
+shared/static libraries present.
 Alternatively the list of libraries to be requested via pkg-config
 can be set using the qt5_vars attribute, ie:
 
       conf.qt5_vars = ['Qt5Core', 'Qt5Gui', 'Qt5Widgets', 'Qt5Test'];
 
+For Qt6 use the qt6_vars attribute.
+
 This can speed up configuration phase if needed libraries are
 known beforehand, can improve detection on systems with a
-sparse QT5 libraries installation (ie. NIX) and can improve
+sparse QT5/Qt6 libraries installation (ie. NIX) and can improve
 detection of some header-only Qt modules (ie. Qt5UiPlugin).
 
 To force static library detection use:
 QT5_XCOMPILE=1 QT5_FORCE_STATIC=1 waf configure
+
+To use Qt6 set the want_qt6 attribute, ie:
+
+    conf.want_qt6 = True;
 """
 
 from __future__ import with_statement
@@ -282,8 +307,8 @@
 
        """
        If UIC file is used in more than one bld, we would have a conflict in 
parallel execution
-       It is not possible to change the file names (like .self.idx. as for 
objects) as they have 
-       to be referenced by the source file, but we can assume that the 
transformation will be identical 
+       It is not possible to change the file names (like .self.idx. as for 
objects) as they have
+       to be referenced by the source file, but we can assume that the 
transformation will be identical
        and the tasks can be shared in a global cache.
        """
        try:
@@ -300,7 +325,7 @@
        """Adds all the .ts file into ``self.lang``"""
        self.lang = self.to_list(getattr(self, 'lang', [])) + [node]
 
-@feature('qt5')
+@feature('qt5', 'qt6')
 @before_method('process_source')
 def process_mocs(self):
        """
@@ -322,7 +347,7 @@
 
                self.create_task('moc', x, moc_node)
 
-@feature('qt5')
+@feature('qt5', 'qt6')
 @after_method('apply_link')
 def apply_qt5(self):
        """
@@ -485,6 +510,13 @@
        if 'COMPILER_CXX' not in self.env:
                self.fatal('No CXX compiler defined: did you forget to 
configure compiler_cxx first?')
 
+       self.want_qt6 = getattr(self, 'want_qt6', False)
+
+       if self.want_qt6:
+               self.qt_vars = Utils.to_list(getattr(self, 'qt6_vars', []))
+       else:
+               self.qt_vars = Utils.to_list(getattr(self, 'qt5_vars', []))
+
        self.find_qt5_binaries()
        self.set_qt5_libs_dir()
        self.set_qt5_libs_to_check()
@@ -497,15 +529,19 @@
        if not has_xml:
                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 = 'QT5CORE'
-       for flag in [[], '-fPIE', '-fPIC', '-std=c++11' , ['-std=c++11', 
'-fPIE'], ['-std=c++11', '-fPIC']]:
+       uses = 'QT6CORE' if self.want_qt6 else 'QT5CORE'
+       for flag in [[], '-fPIE', '-fPIC', stdflag, [stdflag, '-fPIE'], 
[stdflag, '-fPIC']]:
                msg = 'See if Qt files compile '
                if flag:
                        msg += 'with %s' % flag
                try:
-                       self.check(features='qt5 cxx', use=uses, 
uselib_store='qt5', cxxflags=flag, fragment=frag, msg=msg)
+                       self.check(features=feature + ' cxx', use=uses, 
uselib_store=feature, cxxflags=flag, fragment=frag, msg=msg)
                except self.errors.ConfigurationError:
                        pass
                else:
@@ -517,9 +553,9 @@
        if Utils.unversioned_sys_platform() == 'freebsd':
                frag = '#include <QMap>\nint main(int argc, char **argv) 
{QMap<int,int> m;return m.keys().size();}\n'
                try:
-                       self.check(features='qt5 cxx cxxprogram', use=uses, 
fragment=frag, msg='Can we link Qt programs on FreeBSD directly?')
+                       self.check(features=feature + ' cxx cxxprogram', 
use=uses, fragment=frag, msg='Can we link Qt programs on FreeBSD directly?')
                except self.errors.ConfigurationError:
-                       self.check(features='qt5 cxx cxxprogram', use=uses, 
uselib_store='qt5', libpath='/usr/local/lib', fragment=frag, msg='Is 
/usr/local/lib required?')
+                       self.check(features=feature + ' cxx cxxprogram', 
use=uses, uselib_store=feature, libpath='/usr/local/lib', fragment=frag, 
msg='Is /usr/local/lib required?')
 
 @conf
 def find_qt5_binaries(self):
@@ -531,6 +567,7 @@
 
        qtdir = getattr(opt, 'qtdir', '')
        qtbin = getattr(opt, 'qtbin', '')
+       qt_ver = '6' if self.want_qt6 else '5'
 
        paths = []
 
@@ -539,8 +576,8 @@
 
        # the qt directory has been given from QT5_ROOT - deduce the qt binary 
path
        if not qtdir:
-               qtdir = self.environ.get('QT5_ROOT', '')
-               qtbin = self.environ.get('QT5_BIN') or os.path.join(qtdir, 
'bin')
+               qtdir = self.environ.get('QT' + qt_ver + '_ROOT', '')
+               qtbin = self.environ.get('QT' + qt_ver + '_BIN') or 
os.path.join(qtdir, 'bin')
 
        if qtbin:
                paths = [qtbin]
@@ -548,7 +585,10 @@
        # no qtdir, look in the path and in /usr/local/Trolltech
        if not qtdir:
                paths = self.environ.get('PATH', '').split(os.pathsep)
-               paths.extend(['/usr/share/qt5/bin', '/usr/local/lib/qt5/bin'])
+               paths.extend([
+                       '/usr/share/qt' + qt_ver + '/bin',
+                       '/usr/local/lib/qt' + qt_ver + '/bin'])
+
                try:
                        lst = Utils.listdir('/usr/local/Trolltech/')
                except OSError:
@@ -567,7 +607,9 @@
        # keep the one with the highest version
        cand = None
        prev_ver = ['0', '0', '0']
-       for qmk in ('qmake-qt5', 'qmake5', 'qmake'):
+       qmake_vars = ['qmake-qt' + qt_ver, 'qmake' + qt_ver, 'qmake']
+
+       for qmk in qmake_vars:
                try:
                        qmake = self.find_program(qmk, path_list=paths)
                except self.errors.ConfigurationError:
@@ -580,7 +622,7 @@
                        else:
                                if version:
                                        new_ver = version.split('.')
-                                       if new_ver[0] == '5' and new_ver > 
prev_ver:
+                                       if new_ver[0] == qt_ver and new_ver > 
prev_ver:
                                                cand = qmake
                                                prev_ver = new_ver
 
@@ -591,7 +633,7 @@
                except self.errors.ConfigurationError:
                        pass
                else:
-                       cmd = self.env.QTCHOOSER + ['-qt=5', '-run-tool=qmake']
+                       cmd = self.env.QTCHOOSER + ['-qt=' + qt_ver, 
'-run-tool=qmake']
                        try:
                                version = self.cmd_and_log(cmd + ['-query', 
'QT_VERSION'])
                        except self.errors.WafError:
@@ -602,10 +644,17 @@
        if cand:
                self.env.QMAKE = cand
        else:
-               self.fatal('Could not find qmake for qt5')
+               self.fatal('Could not find qmake for qt' + qt_ver)
+
+       # Once we have qmake, we want to query qmake for the paths where we 
want to look for tools instead
+       paths = []
 
        self.env.QT_HOST_BINS = qtbin = self.cmd_and_log(self.env.QMAKE + 
['-query', 'QT_HOST_BINS']).strip()
-       paths.insert(0, qtbin)
+       paths.append(qtbin)
+
+       if self.want_qt6:
+               self.env.QT_HOST_LIBEXECS = self.cmd_and_log(self.env.QMAKE + 
['-query', 'QT_HOST_LIBEXECS']).strip()
+               paths.append(self.env.QT_HOST_LIBEXECS)
 
        def find_bin(lst, var):
                if var in env:
@@ -619,22 +668,25 @@
                                env[var]=ret
                                break
 
-       find_bin(['uic-qt5', 'uic'], 'QT_UIC')
+       find_bin(['uic-qt' + qt_ver, 'uic'], 'QT_UIC')
        if not env.QT_UIC:
-               self.fatal('cannot find the uic compiler for qt5')
+               self.fatal('cannot find the uic compiler for qt' + qt_ver)
 
        self.start_msg('Checking for uic version')
        uicver = self.cmd_and_log(env.QT_UIC + ['-version'], 
output=Context.BOTH)
        uicver = ''.join(uicver).strip()
        uicver = uicver.replace('Qt User Interface Compiler ','').replace('User 
Interface Compiler for Qt', '')
        self.end_msg(uicver)
-       if uicver.find(' 3.') != -1 or uicver.find(' 4.') != -1:
-               self.fatal('this uic compiler is for qt3 or qt4, add uic for 
qt5 to your path')
+       if uicver.find(' 3.') != -1 or uicver.find(' 4.') != -1 or 
(self.want_qt6 and uicver.find(' 5.') != -1):
+               if self.want_qt6:
+                       self.fatal('this uic compiler is for qt3 or qt4 or qt5, 
add uic for qt6 to your path')
+               else:
+                       self.fatal('this uic compiler is for qt3 or qt4, add 
uic for qt5 to your path')
 
-       find_bin(['moc-qt5', 'moc'], 'QT_MOC')
-       find_bin(['rcc-qt5', 'rcc'], 'QT_RCC')
-       find_bin(['lrelease-qt5', 'lrelease'], 'QT_LRELEASE')
-       find_bin(['lupdate-qt5', 'lupdate'], 'QT_LUPDATE')
+       find_bin(['moc-qt' + qt_ver, 'moc'], 'QT_MOC')
+       find_bin(['rcc-qt' + qt_ver, 'rcc'], 'QT_RCC')
+       find_bin(['lrelease-qt' + qt_ver, 'lrelease'], 'QT_LRELEASE')
+       find_bin(['lupdate-qt' + qt_ver, 'lupdate'], 'QT_LUPDATE')
 
        env.UIC_ST = '%s -o %s'
        env.MOC_ST = '-o'
@@ -646,19 +698,26 @@
 @conf
 def set_qt5_libs_dir(self):
        env = self.env
-       qtlibs = getattr(Options.options, 'qtlibs', None) or 
self.environ.get('QT5_LIBDIR')
+       qt_ver = '6' if self.want_qt6 else '5'
+
+       qtlibs = getattr(Options.options, 'qtlibs', None) or 
self.environ.get('QT' + qt_ver + '_LIBDIR')
+
        if not qtlibs:
                try:
                        qtlibs = self.cmd_and_log(env.QMAKE + ['-query', 
'QT_INSTALL_LIBS']).strip()
                except Errors.WafError:
                        qtdir = self.cmd_and_log(env.QMAKE + ['-query', 
'QT_INSTALL_PREFIX']).strip()
                        qtlibs = os.path.join(qtdir, 'lib')
-       self.msg('Found the Qt5 library path', qtlibs)
+
+       self.msg('Found the Qt' + qt_ver + ' library path', qtlibs)
+
        env.QTLIBS = qtlibs
 
 @conf
 def find_single_qt5_lib(self, name, uselib, qtlibs, qtincludes, force_static):
        env = self.env
+       qt_ver = '6' if self.want_qt6 else '5'
+
        if force_static:
                exts = ('.a', '.lib')
                prefix = 'STLIB'
@@ -668,7 +727,7 @@
 
        def lib_names():
                for x in exts:
-                       for k in ('', '5') if Utils.is_win32 else ['']:
+                       for k in ('', qt_ver) if Utils.is_win32 else ['']:
                                for p in ('lib', ''):
                                        yield (p, name, k, x)
 
@@ -683,26 +742,28 @@
                        env.append_unique(prefix + '_' + uselib, libval)
                        env.append_unique('%sPATH_%s' % (prefix, uselib), 
qtlibs)
                        env.append_unique('INCLUDES_' + uselib, qtincludes)
-                       env.append_unique('INCLUDES_' + uselib, 
os.path.join(qtincludes, name.replace('Qt5', 'Qt')))
+                       env.append_unique('INCLUDES_' + uselib, 
os.path.join(qtincludes, name.replace('Qt' + qt_ver, 'Qt')))
                        return k
        return False
 
 @conf
 def find_qt5_libraries(self):
        env = self.env
+       qt_ver = '6' if self.want_qt6 else '5'
+
+       qtincludes =  self.environ.get('QT' + qt_ver + '_INCLUDES') or 
self.cmd_and_log(env.QMAKE + ['-query', 'QT_INSTALL_HEADERS']).strip()
+       force_static = self.environ.get('QT' + qt_ver + '_FORCE_STATIC')
 
-       qtincludes =  self.environ.get('QT5_INCLUDES') or 
self.cmd_and_log(env.QMAKE + ['-query', 'QT_INSTALL_HEADERS']).strip()
-       force_static = self.environ.get('QT5_FORCE_STATIC')
        try:
-               if self.environ.get('QT5_XCOMPILE'):
-                       self.fatal('QT5_XCOMPILE Disables pkg-config detection')
+               if self.environ.get('QT' + qt_ver + '_XCOMPILE'):
+                       self.fatal('QT' + qt_ver + '_XCOMPILE Disables 
pkg-config detection')
                self.check_cfg(atleast_pkgconfig_version='0.1')
        except self.errors.ConfigurationError:
-               for i in self.qt5_vars:
+               for i in self.qt_vars:
                        uselib = i.upper()
                        if Utils.unversioned_sys_platform() == 'darwin':
                                # Since at least qt 4.7.3 each library locates 
in separate directory
-                               fwk = i.replace('Qt5', 'Qt')
+                               fwk = i.replace('Qt' + qt_ver, 'Qt')
                                frameworkName = fwk + '.framework'
 
                                qtDynamicLib = os.path.join(env.QTLIBS, 
frameworkName, fwk)
@@ -719,9 +780,9 @@
                                        ret = self.find_single_qt5_lib(i, 
uselib, env.QTLIBS, qtincludes, True)
                                self.msg('Checking for %s' % i, ret, 'GREEN' if 
ret else 'YELLOW')
        else:
-               path = 
'%s:%s:%s/pkgconfig:/usr/lib/qt5/lib/pkgconfig:/opt/qt5/lib/pkgconfig:/usr/lib/qt5/lib:/opt/qt5/lib'
 % (
-                       self.environ.get('PKG_CONFIG_PATH', ''), env.QTLIBS, 
env.QTLIBS)
-               for i in self.qt5_vars:
+               path = 
'%s:%s:%s/pkgconfig:/usr/lib/qt%s/lib/pkgconfig:/opt/qt%s/lib/pkgconfig:/usr/lib/qt%s/lib:/opt/qt%s/lib'
 % (
+                       self.environ.get('PKG_CONFIG_PATH', ''), env.QTLIBS, 
env.QTLIBS, qt_ver, qt_ver, qt_ver, qt_ver)
+               for i in self.qt_vars:
                        self.check_cfg(package=i, args='--cflags --libs', 
mandatory=False, force_static=force_static, pkg_config_path=path)
 
 @conf
@@ -746,7 +807,7 @@
                                                continue
                                        accu.append(lib)
                                env['LIBPATH_'+var] = accu
-       process_lib(self.qt5_vars,       'LIBPATH_QTCORE')
+       process_lib(self.qt_vars, 'LIBPATH_QTCORE')
 
 @conf
 def add_qt5_rpath(self):
@@ -768,39 +829,52 @@
                                                                continue
                                                accu.append('-Wl,--rpath='+lib)
                                        env['RPATH_' + var] = accu
-               process_rpath(self.qt5_vars,       'LIBPATH_QTCORE')
+               process_rpath(self.qt_vars, 'LIBPATH_QTCORE')
 
 @conf
 def set_qt5_libs_to_check(self):
-       self.qt5_vars = Utils.to_list(getattr(self, 'qt5_vars', []))
-       if not self.qt5_vars:
+       qt_ver = '6' if self.want_qt6 else '5'
+
+       if not self.qt_vars:
                dirlst = Utils.listdir(self.env.QTLIBS)
 
                pat = self.env.cxxshlib_PATTERN
                if Utils.is_win32:
                        pat = pat.replace('.dll', '.lib')
-               if self.environ.get('QT5_FORCE_STATIC'):
+               if self.environ.get('QT' + qt_ver + '_FORCE_STATIC'):
                        pat = self.env.cxxstlib_PATTERN
                if Utils.unversioned_sys_platform() == 'darwin':
                        pat = r"%s\.framework"
-               re_qt = re.compile(pat % 'Qt5?(?P<name>\\w+)' + '$')
+
+               # 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+)' + 
'$')
+               else:
+                       re_qt = re.compile(pat % 'Qt5?(?!\\d)(?P<name>\\w+)' + 
'$')
+
                for x in sorted(dirlst):
                        m = re_qt.match(x)
                        if m:
-                               self.qt5_vars.append("Qt5%s" % m.group('name'))
-               if not self.qt5_vars:
-                       self.fatal('cannot find any Qt5 library (%r)' % 
self.env.QTLIBS)
+                               self.qt_vars.append("Qt%s%s" % (qt_ver, 
m.group('name')))
+               if not self.qt_vars:
+                       self.fatal('cannot find any Qt%s library (%r)' % 
(qt_ver, self.env.QTLIBS))
 
        qtextralibs = getattr(Options.options, 'qtextralibs', None)
        if qtextralibs:
-               self.qt5_vars.extend(qtextralibs.split(','))
+               self.qt_vars.extend(qtextralibs.split(','))
 
 @conf
 def set_qt5_defines(self):
+       qt_ver = '6' if self.want_qt6 else '5'
+
        if sys.platform != 'win32':
                return
-       for x in self.qt5_vars:
-               y=x.replace('Qt5', 'Qt')[2:].upper()
+
+       for x in self.qt_vars:
+               y=x.replace('Qt' + qt_ver, 'Qt')[2:].upper()
                self.env.append_unique('DEFINES_%s' % x.upper(), 'QT_%s_LIB' % 
y)
 
 def options(opt):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/talloc-2.4.1/third_party/waf/waflib/extras/distnet.py 
new/talloc-2.4.2/third_party/waf/waflib/extras/distnet.py
--- old/talloc-2.4.1/third_party/waf/waflib/extras/distnet.py   2019-12-11 
23:13:06.581426100 +0100
+++ new/talloc-2.4.2/third_party/waf/waflib/extras/distnet.py   2024-01-22 
09:56:34.590531000 +0100
@@ -101,6 +101,8 @@
                                tarinfo.uid   = tarinfo.gid   = 0
                                tarinfo.uname = tarinfo.gname = 'root'
                                tarinfo.size = os.stat(x).st_size
+                               if os.environ.get('SOURCE_DATE_EPOCH'):
+                                       tarinfo.mtime = 
int(os.environ.get('SOURCE_DATE_EPOCH'))
 
                                # TODO - more archive creation options?
                                if kw.get('bare', True):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/third_party/waf/waflib/extras/haxe.py 
new/talloc-2.4.2/third_party/waf/waflib/extras/haxe.py
--- old/talloc-2.4.1/third_party/waf/waflib/extras/haxe.py      2022-02-01 
15:55:20.080603400 +0100
+++ new/talloc-2.4.2/third_party/waf/waflib/extras/haxe.py      2024-01-22 
09:56:34.590531000 +0100
@@ -1,131 +1,154 @@
-import os, re
-from waflib import Utils, Task, Errors
-from waflib.TaskGen import extension, taskgen_method, feature
-from waflib.Configure import conf
-
-@conf
-def libname_haxe(self, libname):
-       return libname
-
-@conf
-def check_lib_haxe(self, libname, uselib_store=None):
-       haxe_libs = [node.name for node in 
self.root.find_node('haxe_libraries').ant_glob()]
-       changed = False
-       self.start_msg('Checking for library %s' % libname)
-       if libname + '.hxml' in haxe_libs:
-               self.end_msg('yes')
-       else:
-               changed = True
-               try:
-                       cmd = self.env.LIX + ['+lib', libname]
-                       res = self.cmd_and_log(cmd)
-                       if (res):
-                               raise Errors.WafError(res)
-                       else:
-                               self.end_msg('downloaded', color = 'YELLOW')
-               except Errors.WafError as e:
-                       self.end_msg('no', color = 'RED')
-                       self.fatal('Getting %s has failed' % libname)
-
-       postfix = uselib_store if uselib_store else libname.upper()
-       self.env['LIB_' + postfix] += [self.libname_haxe(libname)]
-       return changed
-
-@conf
-def check_libs_haxe(self, libnames, uselib_store=None):
-       changed = False
-       for libname in Utils.to_list(libnames):
-               if self.check_lib_haxe(libname, uselib_store):
-                       changed = True
-       return changed
+import re
 
-@conf
-def ensure_lix_pkg(self, *k, **kw):
-       if kw.get('compiler') == 'hx':
-               if isinstance(kw.get('libs'), list) and len(kw.get('libs')):
-                       changed = self.check_libs_haxe(kw.get('libs'), 
kw.get('uselib_store'))
-                       if changed:
-                               try:
-                                       cmd = self.env.LIX + ['download']
-                                       res = self.cmd_and_log(cmd)
-                                       if (res):
-                                               raise Errors.WafError(res)
-                               except Errors.WafError as e:
-                                       self.fatal('lix download has failed')
-               else:
-                       self.check_lib_haxe(kw.get('lib'), 
kw.get('uselib_store'))
+from waflib import Utils, Task, Errors, Logs
+from waflib.Configure import conf
+from waflib.TaskGen import extension, taskgen_method
 
-@conf
-def haxe(bld, *k, **kw):
-       task_gen = bld(*k, **kw)
+HAXE_COMPILERS = {
+    'JS': {'tgt': '--js', 'ext_out': ['.js']},
+    'LUA': {'tgt': '--lua', 'ext_out': ['.lua']},
+    'SWF': {'tgt': '--swf', 'ext_out': ['.swf']},
+    'NEKO': {'tgt': '--neko', 'ext_out': ['.n']},
+    'PHP': {'tgt': '--php', 'ext_out': ['.php']},
+    'CPP': {'tgt': '--cpp', 'ext_out': ['.h', '.cpp']},
+    'CPPIA': {'tgt': '--cppia', 'ext_out': ['.cppia']},
+    'CS': {'tgt': '--cs', 'ext_out': ['.cs']},
+    'JAVA': {'tgt': '--java', 'ext_out': ['.java']},
+    'JVM': {'tgt': '--jvm', 'ext_out': ['.jar']},
+    'PYTHON': {'tgt': '--python', 'ext_out': ['.py']},
+    'HL': {'tgt': '--hl', 'ext_out': ['.hl']},
+    'HLC': {'tgt': '--hl', 'ext_out': ['.h', '.c']},
+}
+
+@conf
+def check_haxe_pkg(self, **kw):
+    self.find_program('haxelib')
+    libs = kw.get('libs')
+    if not libs or not (type(libs) == str or (type(libs) == list and 
all(isinstance(s, str) for s in libs))):
+        self.fatal('Specify correct libs value in ensure call')
+        return
+    fetch = kw.get('fetch')
+    if not fetch is None and not type(fetch) == bool:
+        self.fatal('Specify correct fetch value in ensure call')
+
+    libs = [libs] if type(libs) == str else libs
+    halt = False
+    for lib in libs:
+        try:
+            self.start_msg('Checking for library %s' % lib)
+            output = self.cmd_and_log(self.env.HAXELIB + ['list', lib])
+        except Errors.WafError:
+            self.end_msg(False)
+            self.fatal('Can\'t run haxelib list, ensuring halted')
+            return
+
+        if lib in output:
+            self.end_msg(lib in output)
+        else:
+            if not fetch:
+                self.end_msg(False)
+                halt = True
+                continue
+            try:
+                status = self.exec_command(self.env.HAXELIB + ['install', lib])
+                if status:
+                    self.end_msg(False)
+                    self.fatal('Can\'t get %s with haxelib, ensuring halted' % 
lib)
+                    return
+                else:
+                    self.end_msg('downloaded', color='YELLOW')
+            except Errors.WafError:
+                self.end_msg(False)
+                self.fatal('Can\'t run haxelib install, ensuring halted')
+                return
+        postfix = kw.get('uselib_store') or lib.upper()
+        self.env.append_unique('LIB_' + postfix, lib)
+
+    if halt:
+        self.fatal('Can\'t find libraries in haxelib list, ensuring halted')
+        return
 
 class haxe(Task.Task):
-       vars = ['HAXE', 'HAXE_VERSION', 'HAXEFLAGS']
-       ext_out = ['.hl', '.c', '.h']
+    vars = ['HAXE_VERSION', 'HAXE_FLAGS']
+    ext_in = ['.hx']
 
-       def run(self):
-               cmd = self.env.HAXE + self.env.HAXEFLAGS
-               return self.exec_command(cmd, stdout = open(os.devnull, 'w'))
+    def run(self):
+        cmd = self.env.HAXE + self.env.HAXE_FLAGS_DEFAULT + self.env.HAXE_FLAGS
+        return self.exec_command(cmd)
+
+for COMP in HAXE_COMPILERS:
+    # create runners for each compile target
+    type("haxe_" + COMP, (haxe,), {'ext_out': HAXE_COMPILERS[COMP]['ext_out']})
 
 @taskgen_method
-def init_haxe_task(self, node):
-       def addflags(flags):
-               self.env.append_value('HAXEFLAGS', flags)
-
-       if node.suffix() == '.hxml':
-               addflags(self.path.abspath() + '/' + node.name)
-       else:
-               addflags(['-main', node.name])
-       addflags(['-hl', self.path.get_bld().make_node(self.target).abspath()])
-       addflags(['-cp', self.path.abspath()])
-       addflags(['-D', 'resourcesPath=%s' % getattr(self, 'res', '')])
-       if hasattr(self, 'use'):
-               for dep in self.use:
-                       if self.env['LIB_' + dep]:
-                               for lib in self.env['LIB_' + dep]: 
addflags(['-lib', lib])
-
-@extension('.hx', '.hxml')
-def haxe_file(self, node):
-       if len(self.source) > 1:
-               self.bld.fatal('Use separate task generators for multiple 
files')
-
-       try:
-               haxetask = self.haxetask
-       except AttributeError:
-               haxetask = self.haxetask = self.create_task('haxe')
-               self.init_haxe_task(node)
-
-       haxetask.inputs.append(node)
-       haxetask.outputs.append(self.path.get_bld().make_node(self.target))
-
-@conf
-def find_haxe(self, min_version):
-       npx = self.env.NPX = self.find_program('npx')
-       self.env.LIX = npx + ['lix']
-       npx_haxe = self.env.HAXE = npx + ['haxe']
-       try:
-               output = self.cmd_and_log(npx_haxe + ['-version'])
-       except Errors.WafError:
-               haxe_version = None
-       else:
-               ver = re.search(r'\d+.\d+.\d+', output).group().split('.')
-               haxe_version = tuple([int(x) for x in ver])
-
-       self.msg('Checking for haxe version',
-                haxe_version, haxe_version and haxe_version >= min_version)
-       if npx_haxe and haxe_version < min_version:
-               self.fatal('haxe version %r is too old, need >= %r' % 
(haxe_version, min_version))
-
-       self.env.HAXE_VERSION = haxe_version
-       return npx_haxe
-
-@conf
-def check_haxe(self, min_version=(4,1,4)):
-       if self.env.HAXE_MINVER:
-               min_version = self.env.HAXE_MINVER
-       find_haxe(self, min_version)
+def init_haxe(self):
+    errmsg = '%s not found, specify correct value'
+    try:
+        compiler = HAXE_COMPILERS[self.compiler]
+        comp_tgt = compiler['tgt']
+        comp_mod = '/main.c' if self.compiler == 'HLC' else ''
+    except (AttributeError, KeyError):
+        self.bld.fatal(errmsg % 'COMPILER' + ': ' + ', 
'.join(HAXE_COMPILERS.keys()))
+        return
+
+    self.env.append_value(
+        'HAXE_FLAGS',
+        [comp_tgt, self.path.get_bld().make_node(self.target + 
comp_mod).abspath()])
+    if hasattr(self, 'use'):
+        if not (type(self.use) == str or type(self.use) == list):
+            self.bld.fatal(errmsg % 'USE')
+            return
+        self.use = [self.use] if type(self.use) == str else self.use
+
+        for dep in self.use:
+            if self.env['LIB_' + dep]:
+                for lib in self.env['LIB_' + dep]:
+                    self.env.append_value('HAXE_FLAGS', ['-lib', lib])
+
+    if hasattr(self, 'res'):
+        if not type(self.res) == str:
+            self.bld.fatal(errmsg % 'RES')
+            return
+        self.env.append_value('HAXE_FLAGS', ['-D', 'resourcesPath=%s' % 
self.res])
+
+@extension('.hx')
+def haxe_hook(self, node):
+    if len(self.source) > 1:
+        self.bld.fatal('Use separate task generators for multiple files')
+        return
+
+    src = node
+    tgt = self.path.get_bld().find_or_declare(self.target)
+
+    self.init_haxe()
+    self.create_task('haxe_' + self.compiler, src, tgt)
+
+@conf
+def check_haxe(self, mini=None, maxi=None):
+    self.start_msg('Checking for haxe version')
+    try:
+        curr = re.search(
+            r'(\d+.?)+',
+            self.cmd_and_log(self.env.HAXE + ['-version'])).group()
+    except Errors.WafError:
+        self.end_msg(False)
+        self.fatal('Can\'t get haxe version')
+        return
+
+    if mini and Utils.num2ver(curr) < Utils.num2ver(mini):
+        self.end_msg('wrong', color='RED')
+        self.fatal('%s is too old, need >= %s' % (curr, mini))
+        return
+    if maxi and Utils.num2ver(curr) > Utils.num2ver(maxi):
+        self.end_msg('wrong', color='RED')
+        self.fatal('%s is too new, need <= %s' % (curr, maxi))
+        return
+    self.end_msg(curr, color='GREEN')
+    self.env.HAXE_VERSION = curr
 
 def configure(self):
-       self.env.HAXEFLAGS = []
-       self.check_haxe()
-       self.add_os_flags('HAXEFLAGS', dup = False)
+    self.env.append_value(
+        'HAXE_FLAGS_DEFAULT',
+        ['-D', 'no-compilation', '-cp', self.path.abspath()])
+    Logs.warn('Default flags: %s' % ' '.join(self.env.HAXE_FLAGS_DEFAULT))
+    self.find_program('haxe')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/third_party/waf/waflib/extras/msvs.py 
new/talloc-2.4.2/third_party/waf/waflib/extras/msvs.py
--- old/talloc-2.4.1/third_party/waf/waflib/extras/msvs.py      2022-04-12 
12:29:16.784438600 +0200
+++ new/talloc-2.4.2/third_party/waf/waflib/extras/msvs.py      2024-01-22 
09:56:34.590531000 +0100
@@ -583,7 +583,7 @@
                self.build_properties = ret
 
        def get_build_params(self, props):
-               opt = '--execsolution=%s' % 
self.ctx.get_solution_node().win32path()
+               opt = '--execsolution="%s"' % 
self.ctx.get_solution_node().win32path()
                return (self.get_waf(), opt)
 
        def get_build_command(self, props):
@@ -681,7 +681,7 @@
                """
                Override the default to add the target name
                """
-               opt = '--execsolution=%s' % 
self.ctx.get_solution_node().win32path()
+               opt = '--execsolution="%s"' % 
self.ctx.get_solution_node().win32path()
                if getattr(self, 'tg', None):
                        opt += " --targets=%s" % self.tg.name
                return (self.get_waf(), opt)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/third_party/waf/waflib/extras/sphinx.py 
new/talloc-2.4.2/third_party/waf/waflib/extras/sphinx.py
--- old/talloc-2.4.1/third_party/waf/waflib/extras/sphinx.py    2023-01-19 
12:39:12.919113400 +0100
+++ new/talloc-2.4.2/third_party/waf/waflib/extras/sphinx.py    2024-01-22 
09:56:34.590531000 +0100
@@ -86,7 +86,7 @@
 
 class SphinxBuildingTask(Task.Task):
     color = 'BOLD'
-    run_str = '${SPHINX_BUILD} -M ${SPHINX_OUTPUT_FORMAT} ${SRC} ${TGT} 
${SPHINX_OPTIONS}'
+    run_str = '${SPHINX_BUILD} -M ${SPHINX_OUTPUT_FORMAT} ${SRC} ${TGT} -d 
${TGT[0].bld_dir()}/doctrees-${SPHINX_OUTPUT_FORMAT} ${SPHINX_OPTIONS}'
 
     def keyword(self):
         return 'Compiling (%s)' % self.env.SPHINX_OUTPUT_FORMAT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/talloc-2.4.1/wscript new/talloc-2.4.2/wscript
--- old/talloc-2.4.1/wscript    2023-07-18 15:16:05.179537800 +0200
+++ new/talloc-2.4.2/wscript    2024-01-29 17:16:45.538622600 +0100
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'talloc'
-VERSION = '2.4.1'
+VERSION = '2.4.2'
 
 import os
 import sys

++++++ talloc-python3.5-fix-soabi_name.patch ++++++
--- /var/tmp/diff_new_pack.h6eTyW/_old  2024-05-24 19:50:43.404595818 +0200
+++ /var/tmp/diff_new_pack.h6eTyW/_new  2024-05-24 19:50:43.432596840 +0200
@@ -1,12 +1,13 @@
---- a/buildtools/wafsamba/wafsamba.py
-+++ b/buildtools/wafsamba/wafsamba.py
-@@ -108,7 +108,7 @@ def SAMBA_LIBRARY(bld, libname, source,
-                   ldflags='',
-                   external_library=False,
-                   realname=None,
--                  keep_underscore=False,
-+                  keep_underscore=True,
-                   autoproto=None,
-                   autoproto_extra_source='',
-                   group='main',
+diff -ruNp a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
+--- a/buildtools/wafsamba/wafsamba.py  2024-05-16 13:52:58.561283248 +0200
++++ b/buildtools/wafsamba/wafsamba.py  2024-05-16 13:54:32.297195397 +0200
+@@ -309,7 +309,7 @@ def SAMBA_LIBRARY(bld, libname, source,
+     if bundled_name is not None:
+         pass
+     elif target_type == 'PYTHON' or realname or not private_library:
+-        bundled_name = libname.replace('_', '-')
++        bundled_name = libname
+     else:
+         assert (private_library is True and realname is None)
+         bundled_name = PRIVATE_NAME(bld, libname.replace('_', '-'))
 

Reply via email to