# TODO:
# - qpidd user/group
# - qpidd init script
# - look at Fedora spec at: http://pkgs.fedoraproject.org/cgit/qpid-cpp.git
#
# Conditional build:
%bcond_without cman # cman quorum service
%bcond_without corosync # CPG clustering
%bcond_without rdma # Remote DMA protocol
%bcond_without static_libs # static libraries
#
Summary: C++ implementation of the AMQP protocol
Summary(pl.UTF-8): Implementacja protokołu AMQP w C++
Name: qpid-cpp
Version: 0.16
Release: 0.2
License: Apache v2.0
Group: Libraries
Source0: http://www.us.apache.org/dist/qpid/%{version}/%{name}-%{version}.tar.gz
# Source0-md5: 0be857cfc7615763e9296955d33972d5
Patch0: %{name}-boost.patch
Patch1: %{name}-link.patch
Patch2: %{name}-perl.patch
# https://reviews.apache.org/r/5593/
Patch3: %{name}-qmf-broker.patch
Patch4: %{name}-c++.patch
Patch5: %{name}-corosync.patch
Patch6: %{name}-ruby.patch
URL: http://qpid.apache.org/
BuildRequires: acl-devel
BuildRequires: autoconf >= 2.59
BuildRequires: automake
BuildRequires: boost-devel >= 1.33.1
%{?with_cman:BuildRequires: cman-devel}
%{?with_corosync:BuildRequires: corosync-devel}
BuildRequires: cyrus-sasl-devel >= 2.0
BuildRequires: doxygen
BuildRequires: help2man
BuildRequires: libstdc++-devel
BuildRequires: libtool
BuildRequires: libuuid-devel
BuildRequires: nspr-devel
BuildRequires: nss-devel
BuildRequires: perl-devel
BuildRequires: pkgconfig
BuildRequires: python-devel >= 1:2.7
BuildRequires: rpm-perlprov
BuildRequires: rpm-pythonprov
BuildRequires: rpmbuild(macros) >= 1.745
BuildRequires: ruby-devel >= 1.8
BuildRequires: swig-python >= 1.3.26
BuildRequires: swig-ruby >= 1.3.26
BuildRequires: xerces-c-devel
BuildRequires: xqilla-devel
%if %{with rdma}
BuildRequires: libibverbs-devel
BuildRequires: librdmacm-devel
%endif
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
Qpid/C++ is a C++ implementation of the AMQP protcol described at
.
%description -l pl.UTF-8
Qpid/C++ to implementacja w C++ protokołu AMQP opisanego pod
.
%package client
Summary: AMQP client modules and configuration
Summary(pl.UTF-8): Klient AMQP - moduły i konfiguracja
Group: Libraries
Requires: %{name}-libs = %{version}-%{release}
%description client
Qpid/C++ is a C++ implementation of the AMQP protcol described at
. This package contains client modules and
configuration.
%description client -l pl.UTF-8
Qpid/C++ to implementacja w C++ protokołu AMQP opisanego pod
. Ten pakiet zawiera moduły oraz konfigurację
klienta.
%package server
Summary: AMQP server
Summary(pl.UTF-8): Serwer AMQP
Group: Daemons
Requires: %{name}-libs = %{version}-%{release}
%description server
Qpid/C++ is a C++ implementation of the AMQP protcol described at
. This package contains the server.
%description server -l pl.UTF-8
Qpid/C++ to implementacja w C++ protokołu AMQP opisanego pod
. Ten pakiet zawiera serwer.
%package libs
Summary: AMQP runtime libraries
Summary(pl.UTF-8): Biblioteki uruchomieniowe AMQP
Group: Libraries
%description libs
Qpid/C++ is a C++ implementation of the AMQP protcol described at
. This package contains the runtime libraries.
%description libs -l pl.UTF-8
Qpid/C++ to implementacja w C++ protokołu AMQP opisanego pod
. Ten pakiet zawiera biblioteki uruchomieniowe.
%package devel
Summary: Header files for Qpid/C++ libraries
Summary(pl.UTF-8): Pliki nagłówkowe bibliotek Qpid/C++
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
%description devel
Header files for Qpid/C++ libraries.
%description devel -l pl.UTF-8
Pliki nagłówkowe bibliotek Qpid/C++.
%package static
Summary: Static Qpid/C++ libraries
Summary(pl.UTF-8): Statyczne biblioteki Qpid/C++
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
%description static
Static Qpid/C++ libraries.
%description static -l pl.UTF-8
Statyczne biblioteki Qpid/C++.
%package qmfgen
Summary: QMF code generator
Summary(pl.UTF-8): Generator kodu QMF
Group: Development/Tools
Requires: python-modules
%description qmfgen
QMF code generator.
%description qmfgen -l pl.UTF-8
Generator kodu QMF.
%package -n perl-%{name}
Summary: Perl bindings for Qpid/C++ libraries
Summary(pl.UTF-8): Wiązania Perla do bibliotek Qpid/C++
Group: Development/Languages/Perl
Requires: %{name}-libs = %{version}-%{release}
%description -n perl-%{name}
Perl bindings for Qpid/C++ libraries.
%description -n perl-%{name} -l pl.UTF-8
Wiązania Perla do bibliotek Qpid/C++.
%package -n python-%{name}
Summary: Python bindings for Qpid/C++ libraries
Summary(pl.UTF-8): Wiązania Pythona do bibliotek Qpid/C++
Group: Libraries/Python
Requires: %{name}-libs = %{version}-%{release}
Requires: python-modules
%description -n python-%{name}
Python bindings for Qpid/C++ libraries.
%description -n python-%{name} -l pl.UTF-8
Wiązania Pythona do bibliotek Qpid/C++.
%package -n ruby-%{name}
Summary: Ruby bindings for Qpid/C++ libraries
Summary(pl.UTF-8): Wiązania języka Ruby do bibliotek Qpid/C++
Group: Development/Languages
Requires: %{name}-libs = %{version}-%{release}
Requires: python-modules
%description -n ruby-%{name}
Ruby bindings for Qpid/C++ libraries.
%description -n ruby-%{name} -l pl.UTF-8
Wiązania języka Ruby do bibliotek Qpid/C++.
%prep
%setup -q -n qpidc-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p2
%patch4 -p1
%patch5 -p1
%patch6 -p1
# deprecated std::auto_ptr
# "invalid use of incomplete type qpid::framing::Handler"
%{__sed} -i -e 's/-Werror/-Wno-deprecated/' configure.ac
%{__sed} -i -e '1s,/usr/bin/env python,%{__python},' managementgen/qmf-gen
# force using newer version
%{__rm} m4/python.m4
%build
%{__libtoolize}
%{__aclocal} -I m4
%{__autoconf}
%{__autoheader}
%{__automake}
%configure \
%{?with_static_libs:--enable-static} \
--with-cpg%{!?with_corosync:=no} \
--with-cman%{!?with_cman:=no} \
--with-rdma%{!?with_rdma:=no}
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
%{__make} -j1 install \
DESTDIR=$RPM_BUILD_ROOT
%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/*.la \
$RPM_BUILD_ROOT%{ruby_vendorarchdir}/*.la \
$RPM_BUILD_ROOT%{_libdir}/qpid/{client,daemon}/*.la
%if %{with static_libs}
%{__rm} $RPM_BUILD_ROOT%{_libdir}/qpid/{client,daemon}/*.a
%endif
%{__rm} -r $RPM_BUILD_ROOT%{_libdir}/qpid/tests
install -d $RPM_BUILD_ROOT%{_examplesdir}
%{__mv} $RPM_BUILD_ROOT%{_datadir}/qpidc/examples $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
%py_postclean
%clean
rm -rf $RPM_BUILD_ROOT
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%files client
%defattr(644,root,root,755)
%dir %{_sysconfdir}/qpid
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/qpid/qpidc.conf
%dir %{_libdir}/qpid/client
%attr(755,root,root) %{_libdir}/qpid/client/rdmaconnector.so
%attr(755,root,root) %{_libdir}/qpid/client/sslconnector.so
%files server
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/qpidd.conf
%config(noreplace) %verify(not md5 mtime size) /etc/sasl2/qpidd.conf
%attr(755,root,root) %{_sbindir}/qpidd
%attr(755,root,root) %{_libdir}/qpid/qpidd_watchdog
%dir %{_libdir}/qpid/daemon
%attr(755,root,root) %{_libdir}/qpid/daemon/acl.so
%attr(755,root,root) %{_libdir}/qpid/daemon/cluster.so
%attr(755,root,root) %{_libdir}/qpid/daemon/ha.so
%attr(755,root,root) %{_libdir}/qpid/daemon/rdma.so
%attr(755,root,root) %{_libdir}/qpid/daemon/replicating_listener.so
%attr(755,root,root) %{_libdir}/qpid/daemon/replication_exchange.so
%attr(755,root,root) %{_libdir}/qpid/daemon/ssl.so
%attr(755,root,root) %{_libdir}/qpid/daemon/watchdog.so
%attr(755,root,root) %{_libdir}/qpid/daemon/xml.so
%{_mandir}/man1/qpidd.1*
%attr(755,qpidd,qpidd) %dir /var/lib/qpidd
%files libs
%defattr(644,root,root,755)
%doc NOTICE README.txt RELEASE_NOTES SSL
%attr(755,root,root) %{_libdir}/libqmf.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqmf.so.1
%attr(755,root,root) %{_libdir}/libqmf2.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqmf2.so.1
%attr(755,root,root) %{_libdir}/libqmfconsole.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqmfconsole.so.2
%attr(755,root,root) %{_libdir}/libqmfengine.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqmfengine.so.1
%attr(755,root,root) %{_libdir}/libqpidbroker.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqpidbroker.so.2
%attr(755,root,root) %{_libdir}/libqpidclient.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqpidclient.so.2
%attr(755,root,root) %{_libdir}/libqpidcommon.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqpidcommon.so.2
%attr(755,root,root) %{_libdir}/libqpidmessaging.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqpidmessaging.so.2
%attr(755,root,root) %{_libdir}/libqpidtypes.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libqpidtypes.so.1
%attr(755,root,root) %{_libdir}/librdmawrap.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/librdmawrap.so.2
%attr(755,root,root) %{_libdir}/libsslcommon.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libsslcommon.so.2
%dir %{_libdir}/qpid
%files devel
%defattr(644,root,root,755)
%doc DESIGN
%attr(755,root,root) %{_libdir}/libqmf.so
%attr(755,root,root) %{_libdir}/libqmf2.so
%attr(755,root,root) %{_libdir}/libqmfconsole.so
%attr(755,root,root) %{_libdir}/libqmfengine.so
%attr(755,root,root) %{_libdir}/libqpidbroker.so
%attr(755,root,root) %{_libdir}/libqpidclient.so
%attr(755,root,root) %{_libdir}/libqpidcommon.so
%attr(755,root,root) %{_libdir}/libqpidmessaging.so
%attr(755,root,root) %{_libdir}/libqpidtypes.so
%attr(755,root,root) %{_libdir}/librdmawrap.so
%attr(755,root,root) %{_libdir}/libsslcommon.so
%{_libdir}/libqmf.la
%{_libdir}/libqmf2.la
%{_libdir}/libqmfconsole.la
%{_libdir}/libqmfengine.la
%{_libdir}/libqpidbroker.la
%{_libdir}/libqpidclient.la
%{_libdir}/libqpidcommon.la
%{_libdir}/libqpidmessaging.la
%{_libdir}/libqpidtypes.la
%{_libdir}/librdmawrap.la
%{_libdir}/libsslcommon.la
%{_includedir}/qmf
%{_includedir}/qpid
%{_pkgconfigdir}/qmf2.pc
%{_pkgconfigdir}/qpid.pc
%{_examplesdir}/%{name}-%{version}
%files static
%defattr(644,root,root,755)
%{_libdir}/libqmf.a
%{_libdir}/libqmf2.a
%{_libdir}/libqmfconsole.a
%{_libdir}/libqmfengine.a
%{_libdir}/libqpidbroker.a
%{_libdir}/libqpidclient.a
%{_libdir}/libqpidcommon.a
%{_libdir}/libqpidmessaging.a
%{_libdir}/libqpidtypes.a
%{_libdir}/librdmawrap.a
%{_libdir}/libsslcommon.a
%files qmfgen
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/qmf-gen
%dir %{py_sitescriptdir}/qmfgen
%{py_sitescriptdir}/qmfgen/*.py[co]
%{py_sitescriptdir}/qmfgen/management-types.xml
%{py_sitescriptdir}/qmfgen/templates
%files -n perl-%{name}
%defattr(644,root,root,755)
%{perl_vendorarch}/cqpid_perl.pm
%dir %{perl_vendorarch}/auto/cqpid_perl
%attr(755,root,root) %{perl_vendorarch}/auto/cqpid_perl/cqpid_perl.so
%files -n python-%{name}
%defattr(644,root,root,755)
%attr(755,root,root) %{py_sitedir}/_cqmf2.so
%attr(755,root,root) %{py_sitedir}/_cqpid.so
%attr(755,root,root) %{py_sitedir}/_qmfengine.so
%{py_sitescriptdir}/cqmf2.py[co]
%{py_sitescriptdir}/cqpid.py[co]
%{py_sitescriptdir}/qmf.py[co]
%{py_sitescriptdir}/qmf2.py[co]
%{py_sitescriptdir}/qmfengine.py[co]
%files -n ruby-%{name}
%defattr(644,root,root,755)
%attr(755,root,root) %{ruby_vendorarchdir}/cqmf2.so
%attr(755,root,root) %{ruby_vendorarchdir}/cqpid.so
%attr(755,root,root) %{ruby_vendorarchdir}/qmfengine.so
%{ruby_vendorlibdir}/qmf.rb
%{ruby_vendorlibdir}/qmf2.rb