File bareos.spec of Package bareos
#
# spec file for package bareos
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2011-2012 Bruno Friedmann (Ioda-Net) and Philipp Storz (dass IT)
# 2013-2024 Bareos GmbH & Co KG
#
Name: bareos
Version: 24.0.7
Release: 0
Group: Productivity/Archiving/Backup
License: AGPL-3.0
BuildRoot: %{_tmppath}/%{name}-root
URL: https://www.bareos.org/
Vendor: The Bareos Team
%define library_dir %{_libdir}/%{name}
%define backend_dir %{_libdir}/%{name}/backends
%define plugin_dir %{_libdir}/%{name}/plugins
%define script_dir /usr/lib/%{name}/scripts
%define working_dir /var/lib/%{name}
%define bsr_dir /var/lib/%{name}
# TODO: use /run ?
%define _subsysdir /var/lock
#
# Generic daemon user and group
#
%define daemon_user bareos
%define daemon_group bareos
%define director_daemon_user %{daemon_user}
%define storage_daemon_user %{daemon_user}
%define file_daemon_user %{daemon_user}
%define storage_daemon_group %{daemon_group}
# default settings
%define client_only 0
%define build_qt_monitor 1
%define glusterfs 0
%define droplet 1
%define have_git 1
%define python_plugins 1
%define contrib 1
%define webui 1
# cmake build directory
%define CMAKE_BUILDDIR cmake-build
BuildRequires: rpcgen
BuildRequires: libtirpc-devel
BuildRequires: fmt-devel
BuildRequires: grpc-devel
BuildRequires: postgresql17-server
%global ceph 1
%define php_fpm 1
%define phpbase php8
BuildRequires: gcc15
BuildRequires: gcc15-c++
BuildRequires: pkgconfig(systemd)
# see https://en.opensuse.org/openSUSE:Systemd_packaging_guidelines
BuildRequires: systemd-rpm-macros
%{?systemd_requires}
%if 0%{?glusterfs}
BuildRequires: glusterfs-devel glusterfs-api-devel
%endif
%if 0%{?have_git}
BuildRequires: git-core
%endif
Source0: _service
Source20: vendor.tgz
BuildRequires: cmake >= 3.17
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: make
BuildRequires: glibc
BuildRequires: glibc-devel
BuildRequires: ncurses-devel
BuildRequires: pam-devel
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
BuildRequires: readline-devel
BuildRequires: libacl-devel
BuildRequires: libstdc++-devel
BuildRequires: zlib-devel
BuildRequires: openssl-devel
BuildRequires: lzo-devel
BuildRequires: logrotate
BuildRequires: postgresql-devel
BuildRequires: openssl
BuildRequires: libcap-devel
BuildRequires: mtx
%if 0%{?build_qt_monitor}
BuildRequires: libqt5-qtbase-devel
%endif
%if 0%{?python_plugins}
BuildRequires: python3-devel >= 3.4
%endif
BuildRequires: sysuser-tools
%sysusers_requires
BuildRequires: firewall-macros
# include custom files and add suse branding patch
# php-fpm and bareos user config for sle 15+
Source1: system-user-%{name}.conf
Source9: %{name}-php-fpm-apache.conf
# bareos-fd access
Source2: permissions.%{name}-fd.easy
Source3: permissions.%{name}-fd.secure
Source4: permissions.%{name}-fd.paranoid
# firewalld services
Source5: firewall.bareos-dir.xml
Source6: firewall.bareos-fd.xml
Source7: firewall.bareos-sd.xml
# customize webui with suse branding
%if %{with suse_branding}
Source8: webui-branding-suse-img.tgz
Patch0 : webui-branding-suse.patch
%endif
# webui apache config
Source10: %{name}-apache.conf
# this patch will enforce 'suse' as platform.
Patch1 : bareos-suse-platform.patch
BuildRequires: procps
BuildRequires: distribution-release
BuildRequires: shadow
BuildRequires: update-desktop-files
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(json-c)
BuildRequires: libbpf1 libbpf-devel
BuildRequires: fmt-devel
BuildRequires: qt6-base-devel
BuildRequires: %{phpbase}
# link identical files
BuildRequires: fdupes
BuildRequires: libjansson-devel
BuildRequires: lsb-release
# dependency tricks for vixdisklib
%global __requires_exclude ^(.*libvixDiskLib.*|.*CXXABI_1.3.9.*)$
%define replace_python_shebang sed -i '1s|^#!.*|#!%{__python3} %{py3_shbang_opts}|'
Summary: Backup Archiving REcovery Open Sourced - metapackage
Requires: %{name}-director = %{version}
Requires: %{name}-storage = %{version}
Requires: %{name}-client = %{version}
%define dscr Bareos - Backup Archiving Recovery Open Sourced. \
Bareos is a set of computer programs that permit you (or the system \
administrator) to manage backup, recovery, and verification of computer \
data across a network of computers of different kinds. In technical terms, \
it is a network client/server based backup program. Bareos is relatively \
easy to use and efficient, while offering many advanced storage management \
features that make it easy to find and recover lost or damaged files. \
Bareos source code has been released under the AGPL version 3 license.
%description
%{dscr}
# Notice : Don't try to change the order of package declaration
# You will have side effect with PreReq
%package -n system-user-%{name}
Summary: System user and group for Bareos
Group: System/Fhs
BuildArch: noarch
%package bconsole
Summary: Bareos administration console (CLI)
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
%package client
Summary: Bareos client Meta-All-In-One package
Group: Productivity/Archiving/Backup
Requires: %{name}-bconsole = %{version}
Requires: %{name}-filedaemon = %{version}
Recommends: %{name}-traymonitor = %{version}
%package director
Summary: Bareos Director daemon
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Requires: %{name}-database-common = %{version}
Requires: %{name}-database-tools
Requires(pre): pwdutils
Recommends: logrotate
Requires: system-user-%{name}
Requires(pre): system-user-%{name}
Provides: %{name}-dir
%package storage
Summary: Bareos Storage daemon
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Provides: %{name}-sd
Requires(pre): pwdutils
Recommends: bareos-tools
Requires: system-user-%{name}
Requires(pre): system-user-%{name}
%if 0%{?droplet}
%package storage-droplet
Summary: Object Storage support (through libdroplet) for the Bareos Storage daemon
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Requires: %{name}-storage = %{version}
%endif
%if 0%{?glusterfs}
%package storage-glusterfs
Summary: GlusterFS support for the Bareos Storage daemon
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Requires: %{name}-storage = %{version}
Requires: glusterfs
%endif
%package storage-tape
Summary: Tape support for the Bareos Storage daemon
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Requires: %{name}-storage = %{version}
Requires: mtx
Requires: mt-st
%package storage-fifo
Summary: FIFO support for the Bareos Storage backend
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Requires: %{name}-storage = %{version}
%package filedaemon
Summary: Bareos File daemon (backup and restore client)
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Provides: %{name}-fd
Requires: system-user-%{name}
Requires(pre): system-user-%{name}
Requires(pre): pwdutils
Requires(post): permissions
Requires(verify):permissions
%package common
Summary: Common files, required by multiple Bareos packages
Group: Productivity/Archiving/Backup
Requires: openssl
Requires: system-user-%{name}
Requires(pre): system-user-%{name}
Requires(pre): coreutils
Requires(pre): findutils
Requires(pre): gawk
Requires(pre): grep
Requires(pre): openssl
Requires(pre): sed
Requires(pre): shadow
Provides: %{name}-libs
%package database-common
Summary: Generic abstraction libs and files to connect to a database
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Requires: %{name}-database-backend = %{version}
Requires: openssl
Provides: %{name}-sql
%package database-postgresql
Summary: Libs & tools for postgresql catalog
Group: Productivity/Archiving/Backup
Requires: %{name}-database-common = %{version}
Provides: %{name}-catalog-postgresql
Provides: %{name}-database-backend
%package database-tools
Summary: Bareos CLI tools with database dependencies (bareos-dbcheck, bscan)
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
Requires: %{name}-database-common = %{version}
Provides: %{name}-dbtools
%package tools
Summary: Bareos CLI tools (bcopy, bextract, bls, bregex, bwild)
Group: Productivity/Archiving/Backup
Requires: %{name}-common = %{version}
%if 0%{build_qt_monitor}
%package traymonitor
Summary: Bareos Tray Monitor (QT)
Group: Productivity/Archiving/Backup
# Added to by pass the 09 checker rules (conflict with bareos-tray-monitor.conf)
# This is mostly wrong cause the two binaries can use it!
Conflicts: %{name}-tray-monitor-gtk
Provides: %{name}-tray-monitor-qt
%endif
%package storage-deduplicate-plugin
Summary: Deduplication for Bareos
Group: Productivity/Archiving/Backup
Requires: bareos-storage = %{version}
%if 0%{?python_plugins}
%package director-python3-plugin
Summary: Python plugin for Bareos Director daemon
Group: Productivity/Archiving/Backup
Requires: bareos-director = %{version}
Requires: bareos-director-python-plugins-common = %{version}
Obsoletes: bareos-director-python-plugin <= %{version}
Provides: bareos-director-python-plugin = %{version}
%package director-python-plugins-common
Summary: Python plugin for Bareos Director daemon
Group: Productivity/Archiving/Backup
Requires: bareos-director = %{version}
%package filedaemon-python3-plugin
Summary: Python plugin for Bareos File daemon
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon = %{version}
Requires: bareos-filedaemon-python-plugins-common = %{version}
Provides: bareos-filedaemon-python-plugin = %{version}
Obsoletes: bareos-filedaemon-python-plugin <= %{version}
%package filedaemon-python-plugins-common
Summary: Python plugin for Bareos File daemon
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon = %{version}
%package filedaemon-ldap-python-plugin
Summary: LDAP Python plugin for Bareos File daemon
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon = %{version}
Requires: bareos-filedaemon-python-plugin = %{version}
Requires: python3-ldap
%package filedaemon-libcloud-python-plugin
Summary: Libcloud Python plugin for Bareos File daemon
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon = %{version}
Requires: bareos-filedaemon-python-plugin = %{version}
%package filedaemon-postgresql-python-plugin
Summary: PostgreSQL Python plugin for Bareos File daemon
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon = %{version}
Requires: bareos-filedaemon-python-plugin = %{version}
%package filedaemon-percona-xtrabackup-python-plugin
Summary: Percona xtrabackup Python plugin for Bareos File daemon
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon = %{version}
Requires: bareos-filedaemon-python-plugin = %{version}
%package filedaemon-mariabackup-python-plugin
Summary: Mariabackup Python plugin for Bareos File daemon
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon = %{version}
Requires: bareos-filedaemon-python-plugin = %{version}
%package storage-python3-plugin
Summary: Python plugin for Bareos Storage daemon
Group: Productivity/Archiving/Backup
Requires: bareos-storage = %{version}
Requires: bareos-storage-python-plugins-common = %{version}
Provides: bareos-storage-python-plugin = %{version}
Obsoletes: bareos-storage-python-plugin <= %{version}
%package storage-python-plugins-common
Summary: Python plugin for Bareos Storage daemon
Group: Productivity/Archiving/Backup
Requires: bareos-storage = %{version}
# vmware switch is set via --define="vmware 1" in build script when
# vix disklib is detected
%if 0%{?vmware}
# VMware Plugin BEGIN
%package -n bareos-vadp-dumper
Summary: VADP Dumper - vStorage APIs for Data Protection Dumper program
Group: Productivity/Archiving/Backup
Requires: bareos-vmware-vix-disklib
%description -n bareos-vadp-dumper
Uses vStorage API to connect to VMWare and dump data like virtual disks snapshots
to be used by other programs.
%package -n bareos-vmware-plugin
Summary: Bareos VMware plugin
Group: Productivity/Archiving/Backup
Requires: bareos-vadp-dumper
Requires: bareos-filedaemon-python-plugin >= 15.2
%description -n bareos-vmware-plugin
Uses the VMware API to take snapshots of running VMs and takes
full and incremental backup so snapshots. Restore of a snapshot
is currently supported to the origin VM.
# VMware Plugin END
%endif
%description -n system-user-%{name}
This package provides the system user and group used by various Bareos components.
%description director-python3-plugin
%{dscr}
This package contains the python 3 plugin for the director daemon
%description director-python-plugins-common
%{dscr}
This package contains the common files for the python director plugins.
%description filedaemon-python3-plugin
%{dscr}
This package contains the python 3 plugin for the file daemon
%description filedaemon-python-plugins-common
%{dscr}
This package contains the common files for the python filedaemon plugins.
%description filedaemon-ldap-python-plugin
%{dscr}
This package contains the LDAP python plugin for the file daemon
%description filedaemon-libcloud-python-plugin
%{dscr}
This package contains the Libcloud python plugin for the file daemon
%description filedaemon-postgresql-python-plugin
%{dscr}
This package contains the PostgreSQL python plugin for the file daemon
%description filedaemon-percona-xtrabackup-python-plugin
%{dscr}
This package contains the Percona python plugin for the file daemon
%description filedaemon-mariabackup-python-plugin
%{dscr}
This package contains the Mariabackup python plugin for the file daemon
%description storage-python3-plugin
%{dscr}
This package contains the python 3 plugin for the storage daemon
%description storage-python-plugins-common
%{dscr}
This package contains the common files for the python storage plugins.
# endif: python_plugins
%endif
%description storage-deduplicate-plugin
%{dscr}
This package contains the deduplicate plugin for the storage daemon
%if 0%{?glusterfs}
%package filedaemon-glusterfs-plugin
Summary: GlusterFS plugin for Bareos File daemon
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon = %{version}
Requires: glusterfs
%description filedaemon-glusterfs-plugin
%{dscr}
This package contains the GlusterFS plugin for the file daemon
# endif: glusterfs
%endif
%if 0%{?webui}
%package webui
Summary: Bareos Web User Interface
Group: Productivity/Archiving/Backup
Requires: %{phpbase}
Requires: %{phpbase}-fpm
Requires: %{phpbase}-bz2
Requires: %{phpbase}-ctype
Requires: %{phpbase}-curl
Requires: %{phpbase}-dom
Requires: %{phpbase}-fileinfo
Requires: %{phpbase}-gettext
Requires: %{phpbase}-gd
Requires: %{phpbase}-iconv
Requires: %{phpbase}-intl
Requires: %{phpbase}-mbstring
Requires: %{phpbase}-openssl
Requires: %{phpbase}-xmlreader
Requires: %{phpbase}-xmlwriter
Requires: %{phpbase}-zip
Requires: httpd
Conflicts: mod_php_any
%define _apache_conf_dir /etc/apache2/conf.d/
BuildRequires: apache2
BuildRequires: apache2-devel
Recommends: %{name}-webui-config-apache
%package webui-config-php-fpm-apache
Summary: Bareos Web User Interface PHP-FPM configuration
Group: Productivity/Archiving/Backup
BuildArch: noarch
Requires: %{name}-webui
Requires: %{phpbase}-fpm
Requires: %{name}-webui-config-apache
BuildRequires: %{phpbase}-fpm
Supplements: (%{phpbase}-fpm and apache2 and %{name}-webui)
%package webui-config-apache
Summary: Bareos Web User Interface Apache2 configuration
Group: Productivity/Archiving/Backup
BuildArch: noarch
Requires: %{name}-webui
Requires: apache2
Recommends: apache2-event
Recommends: %{name}-webui-config-php-fpm-apache
%description webui
%{dscr}
This package contains the webui (Bareos Web User Interface).
%description webui-config-php-fpm-apache
This package contains a PHP-FPM base configuration to run the Bareos webui with.
For use with an Apache2 HTTP server.
%description webui-config-apache
This package contains an Apache2 virtual host configuration to run the Bareos webui with.
# endif: webui
%endif
%if 0%{?contrib}
%package contrib-tools
Summary: Additional tools, not part of the Bareos project
Group: Productivity/Archiving/Backup
Requires: python-bareos
Requires: bareos-filedaemon
%description contrib-tools
%{dscr}
This package provides some additional tools, not part of the Bareos project.
%package contrib-filedaemon-python-plugins
Summary: Additional File Daemon Python plugins, not part of the Bareos project
Group: Productivity/Archiving/Backup
Requires: bareos-filedaemon-python-plugin
%description contrib-filedaemon-python-plugins
%{dscr}
This package provides additional File Daemon Python plugins, not part of the Bareos project.
%package contrib-director-python-plugins
Summary: Additional Director Python plugins, not part of the Bareos project
Group: Productivity/Archiving/Backup
Requires: bareos-director-python-plugin
%description contrib-director-python-plugins
%{dscr}
This package provides additional Bareos Director Python plugins, not part of the Bareos project.
# endif: contrib
%endif
%description client
%{dscr}
This package is a meta package requiring the packages
containing the fd and the console.
This is for client only installation.
%description bconsole
%{dscr}
This package contains the bconsole (the CLI interface program)
%description director
%{dscr}
This package contains the Director Service (Bareos main service daemon)
%description storage
%{dscr}
This package contains the Storage Daemon
(Bareos service to read and write data from/to media)
%description storage-tape
%{dscr}
This package contains the Storage Daemon tape support
(Bareos service to read and write data from/to tape media)
%if 0%{?droplet}
%description storage-droplet
%{dscr}
This package contains the Storage backend for Object Storage (through libdroplet).
%endif
%if 0%{?glusterfs}
%description storage-glusterfs
%{dscr}
This package contains the Storage backend for GlusterFS.
%endif
%description storage-fifo
%{dscr}
This package contains the Storage backend for FIFO files.
This package is only required, when a resource "Archive Device = fifo"
should be used by the Bareos Storage Daemon.
%description filedaemon
%{dscr}
This package contains the File Daemon
(Bareos client daemon to read/write data from the backed up computer)
%description common
%{dscr}
This package contains the shared libraries that are used by multiple daemons and tools.
%description database-common
%{dscr}
This package contains the shared libraries that abstract the catalog interface
%description database-postgresql
%{dscr}
This package contains the shared library to access postgresql as catalog db.
%description database-tools
%{dscr}
This package contains Bareos database tools.
%description tools
%{dscr}
This package contains Bareos tools.
%if 0%{?build_qt_monitor}
%description traymonitor
%{dscr}
This package contains the tray monitor (QT based).
%endif
%prep
# this is a hack so we always build in "bareos" and not in "bareos-version"
%setup -q -n %_sourcedir/%name-%version -T -D
%setup -q -n %_sourcedir/%name-%version -T -D -a 20
find ./webui/tests/regress -type f -execdir sed -i -e '0,/#\!\/.*\/.*/d' {} +
find . -type f -execdir sed -i -e 's?%{_bindir}/env python2?%{_bindir}/python2?' -e 's?%{_bindir}/env python3?%{_bindir}/python3?' -e 's?%{_bindir}/env python?%{_bindir}/python3?' -e 's?%{_bindir}/env perl?%{_bindir}/perl?' -e 's?%{_bindir}/env bash?%{_bindir}/bash?' {} +
%if 0%{?contrib}
%replace_python_shebang contrib/misc/bsmc/bin/bsmc
%replace_python_shebang contrib/misc/triggerjob/bareos-triggerjob.py
%endif
# apply patches
%if %{with suse_branding}
%patch -P 0 -p1
%setup -a8 -DqT -n %{name}
%endif
%patch -P 1 -p1
%build
%sysusers_generate_pre %{SOURCE1} %{name} system-user-%{name}.conf
export PATH=$PATH:/usr/lib64/qt5/bin:/usr/lib/qt5/bin
export MTX=/usr/sbin/mtx
mkdir %{CMAKE_BUILDDIR}
pushd %{CMAKE_BUILDDIR}
CC=gcc-15 ; export CC
CXX=g++-15 ; export CXX
CFLAGS="${CFLAGS:-%optflags} -Wno-incompatible-pointer-types -Wno-old-style-definition -std=gnu17" ; export CFLAGS ;
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
CPM_SOURCE_CACHE=%_sourcedir/%name-%version/CPM ; export CPM_SOURCE_CACHE
#cmake macro cannot find CMakeLists.txt also cmake macro ignore '..' path change
cmake .. \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DCMAKE_INSTALL_LIBDIR:PATH=/usr/lib \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DCMAKE_INSTALL_LIBDIR:PATH=/usr/lib \
-DINCLUDE_INSTALL_DIR:PATH=/usr/include \
-DLIB_INSTALL_DIR:PATH=/usr/lib \
-DSYSCONF_INSTALL_DIR:PATH=/etc \
-DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DDEBUG_PREFIX_MAP:BOOL=OFF \
-DCPM_SOURCE_PATH=/home/abuild \
-Dprefix=%{_prefix}\
-Dlibdir=%{library_dir} \
-Dsbindir=%{_sbindir} \
-Dsbin-perm=755 \
-Dsysconfdir=%{_sysconfdir} \
-Dconfdir=%{_sysconfdir}/bareos \
-Dmandir=%{_mandir} \
-Ddocdir=%{_docdir}/%{name} \
-Darchivedir=/var/lib/%{name}/storage \
-Dbackenddir=%{backend_dir} \
-Dscriptdir=%{script_dir} \
-Dworkingdir=%{working_dir} \
-Dplugindir=%{plugin_dir} \
-Dbsrdir=%{bsr_dir} \
-Dlogdir=/var/log/bareos \
-Dsubsysdir=%{_subsysdir} \
%if 0%{?python_plugins}
-Dpython=yes \
%endif
-Dreadline=yes \
-Dbatch-insert=yes \
-Ddynamic-cats-backends=yes \
-Ddynamic-storage-backends=yes \
-Dscsi-crypto=yes \
-Dlmdb=yes \
-Dndmp=yes \
-Dacl=yes \
-Dxattr=yes \
%if 0%{?build_bat}
-Dbat=yes \
%endif
%if 0%{?build_qt_monitor}
-Dtraymonitor=yes \
%endif
%if 0%{?client_only}
-Dclient-only=yes \
%endif
-Dpostgresql=yes \
-Ddir-user=%{director_daemon_user} \
-Ddir-group=%{daemon_group} \
-Dsd-user=%{storage_daemon_user} \
-Dsd-group=%{storage_daemon_group} \
-Dfd-user=%{file_daemon_user} \
-Dfd-group=%{daemon_group} \
-Ddir-password="XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX" \
-Dfd-password="XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX" \
-Dsd-password="XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX" \
-Dmon-dir-password="XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX" \
-Dmon-fd-password="XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX" \
-Dmon-sd-password="XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX" \
-Dopenssl=yes \
-Dbasename="XXX_REPLACE_WITH_LOCAL_HOSTNAME_XXX" \
-Dhostname="XXX_REPLACE_WITH_LOCAL_HOSTNAME_XXX" \
-Dsystemd=yes \
-Dincludes=yes \
%if !0%{?webui}
-DENABLE_WEBUI=no \
%endif
-Dwebuiconfdir=%{_sysconfdir}/bareos-webui \
-DVERSION_STRING=%version \
%if 0%{?make_build:1}
%make_build
%else
%__make %{?_smp_mflags}
%endif
%check
# run unit tests
pushd %{CMAKE_BUILDDIR}
# run the tests and fail build if test fails
REGRESS_DEBUG=1 ctest -V -S CTestScript.cmake || echo "ctest result:$?"
%install
pushd %{CMAKE_BUILDDIR}
make DESTDIR=%{buildroot} install/fast
popd
install -d -m 755 %{buildroot}%{_datadir}/applications
install -d -m 755 %{buildroot}%{_datadir}/pixmaps
install -d -m 755 %{buildroot}%{backend_dir}
install -d -m 755 %{buildroot}%{working_dir}
install -d -m 755 %{buildroot}%{plugin_dir}
#Cleaning
for F in \
%if 0%{?client_only}
%{_mandir}/man1/bregex.1.gz \
%{_mandir}/man1/bsmtp.1.gz \
%{_mandir}/man1/bwild.1.gz \
%{_mandir}/man8/bareos-dbcheck.8.gz \
%{_mandir}/man8/bareos-dir.8.gz \
%{_mandir}/man8/bareos-sd.8.gz \
%{_mandir}/man8/bareos.8.gz \
%{_mandir}/man8/bcopy.8.gz \
%{_mandir}/man8/bextract.8.gz \
%{_mandir}/man8/bls.8.gz \
%{_mandir}/man8/bpluginfo.8.gz \
%{_mandir}/man8/bscan.8.gz \
%{_mandir}/man8/bscrypto.8.gz \
%{_mandir}/man8/btape.8.gz \
%{_sysconfdir}/logrotate.d/bareos-dir \
%{_sysconfdir}/rc.d/init.d/bareos-dir \
%{_sysconfdir}/rc.d/init.d/bareos-sd \
%{script_dir}/disk-changer \
%{script_dir}/mtx-changer \
%{_sysconfdir}/%{name}/mtx-changer.conf \
%endif
%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/bareos-dir \
%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/bareos-sd \
%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/bareos-fd \
%{_sysconfdir}/rc.d/init.d/bareos-dir \
%{_sysconfdir}/rc.d/init.d/bareos-sd \
%{_sysconfdir}/rc.d/init.d/bareos-fd \
%{_sysconfdir}/init.d/bareos-dir \
%{_sysconfdir}/init.d/bareos-sd \
%{_sysconfdir}/init.d/bareos-fd \
%if !0%{?vmware}
%{_sbindir}/bareos_vadp_dumper \
%{_sbindir}/bareos_vadp_dumper_wrapper.sh \
%{_sbindir}/vmware_cbt_tool.py \
%endif
%{_sbindir}/btestls \
%{script_dir}/bareos \
%{script_dir}/bareos-ctl-dir \
%{script_dir}/bareos-ctl-fd \
%{script_dir}/bareos-ctl-funcs \
%{script_dir}/bareos-ctl-sd \
%{script_dir}/btraceback.dbx \
%{script_dir}/btraceback.mdb \
%{_docdir}/%{name}/INSTALL \
%{_sbindir}/%{name}
do
rm -f "%{buildroot}/$F"
done
# remove links to libraries
# for i in #{buildroot}/#{_libdir}/libbareos*; do printf "$i: "; readelf -a $i | grep SONAME; done
find %{buildroot}/%{library_dir} -type l -name "libbareos*.so" -maxdepth 1 -delete
ls -la %{buildroot}/%{library_dir}
%if ! 0%{?python_plugins}
rm -f %{buildroot}/%{plugin_dir}/python-*.so
rm -f %{buildroot}/%{plugin_dir}/*.py*
rm -f %{buildroot}/%{_sysconfdir}/%{name}/bareos-dir.d/plugin-python-ldap.conf
%endif
%if ! 0%{?glusterfs}
rm -f %{buildroot}/%{script_dir}/bareos-glusterfind-wrapper
%endif
# remove man page if qt tray monitor is not built
%if !0%{?build_qt_monitor}
rm %{buildroot}%{_mandir}/man1/bareos-tray-monitor.*
%endif
# remove vmware plugin files when vmware is not built
%if !0%{?vmware}
rm -f %{buildroot}%{plugin_dir}/bareos-fd-vmware.py*
%endif
# install systemd service files
install -d -m 755 %{buildroot}%{_unitdir}
#install -m 644 core/platforms/systemd/bareos-dir.service %{buildroot}%{_unitdir}
#install -m 644 core/platforms/systemd/bareos-fd.service %{buildroot}%{_unitdir}
#install -m 644 core/platforms/systemd/bareos-sd.service %{buildroot}%{_unitdir}
ln -sf service %{buildroot}%{_sbindir}/rcbareos-dir
ln -sf service %{buildroot}%{_sbindir}/rcbareos-fd
ln -sf service %{buildroot}%{_sbindir}/rcbareos-sd
install -vd %{buildroot}%{_sysusersdir}
install -vm644 %{SOURCE1} %{buildroot}%{_sysusersdir}
# install -vm755 %_sourcedir/%name-%version/bareos.pre %{buildroot}
install -vd %{buildroot}%{_sysconfdir}/permissions.d
for permset in easy secure paranoid ; \
do install -vm644 "%{_sourcedir}/permissions.%{name}-fd.$permset" "%{buildroot}%{_sysconfdir}/permissions.d/%{name}-fd.$permset" ; done
install -vd %{buildroot}%{_prefix}/lib/firewalld/services
for fwservice in bareos-dir bareos-sd bareos-fd ; \
do install -vm644 "%{_sourcedir}/firewall.$fwservice.xml" "%{buildroot}%{_prefix}/lib/firewalld/services/$fwservice.xml" ; done
%if 0%{?php_fpm}
install -vd %{buildroot}%{_sysconfdir}/%{phpbase}/fpm/php-fpm.d
install -m0644 %{SOURCE9} %{buildroot}%{_sysconfdir}/%{phpbase}/fpm/php-fpm.d/%{name}.conf
%endif
rm -r %{buildroot}%{_datadir}/%{name}-webui/tests
rm -r %{buildroot}%{_datadir}/%{name}-webui/vendor/zendframework/zend-http/test/
# Create the target directory
mkdir -p %{buildroot}%{_sysconfdir}/apache2/vhosts.d/
# Now install the configuration file
install -m0644 %{SOURCE10} %{buildroot}%{_sysconfdir}/apache2/vhosts.d/%{name}.conf
# Create the Readme files for the meta packages
[ -d %{buildroot}%{_docdir}/%{name}/ ] || install -d -m 755 %{buildroot}%{_docdir}/%{name}
echo "This meta package emulates the former bareos-client package" > %{buildroot}%{_docdir}/%{name}/README.bareos-client
echo "This is a meta package to install a full bareos system" > %{buildroot}%{_docdir}/%{name}/README.bareos
%fdupes %{buildroot}%{_datadir}
%files
%defattr(-, root, root)
%{_docdir}/%{name}/README.bareos
%files -n system-user-%{name}
%defattr(-,root,root,-)
%{_sysusersdir}/system-user-%{name}.conf
%if 0%{?webui}
%files webui
%defattr(-,root,root,-)
# %doc webui/README.md webui/copyright
# %doc webui/doc/README-TRANSLATION.md
%{_datadir}/%{name}-webui/
# attr(-, #daemon_user, #daemon_group) #{_datadir}/#{name}/data
%dir /etc/bareos-webui
%config(noreplace) /etc/bareos-webui/directors.ini
%config(noreplace) /etc/bareos-webui/configuration.ini
%config %attr(644,root,root) /etc/bareos/bareos-dir.d/console/admin.conf.example
%config(noreplace) %attr(644,root,root) /etc/bareos/bareos-dir.d/profile/webui-admin.conf
%config %attr(644,root,root) /etc/bareos/bareos-dir.d/profile/webui-limited.conf.example
%config(noreplace) %attr(644,root,root) /etc/bareos/bareos-dir.d/profile/webui-readonly.conf
%config(noreplace) %{_apache_conf_dir}/bareos-webui.conf
%endif
%if 0%{?php_fpm}
%files webui-config-php-fpm-apache
%defattr(-,root,root,-)
%config %{_sysconfdir}/%{phpbase}/fpm/php-fpm.d/%{name}.conf
%endif
%files webui-config-apache
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/apache2/vhosts.d/%{name}.conf
%files client
%defattr(-, root, root)
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/README.bareos-client
%if 0%{?vmware}
# VMware Plugin BEGIN
%files -n bareos-vadp-dumper
%defattr(-,root,root)
%{_sbindir}/bareos_vadp_dumper*
%doc core/src/vmware/LICENSE.vadp
%files -n bareos-vmware-plugin
%defattr(-,root,root)
%dir %{_libdir}/bareos/
%{_sbindir}/vmware_cbt_tool.py
%{plugin_dir}/bareos-fd-vmware.py*
%doc core/src/vmware/LICENSE core/src/vmware/README.md
#VMware Plugin END
%endif
%files bconsole
# console package
%defattr(-, root, root)
%attr(0640, root, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bconsole.conf
%{_bindir}/bconsole
# will keep sbin location since I'm not able to find where/why have installed directive for both places sbin/bin
%{_sbindir}/bconsole
%{_mandir}/man1/bconsole.1.gz
%if !0%{?client_only}
%files director
# dir package (bareos-dir)
%defattr(-, root, root)
%{_sbindir}/rcbareos-dir
%dir %{_prefix}/lib/firewalld
%dir %{_prefix}/lib/firewalld/services
%{_prefix}/lib/firewalld/services/bareos-dir.xml
%attr(0775, %{director_daemon_user}, %{daemon_group}) %dir %{_localstatedir}/log/%{name}
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/catalog/MyCatalog.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/client/bareos-fd.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/console/bareos-mon.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/director/bareos-dir.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/fileset/Catalog.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/fileset/LinuxAll.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/fileset/SelfTest.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) "%{_sysconfdir}/%{name}/bareos-dir.d/fileset/Windows All Drives.conf"
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/job/backup-bareos-fd.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/job/BackupCatalog.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/jobdefs/DefaultJob.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/job/RestoreFiles.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/messages/Daemon.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/messages/Standard.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/pool/Differential.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/pool/Full.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/pool/Incremental.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/pool/Scratch.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/profile/operator.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/schedule/WeeklyCycleAfterBackup.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/schedule/WeeklyCycle.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-dir.d/storage/File.conf
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/storage/File.conf.example
%attr(0750, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir-export/
%if 0%{?build_qt_monitor}
%attr(0755, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/tray-monitor.d/director
%attr(0644, %{daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/tray-monitor.d/director/Director-local.conf
%endif
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-dir
# we do not have any dir plugin but the python plugin
#%%{plugin_dir}/*-dir.so
%{script_dir}/delete_catalog_backup
%{script_dir}/make_catalog_backup
%{script_dir}/reschedule_job_as_full.sh
%{_sbindir}/bareos-dir
%dir %{_docdir}/%{name}
%{_mandir}/man8/bareos-dir.8.gz
%{_mandir}/man8/bareos.8.gz
%{_unitdir}/bareos-dir.service
# query.sql is not a config file,
# but can be personalized by end user.
# a rpmlint rule is add to filter the warning
%config(noreplace) %{script_dir}/query.sql
%files storage
# sd package (bareos-sd, bls, btape, bcopy, bextract)
%defattr(-, root, root)
%attr(0775, %{storage_daemon_user}, %{daemon_group}) %dir %{_localstatedir}/log/%{name}
%attr(0750, %{storage_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-sd.d
%attr(0750, %{storage_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-sd.d/autochanger
%attr(0750, %{storage_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-sd.d/device
%attr(0750, %{storage_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-sd.d/director
%attr(0750, %{storage_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-sd.d/ndmp
%attr(0750, %{storage_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-sd.d/messages
%attr(0750, %{storage_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-sd.d/storage
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-sd.d/device/FileStorage.conf
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-sd.d/director/bareos-dir.conf
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-sd.d/director/bareos-mon.conf
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-sd.d/messages/Standard.conf
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-sd.d/storage/bareos-sd.conf
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/device/FileStorage.conf.example
%attr(0750, %{storage_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/autochanger/FileStorage.conf.example
%if 0%{?build_qt_monitor}
%attr(0755, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/tray-monitor.d/storage
%attr(0644, %{daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/tray-monitor.d/storage/StorageDaemon-local.conf
%endif
%{_sbindir}/rcbareos-sd
%dir %{_prefix}/lib/firewalld
%dir %{_prefix}/lib/firewalld/services
%{_prefix}/lib/firewalld/services/bareos-sd.xml
%{_sbindir}/bareos-sd
%{script_dir}/disk-changer
%{plugin_dir}/autoxflate-sd.so
%{backend_dir}/libbareossd-file*.so
%{_mandir}/man8/bareos-sd.8.gz
%{_unitdir}/bareos-sd.service
%attr(0775, %{storage_daemon_user}, %{daemon_group}) %dir /var/lib/%{name}/storage
%files storage-tape
# tape specific files
%defattr(-, root, root)
%{backend_dir}/libbareossd-tape*.so
%{script_dir}/mtx-changer
%config(noreplace) %{_sysconfdir}/%{name}/mtx-changer.conf
%{_mandir}/man8/bscrypto.8.gz
%{_mandir}/man8/btape.8.gz
%{_sbindir}/bscrypto
%{_sbindir}/btape
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/storage/Tape.conf.example
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/autochanger/autochanger-0.conf.example
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/device/tapedrive-0.conf.example
%{plugin_dir}/scsicrypto-sd.so
%{plugin_dir}/scsitapealert-sd.so
%files storage-fifo
%defattr(-, root, root)
%{backend_dir}/libbareossd-fifo*.so
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/storage/NULL.conf.example
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/device/NULL.conf.example
%files storage-deduplicate-plugin
%defattr(-, root, root)
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/storage/Dedupable.conf.example
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/storage/dplcompat.conf.example
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/device/Dedupable.conf.example
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/device/dplcompat.conf.example
%{backend_dir}/libbareossd-dedupable.so
%{backend_dir}/libbareossd-dplcompat.so
%{_sbindir}/bdedupestimate
%if 0%{?droplet}
%files storage-droplet
%defattr(-, root, root)
%{backend_dir}/libbareossd-droplet*.so
%attr(0640, %{director_daemon_user},%{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/storage/S3_Object.conf.example
%attr(0640, %{storage_daemon_user},%{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/device/S3_ObjectStorage.conf.example
%dir %{_sysconfdir}/%{name}/bareos-sd.d/device/droplet/
%attr(0640, %{storage_daemon_user},%{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/device/droplet/*.example
%attr(0640, %{storage_daemon_user},%{daemon_group}) %{script_dir}/s3cmd-wrapper.sh
%{_bindir}/chunk_check.py
%endif
%if 0%{?glusterfs}
%files storage-glusterfs
%defattr(-, root, root)
%{backend_dir}/libbareossd-gfapi*.so
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/storage/Gluster.conf.example
%attr(0640, %{storage_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-sd.d/device/GlusterStorage.conf.example
%endif
# not client_only
%endif
%files filedaemon
# fd package (bareos-fd, plugins)
%defattr(-, root, root)
%attr(0775, %{file_daemon_user}, %{daemon_group}) %dir %{_localstatedir}/log/%{name}
%attr(0750, %{file_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-fd.d/
%attr(0750, %{file_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-fd.d/client
%attr(0750, %{file_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-fd.d/director
%attr(0750, %{file_daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-fd.d/messages
%attr(0640, %{file_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-fd.d/client/myself.conf
%attr(0640, %{file_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-fd.d/director/bareos-dir.conf
%attr(0640, %{file_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-fd.d/director/bareos-mon.conf
%attr(0640, %{file_daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/bareos-fd.d/messages/Standard.conf
%if 0%{?build_qt_monitor}
%attr(0755, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/tray-monitor.d/client
%attr(0644, %{daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/tray-monitor.d/client/FileDaemon-local.conf
%endif
%config %{_sysconfdir}/permissions.d/%{name}-fd.*
%verify(not mode caps) %attr(0750, root, %{daemon_group}) %{_sbindir}/%{name}-fd
%{_sbindir}/rcbareos-fd
%dir %{_prefix}/lib/firewalld
%dir %{_prefix}/lib/firewalld/services
%{_prefix}/lib/firewalld/services/bareos-fd.xml
%{plugin_dir}/bpipe-fd.so
%{_mandir}/man8/bareos-fd.8.gz
# tray monitor
%{_unitdir}/bareos-fd.service
%files common
# common shared libraries (without db)
%defattr(-, root, root)
%attr(0755, root, %{daemon_group}) %dir %{_sysconfdir}/%{name}
%if !0%{?client_only}
# these directories belong to bareos-common,
# as other packages may contain configurations for the director.
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/catalog
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/client
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/console
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/counter
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/director
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/fileset
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/job
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/jobdefs
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/messages
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/pool
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/profile
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/schedule
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/storage
%attr(0750, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/bareos-dir.d/user
# tray monitor configurate is installed by the target daemons
%if 0%{?build_qt_monitor}
%attr(0755, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/tray-monitor.d
%endif
%endif
%dir %{backend_dir}
%{library_dir}/libbareosfastlz.so*
%{library_dir}/libbareos.so*
%{library_dir}/libbareosfind.so*
%{library_dir}/libbareoslmdb.so*
%if !0%{?client_only}
%{library_dir}/libbareosndmp.so*
%{library_dir}/libbareossd.so*
%endif
# generic stuff needed from multiple bareos packages
%dir /usr/lib/%{name}/
%dir %{script_dir}
%{script_dir}/bareos-config
%{script_dir}/bareos-config-lib.sh
%{script_dir}/btraceback.gdb
%if "%{_libdir}" != "/usr/lib/"
%dir %{_libdir}/%{name}/
%endif
%dir %{plugin_dir}
%if !0%{?client_only}
%{_bindir}/bsmtp
%{_sbindir}/bsmtp
%endif
%{_sbindir}/btraceback
%if !0%{?client_only}
%{_mandir}/man1/bsmtp.1.gz
%endif
%{_mandir}/man8/btraceback.8.gz
%attr(0770, %{daemon_user}, %{daemon_group}) %dir %{working_dir}
%attr(0775, %{daemon_user}, %{daemon_group}) %dir /var/log/%{name}
# %doc AGPL-3.0.txt core/LICENSE core/README.* debian/copyright
#TODO: cmake does not create build directory
#doc build/
%if !0%{?client_only}
%files database-common
# catalog independent files
%defattr(-, root, root)
%{library_dir}/libbareossql*.so.*
%dir %{script_dir}/ddl
%dir %{script_dir}/ddl/creates
%dir %{script_dir}/ddl/drops
%dir %{script_dir}/ddl/grants
%dir %{script_dir}/ddl/updates
%{script_dir}/create_bareos_database
%{script_dir}/drop_bareos_database
%{script_dir}/drop_bareos_tables
%{script_dir}/grant_bareos_privileges
%{script_dir}/make_bareos_tables
%{script_dir}/update_bareos_tables
%{script_dir}/ddl/versions.map
%files database-postgresql
# postgresql catalog files
%defattr(-, root, root)
%{script_dir}/ddl/*/postgresql*.sql
%files database-tools
# dbtools with link to db libs (dbcheck, bscan)
%defattr(-, root, root)
%{_sbindir}/bareos-dbcheck
%{_sbindir}/bscan
%{_mandir}/man8/bareos-dbcheck.8.gz
%{_mandir}/man8/bscan.8.gz
%files tools
# tools without link to db libs (bwild, bregex)
%defattr(-, root, root)
%{_bindir}/bregex
%{_bindir}/bwild
%{_sbindir}/bcopy
%{_sbindir}/bextract
%{_sbindir}/bls
%{_sbindir}/testfind
%{_sbindir}/bregex
%{_sbindir}/bwild
%{_sbindir}/bpluginfo
%{_mandir}/man1/bwild.1.gz
%{_mandir}/man1/bregex.1.gz
%{_mandir}/man8/bcopy.8.gz
%{_mandir}/man8/bextract.8.gz
%{_mandir}/man8/bls.8.gz
%{_mandir}/man8/bpluginfo.8.gz
%if 0%{?build_qt_monitor}
%files traymonitor
%defattr(-,root, root)
%attr(0755, %{daemon_user}, %{daemon_group}) %dir %{_sysconfdir}/%{name}/tray-monitor.d/monitor
%attr(0644, %{daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/%{name}/tray-monitor.d/monitor/bareos-mon.conf
%config %{_sysconfdir}/xdg/autostart/bareos-tray-monitor.desktop
%{_bindir}/bareos-tray-monitor
%{_mandir}/man1/bareos-tray-monitor.1.gz
%{_datadir}/applications/bareos-tray-monitor.desktop
%{_datadir}/pixmaps/bareos-tray-monitor.png
%endif
# client_only
%endif
%if 0%{?python_plugins}
%files filedaemon-python3-plugin
%defattr(-, root, root)
%{plugin_dir}/python3-fd.so
%{python3_sitearch}/bareosfd*.so
%files filedaemon-python-plugins-common
%{plugin_dir}/bareos-fd-local-fileset.py*
%{plugin_dir}/BareosFdPluginBaseclass.py*
%{plugin_dir}/BareosFdPluginLocalFilesBaseclass.py*
%{plugin_dir}/BareosFdWrapper.py*
%{script_dir}/bareos_encode_string.py
%files filedaemon-ldap-python-plugin
%defattr(-, root, root)
%{plugin_dir}/bareos-fd-ldap.py*
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/fileset/plugin-ldap.conf.example
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/job/backup-ldap.conf.example
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/job/restore-ldap.conf.example
%files filedaemon-libcloud-python-plugin
%defattr(-, root, root)
%{plugin_dir}/bareos-fd-libcloud.py*
%{plugin_dir}/BareosFdPluginLibcloud.py*
%{plugin_dir}/BareosLibcloudApi.py*
%dir %{plugin_dir}/bareos_libcloud_api
%{plugin_dir}/bareos_libcloud_api/*
#attr(0640, #{director_daemon_user}, #{daemon_group}) #{_sysconfdir}/#{name}/bareos-dir.d/fileset/plugin-libcloud.conf.example
#attr(0640, #{director_daemon_user}, #{daemon_group}) #{_sysconfdir}/#{name}/bareos-dir.d/job/backup-libcloud.conf.example
%files filedaemon-postgresql-python-plugin
%defattr(-, root, root)
%{plugin_dir}/bareos-fd-postgresql.py*
%files filedaemon-percona-xtrabackup-python-plugin
%defattr(-, root, root)
%{plugin_dir}/bareos-fd-percona-xtrabackup.py*
%files filedaemon-mariabackup-python-plugin
%defattr(-, root, root)
%{plugin_dir}/bareos-fd-mariabackup.py*
%dir %{plugin_dir}/mariadb-dump
%{plugin_dir}/mariadb-dump/bareos-fd-mariadb-dump.py*
%doc %{plugin_dir}/mariadb-dump/README.md
%files director-python3-plugin
%defattr(-, root, root)
%{plugin_dir}/python3-dir.so
%{python3_sitearch}/bareosdir*.so
%files director-python-plugins-common
%{plugin_dir}/BareosDirPluginBaseclass.py*
%{plugin_dir}/bareos-dir-class-plugin.py*
%{plugin_dir}/BareosDirWrapper.py*
%files storage-python3-plugin
%defattr(-, root, root)
%{plugin_dir}/python3-sd.so
%{python3_sitearch}/bareossd*.so
%files storage-python-plugins-common
%{plugin_dir}/BareosSdPluginBaseclass.py*
%{plugin_dir}/BareosSdWrapper.py*
%{plugin_dir}/bareos-sd-class-plugin.py*
# python_plugins
%endif
%if 0%{?glusterfs}
%files filedaemon-glusterfs-plugin
%{script_dir}/bareos-glusterfind-wrapper
%{plugin_dir}/gfapi-fd.so
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/fileset/plugin-gfapi.conf.example
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/job/BackupGFAPI.conf.example
%attr(0640, %{director_daemon_user}, %{daemon_group}) %{_sysconfdir}/%{name}/bareos-dir.d/job/RestoreGFAPI.conf.example
%endif
%if 0%{?contrib}
%files contrib-tools
%defattr(-, root, root)
%{_bindir}/bareos-triggerjob.py
%{_bindir}/bsmc
%attr(0640, %{daemon_user}, %{daemon_group}) %config(noreplace) %{_sysconfdir}/bareos/bsmc.conf
%files contrib-filedaemon-python-plugins
%defattr(-, root, root)
%{plugin_dir}/bareos_mysql_dump
%{plugin_dir}/bareos_tasks
%{plugin_dir}/openvz7
%files contrib-director-python-plugins
%defattr(-, root, root)
%{plugin_dir}/BareosDirPluginNscaSender.py*
%{plugin_dir}/bareos-dir-nsca-sender.py*
# endif: contrib
%endif
#
# Define some macros for updating the system settings.
#
%define insserv_cleanup() (/bin/true; %nil)
%define post_scsicrypto() \
if [ -f "%{_sysconfdir}/%{name}/.enable-cap_sys_rawio" ]; then \
%{script_dir}/bareos-config set_scsicrypto_capabilities; \
fi\
%nil
%if 0%{?webui}
%post webui
a2enmod rewrite &> /dev/null || true
a2enmod proxy &> /dev/null || true
a2enmod proxy_fcgi &> /dev/null || true
a2enmod fcgid &> /dev/null || true
%endif
%post director
%{script_dir}/bareos-config initialize_local_hostname
%{script_dir}/bareos-config initialize_passwords
%service_add_post bareos-dir.service
%post tools
%post_scsicrypto
%post storage
# pre script has already generated the storage daemon user,
# but here we add the user to additional groups
%{script_dir}/bareos-config setup_sd_user
%{script_dir}/bareos-config initialize_local_hostname
%{script_dir}/bareos-config initialize_passwords
%post_scsicrypto
%service_add_post bareos-sd.service
%post storage-tape
%post_scsicrypto
%posttrans storage-tape
%post_scsicrypto
%post filedaemon
%{script_dir}/bareos-config initialize_local_hostname
%{script_dir}/bareos-config initialize_passwords
%set_permissions %{_sbindir}/%{name}-fd
%firewalld_reload
%verifyscript filedaemon
%verify_permissions -e %{_sbindir}/%{name}-fd
%service_add_post bareos-fd.service
%post bconsole
%{script_dir}/bareos-config initialize_local_hostname
%{script_dir}/bareos-config initialize_passwords
%post common
/sbin/ldconfig
%postun common
/sbin/ldconfig
%post database-common
/sbin/ldconfig
%postun database-common
/sbin/ldconfig
%post database-postgresql
/sbin/ldconfig
%post database-tools
%post_scsicrypto
%postun database-postgresql
/sbin/ldconfig
%if 0%{?build_qt_monitor}
%post traymonitor
%{script_dir}/bareos-config initialize_local_hostname
%{script_dir}/bareos-config initialize_passwords
%endif
%pre -f %_sourcedir/%name-%version/%{name}.pre director
%service_add_pre bareos-dir.service
%pre -f %_sourcedir/%name-%version/%{name}.pre storage
%service_add_pre bareos-sd.service
%pre -f %_sourcedir/%name-%version/%{name}.pre filedaemon
%service_add_pre bareos-fd.service
%preun director
%service_del_preun bareos-dir.service
%preun storage
%service_del_preun bareos-sd.service
%preun filedaemon
%service_del_preun bareos-fd.service
%postun director
%service_del_postun bareos-dir.service
%postun storage
%service_del_postun bareos-sd.service
%postun filedaemon
%service_del_postun bareos-fd.service
%insserv_cleanup
%changelog