File libev.spec of Package libev

#
# spec file for package libev
#
# Copyright (c) 2015 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 http://bugs.opensuse.org/
#


%if 0%{?mandriva_version:1}
%define __libtoolize    /bin/true
%endif
%if %{defined _project}
# define if building on openSUSE build service
%global build_on_obs       1
%else
%define _project           local
%global build_on_obs       0
%endif

Name:           libev
Version:        4.22
Release:        2.1
#
Summary:        A full-featured and high-performance event loop library
License:        BSD-2-Clause
Group:          Development/Libraries/C and C++
#
Url:            http://software.schmorp.de/pkg/libev.html
Source:         http://dist.schmorp.de/%{name}/%{name}-%{version}.tar.gz
# Upstream has received patches to add pkg-config support for years but it always ignored them (yes, no answer at all). But since every distribution creates it we just follow.
Source1:        libev.pc
Source99:       baselibs.conf
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch0:         libev-4.15_compiler_warnings.patch
#
%if %{defined centos_version}
BuildRequires: chkconfig
%endif
BuildRequires:  pkgconfig
#
#
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
A full-featured and high-performance event loop that is loosely modelled after
libevent, but without its limitations and bugs. It is used, among others, in
the GNU Virtual Private Ethernet and rxvt-unicode packages.

%define library_name libev4
%package -n %{library_name}
#
Summary:        A full-featured and high-performance event loop library
Group:          Development/Libraries/C and C++

%description -n %{library_name}
A full-featured and high-performance event loop that is loosely modelled after
libevent, but without its limitations and bugs. It is used, among others, in
the GNU Virtual Private Ethernet and rxvt-unicode packages.

This package holds the shared libraries of libev.

%package devel
#
Summary:        Development files for libev
Group:          Development/Libraries/C and C++
Requires:       %{library_name} = %{version}

%description devel
A full-featured and high-performance event loop that is loosely modelled after
libevent, but without its limitations and bugs. It is used, among others, in
the GNU Virtual Private Ethernet and rxvt-unicode packages.

This package holds the development files for libev.

%prep
%setup -q
%patch0
sed -i 's;@prefix@;%{_prefix};' %{SOURCE1}
sed -i 's;@lib_suffix@;%{_lib};' %{SOURCE1}
sed -i 's;@VERSION@;%{version};' %{SOURCE1}

%build
orig_CFLAGS=1; export orig_CFLAGS
CFLAGS="%{optflags} -fno-strict-aliasing -Wno-unused"
%configure \
	--docdir=%{_docdir} \
	--disable-static
make %{?_smp_mflags}

%check
make check

%install
%{?make_install} %{!?make_install:make install DESTDIR=%{buildroot}}

rm -v %{buildroot}%{_libdir}/libev.la
mkdir -p %{buildroot}%{_libdir}/pkgconfig
cp %{SOURCE1} %{buildroot}%{_libdir}/pkgconfig/libev.pc

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

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

%files devel
%defattr(-,root,root,-)
%doc LICENSE README ev.pod Changes
%{_includedir}/ev++.h
%{_includedir}/ev.h
%{_includedir}/event.h
%{_libdir}/libev.so
%{_mandir}/man3/ev.3*
%{_libdir}/pkgconfig/libev.pc

%files -n %{library_name}
%defattr(-,root,root,-)
%{_libdir}/libev.so.4*

%changelog
* Thu Dec 24 2015 mpluskal@suse.com
- Update to 4.22
  * when epoll detects unremovable fds in the fd set, rebuild only
    the epoll descriptor, not the signal pipe, to avoid SIGPIPE in
    ev_async_send. This doesn't solve it on fork, so document what
    needs to be done in ev_loop_fork (analyzed by Benjamin Mahler).
  * remove superfluous sys/timeb.h include on win32 (analyzed by
    Jason Madden).
  * updated libecb.
- Changes for 4.20
  * prefer noexcept over throw () with C++ 11.
  * update ecb.h due to incompatibilities with c11.
  * fix a potential aliasing issue when reading and writing
    watcher callbacks.
- Refresh libev-4.15_compiler_warnings.patch
* Wed Jul 29 2015 dimstar@opensuse.org
- Add baselibs.conf: build libev4-32bit, as needed by
  libverto-libev1-32bit.
