File unifi.spec of Package unifi
#
# spec file for package unifi
#
# Copyright (c) 2022 SUSE LLC
#
# 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 ! %{defined _fillupdir}
%define _fillupdir /var/adm/fillup-templates
%endif
Name: unifi
Summary: Network Management Controller
Version: 9.4.19
Release: 0
Group: Productivity/Networking/System
License: SUSE-NonFree
URL: http://www.ubnt.com/
Source: https://dl.ui.com/unifi/%{version}/UniFi.unix.zip
Source1: unifi.service.in
Source3: tmpfiles.unifi.conf
Source4: import-cert
Source5: sysconfig.unifi
Source6: mongod-wrapper
Source7: unifi.xml
Source8: README.SUSE
Source9: unifi-user.conf
Requires(pre): shadow
Requires: mongodb-server
Requires: jre-headless = 17
BuildRequires: unzip
BuildRequires: fdupes
BuildRequires: sysuser-tools
%systemd_requires
Requires(post): %fillup_prereq
Requires: openssl
%ifarch x86_64 aarch64 armv7
Recommends: unifi-webrtc = %{version}
%endif
%sysusers_requires
%description
The UniFi® Software-Defined Networkingplatform is an end-to-end
system of network devices across different loctions all controlled
from a single interface.
UniFi Controller for Linux
%ifarch x86_64 aarch64 armv7
%package webrtc
Summary: Webrtc support for unifi controller
Group: Productivity/Networking/System
%description webrtc
The UniFi® Software-Defined Networkingplatform is an end-to-end
system of network devices across different loctions all controlled
from a single interface.
webrtc support for UniFi Controller for Linux
%endif
%ifarch x86_64 aarch64 armv7
%package sdnotify
Summary: Sdnotify support for unifi controller
Group: Productivity/Networking/System
%description sdnotify
The UniFi® Software-Defined Networkingplatform is an end-to-end
system of network devices across different loctions all controlled
from a single interface.
sdnotify support for UniFi Controller for Linux used for cloud access
%endif
%prep
%setup -q -n UniFi
cp %{SOURCE8} .
%build
%sysusers_generate_pre %{SOURCE9} unifi unifi-user.conf
%install
rm -rf $RPM_BUILD_ROOT
install -d %{buildroot}%{_localstatedir}/lib/%{name}/
install -d %{buildroot}%{_localstatedir}/lib/%{name}/data/
cp -a conf dl %{buildroot}%{_localstatedir}/lib/%{name}/
install -d %{buildroot}%{_libexecdir}/%{name}/
cp -a bin lib webapps %{buildroot}%{_libexecdir}/%{name}/
install -m 755 %{SOURCE6} %{buildroot}%{_libexecdir}/%{name}/bin/mongod
install -D -m 755 %{SOURCE4} %{buildroot}%{_libexecdir}/%{name}/bin/import-cert
ln -sf %{_localstatedir}/lib/%{name}/data %{buildroot}%{_libexecdir}/%{name}/data
ln -sf %{_localstatedir}/lib/%{name}/conf %{buildroot}%{_libexecdir}/%{name}/conf
ln -sf %{_localstatedir}/lib/%{name}/dl %{buildroot}%{_libexecdir}/%{name}/dl
ln -sf %{_localstatedir}/log/%{name} %{buildroot}%{_libexecdir}/%{name}/logs
install -d -m 755 %{buildroot}%{_localstatedir}/log/%{name}
install -d -m 755 %{buildroot}%{_sbindir}
ln -sf service %{buildroot}%{_sbindir}/rc%{name}
mkdir -p %{buildroot}%{_sysusersdir}
install -m 0644 %{SOURCE9} %{buildroot}%{_sysusersdir}/
install -D -m 644 %{SOURCE3} %{buildroot}%{_tmpfilesdir}/unifi.conf
sed 's#@LIBDIR@#%{_libdir}#' %{SOURCE1} | sed 's#@LIBEXECDIR@#%{_libexecdir}#' >%{name}.service
install -D -m 644 unifi.service %{buildroot}%{_unitdir}/%{name}.service
install -D -m 644 %{SOURCE5} %{buildroot}/%{_fillupdir}/sysconfig.%{name}
install -D -m 644 %{SOURCE7} %{buildroot}/%{_prefix}/lib/firewalld/services/unifi.xml
%fdupes %{buildroot}%{_libexecdir}/%{name}
%clean
rm -rf %{buildroot}
%pre -f unifi.pre
%service_add_pre %{name}.service
%post
%tmpfiles_create %{_tmpfilesdir}/%{name}.conf
ln -sf %{_rundir}/%{name} %{_libexecdir}/%{name}/run || :
rm -rf %{_localstatedir}/lib/cert-timestamp
%{fillup_only}
%service_add_post %{name}.service
# firewalld only partially picks up changes to its services files without this
test -f %{_bindir}/firewall-cmd && firewall-cmd --reload --quiet || true
%preun
%service_del_preun %{name}.service
%postun
%service_del_postun %{name}.service
%files
%defattr(-,root,root)
%doc readme.txt README.SUSE
%{_libexecdir}/%{name}
%attr(755,unifi,unifi) %dir %{_localstatedir}/lib/%{name}
%attr(755,unifi,unifi) %dir %{_localstatedir}/lib/%{name}/conf
%attr(755,unifi,unifi) %dir %{_localstatedir}/lib/%{name}/dl
%attr(755,unifi,unifi) %dir %{_localstatedir}/lib/%{name}/dl/firmware
%attr(755,unifi,unifi) %dir %{_localstatedir}/lib/%{name}/dl/uidb
%attr(644,unifi,unifi) %{_localstatedir}/lib/%{name}/dl/uidb/uidb.json
%attr(644,unifi,unifi) %{_localstatedir}/lib/%{name}/dl/firmware/bundles.json
%attr(755,unifi,unifi) %dir %{_localstatedir}/lib/%{name}/data
%attr(755,unifi,unifi) %dir %{_localstatedir}/log/%{name}
%{_tmpfilesdir}/%{name}.conf
%{_unitdir}/%{name}.service
%{_sbindir}/rc%{name}
%dir %{_fillupdir}
%{_fillupdir}/sysconfig.%{name}
%ghost %{_localstatedir}/lib/unifi/cert-timestamp
%exclude %{_libexecdir}/unifi/lib/native
%ghost %{_rundir}/unifi
%{_sysusersdir}/unifi-user.conf
%dir %{_prefix}/lib/firewalld
%dir %{_prefix}/lib/firewalld/services
%{_prefix}/lib/firewalld/services/unifi.xml
%ifarch x86_64 aarch64 armv7
%files webrtc
%dir %{_libexecdir}/unifi/lib/native
%dir %{_libexecdir}/unifi/lib/native/Linux
%dir %{_libexecdir}/unifi/lib/native/Linux/%{_arch}
%{_libexecdir}/unifi/lib/native/Linux/%{_arch}/libubnt_webrtc_jni.so
%endif
%ifarch x86_64 aarch64 armv7
%files sdnotify
%dir %{_libexecdir}/unifi/lib/native
%dir %{_libexecdir}/unifi/lib/native/Linux
%dir %{_libexecdir}/unifi/lib/native/Linux/%{_arch}
%{_libexecdir}/unifi/lib/native/Linux/%{_arch}/libubnt_sdnotify_jni.so
%endif
%changelog