#
# spec file for package libevent
#
# Copyright (c) 2019 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
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


Name:           libevent
%define     version_base 2
%define     version_minor 1
%define     version_release 11
%define     abi_release 7
%define     version_suffix stable
%define     libsoname %{name}-%{version_base}_%{version_minor}-%{abi_release}

Version:        %{version_base}.%{version_minor}.%{version_release}
Release:        1.1
Summary:        An event notification library
License:        BSD-3-Clause
Group:          Development/Libraries/C and C++
Url:            http://libevent.org/
Source0:        https://github.com/%{name}/%{name}/releases/download/release-%{version}-%{version_suffix}/%{name}-%{version}-%{version_suffix}.tar.gz
Source1:        https://github.com/%{name}/%{name}/releases/download/release-%{version}-%{version_suffix}/%{name}-%{version}-%{version_suffix}.tar.gz.asc
Source2:        %{name}.keyring
Source3:        libevent-rpmlintrc
Source99:       baselibs.conf
Patch0:         python3-shebang.patch
BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  libtool
BuildRequires:  openssl-devel
%if 0%{?fedora_version} || 0%{?rhel_version}
BuildRequires:  pkgconfig
%else
BuildRequires:  pkgconf-pkg-config
%endif
BuildRequires:  zlib-devel
%if 0%{?suse_version} > 1220
Requires(pre):  %fillup_prereq
Requires(pre):  %insserv_prereq
%endif
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
The libevent API provides a mechanism to execute a callback function
when a specific event occurs on a file descriptor or after a timeout
has been reached. Furthermore, libevent also support callbacks due to
signals or regular timeouts.

%package -n %{libsoname}
Summary:        An event notification library
Group:          System/Libraries
Provides:       %{name} = %{version}
Obsoletes:      %{name} < %{version}

%description -n %{libsoname}
The libevent API provides a mechanism to execute a callback function
when a specific event occurs on a file descriptor or after a timeout
has been reached. Furthermore, libevent also support callbacks due to
signals or regular timeouts.

Currently, libevent supports /dev/poll, kqueue(2), event ports,
POSIX select(2), Windows select(), poll(2), and epoll(4).

Libevent additionally provides a sophisticated framework for buffered
network IO, with support for sockets, filters, rate-limiting, SSL,
zero-copy file transmission, and IOCP. Libevent includes support for
several useful protocols, including DNS, HTTP, and a minimal RPC
framework.

This package holds the shared libraries for libevent.

%package devel
Summary:        Development files for libevent2
Group:          Development/Libraries/C and C++
Requires:       %{libsoname} = %{version}
Requires:       glibc-devel
# Both have /usr/include/event.h
Conflicts:      libev-devel
Provides:       %{name}:%{_includedir}/event.h

%description devel
The libevent API provides a mechanism to execute a callback function
when a specific event occurs on a file descriptor or after a timeout
has been reached. Furthermore, libevent also support callbacks due to
signals or regular timeouts.

This package holds the development files for libevent2.

%package devel-static
Summary:        Static libraries for libevent2
Group:          Development/Libraries/C and C++
Requires:       %{name}-devel = %{version}

%description devel-static
The libevent API provides a mechanism to execute a callback function
when a specific event occurs on a file descriptor or after a timeout
has been reached. Furthermore, libevent also support callbacks due to
signals or regular timeouts.

This package holds the static libraries for libevent2.

%prep
%setup -q  -n %{name}-%{version}-%{version_suffix}
%patch0 -p1

%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
./autogen.sh
%configure \
	--disable-libevent-regress
make %{?_smp_mflags}

%check
make check

%install
%make_install %{?_smp_mflags}
find %{buildroot}%{_libdir} -type f -name "*.la" -delete -print

%post    -n %{libsoname} -p /sbin/ldconfig

%postun  -n %{libsoname} -p /sbin/ldconfig

%files -n %{libsoname}
%defattr(-,root,root,-)
%license LICENSE
%doc ChangeLog whatsnew-2.0.txt whatsnew-2.1.txt
%{_libdir}/%{name}-%{version_base}.%{version_minor}.so.%{abi_release}*
%{_libdir}/%{name}_core-%{version_base}.%{version_minor}.so.%{abi_release}*
%{_libdir}/%{name}_extra-%{version_base}.%{version_minor}.so.%{abi_release}*
%{_libdir}/%{name}_pthreads-%{version_base}.%{version_minor}.so.%{abi_release}*
%{_libdir}/%{name}_openssl-%{version_base}.%{version_minor}.so.%{abi_release}*

%files devel
%defattr(-,root,root)
%{_bindir}/event_rpcgen.py
%{_includedir}/evdns.h
%{_includedir}/event.h
%{_includedir}/evhttp.h
%{_includedir}/evrpc.h
%{_includedir}/evutil.h
%{_includedir}/event2
%{_libdir}/%{name}.so
%{_libdir}/%{name}_core.so
%{_libdir}/%{name}_extra.so
%{_libdir}/%{name}_pthreads.so
%{_libdir}/%{name}_openssl.so
%{_libdir}/pkgconfig/%{name}.pc
%{_libdir}/pkgconfig/%{name}_pthreads.pc
%{_libdir}/pkgconfig/%{name}_openssl.pc
%{_libdir}/pkgconfig/%{name}_core.pc
%{_libdir}/pkgconfig/%{name}_extra.pc

%files devel-static
%defattr(-,root,root)
%{_libdir}/%{name}.a
%{_libdir}/%{name}_core.a
%{_libdir}/%{name}_extra.a
%{_libdir}/%{name}_openssl.a
%{_libdir}/%{name}_pthreads.a

