File borgmatic.spec of Package borgmatic

#
# spec file for package borgmatic
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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/
#


%define version_unconverted 1.0.3hg.135

Name:           borgmatic
Version:        1.0.3hg.135
Release:        0
Summary:        Automation tool for borgbackup
License:        GPL-3.0
Group:          Productivity/Archiving/Backup
Url:            https://torsion.org/borgmatic/
Source:         borgmatic-%{version}.tar.xz
Source1:        README.md
BuildArch:      noarch
BuildRequires:  python3 >= 3.4
BuildRequires:  python3-devel
BuildRequires:  python3-setuptools
BuildRequires:  systemd-devel
# To create the manpage
BuildRequires:  pandoc
Requires:       borgmatic
# testing requirements
BuildRequires:  python3-flexmock
BuildRequires:  python3-pytest
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
borgmatic is a Python wrapper script for the Borg backup software
that initiates a backup, prunes any old backups according to a
retention policy, and validates backups for consistency. The script
supports specifying your settings in a declarative configuration file
rather than having to put them all on the command-line, and handles
common errors.

%prep
%setup -q
# test_version.py fails because of assert '1.0.3.dev0\n' == '1.0.3-dev\n', so we just remove it
rm borgmatic/tests/integration/test_version.py

# Make sample files use the borgmatic command on /usr/bin, not /usr/local/bin
perl -pi -e "s,PATH=\\$PATH:/usr/local/bin /usr/local/bin/borgmatic,/usr/bin/borgmatic," sample/cron/borgmatic
perl -pi -e "s,/usr/local/bin/borgmatic,/usr/bin/borgmatic," sample/systemd/borgmatic.service

%build
# Create the manpage
pandoc -s -f markdown -t man %{S:1} -o borgmatic.1

%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
install -d %{buildroot}%{_sysconfdir}/borgmatic
install -m 0644 sample/config sample/excludes %{buildroot}%{_sysconfdir}/borgmatic/
install -d %{buildroot}%{_docdir}/%{name}/sample/cron
install -m 0644 sample/cron/borgmatic %{buildroot}%{_docdir}/%{name}/sample/cron/
install -d %{buildroot}%{_unitdir}/
install -m 0644 sample/systemd/borgmatic* %{buildroot}%{_unitdir}/

install -D -m 0644 borgmatic.1 %{buildroot}%{_mandir}/man1/borgmatic.1

%check
# testing the build is a little awkward, since the original testsuite is based on tox and
# tox tries to create a virtual environment, that we need tight control on in order to get
# it to behave in our build system (offline mode, use site packages). OTOH, without the
# venv, we face problems with setuptools (borg uses pkg_resources to locate the installed
# package), while py.test relies on the usual module handling. <hpj@urpla.net>
pyvenv --system-site-packages --without-pip borgmatic-env
source borgmatic-env/bin/activate
python3 setup.py install
LANG=en_US.UTF-8 PYTHONPATH=$(pwd) py.test -v --pyargs borgmatic

%post
%service_add_post borgmatic.service

%pre
%service_add_pre borgmatic.service

%preun
%service_del_preun borgmatic.service

%postun
%service_del_postun borgmatic.service

%files
%defattr(-,root,root,-)
%doc AUTHORS LICENSE NEWS README.md
%config %{_sysconfdir}/borgmatic/config
%config %{_sysconfdir}/borgmatic/excludes
%dir %{_sysconfdir}/borgmatic
%dir %{_docdir}/%{name}/sample
%dir %{_docdir}/%{name}/sample/cron
%{python3_sitelib}/borgmatic/
%{python3_sitelib}/borgmatic-1.0.3.dev0-py%{py3_ver}.egg-info
%{_unitdir}/borgmatic.service
%{_unitdir}/borgmatic.timer
%{_bindir}/borgmatic
%{_mandir}/man1/borgmatic.1%{ext_man}
%{_docdir}/%{name}/sample/cron

%changelog
openSUSE Build Service is sponsored by