Skip to content

Instantly share code, notes, and snippets.

@robertoschwald
Last active July 3, 2022 11:33
Show Gist options
  • Save robertoschwald/2eec0cdde0271282499951b10b3597b1 to your computer and use it in GitHub Desktop.
Save robertoschwald/2eec0cdde0271282499951b10b3597b1 to your computer and use it in GitHub Desktop.
Borgmatic rpm .spec for Rocky8 (RHEL8, CentOS8, Alma8)
Name: borgmatic
Version: 1.6.5
Release: 1%{?dist}
Summary: Simple Python wrapper script for borgbackup
License: GPLv3
URL: https://torsion.org/borgmatic
Source0: https://projects.torsion.org/borgmatic-collective/borgmatic/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
Patch0: borgmatic.service.patch
BuildArch: noarch
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-rpm-macros
%if 0%{?fedora} < 30 || 0%{?rhel} < 8
BuildRequires: systemd
%else
BuildRequires: systemd-rpm-macros
%endif
Requires: borgbackup
Requires: python3
Requires: python3-colorama
Requires: python3-ruamel-yaml
Requires: python3-pykwalify
%description
borgmatic (formerly atticmatic) is a simple 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.
%prep
%autosetup -N -n %{name}
%autopatch -p 1
%build
%py3_build
%install
%py3_install
install -dm 0750 %{buildroot}%{_sysconfdir}/borgmatic
install -dm 0750 %{buildroot}%{_sysconfdir}/borgmatic.d
install -Dpm 0644 sample/systemd/%{name}.service %{buildroot}%{_unitdir}/%{name}.service
install -Dpm 0644 sample/systemd/%{name}.timer %{buildroot}%{_unitdir}/%{name}.timer
%files
%doc AUTHORS NEWS README.md
%license LICENSE
%attr(0750, root, root) %{_sysconfdir}/borgmatic
%attr(0750, root, root) %{_sysconfdir}/borgmatic.d
%{python3_sitelib}/%{name}-%{version}-py?.?.egg-info
%{python3_sitelib}/%{name}
%{_bindir}/borgmatic
%{_bindir}/generate-borgmatic-config
%{_bindir}/upgrade-borgmatic-config
%{_bindir}/validate-borgmatic-config
%{_unitdir}/borgmatic.service
%{_unitdir}/borgmatic.timer
%post
%systemd_post borgmatic.timer
generate-borgmatic-config -d /etc/borgmatic/config.yaml.sample --overwrite
%preun
%systemd_preun borgmatic.timer
%postun
%systemd_postun borgmatic.timer
%changelog
* Sat Jul 02 2022 Robert Oschwald <packager@symentis.com> - 1.6.5-1
- update to 1.6.5
- version for Rocky 8
* Wed Nov 20 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.4.13-1
- update to 1.4.13
* Mon Nov 18 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.4.12-1
- update to 1.4.12
* Mon Nov 18 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.4.11-1
- update to 1.4.11
* Wed Nov 13 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.4.10-1
- update to 1.4.10
* Tue Nov 12 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.4.9-1
- update to 1.4.9
* Tue Nov 12 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.4.8-1
- update to 1.4.8
* Mon Nov 04 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.4.6-1
- update to 1.4.6
* Wed Oct 23 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.4.0-1
- update to 1.4.0
* Mon Oct 21 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.3.26-1
- update to 1.3.26
* Sat Oct 12 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.3.23-2
- insert conditionals for F29 and EL7
- bring back python3_version variable for EL7 compatibility
* Fri Oct 11 2019 Felix Kaechele <heffer@fedoraproject.org> - 1.3.23-1
- update to 1.3.23
- fix dependencies
- build for noarch
- use release tarball directly from upstream
- include docs and license from release tarball
- use included unit and timer files
- remove tests, they require internet access
- cleanups and modernizations
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 1.2.0-6
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 1.2.0-5
- Rebuilt for Python 3.8
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Jun 29 2018 Benjamin Pereto <benjamin@sandchaschte.ch> - 1.2.0-1
- upstream release 1.2.0
- added missing deps ruamel.yaml and pykwalify
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 1.1.15-3
- Rebuilt for Python 3.7
* Thu Apr 12 2018 Benjamin Pereto <benjamin@sandchaschte.ch> - 1.1.15-2
- add empty /etc/borgmatic.d as described in documentation
- add empty /etc/borgmatic as described in documentation
* Thu Apr 12 2018 Benjamin Pereto <benjamin@sandchaschte.ch> - 1.1.15-1
- Initial packaging for the borgmatic project
@robertoschwald
Copy link
Author

borgmatic.service.patch (place into rpmbuild SOURCES dir)

--- borgmatic.orig/sample/systemd/borgmatic.service	2022-07-01 07:14:41.000000000 +0200
+++ borgmatic/sample/systemd/borgmatic.service	2022-07-03 12:12:21.183223372 +0200
@@ -1,3 +1,5 @@
+# See https://torsion.org/borgmatic/docs/how-to/set-up-backups/
+
 [Unit]
 Description=borgmatic backup
 Wants=network-online.target
@@ -19,10 +21,10 @@
 NoNewPrivileges=yes
 PrivateDevices=yes
 PrivateTmp=yes
-ProtectClock=yes
+# ProtectClock=yes
 ProtectControlGroups=yes
-ProtectHostname=yes
-ProtectKernelLogs=yes
+# ProtectHostname=yes
+# ProtectKernelLogs=yes
 ProtectKernelModules=yes
 ProtectKernelTunables=yes
 RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
@@ -61,4 +63,4 @@
 # Delay start to prevent backups running during boot. Note that systemd-inhibit requires dbus and
 # dbus-user-session to be installed.
 ExecStartPre=sleep 1m
-ExecStart=systemd-inhibit --who="borgmatic" --why="Prevent interrupting scheduled backup" /root/.local/bin/borgmatic --verbosity -1 --syslog-verbosity 1
+ExecStart=systemd-inhibit --who="borgmatic" --why="Prevent interrupting scheduled backup" borgmatic --verbosity -1 --syslog-verbosity 1

@robertoschwald
Copy link
Author

After you configured your /etc/borgmatic/config.yaml, enable the timer service:
systemctl enable borgmatic.timer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment