File bareos.macros of Package bareos-macros
### This file contains macros used during the Bareos build process.
### Author: Georg Pfuetzenreuter <georg.pfuetzenreuter@suse.com>
### Descriptions:
%bareos_dscr_short Bareos - Backup Archiving Recovery Open Sourced.
%bareos_dscr_long 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.
### Conditionals:
%bareos_conditionals \
%bcond_without vanilla_config \
%bcond_with suse_branding \
%{nil}
### Paths:
%bareos_library_dir %{_libdir}/%{name}
%bareos_backend_dir %{bareos_library_dir}/backends
%bareos_plugin_dir %{bareos_library_dir}/plugins
%bareos_script_dir %{_prefix}/lib/%{name}/scripts
%bareos_working_dir %{_sharedstatedir}/%{name}
%bareos_subsys_dir %{_rundir}/%{name}
%bareos_pid_dir %{bareos_subsys_dir}
%bareos_bsr_dir %{bareos_working_dir}
%bareos_apache_base_dir %{_sysconfdir}/apache2/
%bareos_apache_conf_dir %{bareos_apache_base_dir}conf.d/
%bareos_apache_vhost_dir %{bareos_apache_base_dir}vhosts.d/
%bareos_CMAKE_BUILDDIR cmake-build
### Users and groups:
%bareos_daemon_user bareos
%bareos_daemon_group bareos
%bareos_director_daemon_user %{bareos_daemon_user}
%bareos_storage_daemon_user %{bareos_daemon_user}
# FD runs as daemon_user on SUSE distributions as the binary has capabilities set there. On other distributions, it will run as root.
%bareos_file_daemon_user %{bareos_daemon_user}
%bareos_storage_daemon_group %{bareos_daemon_group}
%bareos_www_daemon_user wwwrun
%bareos_www_daemon_group www
%create_group() \
getent group %1 > /dev/null || groupadd -r %1
%create_user() \
getent passwd %1 > /dev/null || useradd -rc "Bareos" -d %{bareos_working_dir} -g %{bareos_daemon_group} -s /sbin/nologin %1
### Build helpers:
%bareos_configure \
cmake .. \\\
-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=/usr/share \\\
-DBUILD_SHARED_LIBS:BOOL=ON \\\
-DDEBUG_PREFIX_MAP:BOOL=OFF \\\
-Dprefix=%{_prefix} \\\
-Dlibdir=%{bareos_library_dir} \\\
-Dsbindir=%{_sbindir} \\\
-Dsbin-perm=755 \\\
-Dsysconfdir=%{_sysconfdir} \\\
-Dconfdir=%{_sysconfdir}/bareos \\\
-Dmandir=%{_mandir} \\\
-Ddocdir=%{_docdir}/%{name} \\\
-Dhtmldir=%{_docdir}/%{name}/html \\\
-Darchivedir=/var/lib/%{name}/storage \\\
-Dbackenddir=%{bareos_backend_dir} \\\
-Dscriptdir=%{bareos_script_dir} \\\
-Dworkingdir=%{bareos_working_dir} \\\
-Dplugindir=%{bareos_plugin_dir} \\\
-Dpiddir=%{bareos_pid_dir} \\\
-Dbsrdir=%{bareos_bsr_dir} \\\
-Dlogdir=/var/log/bareos \\\
-Dsubsysdir=%{bareos_subsys_dir} \\\
%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 \\\
-Dipv6=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=%{bareos_director_daemon_user} \\\
-Ddir-group=%{bareos_daemon_group} \\\
-Dsd-user=%{bareos_storage_daemon_user} \\\
-Dsd-group=%{bareos_storage_daemon_group} \\\
%if 0%{?suse_version} \
-Dfd-user=%{bareos_file_daemon_user} \\\
%else \
-Dfd-user=root \\\
%endif \
-Dfd-group=%{bareos_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" \\\
%if 0%{?systemd_support} \
-Dsystemd=yes \\\
%endif \
-Dincludes=yes \\\
-Ddefault_db_backend="XXX_REPLACE_WITH_DATABASE_DRIVER_XXX" \\\
-Dwebuiconfdir=%{_sysconfdir}/bareos-webui \\\
-DVERSION_STRING=%version
%bareos_compile \
%__make CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags}
%bareos_build \
export CFLAGS="${CFLAGS:-%optflags}" \
export CXXFLAGS="${CXXFLAGS:-%optflags}" \
%if 0%{?suse_version} <= 1315 \
export CC=gcc-11 \
export CXX=g++-11 \
export CFLAGS="$CFLAGS -fPIE" \
export CXXFLAGS="$CXXFLAGS -fPIE" \
export LDFLAGS="$LDFLAGS -pie" \
%endif \
%if 0%{?suse_version} > 1500 \
export CFLAGS="$CFLAGS -s" \
export CXXFLAGS="$(echo $CXXFLAGS | sed 's/O2/Os/') -s" \
%endif \
mkdir %{bareos_CMAKE_BUILDDIR} \
pushd %{bareos_CMAKE_BUILDDIR} \
%bareos_configure \
%bareos_compile \
popd
%bareos_install \
pushd %{bareos_CMAKE_BUILDDIR} \
%__make %{?_smp_mflags} DESTDIR=%{buildroot} install \
popd
%bareos_test \
pushd %{bareos_CMAKE_BUILDDIR} \
REGRESS_DEBUG=1 ctest -V -S CTestScript.cmake || echo "ctest result:$?" \
popd
%bareos_cleanup \
cleanup () { \
local files \
local type="$1" \
echo "Cleanup for $type invoked ..." \
case "$type" in \
'client') \
manfiles=( \
man1/bregex.1 man1/bsmtp.1 man1/bwild.1 \
man8/bareos-dbcheck.8 man8/bareos-dbcopy.8 man8/btape.8 \
man8/bareos-dir.8 man8/bareos-sd.8 man8/bareos.8 \
man8/bcopy.8 man8/bextract.8 man8/bls.8 \
man8/bpluginfo.8 man8/bscan.8 man8/bscrypto.8 \
) \
etcfiles=( \
logrotate.d/bareos-dir %{name}/mtx-changer.conf \
rc.d/init.d/bareos-dir rc.d/init.d/bareos-sd \
) \
scriptfiles=( disk-changer mtx-changer ) ;; \
'systemd') \
etcfiles=( \
rc.d/init.d/bareos-dir rc.d/init.d/bareos-sd rc.d/init.d/bareos-fd \
init.d/bareos-dir init.d/bareos-sd init.d/bareos-fd \
) ;; \
'suse_fw') \
fwfiles=( bareos-dir bareos-sd bareos-fd ) \
etcfiles=("${fwfiles[@]/#/sysconfig\/SuSEfirewall2.d\/services\/}") ;;\
'vmware') \
sbinfiles=( \
bareos_vadp_dumper bareos_vadp_dumper_wrapper.sh vmware_cbt_tool.py \
) \
pluginfiles=( BareosFdPluginVMware.py bareos-fd-vmware.py ) ;; \
'misc') \
scriptfiles=( bareos_config btraceback.dbx btraceback.mdb ) \
docfiles=( %{name}/INSTALL ) \
sbinfiles=( %{name} ) ;; \
'python_plugins') \
pushd %{bareos_library_dir}/plugins \
pluginfiles=( python-*.so *.py* ) \
popd \
etcfiles=( %{name}/bareos-dir.d/plugin-python-ldap.conf ) ;; \
'glusterfs') \
scriptfiles=( bareos-glusterfind-wrapper ) ;; \
'qtmonitor') \
manfiles=( man1/bareos-tray-monitor.1 ) ;; \
'vanillaconfig') \
defaultdirs=( \
bareos-dir.d bareos-fd.d bareos-sd.d tray-monitor.d \
bconsole.conf mtx-changer.conf \
) \
etcfiles=("${defaultdirs[@]/#/%\{name\}\/}") \
rmflags='-r' ;; \
*) echo "Invalid argument in bareos_cleanup -> cleanup: $1" \
exit 1 ;; \
esac \
files=( \
"${manfiles[@]/#/%\{_mandir\}\/}" \
"${etcfiles[@]/#/%\{_sysconfdir\}\/}" \
"${scriptfiles[@]/#/%\{bareos_script_dir\}\/}" \
"${sbinfiles[@]/#/%\{_sbindir\}\/}" \
"${pluginfiles[@]/#/%\{bareos_plugin_dir\}\/}" \
"${scriptfiles[@]/#/%\{bareos_script_dir\}\/}" \
"${docfiles[@]/#/%\{_docdir\}\/}" \
) \
echo "Deleting ${files[@]} ..." \
rm -fv $rmflags "${files[@]/#/%\{buildroot\}}" \
unset files \\\
manfiles etcfiles scriptfiles sbinfiles pluginfiles scriptfiles docfiles \
} \
recursive_chmodx () { \
local directory="$1" \
local type="$2" \
echo "recursive_chmodx for $directory invoked ..." \
case "$type" in \
'sh') export pattern='^#!.*/bin/sh' ;; \
'py') export pattern='^#!.*/bin/python' ;; \
esac \
find "%{buildroot}$directory" -type f -execdir \\\
sh -c 'head -n1 "$1" | grep -q "$pattern" && chmod +x "$1"' _ {} \\; \
unset directory type pattern \
} \
%{nil}