File ssu.spec of Package ssu
Name: ssu
Version: 1.5.0.6.6b616c1
Release: 0
Summary: Seamless Software Upgrade
License: GPLv2+ and LGPLv2+ and BSD
Source0: %{name}-%{version}.tar.gz
Source1: %{name}-group.conf
URL: https://github.com/sailfishos/ssu
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5DBus)
BuildRequires: pkgconfig(Qt5Network)
BuildRequires: pkgconfig(Qt5Xml)
BuildRequires: pkgconfig(Qt5Test)
BuildRequires: pkgconfig(libzypp)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libshadowutils)
BuildRequires: pkgconfig(connman-qt5)
BuildRequires: oneshot
BuildRequires: doxygen
BuildRequires: pkgconfig(libzypp)
BuildRequires: sysuser-tools
BuildRequires: fdupes
Requires(pre): /usr/bin/getent, /usr/sbin/groupadd
Requires: /usr/bin/getent, /bin/ln, /bin/touch, /usr/sbin/usermod
Obsoletes: ssu-network-proxy-plugin <= 1.0.22
Provides: group(ssu)
%description
%{summary} repository management tool. Manages software repositories,
including hardware adaptation and other optional features, and repository
user credentials. Alternative repository configurations may be specified for
RnD mode.
%files
%defattr(-,root,root,-)
%license COPYING COPYING.GPL COPYING.LGPL COPYING.BSD
%{_prefix}/lib/zypp/plugins/urlresolver/*
%{_bindir}/ssu
%{_libdir}/libssu.so.*
%dir %{_libdir}/ssu
%{_libdir}/ssu/libsandboxhook.so
%dir %{_sysconfdir}/zypp/credentials.d
# ssu itself does not use the package-update triggers, but provides
# them for the vendor data packages to use
%attr(0755, -, -) %{_oneshotdir}/*
%{_bindir}/ssud
%{_unitdir}/*.service
%{_datadir}/dbus-1/system-services/*.service
%dir %{_datarootdir}/%{name}
%dir %{_datarootdir}/%{name}/board-mappings.d
%dir %{_datarootdir}/%{name}/features.d
%dir %{_datarootdir}/%{name}/repos.d
%dir %{_sysconfdir}/%{name}/
%{_datadir}/dbus-1/system.d/*.conf
%{_sysusersdir}/%{name}-group.conf
%package ks
Summary: Kickstart generator using %{name} data
# required for QA to pick up new macros
Provides: rpm-macros
Requires: ssu-vendor-data
%description ks
%{summary}. With ponies!
%files ks
%defattr(-,root,root,-)
%{_rpmmacrodir}/macros.ssuks
%{_bindir}/ssuks
%package slipstream
Summary: %{name} OS factory snapshot download provider
%description slipstream
Helper utility to authenticate downloads of factory snapshot manifests.
%files slipstream
%defattr(-,root,root,-)
%{_bindir}/ssuslipstream
%package declarative
Summary: QML plugin for libssu
BuildRequires: pkgconfig(Qt5Qml)
%description declarative
%{summary}
%files declarative
%dir %{_libdir}/qt5/qml/Nemo
%dir %{_libdir}/qt5/qml/Nemo/Ssu
%{_libdir}/qt5/qml/Nemo/Ssu/*
%package devel
Summary: Development files for %{name}
Requires: %{name} = %{version}-%{release}
%description devel
%{summary}.
%files devel
%defattr(-,root,root,-)
%{_libdir}/libssu.so
%{_includedir}/ssu*.h
%{_libdir}/pkgconfig/ssu.pc
%package tests
Summary: Unit tests for %{name}
Requires: testrunner-lite
%description tests
%{summary}.
%files tests
%defattr(-,root,root,-)
%dir /opt/tests
/opt/tests/%{name}
%package tools
Summary: Tools for %{name}
BuildArch: noarch
Requires: rpm
%description tools
%{summary}.
%files tools
%defattr(-,root,root,-)
%attr(0755, -, -) /usr/sbin/ssu-repos.sh
%package doc
Summary: Documentation for %{name}
BuildArch: noarch
%description doc
%{summary}.
%files doc
%defattr(-,root,root,-)
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/html
%{_docdir}/%{name}/examples
%prep
%setup -q -n %{name}-%{version}
%build
mkdir -p build && cd build
%qmake5 "VERSION=%{version}" DEFINES+='TARGET_ARCH=\\\"\"%{_target_cpu}\"\\\"' -recursive ..
make %{?_smp_mflags}
if [ -f ../.nodocs ]; then
echo "Skip building documentation"
else
cd .. && doxygen doc/Doxyfile
fi
%sysusers_generate_pre %{SOURCE1} %{name} %{name}-group.conf
%install
cd build && make INSTALL_ROOT=%{buildroot} install
mkdir -p %{buildroot}/%{_sysconfdir}/zypp/credentials.d
mkdir -p %{buildroot}/%{_datarootdir}/%{name}/board-mappings.d
mkdir -p %{buildroot}/%{_datarootdir}/%{name}/features.d
mkdir -p %{buildroot}/%{_datarootdir}/%{name}/repos.d
mkdir -p %{buildroot}/%{_docdir}/%{name}
mkdir -p %{buildroot}/%{_sysconfdir}/%{name}
cd .. && cp -R doc/html/ %{buildroot}/%{_docdir}/%{name}/
mv %{buildroot}/%{_datadir}/doc/%{name}/* %{buildroot}/%{_docdir}/%{name}
mkdir -p %{buildroot}%{_prefix}/lib/zypp/plugins/urlresolver
mv %{buildroot}%{_libexecdir}/zypp/plugins/urlresolver/* %{buildroot}%{_prefix}/lib/zypp/plugins/urlresolver
rmdir %{buildroot}/%{_datadir}/doc/%{name}
install -D -m 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/%{name}-group.conf
%{fdupes} %{buildroot}
%pre -f %{name}.pre
if [ -f /etc/ssu/ssu.ini ]; then
chgrp ssu /etc/ssu/ssu.ini
chmod 664 /etc/ssu/ssu.ini
fi
%postun -p /sbin/ldconfig
%post -p /sbin/ldconfig
%transfiletriggerin -- %{_datarootdir}/%{name}
# Touch all modified repo config files so they will be newer than the cache
grep \.ini$ | xargs -r touch
%{_bindir}/add-oneshot --now ssu-update-repos
%transfiletriggerun -- %{_datarootdir}/%{name}/features.d/
if [ "$1" == 0 ]; then
echo "Removing ssu feature cache"
rm -f /var/cache/ssu/features.ini
fi
%transfiletriggerun -- %{_datarootdir}/%{name}/board-mappings.d/
if [ "$1" == 0 ]; then
echo "Removing ssu board-mappings cache"
rm -f /var/cache/ssu/board-mappings.ini
fi
%transfiletriggerun -- %{_datarootdir}/%{name}/repos.d/
if [ "$1" == 0 ]; then
echo "Removing ssu main cache"
rm -f /var/cache/ssu/repos.ini
fi
%transfiletriggerpostun -- %{_datarootdir}/%{name}
%{_bindir}/add-oneshot --now ssu-update-repos