* Wed Jan 14 2015 sweet_f_a@gmx.de
- update to version 4.19
  * 4.19 Thu Sep 25 08:18:25 CEST 2014
  - ev.h wasn't valid C++ anymore, which tripped compilers other
    than clang, msvc or gcc (analyzed by Raphael 'kena' Poss).
    Unfortunately, C++ doesn't support typedefs for function
    pointers fully, so the affected declarations have to spell
    out the types each time.
  - when not using autoconf, tighten the check for clock_gettime
    and related functionality.
  * 4.18 Fri Sep  5 17:55:26 CEST 2014
  - events on files were not always generated properly with the
    epoll backend (testcase by Assaf Inbal).
  - mark event pipe fd as cloexec after a fork (analyzed by Sami
    Farin).
  - (ecb) support m68k, m88k and sh (patch by Miod Vallat).
  - use a reasonable fallback for EV_NSIG instead of erroring out
    when we can't detect the signal set size.
  - in the absence of autoconf, do not use the clock syscall
    on glibc >= 2.17 (avoids the syscall AND -lrt on systems
    doing clock_gettime in userspace).
  - ensure extern "C" function pointers are used for
    externally-visible loop callbacks (not watcher callbacks yet)
  - (ecb) work around memory barriers and volatile apparently
    both being broken in visual studio 2008 and later (analysed
    and patch by Nicolas Noble).
* Thu Apr 11 2013 sweet_f_a@gmx.de
- update to version 4.15
  - destroying a non-default loop would stop the global waitpid
    watcher (Denis Bilenko).
  - queueing pending watchers of higher priority from a watcher now invokes
    them in a timely fashion (reported by Denis Bilenko).
  - add throw() to all libev functions that cannot throw exceptions, for
    further code size decrease when compiling for C++.
  - add throw () to callbacks that must not throw exceptions (allocator,
    syserr, loop acquire/release, periodic reschedule cbs).
  - fix event_base_loop return code, add event_get_callback, event_base_new,
    event_base_get_method calls to improve libevent 1.x emulation and add
    some libevent 2.x functionality (based on a patch by Jeff Davey).
  - add more memory fences to fix a bug reported by Jeff Davey. Better
    be overfenced than underprotected.
  - ev_run now returns a boolean status (true meaning watchers are
    still active).
  - ev_once: undef EV_ERROR in ev_kqueue.c, to avoid clashing with
    libev's EV_ERROR (reported by 191919).
  - (ecb) add memory fence support for xlC (Darin McBride).
  - (ecb) add memory fence support for gcc-mips (Anton Kirilov).
  - (ecb) add memory fence support for gcc-alpha (Christian Weisgerber).
  - work around some kernels losing file descriptors by leaking
    the kqueue descriptor in the child.
  - work around linux inotify not reporting IN_ATTRIB changes for directories
    in many cases.
  - include sys/syscall.h instead of plain syscall.h.
  - check for io watcher loops in ev_verify, check for the most
    common reported usage bug in ev_io_start.
  - choose socket vs. WSASocket at compiletime using EV_USE_WSASOCKET.
  - always use WSASend/WSARecv directly on windows, hoping that this
    works in all cases (unlike read/write/send/recv...).
  - try to detect signals around a fork faster (test program by
    Denis Bilenko).
  - work around recent glibc versions that leak memory in realloc.
  - rename ev::embed::set to ev::embed::set_embed to avoid clashing
    the watcher base set (loop) method.
  - rewrite the async/signal pipe logic to always keep a valid fd, which
    simplifies (and hopefully correctifies :) the race checking
    on fork, at the cost of one extra fd.
  - add fat, msdos, jffs2, ramfs, ntfs and btrfs to the list of
    inotify-supporting filesystems.
  - move orig_CFLAGS assignment to after AC_INIT, as newer autoconf
    versions ignore it before
    (https://bugzilla.redhat.com/show_bug.cgi?id=908096).
  - add some untested android support.
  - enum expressions must be of type int (reported by Juan Pablo L).
- rebase libev-4.15_compiler_warnings.patch
* Thu Dec 20 2012 sweet_f_a@gmx.de
- fix mandriva build
- don't use obsolete makeinstall macro
* Sat Jul  7 2012 reddwarf@opensuse.org
- update to version 4.11
  - INCOMPATIBLE CHANGE: ev_timer_again now clears the pending
    status, as was documented already, but not implemented in the
    repeating case.
  - new compiletime symbols: EV_NO_SMP and EV_NO_THREADS.
  - fix a race where the workaround against the epoll fork bugs
    caused signals to not be handled anymore.
  - correct backend_fudge for most backends, and implement a
    windows specific workaround to avoid looping because we call
    both select and Sleep, both with different time resolutions.
  - document range and guarantees of ev_sleep.
  - document reasonable ranges for periodics interval and offset.
  - rename backend_fudge to backend_mintime to avoid future
    confusion :)
  - change the default periodic reschedule function to hopefully
    be more exact and correct even in corner cases or in the far
    future.
  - do not rely on -lm anymore: use it when available but use our
    own floor () if it is missing. This should make it easier to
    embed, as no external libraries are required.
  - strategically import macros from libecb and mark rarely-used
    functions as cache-cold (saving almost 2k code size on typical
    amd64 setups).
  - add Symbols.ev and Symbols.event files, that were missing.
  - fix backend_mintime value for epoll (was 1/1024, is 1/1000 now).
  - fix #3 "be smart about timeouts" to not "deadlock" when
    timeout == now, also improve the section overall.
  - avoid "AVOIDING FINISHING BEFORE RETURNING" idiom.
  - support new EV_API_STATIC mode to make all libev symbols
    static.
  - supply default CFLAGS of -g -O3 with gcc when original CFLAGS
    were empty.
