File pgbackrest.spec of Package pgbackrest

#
# spec file for package pgbackrest
#
# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2019-2022 Ioda-Net Sàrl, Charmoille, Switzerland.
#
# 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 https://bugs.opensuse.org/
#


%define services pgbackrest.target pgbackrest-diff@.service pgbackrest-full@.service pgbackrest-incr@.service pgbackrest.service pgbackrest-diff@.timer pgbackrest-full@.timer pgbackrest-incr@.timer
Name:           pgbackrest
Version:        2.55.1
Release:        0
Summary:        Reliable PostgreSQL Backup & Restore
License:        MIT
Group:          Productivity/Databases/Tools
URL:            https://www.pgbackrest.org
Source:         https://github.com/%{name}/%{name}/archive/release/%{version}/%{name}-%{version}.tar.gz
Source1:        pgbackrest.conf
Source10:       pgbackrest-diff@.service
Source11:       pgbackrest-diff@.timer
Source12:       pgbackrest-full@.service
Source13:       pgbackrest-full@.timer
Source14:       pgbackrest-incr@.service
Source15:       pgbackrest-incr@.timer
Source16:       pgbackrest.service
Source17:       pgbackrest.target
Source18:       pgbackrest.tmpfiles.d
Source98:       README.SUSE
Source99:       series
Patch0:         libpq-fe.h_localisation.patch
Patch1:         use-run-pgbackrest.patch
%if ! (0%{?suse_version} > 0 && 0%{?suse_version} < 1600 && 0%{?sle_version})
BuildRequires:  libbacktrace-devel
%endif
BuildRequires:  libyaml-devel
BuildRequires:  meson
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(bzip2)
BuildRequires:  pkgconfig(liblz4)
BuildRequires:  pkgconfig(libpq)
BuildRequires:  pkgconfig(libssh2)
BuildRequires:  pkgconfig(libxml-2.0)
BuildRequires:  pkgconfig(openssl)
BuildRequires:  pkgconfig(systemd)
# This is a bit awkward as we only need this for directory ownership
Requires(pre):  postgresql-server
%if 0%{?suse_version} >= 1500
BuildRequires:  pkgconfig(liblz4)
%endif
%if 0%{?is_opensuse} || 0%{?sle_version} >= 150100
BuildRequires:  pkgconfig(libzstd)
%endif

%description
pgBackRest aims to be a simple, reliable backup and restore system for
PostgreSQL that can seamlessly scale up to the largest databases and
workloads.

The following features are available:
- Parallel backup & restore
- Local or remote operation
- Full, incremental, differential backups
- Backup rotation & archive expiration
- Backup integrity
- Page checksums
- Backup resume
- Streaming compression & checksums
- Delta restore
- Parallel, asynchronous WAL push & get
- Tablespace & link support
- Amazon S3 support
- Encryption
- Compatibility with PostgreSQL >= 8.3

%prep
%autosetup -p1 -n %{name}-release-%{version}

%build
cp %{SOURCE98} .
%meson
%meson_build

%install
%meson_install

install -D -d -m 0700                         \
  %{buildroot}%{_localstatedir}/lib/%{name}   \
  %{buildroot}%{_localstatedir}/log/%{name}   \
  %{buildroot}%{_localstatedir}/spool/%{name}

install -D -d -m 0755        \
  %{buildroot}%{_sysconfdir} \
  %{buildroot}%{_unitdir}

install -m 0644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/%{name}.conf
install -m 0644 \
    %{SOURCE10} \
    %{SOURCE11} \
    %{SOURCE12} \
    %{SOURCE13} \
    %{SOURCE14} \
    %{SOURCE15} \
    %{SOURCE16} \
    %{SOURCE17} \
  %{buildroot}%{_unitdir}

install -D -m 0644 \
    %{SOURCE18} \
    %{buildroot}%{_tmpfilesdir}/%{name}.conf

%check
# Tests are only available with Vagrant
# We just test that the binary works.
%{buildroot}/%{_bindir}/%{name} version || exit 1
%meson_test

%pre
%service_add_pre %{services}

%post
%tmpfiles_create %{_tmpfilesdir}/%{name}.conf
%service_add_post %{services}

%preun
%service_del_preun %{services}

%postun
%service_del_postun %{services}

%files
%doc README.md README.SUSE
%license LICENSE
%config(noreplace) %attr (640,root,postgres) %{_sysconfdir}/%{name}.conf
# We still can do that as postgres user is system fixed
%attr(-,postgres,postgres) %{_localstatedir}/log/%{name}
%attr(-,postgres,postgres) %{_localstatedir}/lib/%{name}
%attr(-,postgres,postgres) %{_localstatedir}/spool/%{name}
%ghost %dir %attr(750,postgres,postgres) /run/pgbackrest
%{_bindir}/%{name}
%{_unitdir}/pgbackrest-diff@.service
%{_unitdir}/pgbackrest-diff@.timer
%{_unitdir}/pgbackrest-full@.service
%{_unitdir}/pgbackrest-full@.timer
%{_unitdir}/pgbackrest-incr@.service
%{_unitdir}/pgbackrest-incr@.timer
%{_unitdir}/pgbackrest.service
%{_unitdir}/pgbackrest.target
%{_tmpfilesdir}/%{name}.conf

%changelog
openSUSE Build Service is sponsored by