Blob Blame History Raw
Name:           mosquitto
Version:        1.2.3
Release:        1%{?dist}
Summary:        An Open Source MQTT v3.1 Broker

License:        BSD
URL:            http://mosquitto.org/
Source0:        http://mosquitto.org/files/source/%{name}-%{version}.tar.gz

BuildRequires:  openssl-devel
BuildRequires:  tcp_wrappers-devel
BuildRequires:  python2-devel
BuildRequires:  python-setuptools
BuildRequires:  systemd
BuildRequires:  uthash-devel

Requires(pre):  shadow-utils
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd

%description
Mosquitto is an open source (BSD licensed) message broker that implements the 
MQ Telemetry Transport protocol version 3.1. MQTT provides a lightweight 
method of carrying out messaging using a publish/subscribe model. This makes 
it suitable for "machine to machine" messaging such as with low power sensors 
or mobile devices such as phones, embedded computers or micro-controllers 
like the Arduino.

%package devel
Requires:     %{name}%{?_isa} = %{version}-%{release}
Summary:      Development files for %{name}

%description devel
Development headers and libraries for %{name}

%package python
Requires:    %{name} = %{version}-%{release}
BuildArch:   noarch
Summary:     Python bindings for %{name}

%description python
Python bindings for %{name}

%prep
%setup -q
# Remove bundled uthash.h
rm -r src/uthash.h
# Set the install prefix to /usr
sed -i "s|prefix=/usr/local|prefix=/usr|" config.mk
# Don't strip binaries on install: rpmbuild will take care of it
sed -i "s|(INSTALL) -s|(INSTALL)|g" lib/Makefile src/Makefile client/Makefile

%build
export CFLAGS="%{optflags}"
export LDFLAGS="%{optflags} %{__global_ldflags} -Wl,--as-needed"
make all %{?_smp_mflags}

pushd lib/python
%{__python2} setup.py build

%install
%if "%{_lib}" == "lib64"
export LIB_SUFFIX=64
%endif
%make_install

pushd lib/python
%{__python2} setup.py install --skip-build --root $RPM_BUILD_ROOT
popd

cat > mosquitto.service << FOE
[Unit]
Description=Mosquitto MQTTv3.1 Broker
Documentation=man:mosquitto.conf(5) man:mosquitto(8)

[Service]
ExecStart=/usr/sbin/mosquitto 
User=mosquitto
FOE

mkdir -p $RPM_BUILD_ROOT%{_unitdir}
install -p -m 0644 %{name}.service $RPM_BUILD_ROOT%{_unitdir}/%{name}.service

%check
#make test

%pre
getent group %{name} >/dev/null || groupadd -r %{name}
getent passwd %{name} >/dev/null || \
    useradd -r -g %{name} -d %{_sysconfdir}/%{name} -s /sbin/nologin \
    -c "Mosquitto Broker" %{name}
exit 0

%post
%systemd_post %{name}.service
/sbin/ldconfig

%preun
%systemd_preun %{name}.service

%postun
%systemd_postun_with_restart %{name}.service
/sbin/ldconfig

%files
%doc LICENSE.txt readme.txt *.example
%{_bindir}/*
%{_sbindir}/*
%{_libdir}/*.so.*
%dir %{_sysconfdir}/%{name}
%config %{_sysconfdir}/%{name}/*.example
%{_unitdir}/%{name}.service
%{_mandir}/man1/*.1.*
%{_mandir}/man5/*.5.*
%{_mandir}/man7/*.7.*
%{_mandir}/man8/*.8.*

%files devel
%{_includedir}/*.h
%{_libdir}/*.so
%{_mandir}/man3/*.3.*

%files python
%{python_sitelib}/%{name}*

%changelog
* Sat Dec 21 2013 Fabian Affolter <mail@fabian-affolter.ch> - 1.2.3-1
- Update to latest upstream release 1.2.3

* Mon Oct 28 2013 Fabian Affolter <mail@fabian-affolter.ch> - 1.2.2-1
- Update to latest upstream release 1.2.2

* Sat Sep 21 2013 Fabian Affolter <mail@fabian-affolter.ch> - 1.2.1-1
- Update to latest upstream release 1.2.1

* Wed Aug 14 2013 Rich Mattes <richmattes@gmail.com> - 1.2-1
- Update to release 1.2

* Sat Aug 10 2013 Rich Mattes <richmattes@gmail.com> - 1.1.3-3
- Switch to Makefiles from CMake scripts
- Add User=mosquitto to systemd unit

* Tue Jul 23 2013 Rich Mattes <richmattes@gmail.com> - 1.1.3-2
- Unbundle uthash
- Add as-needed to ldflags to avoid spurious links

* Wed May 1 2013 Rich Mattes <richmattes@gmail.com> - 1.1.3-1
- Initial package