Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package tdb for openSUSE:Factory checked in at 2024-05-24 19:50:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tdb (Old) and /work/SRC/openSUSE:Factory/.tdb.new.24587 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tdb" Fri May 24 19:50:30 2024 rev:44 rq:1176457 version:1.4.10 Changes: -------- --- /work/SRC/openSUSE:Factory/tdb/tdb.changes 2023-10-05 20:02:36.577534944 +0200 +++ /work/SRC/openSUSE:Factory/.tdb.new.24587/tdb.changes 2024-05-24 19:50:43.816610863 +0200 @@ -1,0 +2,8 @@ +Thu May 16 11:29:15 UTC 2024 - Samuel Cabrero <[email protected]> + +- Update to 1.4.10 + * build with Python 3.12 (bso#15513) + * documentation fixes + * minor build fixes + +------------------------------------------------------------------- Old: ---- tdb-1.4.9.tar.asc tdb-1.4.9.tar.gz New: ---- tdb-1.4.10.tar.asc tdb-1.4.10.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tdb.spec ++++++ --- /var/tmp/diff_new_pack.nrlprC/_old 2024-05-24 19:50:44.768645627 +0200 +++ /var/tmp/diff_new_pack.nrlprC/_new 2024-05-24 19:50:44.772645773 +0200 @@ -1,7 +1,7 @@ # # spec file for package tdb # -# 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 @@ -19,7 +19,7 @@ %{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} %{!?py3_soflags: %global py3_soflags cpython-%{python3_version_nodots}m} Name: tdb -Version: 1.4.9 +Version: 1.4.10 Release: 0 Summary: Samba Trivial Database License: LGPL-3.0-or-later ++++++ tdb-1.4.9.tar.gz -> tdb-1.4.10.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.9/ABI/tdb-1.4.10.sigs new/tdb-1.4.10/ABI/tdb-1.4.10.sigs --- old/tdb-1.4.9/ABI/tdb-1.4.10.sigs 1970-01-01 01:00:00.000000000 +0100 +++ new/tdb-1.4.10/ABI/tdb-1.4.10.sigs 2024-01-29 17:18:40.731547000 +0100 @@ -0,0 +1,73 @@ +tdb_add_flags: void (struct tdb_context *, unsigned int) +tdb_append: int (struct tdb_context *, TDB_DATA, TDB_DATA) +tdb_chainlock: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_mark: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_nonblock: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_read: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_read_nonblock: int (struct tdb_context *, TDB_DATA) +tdb_chainlock_unmark: int (struct tdb_context *, TDB_DATA) +tdb_chainunlock: int (struct tdb_context *, TDB_DATA) +tdb_chainunlock_read: int (struct tdb_context *, TDB_DATA) +tdb_check: int (struct tdb_context *, int (*)(TDB_DATA, TDB_DATA, void *), void *) +tdb_close: int (struct tdb_context *) +tdb_delete: int (struct tdb_context *, TDB_DATA) +tdb_dump_all: void (struct tdb_context *) +tdb_enable_seqnum: void (struct tdb_context *) +tdb_error: enum TDB_ERROR (struct tdb_context *) +tdb_errorstr: const char *(struct tdb_context *) +tdb_exists: int (struct tdb_context *, TDB_DATA) +tdb_fd: int (struct tdb_context *) +tdb_fetch: TDB_DATA (struct tdb_context *, TDB_DATA) +tdb_firstkey: TDB_DATA (struct tdb_context *) +tdb_freelist_size: int (struct tdb_context *) +tdb_get_flags: int (struct tdb_context *) +tdb_get_logging_private: void *(struct tdb_context *) +tdb_get_seqnum: int (struct tdb_context *) +tdb_hash_size: int (struct tdb_context *) +tdb_increment_seqnum_nonblock: void (struct tdb_context *) +tdb_jenkins_hash: unsigned int (TDB_DATA *) +tdb_lock_nonblock: int (struct tdb_context *, int, int) +tdb_lockall: int (struct tdb_context *) +tdb_lockall_mark: int (struct tdb_context *) +tdb_lockall_nonblock: int (struct tdb_context *) +tdb_lockall_read: int (struct tdb_context *) +tdb_lockall_read_nonblock: int (struct tdb_context *) +tdb_lockall_unmark: int (struct tdb_context *) +tdb_log_fn: tdb_log_func (struct tdb_context *) +tdb_map_size: size_t (struct tdb_context *) +tdb_name: const char *(struct tdb_context *) +tdb_nextkey: TDB_DATA (struct tdb_context *, TDB_DATA) +tdb_null: dptr = 0xXXXX, dsize = 0 +tdb_open: struct tdb_context *(const char *, int, int, int, mode_t) +tdb_open_ex: struct tdb_context *(const char *, int, int, int, mode_t, const struct tdb_logging_context *, tdb_hash_func) +tdb_parse_record: int (struct tdb_context *, TDB_DATA, int (*)(TDB_DATA, TDB_DATA, void *), void *) +tdb_printfreelist: int (struct tdb_context *) +tdb_remove_flags: void (struct tdb_context *, unsigned int) +tdb_reopen: int (struct tdb_context *) +tdb_reopen_all: int (int) +tdb_repack: int (struct tdb_context *) +tdb_rescue: int (struct tdb_context *, void (*)(TDB_DATA, TDB_DATA, void *), void *) +tdb_runtime_check_for_robust_mutexes: bool (void) +tdb_set_logging_function: void (struct tdb_context *, const struct tdb_logging_context *) +tdb_set_max_dead: void (struct tdb_context *, int) +tdb_setalarm_sigptr: void (struct tdb_context *, volatile sig_atomic_t *) +tdb_store: int (struct tdb_context *, TDB_DATA, TDB_DATA, int) +tdb_storev: int (struct tdb_context *, TDB_DATA, const TDB_DATA *, int, int) +tdb_summary: char *(struct tdb_context *) +tdb_transaction_active: bool (struct tdb_context *) +tdb_transaction_cancel: int (struct tdb_context *) +tdb_transaction_commit: int (struct tdb_context *) +tdb_transaction_prepare_commit: int (struct tdb_context *) +tdb_transaction_start: int (struct tdb_context *) +tdb_transaction_start_nonblock: int (struct tdb_context *) +tdb_transaction_write_lock_mark: int (struct tdb_context *) +tdb_transaction_write_lock_unmark: int (struct tdb_context *) +tdb_traverse: int (struct tdb_context *, tdb_traverse_func, void *) +tdb_traverse_chain: int (struct tdb_context *, unsigned int, tdb_traverse_func, void *) +tdb_traverse_key_chain: int (struct tdb_context *, TDB_DATA, tdb_traverse_func, void *) +tdb_traverse_read: int (struct tdb_context *, tdb_traverse_func, void *) +tdb_unlock: int (struct tdb_context *, int, int) +tdb_unlockall: int (struct tdb_context *) +tdb_unlockall_read: int (struct tdb_context *) +tdb_validate_freelist: int (struct tdb_context *, int *) +tdb_wipe_all: int (struct tdb_context *) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.9/buildtools/bin/waf new/tdb-1.4.10/buildtools/bin/waf --- old/tdb-1.4.9/buildtools/bin/waf 2023-01-19 12:39:12.715112000 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/pkgconfig.py new/tdb-1.4.10/buildtools/wafsamba/pkgconfig.py --- old/tdb-1.4.9/buildtools/wafsamba/pkgconfig.py 2023-01-23 06:37:57.751581200 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_abi.py new/tdb-1.4.10/buildtools/wafsamba/samba_abi.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_abi.py 2023-05-15 12:15:14.013386500 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_autoconf.py new/tdb-1.4.10/buildtools/wafsamba/samba_autoconf.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_autoconf.py 2023-05-19 10:55:21.091587500 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_bundled.py new/tdb-1.4.10/buildtools/wafsamba/samba_bundled.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_bundled.py 2023-04-04 16:54:16.532374000 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_conftests.py new/tdb-1.4.10/buildtools/wafsamba/samba_conftests.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_conftests.py 2023-04-04 16:54:16.532374000 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_deps.py new/tdb-1.4.10/buildtools/wafsamba/samba_deps.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_deps.py 2022-07-22 10:48:01.783334000 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_install.py new/tdb-1.4.10/buildtools/wafsamba/samba_install.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_install.py 2020-02-03 11:43:17.748698700 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_patterns.py new/tdb-1.4.10/buildtools/wafsamba/samba_patterns.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_patterns.py 2022-02-01 16:01:28.493139700 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_perl.py new/tdb-1.4.10/buildtools/wafsamba/samba_perl.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_perl.py 2022-07-22 10:48:01.783334000 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_pidl.py new/tdb-1.4.10/buildtools/wafsamba/samba_pidl.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_pidl.py 2021-07-08 17:48:26.493492100 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_utils.py new/tdb-1.4.10/buildtools/wafsamba/samba_utils.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_utils.py 2023-04-04 16:54:16.532374000 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/samba_version.py new/tdb-1.4.10/buildtools/wafsamba/samba_version.py --- old/tdb-1.4.9/buildtools/wafsamba/samba_version.py 2023-04-04 16:54:16.532374000 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/stale_files.py new/tdb-1.4.10/buildtools/wafsamba/stale_files.py --- old/tdb-1.4.9/buildtools/wafsamba/stale_files.py 2022-02-01 16:01:28.493139700 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/wafsamba.py new/tdb-1.4.10/buildtools/wafsamba/wafsamba.py --- old/tdb-1.4.9/buildtools/wafsamba/wafsamba.py 2023-04-04 16:54:16.532374000 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/buildtools/wafsamba/wscript new/tdb-1.4.10/buildtools/wafsamba/wscript --- old/tdb-1.4.9/buildtools/wafsamba/wscript 2023-04-04 16:54:16.532374000 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/common/hash.c new/tdb-1.4.10/common/hash.c --- old/tdb-1.4.9/common/hash.c 2020-02-03 11:43:17.860698500 +0100 +++ new/tdb-1.4.10/common/hash.c 2023-09-28 11:28:07.505609300 +0200 @@ -56,7 +56,7 @@ the public domain. It has no warranty. You probably want to use hashlittle(). hashlittle() and hashbig() -hash byte arrays. hashlittle() is is faster than hashbig() on +hash byte arrays. hashlittle() is faster than hashbig() on little-endian machines. Intel and AMD are little-endian machines. On second thought, you probably want hashlittle2(), which is identical to hashlittle() except it returns two 32-bit hashes for the price of one. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.9/common/open.c new/tdb-1.4.10/common/open.c --- old/tdb-1.4.9/common/open.c 2023-04-21 10:29:11.360781200 +0200 +++ new/tdb-1.4.10/common/open.c 2023-10-25 09:25:01.409659900 +0200 @@ -513,7 +513,13 @@ errno = 0; if (read(tdb->fd, &header, sizeof(header)) != sizeof(header) - || strcmp(header.magic_food, TDB_MAGIC_FOOD) != 0) { + /* + * Call strncmp() rather than strcmp() in case header.magic_food is + * not zeroâterminated. Weâre still checking the full string for + * equality, as tdb_header::magic_food is larger than + * TDB_MAGIC_FOOD. + */ + || strncmp(header.magic_food, TDB_MAGIC_FOOD, sizeof(header.magic_food)) != 0) { if (!(open_flags & O_CREAT) || tdb_new_database(tdb, &header, hash_size) == -1) { if (errno == 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.9/lib/replace/replace.h new/tdb-1.4.10/lib/replace/replace.h --- old/tdb-1.4.9/lib/replace/replace.h 2023-04-04 16:54:16.552373600 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/lib/replace/system/python.h new/tdb-1.4.10/lib/replace/system/python.h --- old/tdb-1.4.9/lib/replace/system/python.h 1970-01-01 01:00:00.000000000 +0100 +++ new/tdb-1.4.10/lib/replace/system/python.h 2024-01-22 09:56:34.410532200 +0100 @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2023 Andreas Schneider <[email protected]> + * + * 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/tdb-1.4.9/lib/replace/tests/testsuite.c new/tdb-1.4.10/lib/replace/tests/testsuite.c --- old/tdb-1.4.9/lib/replace/tests/testsuite.c 2022-02-01 15:55:19.732598300 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/lib/replace/wscript new/tdb-1.4.10/lib/replace/wscript --- old/tdb-1.4.9/lib/replace/wscript 2023-07-20 12:46:15.122290600 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/pytdb.c new/tdb-1.4.10/pytdb.c --- old/tdb-1.4.9/pytdb.c 2023-05-19 10:55:21.095587700 +0200 +++ new/tdb-1.4.10/pytdb.c 2024-01-22 09:56:34.410532200 +0100 @@ -24,7 +24,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 "system/filesys.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.9/python/tdbdump.py new/tdb-1.4.10/python/tdbdump.py --- old/tdb-1.4.9/python/tdbdump.py 2021-07-08 17:51:20.086189700 +0200 +++ new/tdb-1.4.10/python/tdbdump.py 2024-01-22 09:56:34.414532200 +0100 @@ -1,12 +1,17 @@ #!/usr/bin/env python3 # Trivial reimplementation of tdbdump in Python -import tdb, sys +import sys + +sys.path.insert(0, "bin/python") + +import tdb if len(sys.argv) < 2: print("Usage: tdbdump.py <tdb-file>") sys.exit(1) db = tdb.Tdb(sys.argv[1]) -for (k, v) in db.items(): +for k in db.keys(): + v = db.get(k) print("{\nkey(%d) = %r\ndata(%d) = %r\n}" % (len(k), k, len(v), v)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tdb-1.4.9/third_party/waf/waflib/Context.py new/tdb-1.4.10/third_party/waf/waflib/Context.py --- old/tdb-1.4.9/third_party/waf/waflib/Context.py 2023-01-19 12:39:12.915113200 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/third_party/waf/waflib/Scripting.py new/tdb-1.4.10/third_party/waf/waflib/Scripting.py --- old/tdb-1.4.9/third_party/waf/waflib/Scripting.py 2019-12-11 23:13:06.577426000 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/third_party/waf/waflib/Tools/qt5.py new/tdb-1.4.10/third_party/waf/waflib/Tools/qt5.py --- old/tdb-1.4.9/third_party/waf/waflib/Tools/qt5.py 2022-04-12 12:29:16.780438700 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/third_party/waf/waflib/extras/distnet.py new/tdb-1.4.10/third_party/waf/waflib/extras/distnet.py --- old/tdb-1.4.9/third_party/waf/waflib/extras/distnet.py 2019-12-11 23:13:06.581426100 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/third_party/waf/waflib/extras/haxe.py new/tdb-1.4.10/third_party/waf/waflib/extras/haxe.py --- old/tdb-1.4.9/third_party/waf/waflib/extras/haxe.py 2022-02-01 15:55:20.080603400 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/third_party/waf/waflib/extras/msvs.py new/tdb-1.4.10/third_party/waf/waflib/extras/msvs.py --- old/tdb-1.4.9/third_party/waf/waflib/extras/msvs.py 2022-04-12 12:29:16.784438600 +0200 +++ new/tdb-1.4.10/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/tdb-1.4.9/third_party/waf/waflib/extras/sphinx.py new/tdb-1.4.10/third_party/waf/waflib/extras/sphinx.py --- old/tdb-1.4.9/third_party/waf/waflib/extras/sphinx.py 2023-01-19 12:39:12.919113400 +0100 +++ new/tdb-1.4.10/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/tdb-1.4.9/wscript new/tdb-1.4.10/wscript --- old/tdb-1.4.9/wscript 2023-07-20 12:48:16.091104000 +0200 +++ new/tdb-1.4.10/wscript 2024-01-29 17:18:40.731547000 +0100 @@ -1,7 +1,7 @@ #!/usr/bin/env python APPNAME = 'tdb' -VERSION = '1.4.9' +VERSION = '1.4.10' import sys, os
