Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ldb for openSUSE:Factory checked in 
at 2022-04-08 00:26:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ldb (Old)
 and      /work/SRC/openSUSE:Factory/.ldb.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ldb"

Fri Apr  8 00:26:34 2022 rev:59 rq:966946 version:2.5.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/ldb/ldb.changes  2022-03-01 17:03:24.360330864 
+0100
+++ /work/SRC/openSUSE:Factory/.ldb.new.1900/ldb.changes        2022-04-08 
00:26:49.214927343 +0200
@@ -1,0 +2,6 @@
+Tue Mar 22 12:24:56 UTC 2022 - Samuel Cabrero <scabr...@suse.de>
+
+- Update to version 2.5.0
+  + No code changes, just bump version for samba 4.16.0 release
+
+-------------------------------------------------------------------

Old:
----
  ldb-2.4.2.tar.asc
  ldb-2.4.2.tar.gz

New:
----
  ldb-2.5.0.tar.asc
  ldb-2.5.0.tar.gz

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

Other differences:
------------------
++++++ ldb.spec ++++++
--- /var/tmp/diff_new_pack.5RASBK/_old  2022-04-08 00:26:51.018907096 +0200
+++ /var/tmp/diff_new_pack.5RASBK/_new  2022-04-08 00:26:51.022907051 +0200
@@ -28,7 +28,7 @@
 
 %define lmdb_version 0.9.16
 %define talloc_version 2.3.3
-%define tdb_version 1.4.4
+%define tdb_version 1.4.6
 %define tevent_version 0.11.0
 
 Name:           ldb
@@ -57,7 +57,7 @@
 %endif
 
 URL:            https://ldb.samba.org/
-Version:        2.4.2
+Version:        2.5.0
 Release:        0
 Summary:        An LDAP-like embedded database
 License:        LGPL-3.0-or-later

