File tevent-man.spec of Package tevent

#
# spec file for package tevent-man
#
# 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
# 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/
#


%{!?python_sitearch:  %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
%{!?py3_soflags:  %global py3_soflags cpython-%{python3_version_nodots}m}
%if 0%{?suse_version} > 1310 || 0%{?fedora_version} > 20
%define with_python3 1
%else
%define with_python3 0
%endif

%define talloc_version 2.1.8
%define build_man 1

%if %{build_man}
Name:           tevent-man
BuildRequires:  doxygen
%else
Name:           tevent
BuildRequires:  libtalloc-devel >= %{talloc_version}
%if 0%{?suse_version} > 1020
BuildRequires:  pkg-config
%else
BuildRequires:  pkgconfig
%endif
BuildRequires:  python-devel
%if %{with_python3}
BuildRequires:  python3-devel
%endif
BuildRequires:  python-talloc-devel >= %{talloc_version}
%endif # build_man
%if 0%{?suse_version} == 0 || 0%{?suse_version} > 1140
%define	build_make_smp_mflags %{?_smp_mflags}
%else
%define	build_make_smp_mflags %{?jobs:-j%jobs}
%endif
Url:            http://tevent.samba.org/
Version:        0.9.29
Release:        0
Summary:        An event system based on the talloc memory management library
License:        GPL-3.0+
Group:          System/Libraries
Source:         http://download.samba.org/pub/tevent/tevent-%{version}.tar.gz
Source1:        http://download.samba.org/pub/tevent/tevent-%{version}.tar.asc
Source2:        tevent.keyring
Source4:        baselibs.conf
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
Tevent is an event system based on the talloc memory management library. It
is the core event system used in Samba.

The low level tevent has support for many event types, including timers,
signals, and the classic file descriptor events.

Tevent also provide helpers to deal with asynchronous code providing the
tevent_req (tevent request) functions.

%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
Group:          System/Libraries

%description -n %{libtevent_name}
Tevent is an event system based on the talloc memory management library. It
is the core event system used in Samba.

The low level tevent has support for many event types, including timers,
signals, and the classic file descriptor events.

This package contains the tevent0 library.


%package -n libtevent-devel
Summary:        Libraries and Header Files to Develop Programs with tevent0 Support
# Man pages are built in a 2nd spec file in order to break a build cycle with doxygen->cmake->krb5->libtevent
Group:          Development/Libraries/C and C++
%if 0%{?suse_version} > 1030
Recommends:     %{name}-man
%endif
Requires:       %{libtevent_name} = %{version}
Requires:       libtalloc-devel >= %{talloc_version}
%if 0%{?suse_version} > 1020
Requires:       pkg-config
%else
Requires:       pkgconfig
%endif

%description -n libtevent-devel
Tevent is an event system based on the talloc memory management library. It
is the core event system used in Samba.

The low level tevent has support for many event types, including timers,
signals, and the classic file descriptor events.

Tevent also provide helpers to deal with asynchronous code providing the
tevent_req (tevent request) functions.

This package contains libraries and header files need for development.


%package -n python-tevent
Summary:        Python bindings for the Tevent library
Group:          Development/Libraries/Python
Requires:       %{libtevent_name} = %{version}
PreReq:         /sbin/ldconfig

%description -n python-tevent
This package contains the python bindings for the Tevent library.


%if %{with_python3}
%package -n python3-tevent
Summary:        Python3 bindings for the Tevent library
Group:          Development/Libraries/Python
Requires:       %{libtevent_name} = %{version}
PreReq:         /sbin/ldconfig

%description -n python3-tevent
This package contains the python bindings for the Tevent library.
%endif

%endif # ! build_man

%prep
%setup -n tevent-%{version} -q

%build
%if ! %{build_man}
%if 0%{?suse_version} && 0%{?suse_version} < 911
	OPTIMIZATION="-O"
%else
	# use the default optimization
	unset OPTIMIZATION
%endif
export CFLAGS="${RPM_OPT_FLAGS} -D_GNU_SOURCE ${OPTIMIZATION} -D_LARGEFILE64_SOURCE -DIDMAP_RID_SUPPORT_TRUSTED_DOMAINS"
CONFIGURE_OPTIONS="\
	--prefix=%{_prefix} \
	--libdir=%{_libdir} \
	--disable-rpath \
	--disable-rpath-install \
	--disable-silent-rules \
	--bundled-libraries=NONE \
	--builtin-libraries=replace \
%if %{with_python3}
	--extra-python=/usr/bin/python3 \
%endif
"
./configure ${CONFIGURE_OPTIONS}
%{__make} %{build_make_smp_mflags} \
	all
%else

doxygen doxy.config

%endif # ! build_man

%if ! %{build_man}
%check
LD_LIBRARY_PATH=bin/shared %{__make} test
%endif # ! build_man

%install
%if ! %{build_man}
DESTDIR=${RPM_BUILD_ROOT} make install

# Shared libraries need to be marked executable for rpmbuild to strip them and
# include them in debuginfo
find ${RPM_BUILD_ROOT} -name "*.so*" -exec chmod -c +x {} \;

%else

# install API docs
mkdir -p $RPM_BUILD_ROOT/%{_mandir}
cp -a doc/man/* $RPM_BUILD_ROOT/%{_mandir}
rm $RPM_BUILD_ROOT/%{_mandir}/man3/todo.3

%endif # ! build_man

%if ! %{build_man}
%post -n %{libtevent_name} -p /sbin/ldconfig

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

%post -n python-tevent -p /sbin/ldconfig

%postun -n python-tevent -p /sbin/ldconfig

%if %{with_python3}
%post -n python3-tevent -p /sbin/ldconfig

%postun -n python3-tevent -p /sbin/ldconfig
%endif

%files -n %{libtevent_name}
%defattr(-,root,root)
%{_libdir}/libtevent.so.*

%files -n libtevent-devel
%defattr(-,root,root)
%{_includedir}/tevent.h
%{_libdir}/libtevent.so
%{_libdir}/pkgconfig/tevent.pc

%files -n python-tevent
%defattr(-,root,root)
%{python_sitearch}/tevent.py
%{python_sitearch}/_tevent.so
%if 0%{?centos_version} > 599 || 0%{?fedora_version} > 11 || 0%{?rhel_version} > 599
%{python_sitearch}/tevent.py[co]
%endif

%if %{with_python3}
%files -n python3-tevent
%defattr(-,root,root)
%{python3_sitearch}/_tevent.%{py3_soflags}.so
%{python3_sitearch}/tevent.py
%if 0%{?centos_version} > 599 || 0%{?fedora_version} > 11 || 0%{?rhel_version} > 599
%{python3_sitearch}/__pycache__/tevent.cpython-*.py[co]
%endif
%endif

%else
%files
%defattr(-,root,root)
%{_mandir}/man3/tevent*.*

%endif # ! build_man

%changelog