5 %bcond_without systemd # systemd support
7 Summary: An Open Source MQTT v3.1 Broker
13 Source0: https://mosquitto.org/files/source/%{name}-%{version}.tar.gz
14 # Source0-md5: ecdd48b9bdc5fbb24b9bf1fb199253f7
15 Source1: mosquitto.service
16 URL: http://mosquitto.org/
17 BuildRequires: cmake >= 3.1
18 BuildRequires: cjson-devel
19 BuildRequires: libstdc++-devel
20 BuildRequires: libwrap-devel
21 BuildRequires: libxslt-progs
22 BuildRequires: openssl-devel
23 BuildRequires: pkgconfig
24 BuildRequires: rpmbuild(macros) >= 1.742
25 %{?with_systemd:BuildRequires: systemd-devel}
26 BuildRequires: uthash-devel
27 Requires(postun): /usr/sbin/groupdel
28 Requires(postun): /usr/sbin/userdel
29 Requires(pre): /bin/id
30 Requires(pre): /usr/bin/getgid
31 Requires(pre): /usr/sbin/groupadd
32 Requires(pre): /usr/sbin/useradd
33 Suggests: %{name}-clients = %{version}-%{release}
34 Suggests: %{name}-plugin-dynamic-security = %{version}-%{release}
35 Provides: group(mosquitto)
36 Provides: user(mosquitto)
37 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
39 %define dynsec_plugin_path %{_libdir}/mosquitto_dynamic_security.so
42 Mosquitto is an open source (BSD licensed) message broker that
43 implements the MQ Telemetry Transport protocol version 3.1. MQTT
44 provides a lightweight method of carrying out messaging using a
45 publish/subscribe model. This makes it suitable for "machine to
46 machine" messaging such as with low power sensors or mobile devices
47 such as phones, embedded computers or micro-controllers like the
51 Summary: Mosquitto command line pub/sub clients
52 Group: Applications/Networking
53 Requires: libmosquitto = %{version}-%{release}
56 This is two MQTT version 3 clients. The first can publish messages to
57 a broker, the second can subscribe to multiple topics on a broker.
59 %package plugin-dynamic-security
60 Summary: Mosquitto Dynamic Security plugin
61 Requires: %{name} = %{version}-%{release}
63 %description plugin-dynamic-security
64 The Dynamic Security plugin is a Mosquitto plugin which provides role
65 based authentication and access control features that can be updated
66 whilst the broker is running, using a special topic based API.
68 %package -n libmosquitto
69 Summary: MQTT C client library
70 Group: Development/Libraries
72 %description -n libmosquitto
73 This is a library that provides a means of implementing MQTT version 3
74 clients. MQTT provides a lightweight method of carrying out messaging
75 using a publish/subscribe model.
77 %package -n libmosquitto-devel
78 Summary: MQTT C client library development files
79 Group: Development/Libraries
80 Requires: libmosquitto = %{version}-%{release}
82 %description -n libmosquitto-devel
83 This is a library that provides a means of implementing MQTT version 3
84 clients. MQTT provides a lightweight method of carrying out messaging
85 using a publish/subscribe model.
87 %package -n libmosquittopp
88 Summary: MQTT C++ client library
89 Group: Development/Libraries
91 %description -n libmosquittopp
92 This is a library that provides a means of implementing MQTT version 3
93 clients. MQTT provides a lightweight method of carrying out messaging
94 using a publish/subscribe model.
96 %package -n libmosquittopp-devel
97 Summary: MQTT C++ client library development files
98 Group: Development/Libraries
99 Requires: libmosquittopp = %{version}-%{release}
100 Requires: libmosquitto-devel = %{version}-%{release}
102 %description -n libmosquittopp-devel
103 This is a library that provides a means of implementing MQTT version 3
104 clients. MQTT provides a lightweight method of carrying out messaging
105 using a publish/subscribe model.
114 -DUSE_LIBWRAP:BOOL=ON \
115 -DWITH_BUNDLED_DEPS:BOOL=OFF \
116 %{cmake_on_off systemd SYSTEMD} \
122 rm -rf $RPM_BUILD_ROOT
124 install -d $RPM_BUILD_ROOT%{_sysconfdir}/mosquitto/conf.d
126 %{__make} -C build install \
127 DESTDIR=$RPM_BUILD_ROOT
129 for file in aclfile pskfile pwfile ; do
130 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/mosquitto/$file.example
131 :> $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/$file
134 cat <<EOF >> $RPM_BUILD_ROOT%{_sysconfdir}/mosquitto/%{name}.conf
135 include_dir %{_sysconfdir}/mosquitto/conf.d
138 cat <<EOF >> $RPM_BUILD_ROOT%{_sysconfdir}/mosquitto/conf.d/90-dynamic-security.conf
139 plugin %{dynsec_plugin_path}
140 #plugin_opt_config_file %{_sysconfdir}/mosquitto/dynamic-security.json
143 %{?with_systemd:install -D %{SOURCE1} $RPM_BUILD_ROOT%{systemdunitdir}/mosquitto.service}
146 rm -rf $RPM_BUILD_ROOT
149 %groupadd -g 293 -r mosquitto
150 %useradd -u 293 -r -g mosquitto -d %{_sysconfdir}/%{name} -s /sbin/nologin -c "Mosquitto Broker" mosquitto
152 if [ "$1" = "0" ]; then
153 %userremove mosquitto
154 %groupremove mosquitto
158 %{?with_systemd:%systemd_post mosquitto.service}
161 %{?with_systemd:%systemd_preun mosquitto.service}
164 %{?with_systemd:%systemd_reload}
166 %post -n libmosquitto -p /sbin/ldconfig
167 %postun -n libmosquitto -p /sbin/ldconfig
169 %post -n libmosquittopp -p /sbin/ldconfig
170 %postun -n libmosquittopp -p /sbin/ldconfig
172 %triggerpostun -- mosquitto < 2.0.17
173 %systemd_trigger mosquitto.service
176 %defattr(644,root,root,755)
177 %doc LICENSE.txt CONTRIBUTING.md ChangeLog.txt README.md examples aclfile.example mosquitto.conf pskfile.example pwfile.example
178 %attr(700,mosquitto,mosquitto) %dir %{_sysconfdir}/%{name}
179 %attr(700,mosquitto,mosquitto) %dir %{_sysconfdir}/%{name}/conf.d
180 %attr(600,mosquitto,mosquitto) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/%{name}.conf
181 %attr(600,mosquitto,mosquitto) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/aclfile
182 %attr(600,mosquitto,mosquitto) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/pskfile
183 %attr(600,mosquitto,mosquitto) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/pwfile
184 %attr(755,root,root) %{_bindir}/mosquitto_ctrl
185 %attr(755,root,root) %{_bindir}/mosquitto_passwd
186 %attr(755,root,root) %{_sbindir}/mosquitto
187 %{?with_systemd:%{systemdunitdir}/mosquitto.service}
188 %{_mandir}/man1/mosquitto_ctrl.1*
189 %{_mandir}/man1/mosquitto_ctrl_dynsec.1*
190 %{_mandir}/man1/mosquitto_passwd.1*
191 %{_mandir}/man5/mosquitto.conf.5*
192 %{_mandir}/man7/mosquitto-tls.7*
193 %{_mandir}/man7/mqtt.7*
194 %{_mandir}/man8/mosquitto.8*
197 %defattr(644,root,root,755)
198 %attr(755,root,root) %{_bindir}/mosquitto_pub
199 %attr(755,root,root) %{_bindir}/mosquitto_rr
200 %attr(755,root,root) %{_bindir}/mosquitto_sub
201 %{_mandir}/man1/mosquitto_pub.1*
202 %{_mandir}/man1/mosquitto_rr.1*
203 %{_mandir}/man1/mosquitto_sub.1*
205 %files plugin-dynamic-security
206 %defattr(644,root,root,755)
207 %attr(600,mosquitto,mosquitto) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/conf.d/90-dynamic-security.conf
208 %attr(755,root,root) %{dynsec_plugin_path}
210 %files -n libmosquitto
211 %defattr(644,root,root,755)
212 %attr(755,root,root) %{_libdir}/libmosquitto.so.*.*.*
213 %ghost %{_libdir}/libmosquitto.so.1
215 %files -n libmosquitto-devel
216 %defattr(644,root,root,755)
217 %{_mandir}/man3/libmosquitto.3*
218 %{_libdir}/libmosquitto.so
219 %{_includedir}/mosquitto_broker.h
220 %{_includedir}/mosquitto.h
221 %{_includedir}/mosquitto_plugin.h
222 %{_includedir}/mqtt_protocol.h
223 %{_pkgconfigdir}/libmosquitto.pc
224 %{_pkgconfigdir}/libmosquittopp.pc
226 %files -n libmosquittopp
227 %defattr(644,root,root,755)
228 %attr(755,root,root) %{_libdir}/libmosquittopp.so.*.*.*
229 %ghost %{_libdir}/libmosquittopp.so.1
231 %files -n libmosquittopp-devel
232 %defattr(644,root,root,755)
233 %{_libdir}/libmosquittopp.so
234 %{_includedir}/mosquittopp.h