- generate .pc manually to avoid having to regenerate the patch
  (that is not accepted upstream) and autoreconf call
* Fri Dec 16 2011 stbuehler@web.de
- update to version 4.04
  - fix two problems in the native win32 backend, where reuse of fd's
    with different underlying handles caused handles not to be removed
    or added to the select set (analyzed and tested by Bert Belder).
  - do no rely on ceil() in ev_e?poll.c.
  - backport libev to HP-UX versions before 11 v3.
  - configure did not detect nanosleep and clock_gettime properly when
    they are available in the libc (as opposed to -lrt).
- update to version 4.03
  - officially support polling files with all backends.
  - support files, /dev/zero etc. the same way as select in the epoll
    backend, by generating events on our own.
  - ports backend: work around solaris bug 6874410 and many related ones
    (EINTR, maybe more), with no performance loss (note that the solaris
    bug report is actually wrong, reality is far more bizarre and broken
    than that).
  - define EV_READ/EV_WRITE as macros in event.h, as some programs use
    [#]ifdef to test for them.
  - new (experimental) function: ev_feed_signal.
  - new (to become default) EVFLAG_NOSIGMASK flag.
  - new EVBACKEND_MASK symbol.
  - updated COMMON IDIOMS SECTION.
* Fri Dec 16 2011 sweet_f_a@gmx.de
- explicit specify package group for subpackages to fix SLE build
  "error: Group field must be present in package: libev4"
- BuildRequire pkgconfig instead of pkg-config to be more compatible
* Thu Dec  8 2011 coolo@suse.com
- license seems to be BSD-2-Clause
* Sun Nov 13 2011 coolo@suse.com
- add libtool as explicit buildrequire to avoid implicit dependency from prjconf
* Sat Nov  6 2010 stbuehler@web.de
- build-require pkg-config to provide pkgconfig(libev)
- update to version 4.01
  - automake fucked it up, apparently, --add-missing -f is not quite enough
    to make it update its files, so 4.00 didn't install ev++.h and
    event.h on make install. grrr.
  - ev_loop(count|depth) didn't return anything (Robin Haberkorn).
  - change EV_UNDEF to 0xffffffff to silence some overzealous compilers.
  - use "(libev) " prefix for all libev error messages now.
* Mon Oct 25 2010 mrueckert@suse.de
- update to version 4.00
  - "PORTING FROM LIBEV 3.X TO 4.X" (in ev.pod) is recommended
    reading.
  - ev_embed_stop did not correctly stop the watcher (very good
    testcase by Vladimir Timofeev).
  - ev_run will now always update the current loop time - it
    erroneously didn't when idle watchers were active, causing
    timers not to fire.
  - fix a bug where a timeout of zero caused the timer not to fire
    in the libevent emulation (testcase by Péter Szabó).
  - applied win32 fixes by Michael Lenaghan (also James Mansion).
  - replace EV_MINIMAL by EV_FEATURES.
  - prefer EPOLL_CTL_ADD over EPOLL_CTL_MOD in some more cases, as
    it seems the former is *much* faster than the latter.
  - linux kernel version detection (for inotify bug workarounds)
    did not work properly.
  - reduce the number of spurious wake-ups with the ports backend.
  - remove dependency on sys/queue.h on freebsd (patch by Vanilla
    Hsu).
  - do async init within ev_async_start, not ev_async_set, which
    avoids an API quirk where the set function must be called in
    the C++ API even when there is nothing to set.
  - add (undocumented) EV_ENABLE when adding events with kqueue,
    this might help with OS X, which seems to need it despite
    documenting not to need it (helpfully pointed out by Tilghman
    Lesher).
  - do not use poll by default on freebsd, it's broken (what isn't
    on freebsd...).
  - allow to embed epoll on kernels >= 2.6.32.
  - configure now prepends -O3, not appends it, so one can still
    override it.
  - ev.pod: greatly expanded the portability section, added a
    porting section, a description of watcher states and made lots
    of minor fixes.
  - disable poll backend on AIX, the poll header spams the
    namespace and it's not worth working around dead platforms
    (reported and analyzed by Aivars Kalvans).
  - improve header file compatibility of the standalone eventfd
    code in an obscure case.
  - implement EV_AVOID_STDIO option.
  - do not use sscanf to parse linux version number (smaller,
    faster, no sscanf dependency).
  - new EV_CHILD_ENABLE and EV_SIGNAL_ENABLE configurable settings.
  - update libev.m4 HAVE_CLOCK_SYSCALL test for newer glibcs.
  - add section on accept() problems to the manpage.
  - rename EV_TIMEOUT to EV_TIMER.
  - rename ev_loop_count/depth/verify/loop/unloop.
  - remove ev_default_destroy and ev_default_fork.
  - switch to two-digit minor version.
  - work around an apparent gentoo compiler bug.
  - use enum instead of #define for most constants.
  - improve compatibility to older C++ compilers.
  - (experimental) ev_run/ev_default_loop/ev_break/ev_loop_new have
    now default arguments when compiled as C++.
  - ev_loop_new no longer leaks memory when loop creation failed.
  - new ev_cleanup watcher type.
