michael@20: ##
michael@20: ## bacula.spec -- OpenPKG RPM Package Specification
michael@578: ## Copyright (c) 2000-2012 OpenPKG Foundation e.V.
michael@20: ##
michael@20: ## Permission to use, copy, modify, and distribute this software for
michael@20: ## any purpose with or without fee is hereby granted, provided that
michael@20: ## the above copyright notice and this permission notice appear in all
michael@20: ## copies.
michael@20: ##
michael@20: ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
michael@20: ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@20: ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@20: ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
michael@20: ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@20: ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@20: ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
michael@20: ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
michael@20: ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@20: ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@20: ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@20: ## SUCH DAMAGE.
michael@20: ##
michael@20:
michael@579: # MSvB:
michael@579: # MSvB: Note, see http://www.bacula.org/en/?page=news
michael@579: # MSvB: for information on new configuration options.
michael@579: # MSvB: Warning! -L /pfx/lib is placed before locally
michael@579: # MSvB: built libraries (bacula-/src/cats...)
michael@579: # MSvB: which causes the old version of bacula to
michael@579: # MSvB: supply logic to the new version build!
michael@579: # MSvB:
michael@579:
michael@20: # package information
michael@20: Name: bacula
michael@20: Summary: Network Backup Tool
michael@20: URL: http://www.bacula.org/
michael@20: Vendor: Kern Sibbald
michael@20: Packager: OpenPKG Foundation e.V.
michael@20: Distribution: OpenPKG Community
michael@20: Class: PLUS
michael@20: Group: System
michael@20: License: GPL
michael@578: Version: 5.2.10
michael@579: Release: 20120800
michael@20:
michael@20: # package options
michael@20: %option with_server yes
michael@20: %option with_ssl yes
michael@20: %option with_wrap no
michael@20: %option with_dvd no
michael@20: %option with_mtx no
michael@20: %option with_python no
michael@577: %option with_db_sqlite no
michael@577: %option with_db_pgsql no
michael@577: %option with_db_mysql no
michael@577:
michael@577: # package option sanity check
michael@577: %if "%{with_db_sqlite}" == "no" && "%{with_db_mysql}" == "no" && "%{with_db_pgsql}" == "no"
michael@577: %undefine with_db_sqlite
michael@577: %define with_db_sqlite yes
michael@577: %endif
michael@20:
michael@20: # list of sources
michael@20: Source0: http://switch.dl.sourceforge.net/bacula/bacula-%{version}.tar.gz
michael@20: Source1: rc.bacula
michael@20: Source2: bexec.sh
michael@20: Patch0: bacula.patch
michael@20:
michael@20: # build information
michael@578: BuildPreReq: OpenPKG, openpkg >= 20100101, make, gcc, gcc::with_cxx = yes
michael@578: PreReq: OpenPKG, openpkg >= 20100101
michael@579: BuildPreReq: ncurses, readline, zlib
michael@579: PreReq: ncurses, readline, zlib
michael@20: %if "%{with_ssl}" == "yes"
michael@579: BuildPreReq: openssl >= 0.9.8, openssl::with_threads = yes
michael@579: PreReq: openssl >= 0.9.8, openssl::with_threads = yes
michael@20: %endif
michael@20: %if "%{with_wrap}" == "yes"
michael@20: BuildPreReq: tcpwrappers
michael@20: PreReq: tcpwrappers
michael@20: %endif
michael@577: %if "%{with_db_sqlite}" == "yes"
michael@20: BuildPreReq: sqlite
michael@20: PreReq: sqlite
michael@20: %endif
michael@577: %if "%{with_db_mysql}" == "yes"
michael@20: BuildPreReq: mysql
michael@20: PreReq: mysql
michael@20: %endif
michael@577: %if "%{with_db_pgsql}" == "yes"
michael@20: BuildPreReq: postgresql
michael@20: PreReq: postgresql
michael@20: %endif
michael@20: %if "%{with_dvd}" == "yes"
michael@20: BuildPreReq: dvdrw-tools
michael@20: PreReq: dvdrw-tools
michael@20: %endif
michael@20: %if "%{with_mtx}" == "yes"
michael@20: BuildPreReq: mtx
michael@20: PreReq: mtx
michael@20: %endif
michael@20: %if "%{with_python}" == "yes" || "%{with_dvd}" == "yes"
michael@20: BuildPreReq: python
michael@20: PreReq: python
michael@20: %endif
michael@20:
michael@20: %description
michael@20: Bacula is a set of computer programs that permit you (or the system
michael@20: administrator) to manage backup, recovery, and verification of
michael@20: computer data across a network of computers of different kinds. In
michael@20: technical terms, it is a network client/server based backup program.
michael@20: Bacula is relatively easy to use and efficient, while offering many
michael@20: advanced storage management features that make it easy to find and
michael@20: recover lost or damaged files.
michael@20:
michael@20: %track
michael@20: prog bacula = {
michael@20: version = %{version}
michael@577: url = http://sourceforge.net/projects/bacula/files/
michael@20: regex = bacula-(\d+\.\d*[02468]\.\d+)\.tar\.gz
michael@20: }
michael@20:
michael@20: %prep
michael@20: %setup -q
michael@20: %patch -p0
michael@20: rm -f src/lib/tcpd.h
michael@20:
michael@20: %build
michael@20: # generate a random director password
michael@579: #password=`tr -dc A-Za-z0-9 /dev/null || true
michael@20: ( cd $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula &&
michael@578: for unwanted in bconsole startmysql stopmysql; do
michael@20: rm -f $unwanted
michael@20: done
michael@20: ) || exit $?
michael@649: ( cd $RPM_BUILD_ROOT%{l_prefix}/man/man1
michael@649: rm -f bacula-bwxconsole.1 bacula-tray-monitor.1 bat.1
michael@649: ) || exit $?
michael@20:
michael@20: # install additional files
michael@20: %{l_shtool} install -c -m 754 %{l_value -s -a} \
michael@20: %{SOURCE bexec.sh} $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula/bexec
michael@20:
michael@579: ## wrap binaries to avoid specifying '-c' on each run
michael@579: #( cd $RPM_BUILD_ROOT%{l_prefix}/sbin
michael@579: # for bin in bacula-dir bacula-fd bacula-sd \
michael@579: # bconsole bcopy bextract bls bscan dbcheck \
michael@579: # tray-monitor wx-console; do
michael@579: # if [ -x $bin ]; then
michael@579: # mv $bin $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula
michael@579: # ln $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula/bexec ./$bin
michael@579: # fi
michael@579: # done
michael@579: #) || exit $?
michael@20:
michael@579: # install runcommand script
michael@20: %{l_shtool} install -c -m 755 %{l_value -s -a} \
michael@20: -e 's,@with_server@,%{with_server},g' \
michael@20: %{SOURCE rc.bacula} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
michael@20:
michael@20: # determine installation files
michael@20: %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
michael@20: %{l_files_std} \
michael@578: '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula' \
michael@578: '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula/run' \
michael@578: '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula/run/subsys' \
michael@20: '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/dvd-handler' \
michael@20: '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/mtx-changer' \
michael@578: %if "%{with_server}" == "yes"
michael@578: '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/make_catalog_backup' \
michael@578: '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/delete_catalog_backup'\
michael@579: '%attr(-,%{l_musr},%{l_rgrp}) %config(noreplace) %{l_prefix}/etc/bacula/bacula-dir.conf' \
michael@579: '%attr(-,%{l_musr},%{l_rgrp}) %config(noreplace) %{l_prefix}/etc/bacula/bacula-sd.conf' \
michael@578: %endif
michael@579: '%attr(-,%{l_musr},%{l_rgrp}) %config(noreplace) %{l_prefix}/etc/bacula/bacula-fd.conf' \
michael@579: '%attr(-,%{l_musr},%{l_rgrp}) %config(noreplace) %{l_prefix}/etc/bacula/bconsole.conf' \
michael@579: '%attr(750,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/clients' \
michael@579: '%attr(750,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/scripts'
michael@20:
michael@20: %files -f files
michael@20:
michael@20: %clean
michael@20:
michael@20: %post
michael@20: # create initial database
michael@579: %if "%{with_server}" == "yes"
michael@20: if [ ! -f $RPM_INSTALL_PREFIX/var/bacula/bacula.db ]; then
michael@20: $RPM_INSTALL_PREFIX/libexec/bacula/make_bacula_tables
michael@20: chmod 600 $RPM_INSTALL_PREFIX/var/bacula/bacula.db
michael@20: chown %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/var/bacula/bacula.db
michael@20: fi
michael@579: %endif
michael@20:
michael@20: # after upgrade, restart service
michael@20: [ $1 -eq 2 ] || exit 0
michael@20: eval `%{l_rc} bacula status 2>/dev/null`
michael@20: [ ".$bacula_active" = .yes ] && %{l_rc} bacula restart
michael@20: exit 0
michael@20:
michael@20: %preun
michael@20: # before erase, stop service and remove working files
michael@20: [ $1 -eq 0 ] || exit 0
michael@20: %{l_rc} bacula stop 2>/dev/null
michael@20: rm -rf $RPM_INSTALL_PREFIX/var/bacula/*
michael@20: exit 0
michael@20: