Hello community, here is the log from the commit of package tevent for openSUSE:Factory checked in at 2016-02-25 21:59:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tevent (Old) and /work/SRC/openSUSE:Factory/.tevent.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tevent" Changes: -------- --- /work/SRC/openSUSE:Factory/tevent/tevent-man.changes 2015-11-24 22:21:09.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.tevent.new/tevent-man.changes 2016-02-25 22:37:16.000000000 +0100 @@ -1,0 +2,15 @@ +Sun Feb 21 16:53:17 UTC 2016 - [email protected] + +- Avoid a file collision for non SUSE build targets; (bsc#966174). + +------------------------------------------------------------------- +Wed Feb 19 15:48:45 UTC 2016 - [email protected] + +- Update to 0.9.28; (bsc#954658). + + Fix memory leak when old signal action restored (bso#11742). +- Update to 0.9.27. + + Fix bug in poll backend - poll_event_loop_poll() exits the for loop on + POLLNVAL instead of continuing to find an event that is ready. + + Fix ETIME handling for Solaris event ports (bso#11728). + +------------------------------------------------------------------- tevent.changes: same change Old: ---- tevent-0.9.26.tar.asc tevent-0.9.26.tar.gz New: ---- tevent-0.9.28.tar.asc tevent-0.9.28.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tevent-man.spec ++++++ --- /var/tmp/diff_new_pack.Xfshfk/_old 2016-02-25 22:37:18.000000000 +0100 +++ /var/tmp/diff_new_pack.Xfshfk/_new 2016-02-25 22:37:18.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package tevent-man # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -32,7 +32,6 @@ BuildRequires: doxygen %else Name: tevent -#!BuildIgnore: libtalloc BuildRequires: libtalloc-devel >= %{talloc_version} %if 0%{?suse_version} > 1020 BuildRequires: pkg-config @@ -51,7 +50,7 @@ %define build_make_smp_mflags %{?jobs:-j%jobs} %endif Url: http://tevent.samba.org/ -Version: 0.9.26 +Version: 0.9.28 Release: 0 Summary: An event system based on the talloc memory management library License: GPL-3.0+ @@ -74,7 +73,11 @@ %if ! %{build_man} +%if 0%{?suse_version} > 0 %define libtevent_name libtevent0 +%else +%define libtevent_name libtevent +%endif %package -n %{libtevent_name} PreReq: /sbin/ldconfig Summary: Samba tevent Library ++++++ tevent.spec ++++++ --- /var/tmp/diff_new_pack.Xfshfk/_old 2016-02-25 22:37:18.000000000 +0100 +++ /var/tmp/diff_new_pack.Xfshfk/_new 2016-02-25 22:37:18.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package tevent-man # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -32,7 +32,6 @@ BuildRequires: doxygen %else Name: tevent -#!BuildIgnore: libtalloc BuildRequires: libtalloc-devel >= %{talloc_version} %if 0%{?suse_version} > 1020 BuildRequires: pkg-config @@ -51,7 +50,7 @@ %define build_make_smp_mflags %{?jobs:-j%jobs} %endif Url: http://tevent.samba.org/ -Version: 0.9.26 +Version: 0.9.28 Release: 0 Summary: An event system based on the talloc memory management library License: GPL-3.0+ @@ -74,7 +73,11 @@ %if ! %{build_man} +%if 0%{?suse_version} > 0 %define libtevent_name libtevent0 +%else +%define libtevent_name libtevent +%endif %package -n %{libtevent_name} PreReq: /sbin/ldconfig Summary: Samba tevent Library ++++++ tevent-0.9.26.tar.gz -> tevent-0.9.28.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/ABI/tevent-0.9.27.sigs new/tevent-0.9.28/ABI/tevent-0.9.27.sigs --- old/tevent-0.9.26/ABI/tevent-0.9.27.sigs 1970-01-01 01:00:00.000000000 +0100 +++ new/tevent-0.9.28/ABI/tevent-0.9.27.sigs 2016-02-19 22:02:02.000000000 +0100 @@ -0,0 +1,90 @@ +_tevent_add_fd: struct tevent_fd *(struct tevent_context *, TALLOC_CTX *, int, uint16_t, tevent_fd_handler_t, void *, const char *, const char *) +_tevent_add_signal: struct tevent_signal *(struct tevent_context *, TALLOC_CTX *, int, int, tevent_signal_handler_t, void *, const char *, const char *) +_tevent_add_timer: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) +_tevent_create_immediate: struct tevent_immediate *(TALLOC_CTX *, const char *) +_tevent_loop_once: int (struct tevent_context *, const char *) +_tevent_loop_until: int (struct tevent_context *, bool (*)(void *), void *, const char *) +_tevent_loop_wait: int (struct tevent_context *, const char *) +_tevent_queue_create: struct tevent_queue *(TALLOC_CTX *, const char *, const char *) +_tevent_req_callback_data: void *(struct tevent_req *) +_tevent_req_cancel: bool (struct tevent_req *, const char *) +_tevent_req_create: struct tevent_req *(TALLOC_CTX *, void *, size_t, const char *, const char *) +_tevent_req_data: void *(struct tevent_req *) +_tevent_req_done: void (struct tevent_req *, const char *) +_tevent_req_error: bool (struct tevent_req *, uint64_t, const char *) +_tevent_req_nomem: bool (const void *, struct tevent_req *, const char *) +_tevent_req_notify_callback: void (struct tevent_req *, const char *) +_tevent_req_oom: void (struct tevent_req *, const char *) +_tevent_schedule_immediate: void (struct tevent_immediate *, struct tevent_context *, tevent_immediate_handler_t, void *, const char *, const char *) +tevent_backend_list: const char **(TALLOC_CTX *) +tevent_cleanup_pending_signal_handlers: void (struct tevent_signal *) +tevent_common_add_fd: struct tevent_fd *(struct tevent_context *, TALLOC_CTX *, int, uint16_t, tevent_fd_handler_t, void *, const char *, const char *) +tevent_common_add_signal: struct tevent_signal *(struct tevent_context *, TALLOC_CTX *, int, int, tevent_signal_handler_t, void *, const char *, const char *) +tevent_common_add_timer: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) +tevent_common_add_timer_v2: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) +tevent_common_check_signal: int (struct tevent_context *) +tevent_common_context_destructor: int (struct tevent_context *) +tevent_common_fd_destructor: int (struct tevent_fd *) +tevent_common_fd_get_flags: uint16_t (struct tevent_fd *) +tevent_common_fd_set_close_fn: void (struct tevent_fd *, tevent_fd_close_fn_t) +tevent_common_fd_set_flags: void (struct tevent_fd *, uint16_t) +tevent_common_loop_immediate: bool (struct tevent_context *) +tevent_common_loop_timer_delay: struct timeval (struct tevent_context *) +tevent_common_loop_wait: int (struct tevent_context *, const char *) +tevent_common_schedule_immediate: void (struct tevent_immediate *, struct tevent_context *, tevent_immediate_handler_t, void *, const char *, const char *) +tevent_context_init: struct tevent_context *(TALLOC_CTX *) +tevent_context_init_byname: struct tevent_context *(TALLOC_CTX *, const char *) +tevent_context_init_ops: struct tevent_context *(TALLOC_CTX *, const struct tevent_ops *, void *) +tevent_debug: void (struct tevent_context *, enum tevent_debug_level, const char *, ...) +tevent_fd_get_flags: uint16_t (struct tevent_fd *) +tevent_fd_set_auto_close: void (struct tevent_fd *) +tevent_fd_set_close_fn: void (struct tevent_fd *, tevent_fd_close_fn_t) +tevent_fd_set_flags: void (struct tevent_fd *, uint16_t) +tevent_get_trace_callback: void (struct tevent_context *, tevent_trace_callback_t *, void *) +tevent_loop_allow_nesting: void (struct tevent_context *) +tevent_loop_set_nesting_hook: void (struct tevent_context *, tevent_nesting_hook, void *) +tevent_num_signals: size_t (void) +tevent_queue_add: bool (struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) +tevent_queue_add_entry: struct tevent_queue_entry *(struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) +tevent_queue_add_optimize_empty: struct tevent_queue_entry *(struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) +tevent_queue_length: size_t (struct tevent_queue *) +tevent_queue_running: bool (struct tevent_queue *) +tevent_queue_start: void (struct tevent_queue *) +tevent_queue_stop: void (struct tevent_queue *) +tevent_queue_wait_recv: bool (struct tevent_req *) +tevent_queue_wait_send: struct tevent_req *(TALLOC_CTX *, struct tevent_context *, struct tevent_queue *) +tevent_re_initialise: int (struct tevent_context *) +tevent_register_backend: bool (const char *, const struct tevent_ops *) +tevent_req_default_print: char *(struct tevent_req *, TALLOC_CTX *) +tevent_req_defer_callback: void (struct tevent_req *, struct tevent_context *) +tevent_req_is_error: bool (struct tevent_req *, enum tevent_req_state *, uint64_t *) +tevent_req_is_in_progress: bool (struct tevent_req *) +tevent_req_poll: bool (struct tevent_req *, struct tevent_context *) +tevent_req_post: struct tevent_req *(struct tevent_req *, struct tevent_context *) +tevent_req_print: char *(TALLOC_CTX *, struct tevent_req *) +tevent_req_received: void (struct tevent_req *) +tevent_req_set_callback: void (struct tevent_req *, tevent_req_fn, void *) +tevent_req_set_cancel_fn: void (struct tevent_req *, tevent_req_cancel_fn) +tevent_req_set_cleanup_fn: void (struct tevent_req *, tevent_req_cleanup_fn) +tevent_req_set_endtime: bool (struct tevent_req *, struct tevent_context *, struct timeval) +tevent_req_set_print_fn: void (struct tevent_req *, tevent_req_print_fn) +tevent_sa_info_queue_count: size_t (void) +tevent_set_abort_fn: void (void (*)(const char *)) +tevent_set_debug: int (struct tevent_context *, void (*)(void *, enum tevent_debug_level, const char *, va_list), void *) +tevent_set_debug_stderr: int (struct tevent_context *) +tevent_set_default_backend: void (const char *) +tevent_set_trace_callback: void (struct tevent_context *, tevent_trace_callback_t, void *) +tevent_signal_support: bool (struct tevent_context *) +tevent_thread_proxy_create: struct tevent_thread_proxy *(struct tevent_context *) +tevent_thread_proxy_schedule: void (struct tevent_thread_proxy *, struct tevent_immediate **, tevent_immediate_handler_t, void *) +tevent_timeval_add: struct timeval (const struct timeval *, uint32_t, uint32_t) +tevent_timeval_compare: int (const struct timeval *, const struct timeval *) +tevent_timeval_current: struct timeval (void) +tevent_timeval_current_ofs: struct timeval (uint32_t, uint32_t) +tevent_timeval_is_zero: bool (const struct timeval *) +tevent_timeval_set: struct timeval (uint32_t, uint32_t) +tevent_timeval_until: struct timeval (const struct timeval *, const struct timeval *) +tevent_timeval_zero: struct timeval (void) +tevent_trace_point_callback: void (struct tevent_context *, enum tevent_trace_point) +tevent_wakeup_recv: bool (struct tevent_req *) +tevent_wakeup_send: struct tevent_req *(TALLOC_CTX *, struct tevent_context *, struct timeval) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/ABI/tevent-0.9.28.sigs new/tevent-0.9.28/ABI/tevent-0.9.28.sigs --- old/tevent-0.9.26/ABI/tevent-0.9.28.sigs 1970-01-01 01:00:00.000000000 +0100 +++ new/tevent-0.9.28/ABI/tevent-0.9.28.sigs 2016-02-19 22:05:17.000000000 +0100 @@ -0,0 +1,90 @@ +_tevent_add_fd: struct tevent_fd *(struct tevent_context *, TALLOC_CTX *, int, uint16_t, tevent_fd_handler_t, void *, const char *, const char *) +_tevent_add_signal: struct tevent_signal *(struct tevent_context *, TALLOC_CTX *, int, int, tevent_signal_handler_t, void *, const char *, const char *) +_tevent_add_timer: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) +_tevent_create_immediate: struct tevent_immediate *(TALLOC_CTX *, const char *) +_tevent_loop_once: int (struct tevent_context *, const char *) +_tevent_loop_until: int (struct tevent_context *, bool (*)(void *), void *, const char *) +_tevent_loop_wait: int (struct tevent_context *, const char *) +_tevent_queue_create: struct tevent_queue *(TALLOC_CTX *, const char *, const char *) +_tevent_req_callback_data: void *(struct tevent_req *) +_tevent_req_cancel: bool (struct tevent_req *, const char *) +_tevent_req_create: struct tevent_req *(TALLOC_CTX *, void *, size_t, const char *, const char *) +_tevent_req_data: void *(struct tevent_req *) +_tevent_req_done: void (struct tevent_req *, const char *) +_tevent_req_error: bool (struct tevent_req *, uint64_t, const char *) +_tevent_req_nomem: bool (const void *, struct tevent_req *, const char *) +_tevent_req_notify_callback: void (struct tevent_req *, const char *) +_tevent_req_oom: void (struct tevent_req *, const char *) +_tevent_schedule_immediate: void (struct tevent_immediate *, struct tevent_context *, tevent_immediate_handler_t, void *, const char *, const char *) +tevent_backend_list: const char **(TALLOC_CTX *) +tevent_cleanup_pending_signal_handlers: void (struct tevent_signal *) +tevent_common_add_fd: struct tevent_fd *(struct tevent_context *, TALLOC_CTX *, int, uint16_t, tevent_fd_handler_t, void *, const char *, const char *) +tevent_common_add_signal: struct tevent_signal *(struct tevent_context *, TALLOC_CTX *, int, int, tevent_signal_handler_t, void *, const char *, const char *) +tevent_common_add_timer: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) +tevent_common_add_timer_v2: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *) +tevent_common_check_signal: int (struct tevent_context *) +tevent_common_context_destructor: int (struct tevent_context *) +tevent_common_fd_destructor: int (struct tevent_fd *) +tevent_common_fd_get_flags: uint16_t (struct tevent_fd *) +tevent_common_fd_set_close_fn: void (struct tevent_fd *, tevent_fd_close_fn_t) +tevent_common_fd_set_flags: void (struct tevent_fd *, uint16_t) +tevent_common_loop_immediate: bool (struct tevent_context *) +tevent_common_loop_timer_delay: struct timeval (struct tevent_context *) +tevent_common_loop_wait: int (struct tevent_context *, const char *) +tevent_common_schedule_immediate: void (struct tevent_immediate *, struct tevent_context *, tevent_immediate_handler_t, void *, const char *, const char *) +tevent_context_init: struct tevent_context *(TALLOC_CTX *) +tevent_context_init_byname: struct tevent_context *(TALLOC_CTX *, const char *) +tevent_context_init_ops: struct tevent_context *(TALLOC_CTX *, const struct tevent_ops *, void *) +tevent_debug: void (struct tevent_context *, enum tevent_debug_level, const char *, ...) +tevent_fd_get_flags: uint16_t (struct tevent_fd *) +tevent_fd_set_auto_close: void (struct tevent_fd *) +tevent_fd_set_close_fn: void (struct tevent_fd *, tevent_fd_close_fn_t) +tevent_fd_set_flags: void (struct tevent_fd *, uint16_t) +tevent_get_trace_callback: void (struct tevent_context *, tevent_trace_callback_t *, void *) +tevent_loop_allow_nesting: void (struct tevent_context *) +tevent_loop_set_nesting_hook: void (struct tevent_context *, tevent_nesting_hook, void *) +tevent_num_signals: size_t (void) +tevent_queue_add: bool (struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) +tevent_queue_add_entry: struct tevent_queue_entry *(struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) +tevent_queue_add_optimize_empty: struct tevent_queue_entry *(struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *) +tevent_queue_length: size_t (struct tevent_queue *) +tevent_queue_running: bool (struct tevent_queue *) +tevent_queue_start: void (struct tevent_queue *) +tevent_queue_stop: void (struct tevent_queue *) +tevent_queue_wait_recv: bool (struct tevent_req *) +tevent_queue_wait_send: struct tevent_req *(TALLOC_CTX *, struct tevent_context *, struct tevent_queue *) +tevent_re_initialise: int (struct tevent_context *) +tevent_register_backend: bool (const char *, const struct tevent_ops *) +tevent_req_default_print: char *(struct tevent_req *, TALLOC_CTX *) +tevent_req_defer_callback: void (struct tevent_req *, struct tevent_context *) +tevent_req_is_error: bool (struct tevent_req *, enum tevent_req_state *, uint64_t *) +tevent_req_is_in_progress: bool (struct tevent_req *) +tevent_req_poll: bool (struct tevent_req *, struct tevent_context *) +tevent_req_post: struct tevent_req *(struct tevent_req *, struct tevent_context *) +tevent_req_print: char *(TALLOC_CTX *, struct tevent_req *) +tevent_req_received: void (struct tevent_req *) +tevent_req_set_callback: void (struct tevent_req *, tevent_req_fn, void *) +tevent_req_set_cancel_fn: void (struct tevent_req *, tevent_req_cancel_fn) +tevent_req_set_cleanup_fn: void (struct tevent_req *, tevent_req_cleanup_fn) +tevent_req_set_endtime: bool (struct tevent_req *, struct tevent_context *, struct timeval) +tevent_req_set_print_fn: void (struct tevent_req *, tevent_req_print_fn) +tevent_sa_info_queue_count: size_t (void) +tevent_set_abort_fn: void (void (*)(const char *)) +tevent_set_debug: int (struct tevent_context *, void (*)(void *, enum tevent_debug_level, const char *, va_list), void *) +tevent_set_debug_stderr: int (struct tevent_context *) +tevent_set_default_backend: void (const char *) +tevent_set_trace_callback: void (struct tevent_context *, tevent_trace_callback_t, void *) +tevent_signal_support: bool (struct tevent_context *) +tevent_thread_proxy_create: struct tevent_thread_proxy *(struct tevent_context *) +tevent_thread_proxy_schedule: void (struct tevent_thread_proxy *, struct tevent_immediate **, tevent_immediate_handler_t, void *) +tevent_timeval_add: struct timeval (const struct timeval *, uint32_t, uint32_t) +tevent_timeval_compare: int (const struct timeval *, const struct timeval *) +tevent_timeval_current: struct timeval (void) +tevent_timeval_current_ofs: struct timeval (uint32_t, uint32_t) +tevent_timeval_is_zero: bool (const struct timeval *) +tevent_timeval_set: struct timeval (uint32_t, uint32_t) +tevent_timeval_until: struct timeval (const struct timeval *, const struct timeval *) +tevent_timeval_zero: struct timeval (void) +tevent_trace_point_callback: void (struct tevent_context *, enum tevent_trace_point) +tevent_wakeup_recv: bool (struct tevent_req *) +tevent_wakeup_send: struct tevent_req *(TALLOC_CTX *, struct tevent_context *, struct timeval) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/gccdeps.py new/tevent-0.9.28/buildtools/wafsamba/gccdeps.py --- old/tevent-0.9.26/buildtools/wafsamba/gccdeps.py 2015-11-06 14:25:51.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/gccdeps.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,127 +0,0 @@ -# encoding: utf-8 -# Thomas Nagy, 2008-2010 (ita) - -""" -Execute the tasks with gcc -MD, read the dependencies from the .d file -and prepare the dependency calculation for the next run -""" - -import os, re, threading -import Task, Logs, Utils, preproc -from TaskGen import before, after, feature - -lock = threading.Lock() - -preprocessor_flag = '-MD' - -@feature('c', 'cc') -@before('apply_core') -def add_mmd_cc(self): - if self.env.get_flat('CCFLAGS').find(preprocessor_flag) < 0: - self.env.append_value('CCFLAGS', preprocessor_flag) - -@feature('cxx') -@before('apply_core') -def add_mmd_cxx(self): - if self.env.get_flat('CXXFLAGS').find(preprocessor_flag) < 0: - self.env.append_value('CXXFLAGS', preprocessor_flag) - -def scan(self): - "the scanner does not do anything initially" - nodes = self.generator.bld.node_deps.get(self.unique_id(), []) - names = [] - return (nodes, names) - -re_o = re.compile("\.o$") -re_src = re.compile("^(\.\.)[\\/](.*)$") - -def post_run(self): - # The following code is executed by threads, it is not safe, so a lock is needed... - - if getattr(self, 'cached', None): - return Task.Task.post_run(self) - - name = self.outputs[0].abspath(self.env) - name = re_o.sub('.d', name) - txt = Utils.readf(name) - #os.unlink(name) - - txt = txt.replace('\\\n', '') - - lst = txt.strip().split(':') - val = ":".join(lst[1:]) - val = val.split() - - nodes = [] - bld = self.generator.bld - - f = re.compile("^("+self.env.variant()+"|\.\.)[\\/](.*)$") - for x in val: - if os.path.isabs(x): - - if not preproc.go_absolute: - continue - - lock.acquire() - try: - node = bld.root.find_resource(x) - finally: - lock.release() - else: - g = re.search(re_src, x) - if g: - x = g.group(2) - lock.acquire() - try: - node = bld.bldnode.parent.find_resource(x) - finally: - lock.release() - else: - g = re.search(f, x) - if g: - x = g.group(2) - lock.acquire() - try: - node = bld.srcnode.find_resource(x) - finally: - lock.release() - - if id(node) == id(self.inputs[0]): - # ignore the source file, it is already in the dependencies - # this way, successful config tests may be retrieved from the cache - continue - - if not node: - raise ValueError('could not find %r for %r' % (x, self)) - else: - nodes.append(node) - - Logs.debug('deps: real scanner for %s returned %s' % (str(self), str(nodes))) - - bld.node_deps[self.unique_id()] = nodes - bld.raw_deps[self.unique_id()] = [] - - try: - del self.cache_sig - except: - pass - - Task.Task.post_run(self) - -import Constants, Utils -def sig_implicit_deps(self): - try: - return Task.Task.sig_implicit_deps(self) - except Utils.WafError: - return Constants.SIG_NIL - -for name in 'cc cxx'.split(): - try: - cls = Task.TaskBase.classes[name] - except KeyError: - pass - else: - cls.post_run = post_run - cls.scan = scan - cls.sig_implicit_deps = sig_implicit_deps - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_abi.py new/tevent-0.9.28/buildtools/wafsamba/samba_abi.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_abi.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_abi.py 2015-12-10 12:01:40.000000000 +0100 @@ -225,7 +225,7 @@ def ABI_VSCRIPT(bld, libname, abi_directory, version, vscript, abi_match=None): '''generate a vscript file for our public libraries''' if abi_directory: - source = bld.path.ant_glob('%s/%s-[0-9]*.sigs' % (abi_directory, libname)) + source = bld.path.ant_glob('%s/%s-[0-9]*.sigs' % (abi_directory, libname), flat=True) def abi_file_key(path): return version_key(path[:-len(".sigs")].rsplit("-")[-1]) source = sorted(source.split(), key=abi_file_key) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_autoconf.py new/tevent-0.9.28/buildtools/wafsamba/samba_autoconf.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_autoconf.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_autoconf.py 2015-12-10 12:01:40.000000000 +0100 @@ -4,7 +4,7 @@ import Build, Options, preproc, Logs from Configure import conf from TaskGen import feature -from samba_utils import TO_LIST, GET_TARGET_TYPE, SET_TARGET_TYPE, runonce, unique_list, mkdir_p +from samba_utils import TO_LIST, GET_TARGET_TYPE, SET_TARGET_TYPE, unique_list, mkdir_p missing_headers = set() @@ -13,7 +13,6 @@ # to waf a bit easier for those used to autoconf # m4 files -@runonce @conf def DEFINE(conf, d, v, add_to_cflags=False, quote=False): '''define a config option''' @@ -101,6 +100,7 @@ type='nolink', execute=0, ccflags=ccflags, + mandatory=False, includes=cpppath, uselib=lib.upper(), msg="Checking for header %s" % h) @@ -486,6 +486,7 @@ return conf.check(fragment='int main(void) { return 0; }\n', execute=0, ldflags=ldflags, + mandatory=False, msg="Checking linker accepts %s" % ldflags) @@ -569,9 +570,9 @@ (ccflags, ldflags, cpppath) = library_flags(conf, lib) if shlib: - res = conf.check(features='c cshlib', fragment=fragment, lib=lib, uselib_store=lib, ccflags=ccflags, ldflags=ldflags, uselib=lib.upper()) + res = conf.check(features='c cshlib', fragment=fragment, lib=lib, uselib_store=lib, ccflags=ccflags, ldflags=ldflags, uselib=lib.upper(), mandatory=False) else: - res = conf.check(lib=lib, uselib_store=lib, ccflags=ccflags, ldflags=ldflags, uselib=lib.upper()) + res = conf.check(lib=lib, uselib_store=lib, ccflags=ccflags, ldflags=ldflags, uselib=lib.upper(), mandatory=False) if not res: if mandatory: @@ -671,6 +672,7 @@ execute=0, ccflags='-fstack-protector', ldflags='-fstack-protector', + mandatory=False, msg='Checking if toolchain accepts -fstack-protector'): conf.ADD_CFLAGS('-fstack-protector') conf.ADD_LDFLAGS('-fstack-protector') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_bundled.py new/tevent-0.9.28/buildtools/wafsamba/samba_bundled.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_bundled.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_bundled.py 2015-12-10 12:01:40.000000000 +0100 @@ -3,7 +3,7 @@ import sys import Build, Options, Logs from Configure import conf -from samba_utils import TO_LIST, runonce +from samba_utils import TO_LIST def PRIVATE_NAME(bld, name, private_extension, private_library): '''possibly rename a library to include a bundled extension''' @@ -108,7 +108,6 @@ return ('ALL' in conf.env.PRIVATE_LIBS or libname in conf.env.PRIVATE_LIBS) -@runonce @conf def CHECK_BUNDLED_SYSTEM_PKG(conf, libname, minversion='0.0.0', onlyif=None, implied_deps=None, pkg=None): @@ -122,7 +121,6 @@ implied_deps=implied_deps, pkg=pkg) -@runonce @conf def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0', checkfunctions=None, headers=None, checkcode=None, @@ -219,7 +217,6 @@ def tuplize_version(version): return tuple([int(x) for x in version.split(".")]) -@runonce @conf def CHECK_BUNDLED_SYSTEM_PYTHON(conf, libname, modulename, minversion='0.0.0'): '''check if a python module is available on the system and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_conftests.py new/tevent-0.9.28/buildtools/wafsamba/samba_conftests.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_conftests.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_conftests.py 2015-12-10 12:01:40.000000000 +0100 @@ -196,7 +196,7 @@ return v * 2; } ''' - return conf.check(features='c cshlib',vnum="1",fragment=snip,msg=msg) + return conf.check(features='c cshlib',vnum="1",fragment=snip,msg=msg, mandatory=False) @conf def CHECK_NEED_LC(conf, msg): @@ -258,7 +258,7 @@ ldb_module = PyImport_ImportModule("ldb"); return v * 2; }''' - return conf.check(features='c cshlib',uselib='PYEMBED',fragment=snip,msg=msg) + return conf.check(features='c cshlib',uselib='PYEMBED',fragment=snip,msg=msg, mandatory=False) # this one is quite complex, and should probably be broken up # into several parts. I'd quite like to create a set of CHECK_COMPOUND() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_deps.py new/tevent-0.9.28/buildtools/wafsamba/samba_deps.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_deps.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_deps.py 2015-12-10 12:01:40.000000000 +0100 @@ -260,15 +260,10 @@ def check_duplicate_sources(bld, tgt_list): - '''see if we are compiling the same source file more than once - without an allow_duplicates attribute''' + '''see if we are compiling the same source file more than once''' debug('deps: checking for duplicate sources') - targets = LOCAL_CACHE(bld, 'TARGET_TYPE') - ret = True - - global tstart for t in tgt_list: source_list = TO_LIST(getattr(t, 'source', '')) @@ -286,7 +281,6 @@ # build a list of targets that each source file is part of for t in tgt_list: - sources = [] if not targets[t.sname] in [ 'LIBRARY', 'BINARY', 'PYTHON' ]: continue for obj in t.add_objects: @@ -306,24 +300,7 @@ if len(subsystems[s][tname]) > 1: raise Utils.WafError("ERROR: source %s is in more than one subsystem of target '%s': %s" % (s, tname, subsystems[s][tname])) - return ret - - -def check_orphaned_targets(bld, tgt_list): - '''check if any build targets are orphaned''' - - target_dict = LOCAL_CACHE(bld, 'TARGET_TYPE') - - debug('deps: checking for orphaned targets') - - for t in tgt_list: - if getattr(t, 'samba_used', False): - continue - type = target_dict[t.sname] - if not type in ['BINARY', 'LIBRARY', 'MODULE', 'ET', 'PYTHON']: - if re.search('^PIDL_', t.sname) is None: - Logs.warn("Target %s of type %s is unused by any other target" % (t.sname, type)) - + return True def check_group_ordering(bld, tgt_list): '''see if we have any dependencies that violate the group ordering @@ -366,7 +343,7 @@ ret = False return ret - +Build.BuildContext.check_group_ordering = check_group_ordering def show_final_deps(bld, tgt_list): '''show the final dependencies for all targets''' @@ -1157,15 +1134,13 @@ debug('deps: project rules stage1 completed') - #check_orphaned_targets(bld, tgt_list) - if not check_duplicate_sources(bld, tgt_list): Logs.error("Duplicate sources present - aborting") sys.exit(1) debug("deps: check_duplicate_sources: %f" % (time.clock() - tstart)) - if not check_group_ordering(bld, tgt_list): + if not bld.check_group_ordering(tgt_list): Logs.error("Bad group ordering - aborting") sys.exit(1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_install.py new/tevent-0.9.28/buildtools/wafsamba/samba_install.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_install.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_install.py 2015-12-10 12:01:40.000000000 +0100 @@ -4,7 +4,7 @@ # library use import os -import Options, Utils +import Utils from TaskGen import feature, before, after from samba_utils import LIB_PATH, MODE_755, install_rpath, build_rpath @@ -19,7 +19,7 @@ install_ldflags = install_rpath(self) build_ldflags = build_rpath(bld) - if not Options.is_install: + if not self.bld.is_install: # just need to set rpath if we are not installing self.env.RPATH = build_ldflags return @@ -68,7 +68,7 @@ install_ldflags = install_rpath(self) build_ldflags = build_rpath(bld) - if not Options.is_install or not getattr(self, 'samba_install', True): + if not self.bld.is_install or not getattr(self, 'samba_install', True): # just need to set the build rpath if we are not installing self.env.RPATH = build_ldflags return @@ -92,6 +92,7 @@ t = self.clone(self.env) t.posted = False t.target += '.inst' + t.name = self.name + '.inst' self.env.RPATH = build_ldflags else: t = self diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_optimisation.py new/tevent-0.9.28/buildtools/wafsamba/samba_optimisation.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_optimisation.py 2015-11-06 14:25:51.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_optimisation.py 2015-12-10 12:01:40.000000000 +0100 @@ -266,24 +266,4 @@ if val: self.env.append_value(v, val) -@feature('cprogram', 'cshlib', 'cstaticlib') -@after('apply_lib_vars') -@before('apply_obj_vars') -def samba_before_apply_obj_vars(self): - """before apply_obj_vars for uselib, this removes the standard pathes""" - def is_standard_libpath(env, path): - for _path in env.STANDARD_LIBPATH: - if _path == os.path.normpath(path): - return True - return False - - v = self.env - - for i in v['RPATH']: - if is_standard_libpath(v, i): - v['RPATH'].remove(i) - - for i in v['LIBPATH']: - if is_standard_libpath(v, i): - v['LIBPATH'].remove(i) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_patterns.py new/tevent-0.9.28/buildtools/wafsamba/samba_patterns.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_patterns.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_patterns.py 2015-12-10 12:01:40.000000000 +0100 @@ -7,7 +7,7 @@ '''print version.h contents''' src = task.inputs[0].srcpath(task.env) - version = samba_version_file(src, task.env.srcdir, env=task.env, is_install=task.env.is_install) + version = samba_version_file(src, task.env.srcdir, env=task.env, is_install=task.generator.bld.is_install) string = str(version) task.outputs[0].write(string) @@ -25,7 +25,6 @@ source= 'VERSION', target=target, always=bld.is_install) - t.env.is_install = bld.is_install Build.BuildContext.SAMBA_MKVERSION = SAMBA_MKVERSION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_perl.py new/tevent-0.9.28/buildtools/wafsamba/samba_perl.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_perl.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_perl.py 2015-12-10 12:01:40.000000000 +0100 @@ -5,12 +5,6 @@ @conf def SAMBA_CHECK_PERL(conf, mandatory=True, version=(5,0,0)): - # - # TODO: use the @runonce mechanism for this. - # The problem is that @runonce currently does - # not seem to work together with @conf... - # So @runonce (and/or) @conf needs fixing. - # if "done" in done: return done["done"] = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_python.py new/tevent-0.9.28/buildtools/wafsamba/samba_python.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_python.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_python.py 2016-02-19 22:02:02.000000000 +0100 @@ -1,7 +1,7 @@ # waf build tool for building IDL files with pidl import os -import Build, Logs, Utils +import Build, Logs, Utils, Configure from Configure import conf @conf @@ -63,7 +63,12 @@ del(conf.env.defines['PYTHONARCHDIR']) def _check_python_headers(conf, mandatory): - conf.check_python_headers(mandatory=mandatory) + try: + Configure.ConfigurationError + conf.check_python_headers(mandatory=mandatory) + except Configure.ConfigurationError: + if mandatory: + raise if conf.env['PYTHON_VERSION'] > '3': abi_pattern = os.path.splitext(conf.env['pyext_PATTERN'])[0] @@ -92,7 +97,18 @@ # when we support static python modules we'll need to gather # the list from all the SAMBA_PYTHON() targets if init_function_sentinel is not None: - cflags += '-DSTATIC_LIBPYTHON_MODULES=%s' % init_function_sentinel + cflags += ' -DSTATIC_LIBPYTHON_MODULES=%s' % init_function_sentinel + + # From https://docs.python.org/2/c-api/arg.html: + # Starting with Python 2.5 the type of the length argument to + # PyArg_ParseTuple(), PyArg_ParseTupleAndKeywords() and PyArg_Parse() + # can be controlled by defining the macro PY_SSIZE_T_CLEAN before + # including Python.h. If the macro is defined, length is a Py_ssize_t + # rather than an int. + + # Because <Python.h> if often included before includes.h/config.h + # This must be in the -D compiler options + cflags += ' -DPY_SSIZE_T_CLEAN=1' source = bld.EXPAND_VARIABLES(source, vars=vars) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_utils.py new/tevent-0.9.28/buildtools/wafsamba/samba_utils.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_utils.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_utils.py 2015-12-10 12:01:40.000000000 +0100 @@ -3,7 +3,7 @@ import os, sys, re, fnmatch, shlex import Build, Options, Utils, Task, Logs, Configure -from TaskGen import feature, before +from TaskGen import feature, before, after from Configure import conf, ConfigurationContext from Logs import debug @@ -35,22 +35,6 @@ return cache[target] -###################################################### -# this is used as a decorator to make functions only -# run once. Based on the idea from -# http://stackoverflow.com/questions/815110/is-there-a-decorator-to-simply-cache-function-return-values -def runonce(function): - runonce_ret = {} - def runonce_wrapper(*args): - if args in runonce_ret: - return runonce_ret[args] - else: - ret = function(*args) - runonce_ret[args] = ret - return ret - return runonce_wrapper - - def ADD_LD_LIBRARY_PATH(path): '''add something to LD_LIBRARY_PATH''' if 'LD_LIBRARY_PATH' in os.environ: @@ -135,27 +119,6 @@ if t not in d1: d1[t] = d2[t] - -def exec_command(self, cmd, **kw): - '''this overrides the 'waf -v' debug output to be in a nice - unix like format instead of a python list. - Thanks to ita on #waf for this''' - _cmd = cmd - if isinstance(cmd, list): - _cmd = ' '.join(cmd) - debug('runner: %s' % _cmd) - if self.log: - self.log.write('%s\n' % cmd) - kw['log'] = self.log - try: - if not kw.get('cwd', None): - kw['cwd'] = self.cwd - except AttributeError: - self.cwd = kw['cwd'] = self.bldnode.abspath() - return Utils.exec_command(cmd, **kw) -Build.BuildContext.exec_command = exec_command - - def ADD_COMMAND(opt, name, function): '''add a new top level command to waf''' Utils.g_module.__dict__[name] = function @@ -385,7 +348,7 @@ return -1 -def RUN_PYTHON_TESTS(testfiles, pythonpath=None): +def RUN_PYTHON_TESTS(testfiles, pythonpath=None, extra_env=None): env = LOAD_ENVIRONMENT() if pythonpath is None: pythonpath = os.path.join(Utils.g_module.blddir, 'python') @@ -393,6 +356,9 @@ for interp in env.python_interpreters: for testfile in testfiles: cmd = "PYTHONPATH=%s %s %s" % (pythonpath, interp, testfile) + if extra_env: + for key, value in extra_env.items(): + cmd = "%s=%s %s" % (key, value, cmd) print('Running Python test with %s: %s' % (interp, testfile)) ret = RUN_COMMAND(cmd) if ret: @@ -680,3 +646,26 @@ return False Build.BuildContext.AD_DC_BUILD_IS_ENABLED = AD_DC_BUILD_IS_ENABLED + +@feature('cprogram', 'cshlib', 'cstaticlib') +@after('apply_lib_vars') +@before('apply_obj_vars') +def samba_before_apply_obj_vars(self): + """before apply_obj_vars for uselib, this removes the standard paths""" + + def is_standard_libpath(env, path): + for _path in env.STANDARD_LIBPATH: + if _path == os.path.normpath(path): + return True + return False + + v = self.env + + for i in v['RPATH']: + if is_standard_libpath(v, i): + v['RPATH'].remove(i) + + for i in v['LIBPATH']: + if is_standard_libpath(v, i): + v['LIBPATH'].remove(i) + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/samba_wildcard.py new/tevent-0.9.28/buildtools/wafsamba/samba_wildcard.py --- old/tevent-0.9.26/buildtools/wafsamba/samba_wildcard.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/samba_wildcard.py 2015-12-10 12:01:40.000000000 +0100 @@ -130,7 +130,6 @@ Options.commands['install'] = False Options.commands['uninstall'] = False - Options.is_install = False bld.is_install = 0 # False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/wafsamba.py new/tevent-0.9.28/buildtools/wafsamba/wafsamba.py --- old/tevent-0.9.26/buildtools/wafsamba/wafsamba.py 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/wafsamba.py 2016-02-19 22:02:02.000000000 +0100 @@ -106,6 +106,7 @@ includes='', public_headers=None, public_headers_install=True, + private_headers=None, header_path=None, pc_files=None, vnum=None, @@ -145,8 +146,12 @@ if pyembed and bld.env['IS_EXTRA_PYTHON']: public_headers = pc_files = None + if private_library and public_headers: + raise Utils.WafError("private library '%s' must not have public header files" % + libname) + if LIB_MUST_BE_PRIVATE(bld, libname): - private_library=True + private_library = True if not enabled: SET_TARGET_TYPE(bld, libname, 'DISABLED') @@ -187,6 +192,7 @@ includes = includes, public_headers = public_headers, public_headers_install = public_headers_install, + private_headers= private_headers, header_path = header_path, cflags = cflags, group = subsystem_group, @@ -282,7 +288,7 @@ if not vscriptpath: raise Utils.WafError("unable to find vscript path for %s" % vscript) bld.add_manual_dependency(fullpath, vscriptpath) - if Options.is_install: + if bld.is_install: # also make the .inst file depend on the vscript instname = apply_pattern(bundled_name + '.inst', bld.env.shlib_PATTERN) bld.add_manual_dependency(bld.path.find_or_declare(instname), bld.path.find_or_declare(vscript)) @@ -337,6 +343,7 @@ deps='', includes='', public_headers=None, + private_headers=None, header_path=None, modules=None, ldflags=None, @@ -539,6 +546,7 @@ includes='', public_headers=None, public_headers_install=True, + private_headers=None, header_path=None, cflags='', cflags_end=None, @@ -631,6 +639,7 @@ group='generators', enabled=True, public_headers=None, public_headers_install=True, + private_headers=None, header_path=None, vars=None, dep_vars=[], @@ -674,7 +683,7 @@ -@runonce [email protected]_once def SETUP_BUILD_GROUPS(bld): '''setup build groups used to ensure that the different build phases happen consecutively''' @@ -727,7 +736,7 @@ '''used to copy scripts from the source tree into the build directory for use by selftest''' - source = bld.path.ant_glob(pattern) + source = bld.path.ant_glob(pattern, flat=True) bld.SET_BUILD_GROUP('build_source') for s in TO_LIST(source): @@ -856,7 +865,7 @@ def INSTALL_WILDCARD(bld, destdir, pattern, chmod=MODE_644, flat=False, python_fixup=False, exclude=None, trim_path=None): '''install a set of files matching a wildcard pattern''' - files=TO_LIST(bld.path.ant_glob(pattern)) + files=TO_LIST(bld.path.ant_glob(pattern, flat=True)) if trim_path: files2 = [] for f in files: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/buildtools/wafsamba/wscript new/tevent-0.9.28/buildtools/wafsamba/wscript --- old/tevent-0.9.26/buildtools/wafsamba/wscript 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/buildtools/wafsamba/wscript 2016-02-19 22:02:02.000000000 +0100 @@ -203,7 +203,7 @@ metavar="PYTHON", dest='EXTRA_PYTHON', default=None) [email protected] [email protected]_once def configure(conf): conf.env.hlist = [] conf.env.srcdir = conf.srcdir @@ -216,6 +216,7 @@ # load our local waf extensions conf.check_tool('gnu_dirs') conf.check_tool('wafsamba') + conf.check_tool('print_commands') conf.CHECK_CC_ENV() @@ -228,6 +229,11 @@ # older gcc versions (< 4.4) does not work with gccdeps, so we have to see if the .d file is generated if Options.options.enable_gccdeps: + # stale file removal - the configuration may pick up the old .pyc file + p = os.path.join(conf.srcdir, 'buildtools/wafsamba/gccdeps.pyc') + if os.path.exists(p): + os.remove(p) + from TaskGen import feature, after @feature('testd') @after('apply_core') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/lib/replace/wscript new/tevent-0.9.28/lib/replace/wscript --- old/tevent-0.9.26/lib/replace/wscript 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/lib/replace/wscript 2015-12-10 12:01:40.000000000 +0100 @@ -14,7 +14,7 @@ sys.path.insert(0, srcdir + '/buildtools/wafsamba') import wafsamba, samba_dist -import Options +import Options, Utils samba_dist.DIST_DIRS('lib/replace buildtools:buildtools third_party/waf:third_party/waf') @@ -23,7 +23,7 @@ opt.PRIVATE_EXTENSION_DEFAULT('') opt.RECURSE('buildtools/wafsamba') [email protected] [email protected]_once def configure(conf): conf.RECURSE('buildtools/wafsamba') @@ -43,7 +43,12 @@ conf.CHECK_HEADERS('sys/id.h sys/ioctl.h sys/ipc.h sys/mman.h sys/mode.h sys/ndir.h sys/priv.h') conf.CHECK_HEADERS('sys/resource.h sys/security.h sys/shm.h sys/statfs.h sys/statvfs.h sys/termio.h') conf.CHECK_HEADERS('sys/vfs.h sys/xattr.h termio.h termios.h sys/file.h') - conf.CHECK_HEADERS('sys/ucontext.h sys/wait.h sys/stat.h malloc.h grp.h') + conf.CHECK_HEADERS('sys/ucontext.h sys/wait.h sys/stat.h') + + if not conf.CHECK_DECLS('malloc', headers='stdlib.h'): + conf.CHECK_HEADERS('malloc.h') + + conf.CHECK_HEADERS('grp.h') conf.CHECK_HEADERS('sys/select.h setjmp.h utime.h sys/syslog.h syslog.h') conf.CHECK_HEADERS('stdarg.h vararg.h sys/mount.h mntent.h') conf.CHECK_HEADERS('stropts.h unix.h string.h strings.h sys/param.h limits.h') @@ -71,7 +76,7 @@ conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h valgrind/memcheck.h') conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h') conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h') - conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h malloc.h') + conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h') conf.CHECK_HEADERS('syscall.h sys/syscall.h inttypes.h') conf.CHECK_HEADERS('sys/atomic.h') conf.CHECK_HEADERS('libgen.h') @@ -245,6 +250,10 @@ conf.CHECK_FUNCS('link readlink symlink realpath snprintf vsnprintf') conf.CHECK_FUNCS('asprintf vasprintf setenv unsetenv strnlen strtoull __strtoull') conf.CHECK_FUNCS('strtouq strtoll __strtoll strtoq memalign posix_memalign') + + if conf.CONFIG_SET('HAVE_MEMALIGN'): + conf.CHECK_DECLS('memalign', headers='malloc.h') + conf.CHECK_FUNCS('prctl dirname basename') # libbsd on some platforms provides strlcpy and strlcat diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/lib/talloc/talloc.h new/tevent-0.9.28/lib/talloc/talloc.h --- old/tevent-0.9.26/lib/talloc/talloc.h 2015-11-06 14:25:52.000000000 +0100 +++ new/tevent-0.9.28/lib/talloc/talloc.h 2016-02-19 22:02:02.000000000 +0100 @@ -751,7 +751,7 @@ * @brief Safely turn a void pointer into a typed pointer. * * This macro is used together with talloc(mem_ctx, struct foo). If you had to - * assing the talloc chunk pointer to some void pointer variable, + * assign the talloc chunk pointer to some void pointer variable, * talloc_get_type_abort() is the recommended way to get the convert the void * pointer back to a typed pointer. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/lib/talloc/wscript new/tevent-0.9.28/lib/talloc/wscript --- old/tevent-0.9.26/lib/talloc/wscript 2015-11-06 14:28:25.000000000 +0100 +++ new/tevent-0.9.28/lib/talloc/wscript 2016-02-19 22:02:02.000000000 +0100 @@ -116,7 +116,7 @@ abi_match='talloc* _talloc*', hide_symbols=True, vnum=VERSION, - public_headers='talloc.h', + public_headers=('' if private_library else 'talloc.h'), pc_files='talloc.pc', public_headers_install=not private_library, private_library=private_library, @@ -135,7 +135,7 @@ abi_directory='ABI', abi_match='pytalloc_*', private_library=private_library, - public_headers='pytalloc.h', + public_headers=('' if private_library else 'pytalloc.h'), pc_files='pytalloc-util.pc' ) bld.SAMBA_PYTHON('pytalloc', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/tevent_epoll.c new/tevent-0.9.28/tevent_epoll.c --- old/tevent-0.9.26/tevent_epoll.c 2014-09-16 20:04:31.000000000 +0200 +++ new/tevent-0.9.28/tevent_epoll.c 2015-12-10 12:01:40.000000000 +0100 @@ -216,7 +216,7 @@ /* reopen the epoll handle when our pid changes - see http://junkcode.samba.org/ftp/unpacked/junkcode/epoll_fork.c for an + see http://junkcode.samba.org/ftp/unpacked/junkcode/epoll_fork.c for an demonstration of why this is needed */ static void epoll_check_reopen(struct epoll_event_context *epoll_ev) @@ -661,7 +661,7 @@ } for (i=0;i<ret;i++) { - struct tevent_fd *fde = talloc_get_type(events[i].data.ptr, + struct tevent_fd *fde = talloc_get_type(events[i].data.ptr, struct tevent_fd); uint16_t flags = 0; struct tevent_fd *mpx_fde = NULL; @@ -888,7 +888,7 @@ } /* - do a single event loop using the events defined in ev + do a single event loop using the events defined in ev */ static int epoll_event_loop_once(struct tevent_context *ev, const char *location) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/tevent_immediate.c new/tevent-0.9.28/tevent_immediate.c --- old/tevent-0.9.26/tevent_immediate.c 2014-09-16 20:04:31.000000000 +0200 +++ new/tevent-0.9.28/tevent_immediate.c 2016-02-19 22:02:02.000000000 +0100 @@ -88,7 +88,7 @@ im->cancel_fn = NULL; im->additional_data = NULL; - DLIST_ADD_END(ev->immediate_events, im, struct tevent_immediate *); + DLIST_ADD_END(ev->immediate_events, im); talloc_set_destructor(im, tevent_common_immediate_destructor); tevent_debug(ev, TEVENT_DEBUG_TRACE, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/tevent_poll.c new/tevent-0.9.28/tevent_poll.c --- old/tevent-0.9.26/tevent_poll.c 2014-10-01 11:22:21.000000000 +0200 +++ new/tevent-0.9.28/tevent_poll.c 2016-02-19 22:02:02.000000000 +0100 @@ -498,6 +498,7 @@ int timeout = -1; int poll_errno; struct tevent_fd *fde = NULL; + struct tevent_fd *next = NULL; unsigned i; if (ev->signal_events && tevent_common_check_signal(ev)) { @@ -542,11 +543,13 @@ which ones and call the handler, being careful to allow the handler to remove itself when called */ - for (fde = ev->fd_events; fde; fde = fde->next) { + for (fde = ev->fd_events; fde; fde = next) { uint64_t idx = fde->additional_flags; struct pollfd *pfd; uint16_t flags = 0; + next = fde->next; + if (idx == UINT64_MAX) { continue; } @@ -598,7 +601,7 @@ */ flags &= fde->flags; if (flags != 0) { - DLIST_DEMOTE(ev->fd_events, fde, struct tevent_fd); + DLIST_DEMOTE(ev->fd_events, fde); fde->handler(ev, fde, flags, fde->private_data); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/tevent_port.c new/tevent-0.9.28/tevent_port.c --- old/tevent-0.9.26/tevent_port.c 2015-06-13 03:00:10.000000000 +0200 +++ new/tevent-0.9.28/tevent_port.c 2016-02-19 22:02:02.000000000 +0100 @@ -496,10 +496,24 @@ return 0; } - if (ret == -1 && port_errno == ETIME && tvalp) { - /* we don't care about a possible delay here */ - tevent_common_loop_timer_delay(ev); - return 0; + if (ret == -1 && port_errno == ETIME) { + /* + * If errno is set to ETIME it is possible that we still got an event. + * In that case we need to go through the processing loop so that we + * reassociate the received event with the port or the association will + * be lost so check the value of nget is 0 before returning. + */ + if (nget == 0) { + /* we don't care about a possible delay here */ + tevent_common_loop_timer_delay(ev); + return 0; + } + /* + * Set the return value to 0 since we do not actually have an error and we + * do have events that need to be processed. This keeps us from getting + * caught in the generic error test. + */ + ret = 0; } if (ret == -1) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/tevent_queue.c new/tevent-0.9.28/tevent_queue.c --- old/tevent-0.9.26/tevent_queue.c 2014-09-16 20:04:31.000000000 +0200 +++ new/tevent-0.9.28/tevent_queue.c 2016-02-19 22:02:02.000000000 +0100 @@ -195,7 +195,7 @@ allow_direct = false; } - DLIST_ADD_END(queue->list, e, struct tevent_queue_entry *); + DLIST_ADD_END(queue->list, e); queue->length++; talloc_set_destructor(e, tevent_queue_entry_destructor); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/tevent_select.c new/tevent-0.9.28/tevent_select.c --- old/tevent-0.9.26/tevent_select.c 2014-10-01 11:22:21.000000000 +0200 +++ new/tevent-0.9.28/tevent_select.c 2016-02-19 22:02:02.000000000 +0100 @@ -219,7 +219,7 @@ flags |= TEVENT_FD_WRITE; } if (flags) { - DLIST_DEMOTE(select_ev->ev->fd_events, fde, struct tevent_fd); + DLIST_DEMOTE(select_ev->ev->fd_events, fde); fde->handler(select_ev->ev, fde, flags, fde->private_data); break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/tevent_signal.c new/tevent-0.9.28/tevent_signal.c --- old/tevent-0.9.26/tevent_signal.c 2015-06-13 03:00:10.000000000 +0200 +++ new/tevent-0.9.28/tevent_signal.c 2016-02-19 22:05:17.000000000 +0100 @@ -212,6 +212,7 @@ /* restore old handler, if any */ if (sig_state->oldact[se->signum]) { sigaction(se->signum, sig_state->oldact[se->signum], NULL); + talloc_free(sig_state->oldact[se->signum]); sig_state->oldact[se->signum] = NULL; } #ifdef SA_SIGINFO @@ -342,6 +343,8 @@ return NULL; } if (sigaction(signum, &act, sig_state->oldact[signum]) == -1) { + talloc_free(sig_state->oldact[signum]); + sig_state->oldact[signum] = NULL; talloc_free(se); return NULL; } @@ -505,6 +508,7 @@ if (sig_state->sig_handlers[se->signum] == NULL) { if (sig_state->oldact[se->signum]) { sigaction(se->signum, sig_state->oldact[se->signum], NULL); + talloc_free(sig_state->oldact[se->signum]); sig_state->oldact[se->signum] = NULL; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/tevent_util.h new/tevent-0.9.28/tevent_util.h --- old/tevent-0.9.26/tevent_util.h 2014-09-16 20:04:31.000000000 +0200 +++ new/tevent-0.9.28/tevent_util.h 2016-02-19 22:02:02.000000000 +0100 @@ -53,10 +53,6 @@ This allows us to find the tail of the list by using list_head->prev, which means we can add to the end of the list in O(1) time - - - Note that the 'type' arguments below are no longer needed, but - are kept for now to prevent an incompatible argument change */ @@ -131,9 +127,8 @@ /* add to the end of a list. - Note that 'type' is ignored */ -#define DLIST_ADD_END(list, p, type) \ +#define DLIST_ADD_END(list, p) \ do { \ if (!(list)) { \ DLIST_ADD(list, p); \ @@ -151,20 +146,18 @@ /* demote an element to the end of a list. - Note that 'type' is ignored */ -#define DLIST_DEMOTE(list, p, type) \ +#define DLIST_DEMOTE(list, p) \ do { \ DLIST_REMOVE(list, p); \ - DLIST_ADD_END(list, p, NULL); \ + DLIST_ADD_END(list, p); \ } while (0) /* concatenate two lists - putting all elements of the 2nd list at the end of the first list. - Note that 'type' is ignored */ -#define DLIST_CONCATENATE(list1, list2, type) \ +#define DLIST_CONCATENATE(list1, list2) \ do { \ if (!(list1)) { \ (list1) = (list2); \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/third_party/waf/wafadmin/3rdparty/gccdeps.py new/tevent-0.9.28/third_party/waf/wafadmin/3rdparty/gccdeps.py --- old/tevent-0.9.26/third_party/waf/wafadmin/3rdparty/gccdeps.py 2015-04-29 11:20:16.000000000 +0200 +++ new/tevent-0.9.28/third_party/waf/wafadmin/3rdparty/gccdeps.py 2016-02-19 22:02:02.000000000 +0100 @@ -15,7 +15,7 @@ preprocessor_flag = '-MD' -@feature('cc') +@feature('cc', 'c') @before('apply_core') def add_mmd_cc(self): if self.env.get_flat('CCFLAGS').find(preprocessor_flag) < 0: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/third_party/waf/wafadmin/3rdparty/print_commands.py new/tevent-0.9.28/third_party/waf/wafadmin/3rdparty/print_commands.py --- old/tevent-0.9.26/third_party/waf/wafadmin/3rdparty/print_commands.py 1970-01-01 01:00:00.000000000 +0100 +++ new/tevent-0.9.28/third_party/waf/wafadmin/3rdparty/print_commands.py 2015-12-10 12:01:40.000000000 +0100 @@ -0,0 +1,25 @@ +#! /usr/bin/env python + +""" +In this case, print the commands being executed as strings +(the commands are usually lists, so this can be misleading) +""" + +import Build, Utils, Logs + +def exec_command(self, cmd, **kw): + txt = cmd + if isinstance(cmd, list): + txt = ' '.join(cmd) + Logs.debug('runner: %s' % txt) + if self.log: + self.log.write('%s\n' % cmd) + kw['log'] = self.log + try: + if not kw.get('cwd', None): + kw['cwd'] = self.cwd + except AttributeError: + self.cwd = kw['cwd'] = self.bldnode.abspath() + return Utils.exec_command(cmd, **kw) +Build.BuildContext.exec_command = exec_command + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tevent-0.9.26/wscript new/tevent-0.9.28/wscript --- old/tevent-0.9.26/wscript 2015-11-06 14:29:43.000000000 +0100 +++ new/tevent-0.9.28/wscript 2016-02-19 22:05:17.000000000 +0100 @@ -1,7 +1,7 @@ #!/usr/bin/env python APPNAME = 'tevent' -VERSION = '0.9.26' +VERSION = '0.9.28' blddir = 'bin' @@ -107,7 +107,7 @@ abi_directory='ABI', abi_match='tevent_* _tevent_*', vnum=VERSION, - public_headers='tevent.h', + public_headers=('' if private_library else 'tevent.h'), public_headers_install=not private_library, pc_files='tevent.pc', private_library=private_library) @@ -133,6 +133,9 @@ '''test tevent''' print("The tevent testsuite is part of smbtorture in samba4") + samba_utils.ADD_LD_LIBRARY_PATH('bin/shared') + samba_utils.ADD_LD_LIBRARY_PATH('bin/shared/private') + pyret = samba_utils.RUN_PYTHON_TESTS(['bindings.py']) sys.exit(pyret)