- move pkgconfig file to devel package
- updated compiler warnings patch:
  old name libev-3.9_compiler_warnings.patch
  new name libev-4.00_compiler_warnings.patch
* Mon Aug 23 2010 mrueckert@suse.de
- added libev-3.9_pkg-config.patch:
  patch by stbuehler.
* Wed Jul 14 2010 mrueckert@suse.de
- update to 3.9
  for the changes see /usr/share/doc/packages/libev-devel/Changes
* Thu Feb 19 2009 mrueckert@suse.de
- update to 3.53
  for the changes see /usr/share/doc/packages/libev-devel/Changes
* Tue Sep 16 2008 mrueckert@suse.de
- update to 3.43
  for the changes see /usr/share/doc/packages/libev-devel/Changes
* Thu Feb 28 2008 mrueckert@suse.de
- update to version 3.0:
  - API/ABI bump to version 3.0.
  - ev++.h includes "ev.h" by default now, not <ev.h>.
  - slightly improved documentation.
  - speed up signal detection after a fork.
  - only optionally return trace status changed in ev_child watchers.
  - experimental (and undocumented) loop wrappers for ev++.h.
- additional changes from 2.01:
  - separate Changes file.
  - fix ev_path_set => ev_stat_set typo.
  - remove event_compat.h from the libev tarball.
  - change how include files are found.
  - doc updates.
  - update licenses, explicitly allow for GPL relicensing.
* Sun Dec 23 2007 mrueckert@suse.de
- fix license
* Sun Dec 23 2007 mrueckert@suse.de
- initial package
openSUSE Build Service is sponsored by