%changelog
* Tue Aug 20 2019 David Disseldorp <ddiss@suse.com>
- Update to 2.1.11 stable
  * Fix ABI breakage that had been introduced in 2.1.10. Strictly speaking
    this release breaks ABI again to make it compatible with <= 2.1.9.
    + See git commit 18104973 for more details
  * evdns: add new options -- so-rcvbuf/so-sndbuf
  * various autotools and cmake build changes
  * buffer: fix possible NULL dereference in evbuffer_setcb() on ENOMEM
  * Warn if forked from the event loop during event_reinit()
  * evutil: set the have_checked_interfaces in evutil_check_interfaces()
  * https-client: correction error checking
* Fri Aug  2 2019 Martin Liška <mliska@suse.cz>
- Use FAT LTO objects in order to provide proper static library.
* Mon Jul  1 2019 Andreas Schwab <schwab@suse.de>
- Fix name of library package (bsc#1138369)
* Mon May 27 2019 David Disseldorp <ddiss@suse.com>
- Update to 2.1.10 stable
  * evdns: add DNS_OPTION_NAMESERVERS_NO_DEFAULT /
    EVDNS_BASE_NAMESERVERS_NO_DEFAULT
  * Add support for EV_TIMEOUT to event_base_active_by_fd
  * kqueue: Avoid undefined behaviour.
  * Prevent integer overflow in kq_build_changes_list.
  * evdns: fix lock/unlock mismatch in evdns_close_server_port()
  * Protect min_heap_push_ against integer overflow.
  * le-proxy: initiate use of the Winsock DLL
  * Fix leaks in error path of the bufferevent_init_common_()
  * buffer: make evbuffer_prepend() of zero-length array no-op
  * Don't loose top error in SSL
  * Remove needless check for arc4_seeded_ok
  * Cleanup __func__ detection
  * Add convenience macros for user-triggered events
  * Notify event base if there are no more events, so it can exit without
    delay
  * Fix base unlocking in event_del() if event_base_set() runned in another
    thread
  * If precise_time is false, we should not set EVENT_BASE_FLAG_PRECISE_TIMER
  * Fix race in access to ev_res from event loop with event_active()
  * Return from event_del() after the last event callback termination
  * Preserve socket error from listen across closesocket cleanup
  * fix connection retries when there more then one request for connection
  * improve error path for bufferevent_{setfd,enable,disable}()
  * Fix conceivable UAF of the bufferevent in evhttp_connection_free()
  * Fix evhttp_connection_get_addr() fox incomming http connections
  * fix leaks in evhttp_uriencode()
  * CONNECT method only takes an authority
  * Allow bodies for GET/DELETE/OPTIONS/CONNECT
  * Do not crash when evhttp_send_reply_start() is called after a timeout.
  * Fix crashing http server when callback do not reply in place
  * fix handling of close_notify (ssl) in http with openssl bufferevents
  * use *_new_with_arg() to match function prototype
  * avoid NULL dereference on request is not EVHTTP_REQ_POST
  * bufferevent_socket_connect{,_hostname}() missing event callback and use
    ret code
  * don't fail be_null_filter if bytes are copied
  * Call underlying bev ctrl GET_FD on filtered bufferevents
  * be_openssl: avoid leaking of SSL structure
  * Add missing includes into openssl-compat.h
  * Explicitly call SSL_clear when reseting the fd.
  * sample/https-client: use host SSL certificate store by default
  * ipv6only socket bind support
  * evdns: handle NULL filename explicitly
  * Fix assert() condition in evbuffer_drain() for IOCP
  * fix incorrect unlock of the buffer mutex (for deferred callbacks)
  * Fix wrong assert in evbuffer_drain()
  * Port `event_rpcgen.py` and `test/check-dumpevents.py` to Python 3.
- rename python2-shebang.patch -> python3-shebang.patch following port
* Tue Jul 10 2018 mrostecki@suse.com
- Make use of %%license macro
* Tue Jun 12 2018 mrostecki@suse.com
- Add devel-static package, which is needed for building Envoy
  (https://www.envoyproxy.io/) and Cilium with Envoy integration
- Fix an error about /usr/bin/env shebang in event_rpcgen.py
  * python2-shebang.patch
* Mon Oct  2 2017 jengelh@inai.de
- Trim description of secondary packages and SRPM.
  Rectify RPM group.
* Mon Oct  2 2017 dimstar@opensuse.org
- Add baselibs.conf: build libevent-2_1-8-32bit (needed by
  libqt5-qtwebengine).
* Mon Feb 20 2017 ddiss@suse.com
- Update to 2.1.8 stable
  * Fix _FILE_OFFSET_BITS redefinition
  * evutil_time: include <unistd.h> when there is only sleep()/usleep()
  * test/dns: run async resolving after sync one (to avoid timeouts)
  * test/http: turn off some tests that based on backlog filling
  * Fix incorrect MIME type
- Add libevent-2.1.8-stable.tar.gz.asc tarball GPG signature
  * Replace keyring with Azat Khuzhin's public key
* Fri Nov 25 2016 ddiss@suse.com
- Update to 2.1.7 rc
  * Fix cmake -DEVENT__COVERAGE=ON
  * use ev_uint16_t instead of unsigned short for port
  * poll: Prevent libevent from spinning if POLLNVAL occurs
  * Make it build using OpenSSL 1.1.0
  * Don't call BIO_number_{read|written} on NULL BIOs.
  * Switch from a 512 to 2048-bit RSA key.
  * Ignore temporary configure files
* Wed Jul  6 2016 ddiss@suse.com
- Fix pkg-config/pkgconfig BuildRequires for Fedora.
* Sat Mar 14 2015 mpluskal@suse.com
- Cleanup spec file with spec-cleaner
- Add gpg signature
- Enable tests that do not require network connection
* Sun Feb 22 2015 benoit.monin@gmx.fr
- update to 2.0.22:
  * Avoid integer overflow bugs in evbuffer_add() and related
    functions. See CVE-2014-6272 advisory for more information
  * fix #73 and fix http_connection_fail_test to catch it
  * Avoid racy bufferevent activation
  * Fix compilation with WIN32_HAVE_CONDITION_VARIABLES enabled
  * Fix missing AC_PROG_SED on older Autoconfs
  * Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
  * Use AC_CONFIG_HEADERS in place of AM_CONFIG_HEADERS for
    autmake 1.13 compat
  * Rename configure.in to configure.ac to appease newer autoconfs
  * Avoid using top_srcdir in TESTS: new automakes do not like this
  * Use windows vsnprintf fixup logic on all windows environments
  * Fix a compiler warning when checking for arc4random_buf linker
    breakage
  * Fix another arc4random_buf-related warning
  * Add -Qunused-arguments for clang on macos
  * Avoid leaking fds on evconnlistener with no callback set
  * Avoid double-close on getsockname error in
    evutil_ersatz_socketpair
  * Fix a locking error in bufferevent_socket_get_dns_error
  * libevent/win32_dealloc() : fix sizeof(pointer) vs
    sizeof(*pointer)
  * bufferevent_pair: don't call downcast(NULL)
  * Consistently check for failure from evbuffer_pullup()
  * Fix race caused by event_active
  * Avoid redundant invocations of init_extension_functions for
    IOCP
  * Typo fixes from Linus Nordberg
  * Add a few files created by "make verify" to .gitignore
  * regress_buffer: fix 'memcmp' compare size
  * Fix bufferevent setwatermark suspend_read
  * Fix evbuffer_peek() with len==-1 and start_at non-NULL
  * Checking request nameserver for NULL, before using it
  * Fix SEGFAULT after evdns_base_resume if no nameservers
    installed
  * Fix a crash in evdns related to shutting down evdns
  * Check does arch have the epoll_create and __NR_epoll_wait
    syscalls
  * Avoid other RNG initialization FS reads when urandom file is
    specified
  * When we seed from /proc/sys/kernel/random/uuid, count it as
    success
  * Document that arc4random is not a great cryptographic PRNG
  * Add evutil_secure_rng_set_urandom_device_file
  * Really remove RNG seeds from the stack
  * Fix a mistake in evbuffer_remove() arguments in example http
    server code
  * Fix a typo in a comment in buffer.h
  * Clarify event_base_loop exit conditions
  * Use FindClose for handle from FindFirstFile in http-server.c
  * Fix a typo in a doxygen comment
- update source URL
* Fri Jan  9 2015 ddiss@suse.com
- Update to 2.1.5 beta
  * Avoid integer overflow bugs in evbuffer_add() and related
    functions.  See CVE-2014-6272 advisory for more information.
  * Provide support for SO_REUSEPORT through LEV_OPT_REUSABLE_PORT
  * Fix use-after-free error in EV_CLOSURE_EVENT callback
  * Fix race caused by event_active
  * Fix evbuffer_peek() with len==-1 and start_at non-NULL.
  * Consistently check for failure from evbuffer_pullup()
  * Fix evbuffer_peek() with len==-1 and start_at non-NULL.
  * be async: avoid double close()
  * Avoid double free for filterevents that use BEV_OPT_CLOSE_ON_FREE
  * fix bufferevent setwatermark suspend_read
  * bufferevent_openssl: reset fd_is_set when setfd with -1 is called
  * Add evhttp_connection_set_family() to set addrinfo->family for
    DNS requests
  * Implement interface that provides the ability to have an outbound
    evhttp_connection free itself once all requests have completed
  * Implement new/free for struct evutil_monotonic_timer and export
    monotonic time functions
  * Fix a crash in evdns related to shutting down evdns
  * evdns: avoid read-after-free in evdns_request_timeout_callback()
  * Correctly handle allocation failures in evdns_getaddrinfo
  * evdns: fix EVDNS_BASE_DISABLE_WHEN_INACTIVE in case
    retransmit/retry
  * evdns: add retry/reissue tests for
    EVDNS_BASE_DISABLE_WHEN_INACTIVE
  * evdns: fail ns after we are failing/retrasmitting request
  * http: reset connection before installing retry timer (fix http
    retries handling)
  * regress_dns: fix leaks in getaddrinfo_async{,_cancel_stress}
    tests
  * use correct tt macro for pointer compare
  * regress_buffer: fix 'memcmp' compare size
  * Use a more precise calculation for max in time-ratelim.c
  * Make a buffer larger in the tests to avoid a scary
    evbuffer_copyout_from()
  * Make http-server.c output into good html5
  * Use FindClose for handle from FindFirstFile in http-server.c
  * https-client: add -retries argument, for connection retries
  * Fix mixed declarations and code (forbidden by ISO C90)
  * tree.h: drop duplicated content of tree.h
  * evdns: disable probing with EVDNS_BASE_DISABLE_WHEN_INACTIVE
  * Change return type of evutil_load_windows_system_library_ to
    HMODULE
* Tue Oct 21 2014 ddiss@suse.com
- Fix build on non-SUSE rpm based platforms.
* Tue Oct 21 2014 ddiss@suse.com
- Update to 2.1.4 alpha
  * Added event_base_get_num_events()
  * New event_base_active_by_fd API
  * Add event_base_active_by_signal by analogy
  * Add access to max event count stats
  * Implemented EV_CLOSED event for epoll backend
    (EPOLLRDHUP).
  * Add evutil_secure_rng_set_urandom_device_file
  * Add function to fetch underlying ratelimit cfg
  * Pass and return const for bufferevent_get_token_bucket_cfg
  * Add watermark introspection
  * Add an option to trigger bufferevent I/O callbacks
  * Add an option to trigger bufferevent event callbacks
  * Add evhttp_connection_get_server()
  * add a http default content type option
  * http: implement new evhttp_connection_get_addr() api.
  * Add a variant of evhttp_send_reply_chunk() with a callback on
    evhttp_write_buffer()
  * Allow registering callback for parsing HTTP headers
  * Provide on request complete callback facility
  * evhttp_request_set_on_complete_cb to be more specific about what
    the function actually does and usage
  * bug fix for issues #293 evdns_base_load_hosts doesn't remove
    outdated addresses
  * Don't segfault on no found event backend.
  * Change the BSD license from 4 to 3-clause.
  * Minimum required python version is 2.4.
  * Added EVENT__ENABLE_GCC_WARNINGS, turns all warnings into
    errors.
  * Some work on making it possible to simply do add_subdirectory() on
    the project.
  * Rename event_extras to event_extra
  * If evsel->del() fails, don't leave the evmap in an inconsistent
    state
  * Move event_debug_note_teardown_ before mm_free.
  * Check CLOCK_MONOTONIC_* at runtime if needed.
  * Fix reinit of fds with EV_WRITE but not EV_READ.
  * Tweaked callbacks to prevent race condition
    (https://github.com/libevent/libevent/issues/104)
  * Move assert(ev) to before we use ev in EV_CLOSURE_EVENT_FINALIZE
    case
  * Fix a double close() bug in evhttp when the underlying bufferevent uses
    BEV_OPT_CLOSE_ON_FREE.
  * Avoid racy bufferevent activation
  * When we seed from /proc/sys/kernel/random/uuid, count it as success
  * Avoid other RNG initialization FS reads when urandom file is
    specified
  * Really remove RNG seeds from the stack
  * Initialize async bufferevent timeout CBs unconditionally
  * Checking request nameserver for NULL, before using it.
  * Fix SEGFAULT after evdns_base_resume if no nameservers
    installed.
  * Actually use the log facility for reporting evdns problems.
  * Fix SEGFAULT after evdns_base_resume if no nameservers
    installed.
  * fix for ServFail from RIPE Atlas release
  * Missed lock acquire/release in event_base_cancel_single_callback_()
  * Fix locking in bufferevent_get_options_().
  * Avoid leaking segment mappings when offset is not a page multiple
  * Add tests for evdns_base_resume().
  * Avoid redundant syscall to make a nonblocking socket nonblocking
  * Avoid redundant syscall if making a socket cloexec twice
  * Avoid redundant invocations of init_extension_functions for IOCP
  * le-proxy: Fail more gracefully if opening listener fails
  * http-server: drop uri_root from base_url in http-server.
  * https-client: POST supported, args supported
  * https-client: Set hostname for SNI extension
- Update to 2.1.3 alpha
  * Implement event_finalize() and related functions to avoid certain
    deadlocks
  * Use finalization feature so bufferevents can avoid deadlocks
  * Always run pending finalizers when event_base_free() is called
  * Remove bufferevent_del_generic_timeout_cbs as now unused
  * More documentation for finalization feature
  * Make the event_finalize* functions return an error code
  * Mark the finalize stuff as experiemental in case it needs to
    change
  * evdns: New flag to make evdns not prevent the event loop from
    exiting
  * Make event_remove_timer behave correctly with persistent timers
  * Unit test for event_remove_timer with EV_PERSIST.
  * Double-check next timeout when adding events
  * event_base_update_cache_time should be a no-op if the loop isn't
    running
  * Avoid leaking fds on evconnlistener with no callback set
  * Avoid double-close on getsockname error in evutil_ersatz_socketpair
  * Fix a locking error in bufferevent_socket_get_dns_error.
  * Fix a mistake in evbuffer_remove() arguments in example http server code
  * When EWOULDBLOCK is not EAGAIN, treat it as equivalent to it
  * Fix ipv6 support for http. When URL contain domain, not IP
    address.
  * uri decode: fix for warning "use of uninitialised value"
  * uri decode: changed the test for the existence of the next character
  * Add new error_cb for actual reporting of HTTP request errors.
  * Add test for EVREQ_HTTP_REQUEST_CANCEL into http_cancel_test()
  * Drop extra header http_struct.h from regress_http.c
  * https-client was putting newlines at 256-byte boundaries
  * better handling of OpenSSL errors
  * use Debian's default root certificate location
  * use iSECPartners code to validate hostname in certificate
  * pull in wildcard matching code from cURL
- Update to 2.1.2 alpha
  * Replace pipe-based notification with EVFILT_USER where possible.
  * Make th_base_lock nonrecursive.
  * New event_get_priority() function to return an event's priority
  * Add a bufferevent_get_priority() function
  * Add an event_base_loopcontinue() to tell Libevent to rescan for more
    events right away
  * Add a new callback to get called on evbuffer_file_segment free
  * Expose event_base_foreach_event() as a public API.
  * Add an event_remove_timer() to remove timer on an event without
    deleting it
  * Make bufferevent_set_timeouts(bev, NULL, NULL) have plausible
    semantics
  * Rename event_enable_lock_debuging() to ..._debugging(). (The old name
    should still work.)
  * Add missing implementation for event_enable_debug_logging
  * Do not track use_monotonic field when is no monotonic clock
  * EVENT_BASE_FLAG_PRECISE_TIMER indicates we want fine timer precision
  * On Linux, use CLOCK_MONOTONIC_COARSE by default
  * Refactor monotonic timer handling into a new type and set of
    functions; add a gettimeofday-based ratcheting implementation
  * Add EVENT_PRECISE_TIMER environment var for selecting precise-but-slow
    timer
  * Avoid giving a spurious warning when timerfd support is unavailable
  * Free dangling event_once objects on event_base_free()
  * Avoid (unlikely) overflow in bench_httpclient.c
  * Change evutil_weakrand_() to avoid platform random()
  * Refactor the callback part of an event into its own event_callback
    type
  * Add "active later" event_callbacks to supersede deferred
  * event_base_assert_ok: check value of event_active_count for
    correctness
  * Replace deferred_cbs with event_callback-based implementation.
  * Restore our priority-inversion-prevention code with deferreds
  * Refactor event_persist_closure: raise and extract some common logic
  * Remove the unused bits from EVLIST_ALL
  * ignore LWS after field-content in headers
  * Remove trailing tabs in HTTP headers as well.
  * Remove internal ws from multiline http headers correctly
  * add evhttp_request_get_response_code_line
  * Use EVUTIL_SOCKET_ERROR() wrapper to save/restore errno in
    evhttp_connection_fail_
  * preserve errno in evhttp_connection_fail_ for inspection by the
    callback
  * Correctly handle running on a system where accept4 doesn't work.
  * Avoid double-free on error in evbuffer_add_file.
  * Fix another possible uninitialized read in dns regression tests.
  * Prevent reference leak of bufferevent if getaddrinfo fails.
  * Make event_base_getnpriorities work with old "implicit base" code
  * Fix event_dlist definition when sys/queue not included
- Update to 2.1.1 alpha
  * Replace several TAILQ users with LIST. LIST can be a little faster than
    TAILQ for cases where we don't need queue-like behavior.
  * Disabled code to optimize the case where we reinsert an existing
    timeout
  * Remove a needless base-notify when rescheduling the first timeout
  * Save a needless comparison when removing/adjusting timeouts
  * Possible optimization: split event_queue_insert/remove into
    separate functions.
  * Make event_count maintenance branchless at the expense of an
    extra shift.
  * Optimization in event_process_active(): ignore maxcb & endtime
    for highest priority events.
  * Bypass event_add when using event_base_once() for a 0-sec timeout
  * Remove the eventqueue list and the ev_next pointers.
  * Roughly 20%% speed increase when line-draining a buffer using
    EVBUFFER_EOL_CRLF
  * Infrastructure for using faster/fewer syscalls when creating
    sockets
  * Minimize syscalls during socket creation in listener.c
  * Use a wrapper function to create the notification
    pipe/socketpair/eventfd
  * Use pipes for telling signals to main thread when possible
  * Save syscalls when constructing listener sockets for evhttp
  * Save some syscalls when creating evdns sockets
  * Save some syscalls when constructing a socket for a bufferevent
  * Prefer epoll_create1 on Linux where available
  * Use current event set rather than current pending change when
    deciding whether to no-op a del
  * evport: use evmap_io to track fdinfo status. Should save time and
    RAM.
  * evport: Remove a linear search over recent events when
    reactivating them
  * evport: Use portev_user to remember fdinfo struct
  * evport: don't scan more events in ed_pending than needed
  * evport: Remove artificial low limit on max events per getn call
  * Reenable main/many_events_slow_add for evport in 2.1
  * Add event_enable_debug_logging() to control use of debug logs
  * Add event_config function to limit time/callbacks between calls
    to dispatch
  * New EVLOOP_NO_EXIT_ON_EMPTY option to keep looping even when no
    events are pending
  * Add event_base_get_npriorities() function.
  * Make evbase_priority_init() and evbase_get_npriorities()
    threadsafe
  * New event_base_update_cache_time() to set cached_tv to current
    time
  * Add event_self_cbarg() to be used in conjunction with
    event_new().
  * Add a new libevent_global_shutdown() to free all globals before
    exiting.
  * Use getifaddrs to detect our interfaces if possible
  * Add event_base_get_running_event() to get the event* whose cb we
    are in
  * Add evbuffer_add_file_segment() so one fd can be used efficiently
    in more than one evbuffer_add_file at a time
  * Allow evbuffer_ptr_set to yield a point just after the end of the
    buffer.
  * Allow evbuffer_ptr to point to position 0 in an empty evbuffer
  * Set the special "not found" evbuffer_ptr consistently.
  * support adding buffers to other buffers non-destructively
  * prevent nested multicast references, reworked locking
  * New EVBUFFER_EOL_NUL to read NUL-terminated strings from an
    evbuffer
  * Make evbuffer_file_segment_types adaptable
  * Added evbuffer_add_iovec and unit tests.
  * Add evbuffer_copyout_from to copy data from the middle of a
    buffer
  * Allow users to set allow_dirty_shutdown
  * Add a bufferevent_getcb() to find a bufferevent's current
    callbacks
  * bufferevent: Add functions to set/get max_single_read/write
    values.
  * bev_ssl: Be more specific in event callbacks. evhttp in particular gets
    confused without at least one of BEV_EVENT_{READING|WRITING}.
  * Support TCP_DEFER_ACCEPT sockopts for listeners
  * Allow evconnlistener to be created in disabled state.
  * The LEV_OPT_CLOSE_ON_EXEC flag now applies to accepted listener
    sockets too
  * Add evhttp callback for bufferevent creation; this lets evhttp
    support SSL.
  * evhttp: Add evhttp_foreach_bound_socket.
  * Provide the autoconf m4 macros for the new OpenSSL via pkg-config
    stuff.
  * Move libevent 1.x headers to include/, to put all public headers in
    a new place.
  * Add a magic number to debug_locks to better catch lock-coding
    errors.
  * munge the debug_lock signature before freeing it: it might help us
    catch use-after-free
  * Tweaks to return types with end-of-buf ptrs
  * New evhttp function to adjust initial retry timeout
  * event_rpcgen.py now prints status information to stdout and errors to
    stderr.
  * Restore fast-path event_reinit() for slower backends
  * Check changelist as part of checking representational integrity
  * Convert event-config.h macros to avoid reserved identifiers
  * Convert include-guard macro convention to avoid reserved identifiers
  * Make event_rpcgen.py output conform to identifier conventions
  * Apply the naming convention to our EVUTIL_IS* functions
  * Do not use system EAI/AI values if we are not using the system
    getaddrinfo.
* Sat Jun 29 2013 i@marguerite.su
- update to 2.0.21
  * see ChangeLog for details.
* Fri Nov 16 2012 andreas.stieger@gmx.de
- update to 2.0.20
  * core: Make event_pending() threadsafe
  * evhttp: Fix a memory leak on error in evhttp_uriencode
  * evbuffer: Avoid possible needless call to writev
  * evdns: memset sockaddr_in before using it
  * evhttp: Check more setsockopt return values when binding sockets
  * evdns: Avoid segfault on weird timeout during name lookup
  * bufferevent_ssl: Correctly invoke callbacks when a SSL
    bufferevent reads some and then blocks
* Mon Jul 30 2012 crrodriguez@opensuse.org
- Libevent 2.0.19
  * Fix periodic timeout behavior when time jumps forwar
  * Avoid certain priority inversions
  * More evdns improvements
  * lots of other bugfixes, see NEWS for details.
- Provide openssl support.
* Wed Feb  1 2012 jengelh@medozas.de
- Remove redundant tags/sections per specfile guideline suggestions
- Use "pkgconfig" BR so that the package also works on Redhats.
* Wed Aug  3 2011 friseer@gmx.de
- spec mods
  o libsoname macro
  o name macro
- added baselibs.conf
- rpmlint
  o fix self obsoletes
* Tue Mar 22 2011 dimstar@opensuse.org
- Drop autoreconf call from build section. We do not carry any
  patches at this time.
* Mon Mar 21 2011 dimstar@opensuse.org
- Update to version 2.0.10:
  + Bugfixes:
  - Minor fix for IOCP shutdown handling fix
  - Correctly notify the main thread when activating an event
    from a subthread
  - Reject overlong http requests early when Expect:100-continue
    is set
  - EVUTIL_ASSERT: Use sizeof() to avoid "unused variable"
    warnings with -DNDEBUG.
  + Code cleanups:
  - bufferevent-internal.h: Use the new event2/util.h header,
    not evutil.h
  - Use relative includes instead of system includes consistently
  - Make whitespace more consistent
- For all changes between 1.4.14 and 2.0.10, see ChangeLog.
- BuildRequire pkg-config, for proper pkgconfig() provides.
- Change library soname to libevent-2_0-5
* Mon Jun 21 2010 alexandre@exatati.com.br
- Spec file cleaned with spec-cleaner;
- Changes in 1.4.14b-stable
  o Set the VERSION_INFO correctly for 1.4.14
- Changes in 1.4.14-stable
  o Add a .gitignore file for the 1.4 branch. (d014edb)
  o Backport evbuffer_readln(). (b04cc60 Nicholas Marriott)
  o Make the evbuffer_readln backport follow the current API (c545485)
  o Valgrind fix: Clear struct kevent before checking for OSX bug. (5713d5d William Ahern)
  o Fix a crash when reading badly formatted resolve.conf (5b10d00 Yasuoka Masahiko)
  o Fix memory-leak of signal handler array with kqueue. [backport] (01f3775)
  o Update sample/signal-test.c to use newer APIs and not leak. (891765c Evan Jones)
  o Correct all versions in 1.4 branch (ac0d213)
  o Make evutil_make_socket_nonblocking() leave any other flags alone. (81c26ba Jardel Weyrich)
  o Adjusted fcntl() retval comparison on evutil_make_socket_nonblocking(). (5f2e250 Jardel Weyrich)
  o Correct a debug message in evhttp_parse_request_line (35df59e)
  o Merge branch 'readln-backport' into patches-1.4 (8771d5b)
  o Do not send an HTTP error when we've already closed or responded. (4fd2dd9 Pavel Plesov)
  o Re-add event_siglcb; some old code _was_ still using it. :( (bd03d06)
  o Make Libevent 1.4 build on win32 with Unicode enabled. (bce58d6 Brodie Thiesfield)
  o Distribute nmake makefile for 1.4 (20d706d)
  o do not fail while sending on http connections the client closed. (5c8b446)
  o make evhttp_send() safe against terminated connections, too (01ea0c5)
  o Fix a free(NULL) in min_heap.h (2458934)
  o Fix memory leak when setting up priorities; reported by Alexander Drozdov (cb1a722)
  o Clean up properly when adding a signal handler fails. (ae6ece0 Gilad Benjamini)
  o Do not abort HTTP requests missing a reason string. (29d7b32 Pierre Phaneuf)
  o Fix compile warning in http.c (906d573)
  o Define _REENTRANT as needed on Solaris, elsewhere (6cbea13)
- Changes in 1.4.13-stable:
  o If the kernel tells us that there are a negative number of bytes to read from a socket, do not believe it.  Fixes bug 2841177; found by Alexander Pronchenkov.
  o Do not allocate the maximum event queue and fd array for the epoll backend at startup.  Instead, start out accepting 32 events at a time, and double the queue's size when it seems that the OS is generating events faster than we're requesting them.  Saves up to 512K per epoll-based event_base.  Resolves bug 2839240.
  o Fix compilation on Android, which forgot to define fd_mask in its sys/select.h
  o Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
  o Rename our replacement compat/sys/_time.h header to avoid build a conflict on HPUX; reported by Kathryn Hogg.
  o Build kqueue.c correctly on GNU/kFreeBSD platforms. Patch pulled upstream from Debian.
  o Fix a problem with excessive memory allocation when using multiple event priorities.
  o When running set[ug]id, don't check the environment. Based on a patch from OpenBSD.
* Wed Oct 28 2009 crrodriguez@opensuse.org
- libevent-devel Requires glibc-devel
* Thu Aug 27 2009 meissner@suse.de
- Changes in 1.4.12-stable:
  o Try to contain degree of failure when running on a win32 version so
  heavily firewalled that we can't fake a socketpair.
  o Fix an obscure timing-dependent, allocator-dependent crash in the evdns code.
  o Use __VA_ARGS__ syntax for varargs macros in event_rpcgen when compiler
  is not GCC.
  o Activate fd events in a pseudorandom order with O(N) backends, so
  that we don't systematically favor low fds (select) or earlier-added fds
  (poll, win32).
  o Fix another pair of fencepost bugs in epoll.c.  [Patch from Adam Langley.]
  o Do not break evdns connections to nameservers when our IP changes.
  o Set truncated flag correctly in evdns server replies.
  o Disable strict aliasing with GCC: our code is not compliant with it.
- Changes in 1.4.11-stable:
  o Fix a bug when removing a timeout from the heap. [Patch from Marko Kreen]
  o Remove the limit on size of HTTP headers by removing static buffers.
  o Fix a nasty dangling pointer bug in epoll.c that could occur after
  epoll_recalc(). [Patch from Kevin Springborn]
  o Distribute Win32-Code/event-config.h, not ./event-config.h
- Changes in 1.4.10-stable:
  o clean up buffered http connection data on reset; reported by Brian O'Kelley
  o bug fix and potential race condition in signal handling; from Alexander Drozdov
  o rename the Solaris event ports backend to evport
  o support compilation on Haiku
  o fix signal processing when a signal callback delivers a signal; from Alexander Drozdov
  o const-ify some arguments to evdns functions.
  o off-by-one error in epoll_recalc; reported by Victor Goya
  o include Doxyfile in tar ball; from Jeff Garzik
  o correctly parse queries with encoded \r, \n or + characters
* Mon Mar 16 2009 meissner@suse.de
- updated to 1.4.9-stable:
  o event_add would not return error for some backends; from Dean McNamee
  o Clear the timer cache on entering the event loop; reported by Victor Chang
  o Only bind the socket on connect when a local address has been provided;
  reported by Alejo Sanchez
  o Allow setting of local port for evhttp connections to support millions
  of connections from a single system; from Richard J ones.
  o Clear the timer cache when leaving the event loop; reported by Robin Haberkorn
  o Fix a typo in setting the global event base; reported by lance.
  o Fix a memory leak when reading multi-line headers
  o Fix a memory leak by not running explicit close detection for server connections
- updated to 1.4.8-stable:
  o Match the query in DNS replies to the query in the request; from Vsevolod Stakhov.
  o Fix a merge problem in which name_from_addr returned pointers to the stack; found by Jiang Hong.
  o Do not remove Accept-Encoding header
- updated to 1.4.7-stable:
  o Fix a bug where headers arriving in multiple packets were not parsed; fix from Jiang Hong; test by me.
- updated to 1.4.6-stable:
  o evutil.h now includes <stdarg.h> directly
  o switch all uses of [v]snprintf over to evutil
  o Correct handling of trailing headers in chunked replies; from Scott Lamb.
  o Support multi-line HTTP headers; based on a patch from Moshe Litvin
  o Reject negative Content-Length headers; anonymous bug report
  o Detect CLOCK_MONOTONIC at runtime for evdns; anonymous bug report
  o Fix a bug where deleting signals with the kqueue backend would cause subsequent adds to fail
  o Support multiple events listening on the same signal; make signals
  regular events that go on the same event queue; problem
  report by Alexander Drozdov.
  o Deal with evbuffer_read() returning -1 on EINTR|EAGAIN; from Adam Langley.
  o Fix a bug in which the DNS server would incorrectly set the type of a cname reply to a.
  o Fix a bug where setting the timeout on a bufferevent would take not effect if the event was already pending.
  o Fix a memory leak when using signals for some event bases; reported by Alexander Drozdov.
  o Add libevent.vcproj file to distribution to help with Windows build.
  o Fix a problem with epoll() and reinit; problem report by Alexander Drozdov.
  o Fix off-by-one errors in devpoll; from Ian Bell
  o Make event_add not change any state if it fails; reported by Ian Bell.
  o Do not warn on accept when errno is either EAGAIN or EINTR
* Tue Sep 16 2008 mrueckert@suse.de
- split out devel and shared library package.
- drop static libs
* Thu Jul  3 2008 meissner@suse.de
- upgraded to version 1.4.5-stable:
  o Fix connection keep-alive behavior for HTTP/1.0
  o Fix use of freed memory in event_reinit; pointed out by Peter Postma
  o Constify struct timeval * where possible; pointed out by Forest
  Wilkinson
  o allow min_heap_erase to be called on removed members; from liusifan.
  o Rename INPUT and OUTPUT to EVRPC_INPUT and EVRPC_OUTPUT.  Retain
  INPUT/OUTPUT aliases on on-win32 platforms for backwards compatibility.
  o Do not use SO_REUSEADDR when connecting
  o Fix Windows build
  o Fix a bug in event_rpcgen when generated fixed-sized entries
- upgraded to version 1.4.4-stable:
  o Correct the documentation on buffer printf functions.
  o Don't warn on unimplemented epoll_create(): this isn't a problem,
  just a reason to fall back to poll or select.
  o Correctly handle timeouts larger than 35 minutes on Linux with epoll.c.
  This is probably a kernel defect, but we'll have to support old kernels
  anyway even if it gets fixed.
  o Fix a potential stack corruption bug in tagging on 64-bit CPUs.
  o expose bufferevent_setwatermark via header files and fix high watermark
  on read
  o fix a bug in bufferevent read water marks and add a test for them
  o introduce bufferevent_setcb and bufferevent_setfd to allow better
  manipulation of bufferevents
  o use libevent's internal timercmp on all platforms, to avoid bugs on
  old platforms where timercmp(a,b,<=) is buggy.
  o reduce system calls for getting current time by caching it.
  o fix evhttp_bind_socket() so that multiple sockets can be bound by
  the same http server.
  o Build test directory correctly with CPPFLAGS set.
  o Fix build under Visual C++ 2005.
  o Expose evhttp_accept_socket() API.
  o Merge windows gettimeofday() replacement into a new
  evutil_gettimeofday() function.
  o Fix autoconf script behavior on IRIX.
  o Make sure winsock2.h include always comes before windows.h include.
* Tue Apr  8 2008 meissner@suse.de
- upgraded to version 1.4.3stable
  * include Content-Length in reply for HTTP/1.0 requests with keep-alive
  * Patch from Tani Hosokawa: make some functions in http.c threadsafe.
  * Do not free the kqop file descriptor in other processes, also allow it to be 0; from Andrei Nigmatulin
  * make event_rpcgen.py generate code include event-config.h; reported by Sam Banks.
  * make event methods static so that they are not exported; from Andrei Nigmatulin
  * make RPC replies use application/octet-stream as mime type
  * do not delete uninitialized timeout event in evdns
* Fri Mar 28 2008 meissner@suse.de
- upgraded to version 1.4.2rc
  * make Solaris event subsystems more reliable; from W.C.A. Wijngaards
  * event_base_get_method(); from Springande Ulv
  * fix HTTP/1.1 chunk formatting; from "propanbutan"
  * allow 64-bit content lengths; from Scott Lamb
  * and more...
- upgraded to version 1.4.1beta
  * fixed some memory leaks and other misc cleanup; from Christopher Layne, Scott Lamb and Charles Kerr
  * introduced event_reinit to deal with fork()
  * improved efficiency of generated RPC structure
  * performance improvements to Win32 backend
  * and many more...
- upgraded to version 1.4.0beta
  * a new RPC subsytem for writing distributed clients and servers
  * almost everything is documented via Doxygen now
  * many fixes and improvements to evdns and evhttp
  * libevent now builds two additional libraries: libevent_core (containing only the event core) and libevent_extras (contained evdns, evhttp and evrpc)
  * performance improvements due to using a heap instead of red-black trees for timeouts
  * Solaris' event ports are better supported
* Thu Dec 27 2007 crrodriguez@suse.de
- fix library-without-ldconfig-* errors
- version 1.3e
  * Add a "Date" header to HTTP responses when it's missing, as required by HTTP 1.1. Original Patch from Ralph Moritz.
  * Fix a memory leak in which failed HTTP connections whould not free the request object.
  * Fix a memory leak in the DNS server.
  * Handle NULL timeouts correctly on Solaris; from Trond Norbye
  * Recalculate pending events properly when reallocating event array on Solaris; from Trond Norbye
* Mon Mar  5 2007 meissner@suse.de
- upgraded to 1.3b:
  + signals now useable in multithreaded apps.
* Tue Feb 20 2007 meissner@suse.de
- Updated to 1.3a.
  + Small bug and performances fixes to evhttp layer.
  + DNS Server from Adam Langley and Nick Mathewson
  + Chunked transfer encoding for HTTP/1.1 from Dug Song.
  + DNS DDoS fix; bug report from Jon Oberheide.
  + Various small improvements.
* Sun Nov 12 2006 lmuelle@suse.de
- Update to version 1.2.
  + Support for non-blocking DNS resolution.
  + Support for lightweight HTTP clients and servers.
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Mon May 30 2005 okir@suse.de
- Initial packaging