++++++ ldb-2.4.2.tar.gz -> ldb-2.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/ABI/ldb-2.4.2.sigs 
new/ldb-2.5.0/ABI/ldb-2.4.2.sigs
--- old/ldb-2.4.2/ABI/ldb-2.4.2.sigs    2022-01-24 13:47:34.956465700 +0100
+++ new/ldb-2.5.0/ABI/ldb-2.4.2.sigs    1970-01-01 01:00:00.000000000 +0100
@@ -1,283 +0,0 @@
-ldb_add: int (struct ldb_context *, const struct ldb_message *)
-ldb_any_comparison: int (struct ldb_context *, void *, ldb_attr_handler_t, 
const struct ldb_val *, const struct ldb_val *)
-ldb_asprintf_errstring: void (struct ldb_context *, const char *, ...)
-ldb_attr_casefold: char *(TALLOC_CTX *, const char *)
-ldb_attr_dn: int (const char *)
-ldb_attr_in_list: int (const char * const *, const char *)
-ldb_attr_list_copy: const char **(TALLOC_CTX *, const char * const *)
-ldb_attr_list_copy_add: const char **(TALLOC_CTX *, const char * const *, 
const char *)
-ldb_base64_decode: int (char *)
-ldb_base64_encode: char *(TALLOC_CTX *, const char *, int)
-ldb_binary_decode: struct ldb_val (TALLOC_CTX *, const char *)
-ldb_binary_encode: char *(TALLOC_CTX *, struct ldb_val)
-ldb_binary_encode_string: char *(TALLOC_CTX *, const char *)
-ldb_build_add_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const struct ldb_message *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
-ldb_build_del_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
-ldb_build_extended_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const char *, void *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
-ldb_build_mod_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const struct ldb_message *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
-ldb_build_rename_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, struct ldb_dn *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
-ldb_build_search_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, enum ldb_scope, const char *, const char * const 
*, struct ldb_control **, void *, ldb_request_callback_t, struct ldb_request *)
-ldb_build_search_req_ex: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, enum ldb_scope, struct ldb_parse_tree *, const 
char * const *, struct ldb_control **, void *, ldb_request_callback_t, struct 
ldb_request *)
-ldb_casefold: char *(struct ldb_context *, TALLOC_CTX *, const char *, size_t)
-ldb_casefold_default: char *(void *, TALLOC_CTX *, const char *, size_t)
-ldb_check_critical_controls: int (struct ldb_control **)
-ldb_comparison_binary: int (struct ldb_context *, void *, const struct ldb_val 
*, const struct ldb_val *)
-ldb_comparison_fold: int (struct ldb_context *, void *, const struct ldb_val 
*, const struct ldb_val *)
-ldb_connect: int (struct ldb_context *, const char *, unsigned int, const char 
**)
-ldb_control_to_string: char *(TALLOC_CTX *, const struct ldb_control *)
-ldb_controls_except_specified: struct ldb_control **(struct ldb_control **, 
TALLOC_CTX *, struct ldb_control *)
-ldb_debug: void (struct ldb_context *, enum ldb_debug_level, const char *, ...)
-ldb_debug_add: void (struct ldb_context *, const char *, ...)
-ldb_debug_end: void (struct ldb_context *, enum ldb_debug_level)
-ldb_debug_set: void (struct ldb_context *, enum ldb_debug_level, const char *, 
...)
-ldb_delete: int (struct ldb_context *, struct ldb_dn *)
-ldb_dn_add_base: bool (struct ldb_dn *, struct ldb_dn *)
-ldb_dn_add_base_fmt: bool (struct ldb_dn *, const char *, ...)
-ldb_dn_add_child: bool (struct ldb_dn *, struct ldb_dn *)
-ldb_dn_add_child_fmt: bool (struct ldb_dn *, const char *, ...)
-ldb_dn_add_child_val: bool (struct ldb_dn *, const char *, struct ldb_val)
-ldb_dn_alloc_casefold: char *(TALLOC_CTX *, struct ldb_dn *)
-ldb_dn_alloc_linearized: char *(TALLOC_CTX *, struct ldb_dn *)
-ldb_dn_canonical_ex_string: char *(TALLOC_CTX *, struct ldb_dn *)
-ldb_dn_canonical_string: char *(TALLOC_CTX *, struct ldb_dn *)
-ldb_dn_check_local: bool (struct ldb_module *, struct ldb_dn *)
-ldb_dn_check_special: bool (struct ldb_dn *, const char *)
-ldb_dn_compare: int (struct ldb_dn *, struct ldb_dn *)
-ldb_dn_compare_base: int (struct ldb_dn *, struct ldb_dn *)
-ldb_dn_copy: struct ldb_dn *(TALLOC_CTX *, struct ldb_dn *)
-ldb_dn_escape_value: char *(TALLOC_CTX *, struct ldb_val)
-ldb_dn_extended_add_syntax: int (struct ldb_context *, unsigned int, const 
struct ldb_dn_extended_syntax *)
-ldb_dn_extended_filter: void (struct ldb_dn *, const char * const *)
-ldb_dn_extended_syntax_by_name: const struct ldb_dn_extended_syntax *(struct 
ldb_context *, const char *)
-ldb_dn_from_ldb_val: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const 
struct ldb_val *)
-ldb_dn_get_casefold: const char *(struct ldb_dn *)
-ldb_dn_get_comp_num: int (struct ldb_dn *)
-ldb_dn_get_component_name: const char *(struct ldb_dn *, unsigned int)
-ldb_dn_get_component_val: const struct ldb_val *(struct ldb_dn *, unsigned int)
-ldb_dn_get_extended_comp_num: int (struct ldb_dn *)
-ldb_dn_get_extended_component: const struct ldb_val *(struct ldb_dn *, const 
char *)
-ldb_dn_get_extended_linearized: char *(TALLOC_CTX *, struct ldb_dn *, int)
-ldb_dn_get_ldb_context: struct ldb_context *(struct ldb_dn *)
-ldb_dn_get_linearized: const char *(struct ldb_dn *)
-ldb_dn_get_parent: struct ldb_dn *(TALLOC_CTX *, struct ldb_dn *)
-ldb_dn_get_rdn_name: const char *(struct ldb_dn *)
-ldb_dn_get_rdn_val: const struct ldb_val *(struct ldb_dn *)
-ldb_dn_has_extended: bool (struct ldb_dn *)
-ldb_dn_is_null: bool (struct ldb_dn *)
-ldb_dn_is_special: bool (struct ldb_dn *)
-ldb_dn_is_valid: bool (struct ldb_dn *)
-ldb_dn_map_local: struct ldb_dn *(struct ldb_module *, void *, struct ldb_dn *)
-ldb_dn_map_rebase_remote: struct ldb_dn *(struct ldb_module *, void *, struct 
ldb_dn *)
-ldb_dn_map_remote: struct ldb_dn *(struct ldb_module *, void *, struct ldb_dn 
*)
-ldb_dn_minimise: bool (struct ldb_dn *)
-ldb_dn_new: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const char *)
-ldb_dn_new_fmt: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const char 
*, ...)
-ldb_dn_remove_base_components: bool (struct ldb_dn *, unsigned int)
-ldb_dn_remove_child_components: bool (struct ldb_dn *, unsigned int)
-ldb_dn_remove_extended_components: void (struct ldb_dn *)
-ldb_dn_replace_components: bool (struct ldb_dn *, struct ldb_dn *)
-ldb_dn_set_component: int (struct ldb_dn *, int, const char *, const struct 
ldb_val)
-ldb_dn_set_extended_component: int (struct ldb_dn *, const char *, const 
struct ldb_val *)
-ldb_dn_update_components: int (struct ldb_dn *, const struct ldb_dn *)
-ldb_dn_validate: bool (struct ldb_dn *)
-ldb_dump_results: void (struct ldb_context *, struct ldb_result *, FILE *)
-ldb_error_at: int (struct ldb_context *, int, const char *, const char *, int)
-ldb_errstring: const char *(struct ldb_context *)
-ldb_extended: int (struct ldb_context *, const char *, void *, struct 
ldb_result **)
-ldb_extended_default_callback: int (struct ldb_request *, struct ldb_reply *)
-ldb_filter_attrs: int (struct ldb_context *, const struct ldb_message *, const 
char * const *, struct ldb_message *)
-ldb_filter_from_tree: char *(TALLOC_CTX *, const struct ldb_parse_tree *)
-ldb_get_config_basedn: struct ldb_dn *(struct ldb_context *)
-ldb_get_create_perms: unsigned int (struct ldb_context *)
-ldb_get_default_basedn: struct ldb_dn *(struct ldb_context *)
-ldb_get_event_context: struct tevent_context *(struct ldb_context *)
-ldb_get_flags: unsigned int (struct ldb_context *)
-ldb_get_opaque: void *(struct ldb_context *, const char *)
-ldb_get_root_basedn: struct ldb_dn *(struct ldb_context *)
-ldb_get_schema_basedn: struct ldb_dn *(struct ldb_context *)
-ldb_global_init: int (void)
-ldb_handle_get_event_context: struct tevent_context *(struct ldb_handle *)
-ldb_handle_new: struct ldb_handle *(TALLOC_CTX *, struct ldb_context *)
-ldb_handle_use_global_event_context: void (struct ldb_handle *)
-ldb_handler_copy: int (struct ldb_context *, void *, const struct ldb_val *, 
struct ldb_val *)
-ldb_handler_fold: int (struct ldb_context *, void *, const struct ldb_val *, 
struct ldb_val *)
-ldb_init: struct ldb_context *(TALLOC_CTX *, struct tevent_context *)
-ldb_ldif_message_redacted_string: char *(struct ldb_context *, TALLOC_CTX *, 
enum ldb_changetype, const struct ldb_message *)
-ldb_ldif_message_string: char *(struct ldb_context *, TALLOC_CTX *, enum 
ldb_changetype, const struct ldb_message *)
-ldb_ldif_parse_modrdn: int (struct ldb_context *, const struct ldb_ldif *, 
TALLOC_CTX *, struct ldb_dn **, struct ldb_dn **, bool *, struct ldb_dn **, 
struct ldb_dn **)
-ldb_ldif_read: struct ldb_ldif *(struct ldb_context *, int (*)(void *), void *)
-ldb_ldif_read_file: struct ldb_ldif *(struct ldb_context *, FILE *)
-ldb_ldif_read_file_state: struct ldb_ldif *(struct ldb_context *, struct 
ldif_read_file_state *)
-ldb_ldif_read_free: void (struct ldb_context *, struct ldb_ldif *)
-ldb_ldif_read_string: struct ldb_ldif *(struct ldb_context *, const char **)
-ldb_ldif_write: int (struct ldb_context *, int (*)(void *, const char *, ...), 
void *, const struct ldb_ldif *)
-ldb_ldif_write_file: int (struct ldb_context *, FILE *, const struct ldb_ldif 
*)
-ldb_ldif_write_redacted_trace_string: char *(struct ldb_context *, TALLOC_CTX 
*, const struct ldb_ldif *)
-ldb_ldif_write_string: char *(struct ldb_context *, TALLOC_CTX *, const struct 
ldb_ldif *)
-ldb_load_modules: int (struct ldb_context *, const char **)
-ldb_map_add: int (struct ldb_module *, struct ldb_request *)
-ldb_map_delete: int (struct ldb_module *, struct ldb_request *)
-ldb_map_init: int (struct ldb_module *, const struct ldb_map_attribute *, 
const struct ldb_map_objectclass *, const char * const *, const char *, const 
char *)
-ldb_map_modify: int (struct ldb_module *, struct ldb_request *)
-ldb_map_rename: int (struct ldb_module *, struct ldb_request *)
-ldb_map_search: int (struct ldb_module *, struct ldb_request *)
-ldb_match_message: int (struct ldb_context *, const struct ldb_message *, 
const struct ldb_parse_tree *, enum ldb_scope, bool *)
-ldb_match_msg: int (struct ldb_context *, const struct ldb_message *, const 
struct ldb_parse_tree *, struct ldb_dn *, enum ldb_scope)
-ldb_match_msg_error: int (struct ldb_context *, const struct ldb_message *, 
const struct ldb_parse_tree *, struct ldb_dn *, enum ldb_scope, bool *)
-ldb_match_msg_objectclass: int (const struct ldb_message *, const char *)
-ldb_mod_register_control: int (struct ldb_module *, const char *)
-ldb_modify: int (struct ldb_context *, const struct ldb_message *)
-ldb_modify_default_callback: int (struct ldb_request *, struct ldb_reply *)
-ldb_module_call_chain: char *(struct ldb_request *, TALLOC_CTX *)
-ldb_module_connect_backend: int (struct ldb_context *, const char *, const 
char **, struct ldb_module **)
-ldb_module_done: int (struct ldb_request *, struct ldb_control **, struct 
ldb_extended *, int)
-ldb_module_flags: uint32_t (struct ldb_context *)
-ldb_module_get_ctx: struct ldb_context *(struct ldb_module *)
-ldb_module_get_name: const char *(struct ldb_module *)
-ldb_module_get_ops: const struct ldb_module_ops *(struct ldb_module *)
-ldb_module_get_private: void *(struct ldb_module *)
-ldb_module_init_chain: int (struct ldb_context *, struct ldb_module *)
-ldb_module_load_list: int (struct ldb_context *, const char **, struct 
ldb_module *, struct ldb_module **)
-ldb_module_new: struct ldb_module *(TALLOC_CTX *, struct ldb_context *, const 
char *, const struct ldb_module_ops *)
-ldb_module_next: struct ldb_module *(struct ldb_module *)
-ldb_module_popt_options: struct poptOption **(struct ldb_context *)
-ldb_module_send_entry: int (struct ldb_request *, struct ldb_message *, struct 
ldb_control **)
-ldb_module_send_referral: int (struct ldb_request *, char *)
-ldb_module_set_next: void (struct ldb_module *, struct ldb_module *)
-ldb_module_set_private: void (struct ldb_module *, void *)
-ldb_modules_hook: int (struct ldb_context *, enum ldb_module_hook_type)
-ldb_modules_list_from_string: const char **(struct ldb_context *, TALLOC_CTX 
*, const char *)
-ldb_modules_load: int (const char *, const char *)
-ldb_msg_add: int (struct ldb_message *, const struct ldb_message_element *, 
int)
-ldb_msg_add_empty: int (struct ldb_message *, const char *, int, struct 
ldb_message_element **)
-ldb_msg_add_fmt: int (struct ldb_message *, const char *, const char *, ...)
-ldb_msg_add_linearized_dn: int (struct ldb_message *, const char *, struct 
ldb_dn *)
-ldb_msg_add_steal_string: int (struct ldb_message *, const char *, char *)
-ldb_msg_add_steal_value: int (struct ldb_message *, const char *, struct 
ldb_val *)
-ldb_msg_add_string: int (struct ldb_message *, const char *, const char *)
-ldb_msg_add_value: int (struct ldb_message *, const char *, const struct 
ldb_val *, struct ldb_message_element **)
-ldb_msg_canonicalize: struct ldb_message *(struct ldb_context *, const struct 
ldb_message *)
-ldb_msg_check_string_attribute: int (const struct ldb_message *, const char *, 
const char *)
-ldb_msg_copy: struct ldb_message *(TALLOC_CTX *, const struct ldb_message *)
-ldb_msg_copy_attr: int (struct ldb_message *, const char *, const char *)
-ldb_msg_copy_shallow: struct ldb_message *(TALLOC_CTX *, const struct 
ldb_message *)
-ldb_msg_diff: struct ldb_message *(struct ldb_context *, struct ldb_message *, 
struct ldb_message *)
-ldb_msg_difference: int (struct ldb_context *, TALLOC_CTX *, struct 
ldb_message *, struct ldb_message *, struct ldb_message **)
-ldb_msg_element_compare: int (struct ldb_message_element *, struct 
ldb_message_element *)
-ldb_msg_element_compare_name: int (struct ldb_message_element *, struct 
ldb_message_element *)
-ldb_msg_element_equal_ordered: bool (const struct ldb_message_element *, const 
struct ldb_message_element *)
-ldb_msg_find_attr_as_bool: int (const struct ldb_message *, const char *, int)
-ldb_msg_find_attr_as_dn: struct ldb_dn *(struct ldb_context *, TALLOC_CTX *, 
const struct ldb_message *, const char *)
-ldb_msg_find_attr_as_double: double (const struct ldb_message *, const char *, 
double)
-ldb_msg_find_attr_as_int: int (const struct ldb_message *, const char *, int)
-ldb_msg_find_attr_as_int64: int64_t (const struct ldb_message *, const char *, 
int64_t)
-ldb_msg_find_attr_as_string: const char *(const struct ldb_message *, const 
char *, const char *)
-ldb_msg_find_attr_as_uint: unsigned int (const struct ldb_message *, const 
char *, unsigned int)
-ldb_msg_find_attr_as_uint64: uint64_t (const struct ldb_message *, const char 
*, uint64_t)
-ldb_msg_find_common_values: int (struct ldb_context *, TALLOC_CTX *, struct 
ldb_message_element *, struct ldb_message_element *, uint32_t)
-ldb_msg_find_duplicate_val: int (struct ldb_context *, TALLOC_CTX *, const 
struct ldb_message_element *, struct ldb_val **, uint32_t)
-ldb_msg_find_element: struct ldb_message_element *(const struct ldb_message *, 
const char *)
-ldb_msg_find_ldb_val: const struct ldb_val *(const struct ldb_message *, const 
char *)
-ldb_msg_find_val: struct ldb_val *(const struct ldb_message_element *, struct 
ldb_val *)
-ldb_msg_new: struct ldb_message *(TALLOC_CTX *)
-ldb_msg_normalize: int (struct ldb_context *, TALLOC_CTX *, const struct 
ldb_message *, struct ldb_message **)
-ldb_msg_remove_attr: void (struct ldb_message *, const char *)
-ldb_msg_remove_element: void (struct ldb_message *, struct ldb_message_element 
*)
-ldb_msg_rename_attr: int (struct ldb_message *, const char *, const char *)
-ldb_msg_sanity_check: int (struct ldb_context *, const struct ldb_message *)
-ldb_msg_sort_elements: void (struct ldb_message *)
-ldb_next_del_trans: int (struct ldb_module *)
-ldb_next_end_trans: int (struct ldb_module *)
-ldb_next_init: int (struct ldb_module *)
-ldb_next_prepare_commit: int (struct ldb_module *)
-ldb_next_read_lock: int (struct ldb_module *)
-ldb_next_read_unlock: int (struct ldb_module *)
-ldb_next_remote_request: int (struct ldb_module *, struct ldb_request *)
-ldb_next_request: int (struct ldb_module *, struct ldb_request *)
-ldb_next_start_trans: int (struct ldb_module *)
-ldb_op_default_callback: int (struct ldb_request *, struct ldb_reply *)
-ldb_options_copy: const char **(TALLOC_CTX *, const char **)
-ldb_options_find: const char *(struct ldb_context *, const char **, const char 
*)
-ldb_options_get: const char **(struct ldb_context *)
-ldb_pack_data: int (struct ldb_context *, const struct ldb_message *, struct 
ldb_val *, uint32_t)
-ldb_parse_control_from_string: struct ldb_control *(struct ldb_context *, 
TALLOC_CTX *, const char *)
-ldb_parse_control_strings: struct ldb_control **(struct ldb_context *, 
TALLOC_CTX *, const char **)
-ldb_parse_tree: struct ldb_parse_tree *(TALLOC_CTX *, const char *)
-ldb_parse_tree_attr_replace: void (struct ldb_parse_tree *, const char *, 
const char *)
-ldb_parse_tree_copy_shallow: struct ldb_parse_tree *(TALLOC_CTX *, const 
struct ldb_parse_tree *)
-ldb_parse_tree_walk: int (struct ldb_parse_tree *, int (*)(struct 
ldb_parse_tree *, void *), void *)
-ldb_qsort: void (void * const, size_t, size_t, void *, ldb_qsort_cmp_fn_t)
-ldb_register_backend: int (const char *, ldb_connect_fn, bool)
-ldb_register_extended_match_rule: int (struct ldb_context *, const struct 
ldb_extended_match_rule *)
-ldb_register_hook: int (ldb_hook_fn)
-ldb_register_module: int (const struct ldb_module_ops *)
-ldb_rename: int (struct ldb_context *, struct ldb_dn *, struct ldb_dn *)
-ldb_reply_add_control: int (struct ldb_reply *, const char *, bool, void *)
-ldb_reply_get_control: struct ldb_control *(struct ldb_reply *, const char *)
-ldb_req_get_custom_flags: uint32_t (struct ldb_request *)
-ldb_req_is_untrusted: bool (struct ldb_request *)
-ldb_req_location: const char *(struct ldb_request *)
-ldb_req_mark_trusted: void (struct ldb_request *)
-ldb_req_mark_untrusted: void (struct ldb_request *)
-ldb_req_set_custom_flags: void (struct ldb_request *, uint32_t)
-ldb_req_set_location: void (struct ldb_request *, const char *)
-ldb_request: int (struct ldb_context *, struct ldb_request *)
-ldb_request_add_control: int (struct ldb_request *, const char *, bool, void *)
-ldb_request_done: int (struct ldb_request *, int)
-ldb_request_get_control: struct ldb_control *(struct ldb_request *, const char 
*)
-ldb_request_get_status: int (struct ldb_request *)
-ldb_request_replace_control: int (struct ldb_request *, const char *, bool, 
void *)
-ldb_request_set_state: void (struct ldb_request *, int)
-ldb_reset_err_string: void (struct ldb_context *)
-ldb_save_controls: int (struct ldb_control *, struct ldb_request *, struct 
ldb_control ***)
-ldb_schema_attribute_add: int (struct ldb_context *, const char *, unsigned 
int, const char *)
-ldb_schema_attribute_add_with_syntax: int (struct ldb_context *, const char *, 
unsigned int, const struct ldb_schema_syntax *)
-ldb_schema_attribute_by_name: const struct ldb_schema_attribute *(struct 
ldb_context *, const char *)
-ldb_schema_attribute_fill_with_syntax: int (struct ldb_context *, TALLOC_CTX 
*, const char *, unsigned int, const struct ldb_schema_syntax *, struct 
ldb_schema_attribute *)
-ldb_schema_attribute_remove: void (struct ldb_context *, const char *)
-ldb_schema_attribute_remove_flagged: void (struct ldb_context *, unsigned int)
-ldb_schema_attribute_set_override_handler: void (struct ldb_context *, 
ldb_attribute_handler_override_fn_t, void *)
-ldb_schema_set_override_GUID_index: void (struct ldb_context *, const char *, 
const char *)
-ldb_schema_set_override_indexlist: void (struct ldb_context *, bool)
-ldb_search: int (struct ldb_context *, TALLOC_CTX *, struct ldb_result **, 
struct ldb_dn *, enum ldb_scope, const char * const *, const char *, ...)
-ldb_search_default_callback: int (struct ldb_request *, struct ldb_reply *)
-ldb_sequence_number: int (struct ldb_context *, enum ldb_sequence_type, 
uint64_t *)
-ldb_set_create_perms: void (struct ldb_context *, unsigned int)
-ldb_set_debug: int (struct ldb_context *, void (*)(void *, enum 
ldb_debug_level, const char *, va_list), void *)
-ldb_set_debug_stderr: int (struct ldb_context *)
-ldb_set_default_dns: void (struct ldb_context *)
-ldb_set_errstring: void (struct ldb_context *, const char *)
-ldb_set_event_context: void (struct ldb_context *, struct tevent_context *)
-ldb_set_flags: void (struct ldb_context *, unsigned int)
-ldb_set_modules_dir: void (struct ldb_context *, const char *)
-ldb_set_opaque: int (struct ldb_context *, const char *, void *)
-ldb_set_require_private_event_context: void (struct ldb_context *)
-ldb_set_timeout: int (struct ldb_context *, struct ldb_request *, int)
-ldb_set_timeout_from_prev_req: int (struct ldb_context *, struct ldb_request 
*, struct ldb_request *)
-ldb_set_utf8_default: void (struct ldb_context *)
-ldb_set_utf8_fns: void (struct ldb_context *, void *, char *(*)(void *, void 
*, const char *, size_t))
-ldb_setup_wellknown_attributes: int (struct ldb_context *)
-ldb_should_b64_encode: int (struct ldb_context *, const struct ldb_val *)
-ldb_standard_syntax_by_name: const struct ldb_schema_syntax *(struct 
ldb_context *, const char *)
-ldb_strerror: const char *(int)
-ldb_string_to_time: time_t (const char *)
-ldb_string_utc_to_time: time_t (const char *)
-ldb_timestring: char *(TALLOC_CTX *, time_t)
-ldb_timestring_utc: char *(TALLOC_CTX *, time_t)
-ldb_transaction_cancel: int (struct ldb_context *)
-ldb_transaction_cancel_noerr: int (struct ldb_context *)
-ldb_transaction_commit: int (struct ldb_context *)
-ldb_transaction_prepare_commit: int (struct ldb_context *)
-ldb_transaction_start: int (struct ldb_context *)
-ldb_unpack_data: int (struct ldb_context *, const struct ldb_val *, struct 
ldb_message *)
-ldb_unpack_data_flags: int (struct ldb_context *, const struct ldb_val *, 
struct ldb_message *, unsigned int)
-ldb_unpack_get_format: int (const struct ldb_val *, uint32_t *)
-ldb_val_dup: struct ldb_val (TALLOC_CTX *, const struct ldb_val *)
-ldb_val_equal_exact: int (const struct ldb_val *, const struct ldb_val *)
-ldb_val_map_local: struct ldb_val (struct ldb_module *, void *, const struct 
ldb_map_attribute *, const struct ldb_val *)
-ldb_val_map_remote: struct ldb_val (struct ldb_module *, void *, const struct 
ldb_map_attribute *, const struct ldb_val *)
-ldb_val_string_cmp: int (const struct ldb_val *, const char *)
-ldb_val_to_time: int (const struct ldb_val *, time_t *)
-ldb_valid_attr_name: int (const char *)
-ldb_vdebug: void (struct ldb_context *, enum ldb_debug_level, const char *, 
va_list)
-ldb_wait: int (struct ldb_handle *, enum ldb_wait_type)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/ABI/ldb-2.5.0.sigs 
new/ldb-2.5.0/ABI/ldb-2.5.0.sigs
--- old/ldb-2.4.2/ABI/ldb-2.5.0.sigs    1970-01-01 01:00:00.000000000 +0100
+++ new/ldb-2.5.0/ABI/ldb-2.5.0.sigs    2022-01-24 13:18:16.322473500 +0100
@@ -0,0 +1,283 @@
+ldb_add: int (struct ldb_context *, const struct ldb_message *)
+ldb_any_comparison: int (struct ldb_context *, void *, ldb_attr_handler_t, 
const struct ldb_val *, const struct ldb_val *)
+ldb_asprintf_errstring: void (struct ldb_context *, const char *, ...)
+ldb_attr_casefold: char *(TALLOC_CTX *, const char *)
+ldb_attr_dn: int (const char *)
+ldb_attr_in_list: int (const char * const *, const char *)
+ldb_attr_list_copy: const char **(TALLOC_CTX *, const char * const *)
+ldb_attr_list_copy_add: const char **(TALLOC_CTX *, const char * const *, 
const char *)
+ldb_base64_decode: int (char *)
+ldb_base64_encode: char *(TALLOC_CTX *, const char *, int)
+ldb_binary_decode: struct ldb_val (TALLOC_CTX *, const char *)
+ldb_binary_encode: char *(TALLOC_CTX *, struct ldb_val)
+ldb_binary_encode_string: char *(TALLOC_CTX *, const char *)
+ldb_build_add_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const struct ldb_message *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_del_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_extended_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const char *, void *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_mod_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const struct ldb_message *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_rename_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, struct ldb_dn *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_search_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, enum ldb_scope, const char *, const char * const 
*, struct ldb_control **, void *, ldb_request_callback_t, struct ldb_request *)
+ldb_build_search_req_ex: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, enum ldb_scope, struct ldb_parse_tree *, const 
char * const *, struct ldb_control **, void *, ldb_request_callback_t, struct 
ldb_request *)
+ldb_casefold: char *(struct ldb_context *, TALLOC_CTX *, const char *, size_t)
+ldb_casefold_default: char *(void *, TALLOC_CTX *, const char *, size_t)
+ldb_check_critical_controls: int (struct ldb_control **)
+ldb_comparison_binary: int (struct ldb_context *, void *, const struct ldb_val 
*, const struct ldb_val *)
+ldb_comparison_fold: int (struct ldb_context *, void *, const struct ldb_val 
*, const struct ldb_val *)
+ldb_connect: int (struct ldb_context *, const char *, unsigned int, const char 
**)
+ldb_control_to_string: char *(TALLOC_CTX *, const struct ldb_control *)
+ldb_controls_except_specified: struct ldb_control **(struct ldb_control **, 
TALLOC_CTX *, struct ldb_control *)
+ldb_debug: void (struct ldb_context *, enum ldb_debug_level, const char *, ...)
+ldb_debug_add: void (struct ldb_context *, const char *, ...)
+ldb_debug_end: void (struct ldb_context *, enum ldb_debug_level)
+ldb_debug_set: void (struct ldb_context *, enum ldb_debug_level, const char *, 
...)
+ldb_delete: int (struct ldb_context *, struct ldb_dn *)
+ldb_dn_add_base: bool (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_add_base_fmt: bool (struct ldb_dn *, const char *, ...)
+ldb_dn_add_child: bool (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_add_child_fmt: bool (struct ldb_dn *, const char *, ...)
+ldb_dn_add_child_val: bool (struct ldb_dn *, const char *, struct ldb_val)
+ldb_dn_alloc_casefold: char *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_alloc_linearized: char *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_canonical_ex_string: char *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_canonical_string: char *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_check_local: bool (struct ldb_module *, struct ldb_dn *)
+ldb_dn_check_special: bool (struct ldb_dn *, const char *)
+ldb_dn_compare: int (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_compare_base: int (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_copy: struct ldb_dn *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_escape_value: char *(TALLOC_CTX *, struct ldb_val)
+ldb_dn_extended_add_syntax: int (struct ldb_context *, unsigned int, const 
struct ldb_dn_extended_syntax *)
+ldb_dn_extended_filter: void (struct ldb_dn *, const char * const *)
+ldb_dn_extended_syntax_by_name: const struct ldb_dn_extended_syntax *(struct 
ldb_context *, const char *)
+ldb_dn_from_ldb_val: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const 
struct ldb_val *)
+ldb_dn_get_casefold: const char *(struct ldb_dn *)
+ldb_dn_get_comp_num: int (struct ldb_dn *)
+ldb_dn_get_component_name: const char *(struct ldb_dn *, unsigned int)
+ldb_dn_get_component_val: const struct ldb_val *(struct ldb_dn *, unsigned int)
+ldb_dn_get_extended_comp_num: int (struct ldb_dn *)
+ldb_dn_get_extended_component: const struct ldb_val *(struct ldb_dn *, const 
char *)
+ldb_dn_get_extended_linearized: char *(TALLOC_CTX *, struct ldb_dn *, int)
+ldb_dn_get_ldb_context: struct ldb_context *(struct ldb_dn *)
+ldb_dn_get_linearized: const char *(struct ldb_dn *)
+ldb_dn_get_parent: struct ldb_dn *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_get_rdn_name: const char *(struct ldb_dn *)
+ldb_dn_get_rdn_val: const struct ldb_val *(struct ldb_dn *)
+ldb_dn_has_extended: bool (struct ldb_dn *)
+ldb_dn_is_null: bool (struct ldb_dn *)
+ldb_dn_is_special: bool (struct ldb_dn *)
+ldb_dn_is_valid: bool (struct ldb_dn *)
+ldb_dn_map_local: struct ldb_dn *(struct ldb_module *, void *, struct ldb_dn *)
+ldb_dn_map_rebase_remote: struct ldb_dn *(struct ldb_module *, void *, struct 
ldb_dn *)
+ldb_dn_map_remote: struct ldb_dn *(struct ldb_module *, void *, struct ldb_dn 
*)
+ldb_dn_minimise: bool (struct ldb_dn *)
+ldb_dn_new: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const char *)
+ldb_dn_new_fmt: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const char 
*, ...)
+ldb_dn_remove_base_components: bool (struct ldb_dn *, unsigned int)
+ldb_dn_remove_child_components: bool (struct ldb_dn *, unsigned int)
+ldb_dn_remove_extended_components: void (struct ldb_dn *)
+ldb_dn_replace_components: bool (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_set_component: int (struct ldb_dn *, int, const char *, const struct 
ldb_val)
+ldb_dn_set_extended_component: int (struct ldb_dn *, const char *, const 
struct ldb_val *)
+ldb_dn_update_components: int (struct ldb_dn *, const struct ldb_dn *)
+ldb_dn_validate: bool (struct ldb_dn *)
+ldb_dump_results: void (struct ldb_context *, struct ldb_result *, FILE *)
+ldb_error_at: int (struct ldb_context *, int, const char *, const char *, int)
+ldb_errstring: const char *(struct ldb_context *)
+ldb_extended: int (struct ldb_context *, const char *, void *, struct 
ldb_result **)
+ldb_extended_default_callback: int (struct ldb_request *, struct ldb_reply *)
+ldb_filter_attrs: int (struct ldb_context *, const struct ldb_message *, const 
char * const *, struct ldb_message *)
+ldb_filter_from_tree: char *(TALLOC_CTX *, const struct ldb_parse_tree *)
+ldb_get_config_basedn: struct ldb_dn *(struct ldb_context *)
+ldb_get_create_perms: unsigned int (struct ldb_context *)
+ldb_get_default_basedn: struct ldb_dn *(struct ldb_context *)
+ldb_get_event_context: struct tevent_context *(struct ldb_context *)
+ldb_get_flags: unsigned int (struct ldb_context *)
+ldb_get_opaque: void *(struct ldb_context *, const char *)
+ldb_get_root_basedn: struct ldb_dn *(struct ldb_context *)
+ldb_get_schema_basedn: struct ldb_dn *(struct ldb_context *)
+ldb_global_init: int (void)
+ldb_handle_get_event_context: struct tevent_context *(struct ldb_handle *)
+ldb_handle_new: struct ldb_handle *(TALLOC_CTX *, struct ldb_context *)
+ldb_handle_use_global_event_context: void (struct ldb_handle *)
+ldb_handler_copy: int (struct ldb_context *, void *, const struct ldb_val *, 
struct ldb_val *)
+ldb_handler_fold: int (struct ldb_context *, void *, const struct ldb_val *, 
struct ldb_val *)
+ldb_init: struct ldb_context *(TALLOC_CTX *, struct tevent_context *)
+ldb_ldif_message_redacted_string: char *(struct ldb_context *, TALLOC_CTX *, 
enum ldb_changetype, const struct ldb_message *)
+ldb_ldif_message_string: char *(struct ldb_context *, TALLOC_CTX *, enum 
ldb_changetype, const struct ldb_message *)
+ldb_ldif_parse_modrdn: int (struct ldb_context *, const struct ldb_ldif *, 
TALLOC_CTX *, struct ldb_dn **, struct ldb_dn **, bool *, struct ldb_dn **, 
struct ldb_dn **)
+ldb_ldif_read: struct ldb_ldif *(struct ldb_context *, int (*)(void *), void *)
+ldb_ldif_read_file: struct ldb_ldif *(struct ldb_context *, FILE *)
+ldb_ldif_read_file_state: struct ldb_ldif *(struct ldb_context *, struct 
ldif_read_file_state *)
+ldb_ldif_read_free: void (struct ldb_context *, struct ldb_ldif *)
+ldb_ldif_read_string: struct ldb_ldif *(struct ldb_context *, const char **)
+ldb_ldif_write: int (struct ldb_context *, int (*)(void *, const char *, ...), 
void *, const struct ldb_ldif *)
+ldb_ldif_write_file: int (struct ldb_context *, FILE *, const struct ldb_ldif 
*)
+ldb_ldif_write_redacted_trace_string: char *(struct ldb_context *, TALLOC_CTX 
*, const struct ldb_ldif *)
+ldb_ldif_write_string: char *(struct ldb_context *, TALLOC_CTX *, const struct 
ldb_ldif *)
+ldb_load_modules: int (struct ldb_context *, const char **)
+ldb_map_add: int (struct ldb_module *, struct ldb_request *)
+ldb_map_delete: int (struct ldb_module *, struct ldb_request *)
+ldb_map_init: int (struct ldb_module *, const struct ldb_map_attribute *, 
const struct ldb_map_objectclass *, const char * const *, const char *, const 
char *)
+ldb_map_modify: int (struct ldb_module *, struct ldb_request *)
+ldb_map_rename: int (struct ldb_module *, struct ldb_request *)
+ldb_map_search: int (struct ldb_module *, struct ldb_request *)
+ldb_match_message: int (struct ldb_context *, const struct ldb_message *, 
const struct ldb_parse_tree *, enum ldb_scope, bool *)
+ldb_match_msg: int (struct ldb_context *, const struct ldb_message *, const 
struct ldb_parse_tree *, struct ldb_dn *, enum ldb_scope)
+ldb_match_msg_error: int (struct ldb_context *, const struct ldb_message *, 
const struct ldb_parse_tree *, struct ldb_dn *, enum ldb_scope, bool *)
+ldb_match_msg_objectclass: int (const struct ldb_message *, const char *)
+ldb_mod_register_control: int (struct ldb_module *, const char *)
+ldb_modify: int (struct ldb_context *, const struct ldb_message *)
+ldb_modify_default_callback: int (struct ldb_request *, struct ldb_reply *)
+ldb_module_call_chain: char *(struct ldb_request *, TALLOC_CTX *)
+ldb_module_connect_backend: int (struct ldb_context *, const char *, const 
char **, struct ldb_module **)
+ldb_module_done: int (struct ldb_request *, struct ldb_control **, struct 
ldb_extended *, int)
+ldb_module_flags: uint32_t (struct ldb_context *)
+ldb_module_get_ctx: struct ldb_context *(struct ldb_module *)
+ldb_module_get_name: const char *(struct ldb_module *)
+ldb_module_get_ops: const struct ldb_module_ops *(struct ldb_module *)
+ldb_module_get_private: void *(struct ldb_module *)
+ldb_module_init_chain: int (struct ldb_context *, struct ldb_module *)
+ldb_module_load_list: int (struct ldb_context *, const char **, struct 
ldb_module *, struct ldb_module **)
+ldb_module_new: struct ldb_module *(TALLOC_CTX *, struct ldb_context *, const 
char *, const struct ldb_module_ops *)
+ldb_module_next: struct ldb_module *(struct ldb_module *)
+ldb_module_popt_options: struct poptOption **(struct ldb_context *)
+ldb_module_send_entry: int (struct ldb_request *, struct ldb_message *, struct 
ldb_control **)
+ldb_module_send_referral: int (struct ldb_request *, char *)
+ldb_module_set_next: void (struct ldb_module *, struct ldb_module *)
+ldb_module_set_private: void (struct ldb_module *, void *)
+ldb_modules_hook: int (struct ldb_context *, enum ldb_module_hook_type)
+ldb_modules_list_from_string: const char **(struct ldb_context *, TALLOC_CTX 
*, const char *)
+ldb_modules_load: int (const char *, const char *)
+ldb_msg_add: int (struct ldb_message *, const struct ldb_message_element *, 
int)
+ldb_msg_add_empty: int (struct ldb_message *, const char *, int, struct 
ldb_message_element **)
+ldb_msg_add_fmt: int (struct ldb_message *, const char *, const char *, ...)
+ldb_msg_add_linearized_dn: int (struct ldb_message *, const char *, struct 
ldb_dn *)
+ldb_msg_add_steal_string: int (struct ldb_message *, const char *, char *)
+ldb_msg_add_steal_value: int (struct ldb_message *, const char *, struct 
ldb_val *)
+ldb_msg_add_string: int (struct ldb_message *, const char *, const char *)
+ldb_msg_add_value: int (struct ldb_message *, const char *, const struct 
ldb_val *, struct ldb_message_element **)
+ldb_msg_canonicalize: struct ldb_message *(struct ldb_context *, const struct 
ldb_message *)
+ldb_msg_check_string_attribute: int (const struct ldb_message *, const char *, 
const char *)
+ldb_msg_copy: struct ldb_message *(TALLOC_CTX *, const struct ldb_message *)
+ldb_msg_copy_attr: int (struct ldb_message *, const char *, const char *)
+ldb_msg_copy_shallow: struct ldb_message *(TALLOC_CTX *, const struct 
ldb_message *)
+ldb_msg_diff: struct ldb_message *(struct ldb_context *, struct ldb_message *, 
struct ldb_message *)
+ldb_msg_difference: int (struct ldb_context *, TALLOC_CTX *, struct 
ldb_message *, struct ldb_message *, struct ldb_message **)
+ldb_msg_element_compare: int (struct ldb_message_element *, struct 
ldb_message_element *)
+ldb_msg_element_compare_name: int (struct ldb_message_element *, struct 
ldb_message_element *)
+ldb_msg_element_equal_ordered: bool (const struct ldb_message_element *, const 
struct ldb_message_element *)
+ldb_msg_find_attr_as_bool: int (const struct ldb_message *, const char *, int)
+ldb_msg_find_attr_as_dn: struct ldb_dn *(struct ldb_context *, TALLOC_CTX *, 
const struct ldb_message *, const char *)
+ldb_msg_find_attr_as_double: double (const struct ldb_message *, const char *, 
double)
+ldb_msg_find_attr_as_int: int (const struct ldb_message *, const char *, int)
+ldb_msg_find_attr_as_int64: int64_t (const struct ldb_message *, const char *, 
int64_t)
+ldb_msg_find_attr_as_string: const char *(const struct ldb_message *, const 
char *, const char *)
+ldb_msg_find_attr_as_uint: unsigned int (const struct ldb_message *, const 
char *, unsigned int)
+ldb_msg_find_attr_as_uint64: uint64_t (const struct ldb_message *, const char 
*, uint64_t)
+ldb_msg_find_common_values: int (struct ldb_context *, TALLOC_CTX *, struct 
ldb_message_element *, struct ldb_message_element *, uint32_t)
+ldb_msg_find_duplicate_val: int (struct ldb_context *, TALLOC_CTX *, const 
struct ldb_message_element *, struct ldb_val **, uint32_t)
+ldb_msg_find_element: struct ldb_message_element *(const struct ldb_message *, 
const char *)
+ldb_msg_find_ldb_val: const struct ldb_val *(const struct ldb_message *, const 
char *)
+ldb_msg_find_val: struct ldb_val *(const struct ldb_message_element *, struct 
ldb_val *)
+ldb_msg_new: struct ldb_message *(TALLOC_CTX *)
+ldb_msg_normalize: int (struct ldb_context *, TALLOC_CTX *, const struct 
ldb_message *, struct ldb_message **)
+ldb_msg_remove_attr: void (struct ldb_message *, const char *)
+ldb_msg_remove_element: void (struct ldb_message *, struct ldb_message_element 
*)
+ldb_msg_rename_attr: int (struct ldb_message *, const char *, const char *)
+ldb_msg_sanity_check: int (struct ldb_context *, const struct ldb_message *)
+ldb_msg_sort_elements: void (struct ldb_message *)
+ldb_next_del_trans: int (struct ldb_module *)
+ldb_next_end_trans: int (struct ldb_module *)
+ldb_next_init: int (struct ldb_module *)
+ldb_next_prepare_commit: int (struct ldb_module *)
+ldb_next_read_lock: int (struct ldb_module *)
+ldb_next_read_unlock: int (struct ldb_module *)
+ldb_next_remote_request: int (struct ldb_module *, struct ldb_request *)
+ldb_next_request: int (struct ldb_module *, struct ldb_request *)
+ldb_next_start_trans: int (struct ldb_module *)
+ldb_op_default_callback: int (struct ldb_request *, struct ldb_reply *)
+ldb_options_copy: const char **(TALLOC_CTX *, const char **)
+ldb_options_find: const char *(struct ldb_context *, const char **, const char 
*)
+ldb_options_get: const char **(struct ldb_context *)
+ldb_pack_data: int (struct ldb_context *, const struct ldb_message *, struct 
ldb_val *, uint32_t)
+ldb_parse_control_from_string: struct ldb_control *(struct ldb_context *, 
TALLOC_CTX *, const char *)
+ldb_parse_control_strings: struct ldb_control **(struct ldb_context *, 
TALLOC_CTX *, const char **)
+ldb_parse_tree: struct ldb_parse_tree *(TALLOC_CTX *, const char *)
+ldb_parse_tree_attr_replace: void (struct ldb_parse_tree *, const char *, 
const char *)
+ldb_parse_tree_copy_shallow: struct ldb_parse_tree *(TALLOC_CTX *, const 
struct ldb_parse_tree *)
+ldb_parse_tree_walk: int (struct ldb_parse_tree *, int (*)(struct 
ldb_parse_tree *, void *), void *)
+ldb_qsort: void (void * const, size_t, size_t, void *, ldb_qsort_cmp_fn_t)
+ldb_register_backend: int (const char *, ldb_connect_fn, bool)
+ldb_register_extended_match_rule: int (struct ldb_context *, const struct 
ldb_extended_match_rule *)
+ldb_register_hook: int (ldb_hook_fn)
+ldb_register_module: int (const struct ldb_module_ops *)
+ldb_rename: int (struct ldb_context *, struct ldb_dn *, struct ldb_dn *)
+ldb_reply_add_control: int (struct ldb_reply *, const char *, bool, void *)
+ldb_reply_get_control: struct ldb_control *(struct ldb_reply *, const char *)
+ldb_req_get_custom_flags: uint32_t (struct ldb_request *)
+ldb_req_is_untrusted: bool (struct ldb_request *)
+ldb_req_location: const char *(struct ldb_request *)
+ldb_req_mark_trusted: void (struct ldb_request *)
+ldb_req_mark_untrusted: void (struct ldb_request *)
+ldb_req_set_custom_flags: void (struct ldb_request *, uint32_t)
+ldb_req_set_location: void (struct ldb_request *, const char *)
+ldb_request: int (struct ldb_context *, struct ldb_request *)
+ldb_request_add_control: int (struct ldb_request *, const char *, bool, void *)
+ldb_request_done: int (struct ldb_request *, int)
+ldb_request_get_control: struct ldb_control *(struct ldb_request *, const char 
*)
+ldb_request_get_status: int (struct ldb_request *)
+ldb_request_replace_control: int (struct ldb_request *, const char *, bool, 
void *)
+ldb_request_set_state: void (struct ldb_request *, int)
+ldb_reset_err_string: void (struct ldb_context *)
+ldb_save_controls: int (struct ldb_control *, struct ldb_request *, struct 
ldb_control ***)
+ldb_schema_attribute_add: int (struct ldb_context *, const char *, unsigned 
int, const char *)
+ldb_schema_attribute_add_with_syntax: int (struct ldb_context *, const char *, 
unsigned int, const struct ldb_schema_syntax *)
+ldb_schema_attribute_by_name: const struct ldb_schema_attribute *(struct 
ldb_context *, const char *)
+ldb_schema_attribute_fill_with_syntax: int (struct ldb_context *, TALLOC_CTX 
*, const char *, unsigned int, const struct ldb_schema_syntax *, struct 
ldb_schema_attribute *)
+ldb_schema_attribute_remove: void (struct ldb_context *, const char *)
+ldb_schema_attribute_remove_flagged: void (struct ldb_context *, unsigned int)
+ldb_schema_attribute_set_override_handler: void (struct ldb_context *, 
ldb_attribute_handler_override_fn_t, void *)
+ldb_schema_set_override_GUID_index: void (struct ldb_context *, const char *, 
const char *)
+ldb_schema_set_override_indexlist: void (struct ldb_context *, bool)
+ldb_search: int (struct ldb_context *, TALLOC_CTX *, struct ldb_result **, 
struct ldb_dn *, enum ldb_scope, const char * const *, const char *, ...)
+ldb_search_default_callback: int (struct ldb_request *, struct ldb_reply *)
+ldb_sequence_number: int (struct ldb_context *, enum ldb_sequence_type, 
uint64_t *)
+ldb_set_create_perms: void (struct ldb_context *, unsigned int)
+ldb_set_debug: int (struct ldb_context *, void (*)(void *, enum 
ldb_debug_level, const char *, va_list), void *)
+ldb_set_debug_stderr: int (struct ldb_context *)
+ldb_set_default_dns: void (struct ldb_context *)
+ldb_set_errstring: void (struct ldb_context *, const char *)
+ldb_set_event_context: void (struct ldb_context *, struct tevent_context *)
+ldb_set_flags: void (struct ldb_context *, unsigned int)
+ldb_set_modules_dir: void (struct ldb_context *, const char *)
+ldb_set_opaque: int (struct ldb_context *, const char *, void *)
+ldb_set_require_private_event_context: void (struct ldb_context *)
+ldb_set_timeout: int (struct ldb_context *, struct ldb_request *, int)
+ldb_set_timeout_from_prev_req: int (struct ldb_context *, struct ldb_request 
*, struct ldb_request *)
+ldb_set_utf8_default: void (struct ldb_context *)
+ldb_set_utf8_fns: void (struct ldb_context *, void *, char *(*)(void *, void 
*, const char *, size_t))
+ldb_setup_wellknown_attributes: int (struct ldb_context *)
+ldb_should_b64_encode: int (struct ldb_context *, const struct ldb_val *)
+ldb_standard_syntax_by_name: const struct ldb_schema_syntax *(struct 
ldb_context *, const char *)
+ldb_strerror: const char *(int)
+ldb_string_to_time: time_t (const char *)
+ldb_string_utc_to_time: time_t (const char *)
+ldb_timestring: char *(TALLOC_CTX *, time_t)
+ldb_timestring_utc: char *(TALLOC_CTX *, time_t)
+ldb_transaction_cancel: int (struct ldb_context *)
+ldb_transaction_cancel_noerr: int (struct ldb_context *)
+ldb_transaction_commit: int (struct ldb_context *)
+ldb_transaction_prepare_commit: int (struct ldb_context *)
+ldb_transaction_start: int (struct ldb_context *)
+ldb_unpack_data: int (struct ldb_context *, const struct ldb_val *, struct 
ldb_message *)
+ldb_unpack_data_flags: int (struct ldb_context *, const struct ldb_val *, 
struct ldb_message *, unsigned int)
+ldb_unpack_get_format: int (const struct ldb_val *, uint32_t *)
+ldb_val_dup: struct ldb_val (TALLOC_CTX *, const struct ldb_val *)
+ldb_val_equal_exact: int (const struct ldb_val *, const struct ldb_val *)
+ldb_val_map_local: struct ldb_val (struct ldb_module *, void *, const struct 
ldb_map_attribute *, const struct ldb_val *)
+ldb_val_map_remote: struct ldb_val (struct ldb_module *, void *, const struct 
ldb_map_attribute *, const struct ldb_val *)
+ldb_val_string_cmp: int (const struct ldb_val *, const char *)
+ldb_val_to_time: int (const struct ldb_val *, time_t *)
+ldb_valid_attr_name: int (const char *)
+ldb_vdebug: void (struct ldb_context *, enum ldb_debug_level, const char *, 
va_list)
+ldb_wait: int (struct ldb_handle *, enum ldb_wait_type)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/ABI/pyldb-util-2.4.2.sigs 
new/ldb-2.5.0/ABI/pyldb-util-2.4.2.sigs
--- old/ldb-2.4.2/ABI/pyldb-util-2.4.2.sigs     2022-01-24 13:47:34.956465700 
+0100
+++ new/ldb-2.5.0/ABI/pyldb-util-2.4.2.sigs     1970-01-01 01:00:00.000000000 
+0100
@@ -1,3 +0,0 @@
-pyldb_Dn_FromDn: PyObject *(struct ldb_dn *)
-pyldb_Object_AsDn: bool (TALLOC_CTX *, PyObject *, struct ldb_context *, 
struct ldb_dn **)
-pyldb_check_type: bool (PyObject *, const char *)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/ABI/pyldb-util-2.5.0.sigs 
new/ldb-2.5.0/ABI/pyldb-util-2.5.0.sigs
--- old/ldb-2.4.2/ABI/pyldb-util-2.5.0.sigs     1970-01-01 01:00:00.000000000 
+0100
+++ new/ldb-2.5.0/ABI/pyldb-util-2.5.0.sigs     2022-01-24 13:18:16.322473500 
+0100
@@ -0,0 +1,3 @@
+pyldb_Dn_FromDn: PyObject *(struct ldb_dn *)
+pyldb_Object_AsDn: bool (TALLOC_CTX *, PyObject *, struct ldb_context *, 
struct ldb_dn **)
+pyldb_check_type: bool (PyObject *, const char *)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/buildtools/bin/waf 
new/ldb-2.5.0/buildtools/bin/waf
--- old/ldb-2.4.2/buildtools/bin/waf    2022-01-24 13:47:34.952465800 +0100
+++ new/ldb-2.5.0/buildtools/bin/waf    2022-01-24 13:18:16.290473500 +0100
@@ -32,7 +32,7 @@
 
 import os, sys, inspect
 
-VERSION="2.0.21"
+VERSION="2.0.22"
 REVISION="x"
 GIT="x"
 INSTALL="x"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/buildtools/wafsamba/samba_deps.py 
new/ldb-2.5.0/buildtools/wafsamba/samba_deps.py
--- old/ldb-2.4.2/buildtools/wafsamba/samba_deps.py     2022-01-24 
13:47:34.952465800 +0100
+++ new/ldb-2.5.0/buildtools/wafsamba/samba_deps.py     2022-01-24 
13:25:00.172410500 +0100
@@ -2,7 +2,7 @@
 
 import os, sys, re
 
-from waflib import Build, Options, Logs, Utils, Errors
+from waflib import Build, Options, Logs, Utils, Errors, Scripting
 from waflib.Logs import debug
 from waflib.Configure import conf
 from waflib import ConfigSet
@@ -1087,6 +1087,9 @@
 def check_project_rules(bld):
     '''check the project rules - ensuring the targets are sane'''
 
+    if bld.__class__.__name__ == "ClangDbContext":
+        return
+
     loops = {}
     inc_loops = {}
 
@@ -1167,6 +1170,13 @@
 
     Logs.info("Project rules pass")
 
+    timer = Utils.Timer()
+
+    bld.load('clang_compilation_database')
+    Scripting.run_command('clangdb')
+
+    debug("deps: clang_compilation_database: %s" % str(timer))
+
 
 def CHECK_PROJECT_RULES(bld):
     '''enable checking of project targets for sanity'''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/buildtools/wafsamba/samba_python.py 
new/ldb-2.5.0/buildtools/wafsamba/samba_python.py
--- old/ldb-2.4.2/buildtools/wafsamba/samba_python.py   2022-01-24 
13:47:34.952465800 +0100
+++ new/ldb-2.5.0/buildtools/wafsamba/samba_python.py   2022-01-24 
13:18:16.290473500 +0100
@@ -7,9 +7,6 @@
 @conf
 def SAMBA_CHECK_PYTHON(conf, version=(3,6,0)):
 
-    if conf.env.enable_fuzzing:
-        version=(3,5,0)
-
     # enable tool to build python extensions
     if conf.env.HAVE_PYTHON_H:
         conf.check_python_version(version)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/buildtools/wafsamba/samba_third_party.py 
new/ldb-2.5.0/buildtools/wafsamba/samba_third_party.py
--- old/ldb-2.4.2/buildtools/wafsamba/samba_third_party.py      2022-01-24 
13:47:34.952465800 +0100
+++ new/ldb-2.5.0/buildtools/wafsamba/samba_third_party.py      2022-01-24 
13:18:16.290473500 +0100
@@ -44,5 +44,5 @@
 
 @conf
 def CHECK_PAM_WRAPPER(conf):
-    return conf.CHECK_BUNDLED_SYSTEM_PKG('pam_wrapper', minversion='1.1.2')
+    return conf.CHECK_BUNDLED_SYSTEM_PKG('pam_wrapper', minversion='1.1.4')
 Build.BuildContext.CHECK_PAM_WRAPPER = CHECK_PAM_WRAPPER
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/buildtools/wafsamba/wafsamba.py 
new/ldb-2.5.0/buildtools/wafsamba/wafsamba.py
--- old/ldb-2.4.2/buildtools/wafsamba/wafsamba.py       2022-01-24 
13:47:34.952465800 +0100
+++ new/ldb-2.5.0/buildtools/wafsamba/wafsamba.py       2022-01-24 
13:25:00.172410500 +0100
@@ -38,7 +38,7 @@
 
 os.environ['PYTHONUNBUFFERED'] = '1'
 
-if Context.HEXVERSION not in (0x2001500,):
+if Context.HEXVERSION not in (0x2001600,):
     Logs.error('''
 Please use the version of waf that comes with Samba, not
 a system installed version. See http://wiki.samba.org/index.php/Waf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/buildtools/wafsamba/wscript 
new/ldb-2.5.0/buildtools/wafsamba/wscript
--- old/ldb-2.4.2/buildtools/wafsamba/wscript   2022-01-24 13:47:34.952465800 
+0100
+++ new/ldb-2.5.0/buildtools/wafsamba/wscript   2022-01-24 13:25:00.172410500 
+0100
@@ -132,9 +132,6 @@
         action="store_true",
         dest='undefined_sanitizer',
         default=False)
-    gr.add_option('--enable-clangdb',
-                   help=("Enable use of clang_compilation_database"),
-                   action="store_true", dest='enable_clangdb', default=False)
     gr.add_option('--enable-libfuzzer',
                   help=("Build fuzzing binaries (use ADDITIONAL_CFLAGS to 
specify compiler options for libFuzzer or use CC=honggfuzz/hfuzz-cc)"),
                   action="store_true", dest='enable_libfuzzer', default=False)
@@ -663,13 +660,10 @@
         conf.DEFINE('FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION', 1)
         conf.env.FUZZ_TARGET_LDFLAGS = Options.options.FUZZ_TARGET_LDFLAGS
 
-    conf.env.enable_clangdb = Options.options.enable_clangdb
-    if conf.env.enable_clangdb:
-        conf.load('clang_compilation_database')
-        # Create a symlink of the compile db for clangd
-        symlink(os.path.join(conf.bldnode.abspath(), 
'default/compile_commands.json'),
-                os.path.join(conf.srcnode.abspath(), 'compile_commands.json'),
-                force=True)
+    # Create a symlink of the compile db for clangd
+    symlink(os.path.join(conf.bldnode.abspath(), 
'default/compile_commands.json'),
+            os.path.join(conf.srcnode.abspath(), 'compile_commands.json'),
+            force=True)
 
     conf.SAMBA_BUILD_ENV()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/lib/replace/tests/testsuite.c 
new/ldb-2.5.0/lib/replace/tests/testsuite.c
--- old/ldb-2.4.2/lib/replace/tests/testsuite.c 2022-01-24 13:47:34.956465700 
+0100
+++ new/ldb-2.5.0/lib/replace/tests/testsuite.c 2022-01-24 13:18:16.330473700 
+0100
@@ -1,4 +1,4 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
 
    libreplace tests
@@ -8,7 +8,7 @@
      ** NOTE! The following LGPL license applies to the talloc
      ** library. This does NOT imply that all of Samba is released
      ** under the LGPL
-   
+
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
@@ -127,7 +127,7 @@
                return false;
        }
        if (strcmp(tmp, "bl") != 0) {
-               printf("failure: strlcat [\nexpected \"bl\", got \"%s\"\n]\n", 
+               printf("failure: strlcat [\nexpected \"bl\", got \"%s\"\n]\n",
                           tmp);
                return false;
        }
@@ -179,7 +179,7 @@
        free(x);
        printf("success: strdup\n");
        return true;
-}      
+}
 
 static int test_setlinebuf(void)
 {
@@ -308,6 +308,8 @@
 
 static int test_strnlen(void)
 {
+       char longlen[20] = { 0 };
+
        printf("test: strnlen\n");
        if (strnlen("bla", 2) != 2) {
                printf("failure: strnlen [\nunexpected length\n]\n");
@@ -319,7 +321,9 @@
                return false;
        }
 
-       if (strnlen("some text", 20) != 9) {
+       memcpy(longlen, "some text", 10);
+
+       if (strnlen(longlen, 20) != 9) {
                printf("failure: strnlen [\nunexpected length\n]\n");
                return false;
        }
@@ -774,7 +778,7 @@
        return true;
 }
 
-/* 
+/*
 FIXME:
 Types:
 bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/lib/replace/timegm.c 
new/ldb-2.5.0/lib/replace/timegm.c
--- old/ldb-2.4.2/lib/replace/timegm.c  2022-01-24 13:47:34.956465700 +0100
+++ new/ldb-2.5.0/lib/replace/timegm.c  2022-01-24 13:18:16.330473700 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997 Kungliga Tekniska H?gskolan
+ * Copyright (c) 1997 Kungliga Tekniska H??gskolan
  * (Royal Institute of Technology, Stockholm, Sweden). 
  * All rights reserved. 
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/lib/replace/wscript 
new/ldb-2.5.0/lib/replace/wscript
--- old/ldb-2.4.2/lib/replace/wscript   2022-01-24 13:47:34.956465700 +0100
+++ new/ldb-2.5.0/lib/replace/wscript   2022-01-24 13:25:00.184410600 +0100
@@ -456,11 +456,10 @@
     conf.CHECK_FUNCS('getprogname')
     if not conf.CHECK_FUNCS('copy_file_range'):
         conf.CHECK_CODE('''
-#include <sys/syscall.h>
-#include <unistd.h>
 syscall(SYS_copy_file_range,0,NULL,0,NULL,0,0);
                         ''',
                         'HAVE_SYSCALL_COPY_FILE_RANGE',
+                        headers='sys/syscall.h unistd.h',
                         msg='Checking whether we have copy_file_range system 
call')
 
     conf.SET_TARGET_TYPE('attr', 'EMPTY')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/lib/tdb/ABI/tdb-1.4.5.sigs 
new/ldb-2.5.0/lib/tdb/ABI/tdb-1.4.5.sigs
--- old/ldb-2.4.2/lib/tdb/ABI/tdb-1.4.5.sigs    1970-01-01 01:00:00.000000000 
+0100
+++ new/ldb-2.5.0/lib/tdb/ABI/tdb-1.4.5.sigs    2022-01-24 13:18:16.330473700 
+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/ldb-2.4.2/lib/tdb/include/tdb.h 
new/ldb-2.5.0/lib/tdb/include/tdb.h
--- old/ldb-2.4.2/lib/tdb/include/tdb.h 2022-01-24 13:47:34.956465700 +0100
+++ new/ldb-2.5.0/lib/tdb/include/tdb.h 2022-01-24 13:18:16.330473700 +0100
@@ -33,6 +33,19 @@
 #include <signal.h>
 #include <stdbool.h>
 
+/* for old gcc releases that don't have the feature test macro __has_attribute 
*/
+#ifndef __has_attribute
+#define __has_attribute(x) 0
+#endif
+
+#ifndef _PUBLIC_
+#if __has_attribute(visibility)
+#define _PUBLIC_ __attribute__((visibility("default")))
+#else
+#define _PUBLIC_
+#endif
+#endif
+
 /**
  * @defgroup tdb The tdb API
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/lib/tdb/wscript 
new/ldb-2.5.0/lib/tdb/wscript
--- old/ldb-2.4.2/lib/tdb/wscript       2022-01-24 13:47:34.956465700 +0100
+++ new/ldb-2.5.0/lib/tdb/wscript       2022-01-24 13:25:00.184410600 +0100
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'tdb'
-VERSION = '1.4.4'
+VERSION = '1.4.5'
 
 import sys, os
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/update.sh 
new/ldb-2.5.0/third_party/waf/update.sh
--- old/ldb-2.4.2/third_party/waf/update.sh     1970-01-01 01:00:00.000000000 
+0100
+++ new/ldb-2.5.0/third_party/waf/update.sh     2022-01-24 13:18:16.802476000 
+0100
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+if [[ $# -lt 1 ]]; then
+    echo "Usage: update.sh VERSION"
+    exit 1
+fi
+
+WAF_VERSION="${1}"
+WAF_GIT="https://gitlab.com/ita1024/waf.git";
+WAF_UPDATE_SCRIPT="$(readlink -f "$0")"
+WAF_SAMBA_DIR="$(dirname "${WAF_UPDATE_SCRIPT}")"
+WAF_TMPDIR=$(mktemp --tmpdir -d waf-XXXXXXXX)
+
+echo "VERSION:       ${WAF_VERSION}"
+echo "GIT URL:       ${WAF_GIT}"
+echo "WAF SAMBA DIR: ${WAF_SAMBA_DIR}"
+echo "WAF TMP DIR:    ${WAF_TMPDIR}"
+
+cleanup_tmpdir() {
+    popd 2>/dev/null || true
+    rm -rf "$WAF_TMPDIR"
+}
+trap cleanup_tmpdir SIGINT
+
+cleanup_and_exit() {
+    cleanup_tmpdir
+    if test "$1" = 0 -o -z "$1" ; then
+        exit 0
+    else
+        exit "$1"
+    fi
+}
+
+# Checkout the git tree
+mkdir -p "${WAF_TMPDIR}"
+pushd "${WAF_TMPDIR}" || cleanup_and_exit 1
+
+git clone "${WAF_GIT}"
+ret=$?
+if [ $ret -ne 0 ]; then
+    echo "ERROR: Failed to clone repository"
+    cleanup_and_exit 1
+fi
+
+
+pushd waf || cleanup_and_exit 1
+git checkout -b "waf-${WAF_VERSION}" "waf-${WAF_VERSION}"
+ret=$?
+if [ $ret -ne 0 ]; then
+    echo "ERROR: Failed to checkout waf-${WAF_VERSION} repository"
+    cleanup_and_exit 1
+fi
+popd || cleanup_and_exit 1
+
+popd || cleanup_and_exit 1
+
+# Update waflib
+pushd "${WAF_SAMBA_DIR}" || cleanup_and_exit 1
+pwd
+
+rm -rf waflib/
+rsync -av "${WAF_TMPDIR}/waf/waflib" .
+ret=$?
+if [ $ret -ne 0 ]; then
+    echo "ERROR: Failed copy waflib"
+    cleanup_and_exit 1
+fi
+chmod -x waflib/Context.py
+
+git add waflib
+
+popd || cleanup_and_exit 1
+
+echo
+echo "Now please change VERSION in buildtools/bin/waf and"
+echo "Context.HEXVERSION in buildtools/wafsamba/wafsamba.py"
+echo
+
+cleanup_and_exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/waflib/Build.py 
new/ldb-2.5.0/third_party/waf/waflib/Build.py
--- old/ldb-2.4.2/third_party/waf/waflib/Build.py       2022-01-24 
13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/Build.py       2022-01-24 
13:18:16.802476000 +0100
@@ -1066,9 +1066,9 @@
                else:
                        dest = 
os.path.normpath(Utils.subst_vars(self.install_to, self.env))
                if not os.path.isabs(dest):
-                   dest = os.path.join(self.env.PREFIX, dest)
+                       dest = os.path.join(self.env.PREFIX, dest)
                if destdir and Options.options.destdir:
-                       dest = os.path.join(Options.options.destdir, 
os.path.splitdrive(dest)[1].lstrip(os.sep))
+                       dest = Options.options.destdir.rstrip(os.sep) + os.sep 
+ os.path.splitdrive(dest)[1].lstrip(os.sep)
                return dest
 
        def copy_fun(self, src, tgt):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/waflib/Context.py 
new/ldb-2.5.0/third_party/waf/waflib/Context.py
--- old/ldb-2.4.2/third_party/waf/waflib/Context.py     2022-01-24 
13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/Context.py     2022-01-24 
13:18:16.802476000 +0100
@@ -18,13 +18,13 @@
        import imp
 
 # the following 3 constants are updated on each new release (do not touch)
-HEXVERSION=0x2001500
+HEXVERSION=0x2001600
 """Constant updated on new releases"""
 
-WAFVERSION="2.0.21"
+WAFVERSION="2.0.22"
 """Constant updated on new releases"""
 
-WAFREVISION="edde20a6425a5c3eb6b47d5f3f5c4fbc93fed5f4"
+WAFREVISION="816d5bc48ba2abc4ac22f2b44d94d322bf992b9c"
 """Git revision when the waf version is updated"""
 
 WAFNAME="waf"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/waflib/Tools/msvc.py 
new/ldb-2.5.0/third_party/waf/waflib/Tools/msvc.py
--- old/ldb-2.4.2/third_party/waf/waflib/Tools/msvc.py  2022-01-24 
13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/Tools/msvc.py  2022-01-24 
13:18:16.802476000 +0100
@@ -193,7 +193,7 @@
 echo INCLUDE=%%INCLUDE%%
 echo LIB=%%LIB%%;%%LIBPATH%%
 """ % (vcvars,target))
-       sout = conf.cmd_and_log(['cmd.exe', '/E:on', '/V:on', '/C', 
batfile.abspath()])
+       sout = conf.cmd_and_log(['cmd.exe', '/E:on', '/V:on', '/C', 
batfile.abspath()], stdin=getattr(Utils.subprocess, 'DEVNULL', None))
        lines = sout.splitlines()
 
        if not lines[0]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/waflib/Tools/python.py 
new/ldb-2.5.0/third_party/waf/waflib/Tools/python.py
--- old/ldb-2.4.2/third_party/waf/waflib/Tools/python.py        2022-01-24 
13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/Tools/python.py        2022-01-24 
13:18:16.806475900 +0100
@@ -327,7 +327,7 @@
        dct = dict(zip(v, lst))
        x = 'MACOSX_DEPLOYMENT_TARGET'
        if dct[x]:
-               env[x] = conf.environ[x] = dct[x]
+               env[x] = conf.environ[x] = str(dct[x])
        env.pyext_PATTERN = '%s' + dct['SO'] # not a mistake
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/waflib/Tools/qt5.py 
new/ldb-2.5.0/third_party/waf/waflib/Tools/qt5.py
--- old/ldb-2.4.2/third_party/waf/waflib/Tools/qt5.py   2022-01-24 
13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/Tools/qt5.py   2022-01-24 
13:18:16.806475900 +0100
@@ -566,7 +566,7 @@
        # at the end, try to find qmake in the paths given
        # keep the one with the highest version
        cand = None
-       prev_ver = ['5', '0', '0']
+       prev_ver = ['0', '0', '0']
        for qmk in ('qmake-qt5', 'qmake5', 'qmake'):
                try:
                        qmake = self.find_program(qmk, path_list=paths)
@@ -580,7 +580,7 @@
                        else:
                                if version:
                                        new_ver = version.split('.')
-                                       if new_ver > prev_ver:
+                                       if new_ver[0] == '5' and new_ver > 
prev_ver:
                                                cand = qmake
                                                prev_ver = new_ver
 
@@ -783,7 +783,7 @@
                        pat = self.env.cxxstlib_PATTERN
                if Utils.unversioned_sys_platform() == 'darwin':
                        pat = r"%s\.framework"
-               re_qt = re.compile(pat%'Qt5?(?P<name>.*)'+'$')
+               re_qt = re.compile(pat % 'Qt5?(?P<name>\\D+)' + '$')
                for x in dirlst:
                        m = re_qt.match(x)
                        if m:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ldb-2.4.2/third_party/waf/waflib/Tools/waf_unit_test.py 
new/ldb-2.5.0/third_party/waf/waflib/Tools/waf_unit_test.py
--- old/ldb-2.4.2/third_party/waf/waflib/Tools/waf_unit_test.py 2022-01-24 
13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/Tools/waf_unit_test.py 2022-01-24 
13:18:16.806475900 +0100
@@ -206,7 +206,7 @@
                self.ut_exec = getattr(self.generator, 'ut_exec', 
[self.inputs[0].abspath()])
                ut_cmd = getattr(self.generator, 'ut_cmd', False)
                if ut_cmd:
-                       self.ut_exec = shlex.split(ut_cmd % ' 
'.join(self.ut_exec))
+                       self.ut_exec = shlex.split(ut_cmd % 
Utils.shell_escape(self.ut_exec))
 
                return self.exec_command(self.ut_exec)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/waflib/Utils.py 
new/ldb-2.5.0/third_party/waf/waflib/Utils.py
--- old/ldb-2.4.2/third_party/waf/waflib/Utils.py       2022-01-24 
13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/Utils.py       2022-01-24 
13:18:16.806475900 +0100
@@ -11,7 +11,7 @@
 
 from __future__ import with_statement
 
-import atexit, os, sys, errno, inspect, re, datetime, platform, base64, 
signal, functools, time
+import atexit, os, sys, errno, inspect, re, datetime, platform, base64, 
signal, functools, time, shlex
 
 try:
        import cPickle
@@ -577,10 +577,13 @@
        fu = fu.upper()
        return fu
 
-re_sh = re.compile('\\s|\'|"')
-"""
-Regexp used for shell_escape below
-"""
+# shlex.quote didn't exist until python 3.3. Prior to that it was a 
non-documented
+# function in pipes.
+try:
+       shell_quote = shlex.quote
+except AttributeError:
+       import pipes
+       shell_quote = pipes.quote
 
 def shell_escape(cmd):
        """
@@ -589,7 +592,7 @@
        """
        if isinstance(cmd, str):
                return cmd
-       return ' '.join(repr(x) if re_sh.search(x) else x for x in cmd)
+       return ' '.join(shell_quote(x) for x in cmd)
 
 def h_list(lst):
        """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ldb-2.4.2/third_party/waf/waflib/extras/clang_compilation_database.py 
new/ldb-2.5.0/third_party/waf/waflib/extras/clang_compilation_database.py
--- old/ldb-2.4.2/third_party/waf/waflib/extras/clang_compilation_database.py   
2022-01-24 13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/extras/clang_compilation_database.py   
2022-01-24 13:18:16.806475900 +0100
@@ -29,22 +29,9 @@
 
 Task.Task.keep_last_cmd = True
 
-@TaskGen.feature('c', 'cxx')
-@TaskGen.after_method('process_use')
-def collect_compilation_db_tasks(self):
-       "Add a compilation database entry for compiled tasks"
-       if not isinstance(self.bld, ClangDbContext):
-               return
-
-       tup = tuple(y for y in [Task.classes.get(x) for x in ('c', 'cxx')] if y)
-       for task in getattr(self, 'compiled_tasks', []):
-               if isinstance(task, tup):
-                       self.bld.clang_compilation_database_tasks.append(task)
-
 class ClangDbContext(Build.BuildContext):
        '''generates compile_commands.json by request'''
        cmd = 'clangdb'
-       clang_compilation_database_tasks = []
 
        def write_compilation_database(self):
                """
@@ -78,6 +65,8 @@
                Build dry run
                """
                self.restore()
+               self.cur_tasks = []
+               self.clang_compilation_database_tasks = []
 
                if not self.all_envs:
                        self.load_envs()
@@ -103,8 +92,21 @@
                                        lst = [tg]
                                else: lst = tg.tasks
                                for tsk in lst:
+                                       if tsk.__class__.__name__ == "swig":
+                                               tsk.runnable_status()
+                                               if hasattr(tsk, 'more_tasks'):
+                                                       
lst.extend(tsk.more_tasks)
+                                       # Not all dynamic tasks can be 
processed, in some cases
+                                       # one may have to call the method 
"run()" like this:
+                                       #elif tsk.__class__.__name__ == 'src2c':
+                                       #       tsk.run()
+                                       #       if hasattr(tsk, 'more_tasks'):
+                                       #               
lst.extend(tsk.more_tasks)
+
                                        tup = tuple(y for y in 
[Task.classes.get(x) for x in ('c', 'cxx')] if y)
                                        if isinstance(tsk, tup):
+                                               
self.clang_compilation_database_tasks.append(tsk)
+                                               tsk.nocache = True
                                                old_exec = tsk.exec_command
                                                tsk.exec_command = exec_command
                                                tsk.run()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/waflib/extras/haxe.py 
new/ldb-2.5.0/third_party/waf/waflib/extras/haxe.py
--- old/ldb-2.4.2/third_party/waf/waflib/extras/haxe.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/extras/haxe.py 2022-01-24 
13:18:16.806475900 +0100
@@ -0,0 +1,131 @@
+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
+
+@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'))
+
+@conf
+def haxe(bld, *k, **kw):
+       task_gen = bld(*k, **kw)
+
+class haxe(Task.Task):
+       vars = ['HAXE', 'HAXE_VERSION', 'HAXEFLAGS']
+       ext_out = ['.hl', '.c', '.h']
+
+       def run(self):
+               cmd = self.env.HAXE + self.env.HAXEFLAGS
+               return self.exec_command(cmd, stdout = open(os.devnull, 'w'))
+
+@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 configure(self):
+       self.env.HAXEFLAGS = []
+       self.check_haxe()
+       self.add_os_flags('HAXEFLAGS', dup = False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/third_party/waf/waflib/extras/wafcache.py 
new/ldb-2.5.0/third_party/waf/waflib/extras/wafcache.py
--- old/ldb-2.4.2/third_party/waf/waflib/extras/wafcache.py     2022-01-24 
13:47:35.016466100 +0100
+++ new/ldb-2.5.0/third_party/waf/waflib/extras/wafcache.py     2022-01-24 
13:18:16.806475900 +0100
@@ -31,6 +31,7 @@
     gsutil cp gs://mybucket/bb/bbbbb/2 build/somefile
 * WAFCACHE_NO_PUSH: if set, disables pushing to the cache
 * WAFCACHE_VERBOSITY: if set, displays more detailed cache operations
+* WAFCACHE_STATS: if set, displays cache usage statistics on exit
 
 File cache specific options:
   Files are copied using hard links by default; if the cache is located
@@ -69,6 +70,7 @@
 EVICT_MAX_BYTES = int(os.environ.get('WAFCACHE_EVICT_MAX_BYTES', 10**10))
 WAFCACHE_NO_PUSH = 1 if os.environ.get('WAFCACHE_NO_PUSH') else 0
 WAFCACHE_VERBOSITY = 1 if os.environ.get('WAFCACHE_VERBOSITY') else 0
+WAFCACHE_STATS = 1 if os.environ.get('WAFCACHE_STATS') else 0
 OK = "ok"
 
 re_waf_cmd = re.compile('(?P<src>%{SRC})|(?P<tgt>%{TGT})')
@@ -93,6 +95,9 @@
        sig = self.signature()
        ssig = Utils.to_hex(self.uid() + sig)
 
+       if WAFCACHE_STATS:
+               self.generator.bld.cache_reqs += 1
+
        files_to = [node.abspath() for node in self.outputs]
        err = cache_command(ssig, [], files_to)
        if err.startswith(OK):
@@ -100,6 +105,8 @@
                        Logs.pprint('CYAN', '  Fetched %r from cache' % 
files_to)
                else:
                        Logs.debug('wafcache: fetched %r from cache', files_to)
+               if WAFCACHE_STATS:
+                       self.generator.bld.cache_hits += 1
        else:
                if WAFCACHE_VERBOSITY:
                        Logs.pprint('YELLOW', '  No cache entry %s' % files_to)
@@ -117,11 +124,17 @@
        if WAFCACHE_NO_PUSH or getattr(self, 'cached', None) or not 
self.outputs:
                return
 
+       files_from = []
+       for node in self.outputs:
+               path = node.abspath()
+               if not os.path.isfile(path):
+                       return
+               files_from.append(path)
+
        bld = self.generator.bld
        sig = self.signature()
        ssig = Utils.to_hex(self.uid() + sig)
 
-       files_from = [node.abspath() for node in self.outputs]
        err = cache_command(ssig, files_from, [])
 
        if err.startswith(OK):
@@ -129,6 +142,8 @@
                        Logs.pprint('CYAN', '  Successfully uploaded %s to 
cache' % files_from)
                else:
                        Logs.debug('wafcache: Successfully uploaded %r to 
cache', files_from)
+               if WAFCACHE_STATS:
+                       self.generator.bld.cache_puts += 1
        else:
                if WAFCACHE_VERBOSITY:
                        Logs.pprint('RED', '  Error caching step results %s: 
%s' % (files_from, err))
@@ -193,6 +208,10 @@
        if getattr(cls, 'nocache', None) or getattr(cls, 'has_cache', False):
                return
 
+       full_name = "%s.%s" % (cls.__module__, cls.__name__)
+       if full_name in ('waflib.Tools.ccroot.vnum', 'waflib.Build.inst'):
+               return
+
        m1 = getattr(cls, 'run', None)
        def run(self):
                if getattr(self, 'nocache', False):
@@ -208,9 +227,6 @@
                        return m2(self)
                ret = m2(self)
                self.put_files_cache()
-               if hasattr(self, 'chmod'):
-                       for node in self.outputs:
-                               os.chmod(node.abspath(), self.chmod)
                return ret
        cls.post_run = post_run
        cls.has_cache = True
@@ -257,6 +273,19 @@
        for x in reversed(list(Task.classes.values())):
                make_cached(x)
 
+       if WAFCACHE_STATS:
+               # Init counter for statistics and hook to print results at the 
end
+               bld.cache_reqs = bld.cache_hits = bld.cache_puts = 0
+
+               def printstats(bld):
+                       hit_ratio = 0
+                       if bld.cache_reqs > 0:
+                               hit_ratio = (bld.cache_hits / bld.cache_reqs) * 
100
+                       Logs.pprint('CYAN', '  wafcache stats: requests: %s, 
hits, %s, ratio: %.2f%%, writes %s' %
+                                        (bld.cache_reqs, bld.cache_hits, 
hit_ratio, bld.cache_puts) )
+
+               bld.add_post_fun(printstats)
+
 def cache_command(sig, files_from, files_to):
        """
        Create a command for cache worker processes, returns a pickled
@@ -320,7 +349,10 @@
 
                                size = 0
                                for fname in os.listdir(path):
-                                       size += os.lstat(os.path.join(path, 
fname)).st_size
+                                       try:
+                                               size += 
os.lstat(os.path.join(path, fname)).st_size
+                                       except OSError:
+                                               pass
                                lst.append((os.stat(path).st_mtime, size, path))
 
        lst.sort(key=lambda x: x[0])
@@ -331,7 +363,7 @@
                _, tmp_size, path = lst.pop()
                tot -= tmp_size
 
-               tmp = path + '.tmp'
+               tmp = path + '.remove'
                try:
                        shutil.rmtree(tmp)
                except OSError:
@@ -339,12 +371,12 @@
                try:
                        os.rename(path, tmp)
                except OSError:
-                       sys.stderr.write('Could not rename %r to %r' % (path, 
tmp))
+                       sys.stderr.write('Could not rename %r to %r\n' % (path, 
tmp))
                else:
                        try:
                                shutil.rmtree(tmp)
                        except OSError:
-                               sys.stderr.write('Could not remove %r' % tmp)
+                               sys.stderr.write('Could not remove %r\n' % tmp)
        sys.stderr.write("Cache trimmed: %r bytes in %r folders left\n" % (tot, 
len(lst)))
 
 
@@ -371,8 +403,8 @@
                        try:
                                fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
                        except EnvironmentError:
-                               sys.stderr.write('another process is 
running!\n')
-                               pass
+                               if WAFCACHE_VERBOSITY:
+                                       sys.stderr.write('wafcache: another 
cleaning process is running\n')
                        else:
                                # now dow the actual cleanup
                                lru_trim()
@@ -443,7 +475,10 @@
                else:
                        # attempt trimming if caching was successful:
                        # we may have things to trim!
-                       lru_evict()
+                       try:
+                               lru_evict()
+                       except Exception:
+                               return traceback.format_exc()
                return OK
 
        def copy_from_cache(self, sig, files_from, files_to):
@@ -481,7 +516,7 @@
                out, err = proc.communicate()
                if proc.returncode:
                        raise OSError('Error copy %r to %r using: %r (exit 
%r):\n  out:%s\n  err:%s' % (
-                               source, target, cmd, proc.returncode, 
out.decode(), err.decode()))
+                               source, target, cmd, proc.returncode, 
out.decode(errors='replace'), err.decode(errors='replace')))
 
        def copy_to_cache(self, sig, files_from, files_to):
                try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-2.4.2/wscript new/ldb-2.5.0/wscript
--- old/ldb-2.4.2/wscript       2022-01-24 13:47:34.956465700 +0100
+++ new/ldb-2.5.0/wscript       2022-01-24 13:18:16.326473700 +0100
@@ -1,8 +1,8 @@
 #!/usr/bin/env python
 
 APPNAME = 'ldb'
-# For Samba 4.15.x
-VERSION = '2.4.2'
+# For Samba 4.16.x
+VERSION = '2.5.0'
 
 import sys, os
 

Reply via email to