bacula/bacula.spec

Mon, 17 Sep 2012 19:10:10 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 17 Sep 2012 19:10:10 +0200
changeset 689
9fe04d4d4e5a
parent 661
5e372ee5f447
permissions
-rw-r--r--

Update to new version of vendor software although Oracle fails to deliver.
More specifically, newer db(3) patch revisions exist but Oracle has
removed them from the canonical download server URI for Berkely DB.

michael@20 1 ##
michael@20 2 ## bacula.spec -- OpenPKG RPM Package Specification
michael@578 3 ## Copyright (c) 2000-2012 OpenPKG Foundation e.V. <http://openpkg.net/>
michael@20 4 ##
michael@20 5 ## Permission to use, copy, modify, and distribute this software for
michael@20 6 ## any purpose with or without fee is hereby granted, provided that
michael@20 7 ## the above copyright notice and this permission notice appear in all
michael@20 8 ## copies.
michael@20 9 ##
michael@20 10 ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
michael@20 11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@20 12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@20 13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
michael@20 14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@20 15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@20 16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
michael@20 17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
michael@20 18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@20 19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@20 20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@20 21 ## SUCH DAMAGE.
michael@20 22 ##
michael@20 23
michael@20 24 # package information
michael@20 25 Name: bacula
michael@20 26 Summary: Network Backup Tool
michael@20 27 URL: http://www.bacula.org/
michael@20 28 Vendor: Kern Sibbald
michael@20 29 Packager: OpenPKG Foundation e.V.
michael@20 30 Distribution: OpenPKG Community
michael@20 31 Class: PLUS
michael@20 32 Group: System
michael@20 33 License: GPL
michael@578 34 Version: 5.2.10
michael@579 35 Release: 20120800
michael@20 36
michael@20 37 # package options
michael@20 38 %option with_server yes
michael@20 39 %option with_ssl yes
michael@20 40 %option with_wrap no
michael@20 41 %option with_dvd no
michael@20 42 %option with_mtx no
michael@20 43 %option with_python no
michael@577 44 %option with_db_sqlite no
michael@577 45 %option with_db_pgsql no
michael@577 46 %option with_db_mysql no
michael@577 47
michael@577 48 # package option sanity check
michael@577 49 %if "%{with_db_sqlite}" == "no" && "%{with_db_mysql}" == "no" && "%{with_db_pgsql}" == "no"
michael@577 50 %undefine with_db_sqlite
michael@577 51 %define with_db_sqlite yes
michael@577 52 %endif
michael@20 53
michael@20 54 # list of sources
michael@20 55 Source0: http://switch.dl.sourceforge.net/bacula/bacula-%{version}.tar.gz
michael@20 56 Source1: rc.bacula
michael@20 57 Source2: bexec.sh
michael@20 58 Patch0: bacula.patch
michael@20 59
michael@20 60 # build information
michael@578 61 BuildPreReq: OpenPKG, openpkg >= 20100101, make, gcc, gcc::with_cxx = yes
michael@578 62 PreReq: OpenPKG, openpkg >= 20100101
michael@678 63 BuildPreReq: ncurses, readline, zlib, lzo
michael@678 64 PreReq: ncurses, readline, zlib, lzo
michael@20 65 %if "%{with_ssl}" == "yes"
michael@579 66 BuildPreReq: openssl >= 0.9.8, openssl::with_threads = yes
michael@579 67 PreReq: openssl >= 0.9.8, openssl::with_threads = yes
michael@20 68 %endif
michael@20 69 %if "%{with_wrap}" == "yes"
michael@20 70 BuildPreReq: tcpwrappers
michael@20 71 PreReq: tcpwrappers
michael@20 72 %endif
michael@577 73 %if "%{with_db_sqlite}" == "yes"
michael@20 74 BuildPreReq: sqlite
michael@20 75 PreReq: sqlite
michael@20 76 %endif
michael@577 77 %if "%{with_db_mysql}" == "yes"
michael@20 78 BuildPreReq: mysql
michael@20 79 PreReq: mysql
michael@20 80 %endif
michael@577 81 %if "%{with_db_pgsql}" == "yes"
michael@20 82 BuildPreReq: postgresql
michael@20 83 PreReq: postgresql
michael@20 84 %endif
michael@20 85 %if "%{with_dvd}" == "yes"
michael@20 86 BuildPreReq: dvdrw-tools
michael@20 87 PreReq: dvdrw-tools
michael@20 88 %endif
michael@20 89 %if "%{with_mtx}" == "yes"
michael@20 90 BuildPreReq: mtx
michael@20 91 PreReq: mtx
michael@20 92 %endif
michael@20 93 %if "%{with_python}" == "yes" || "%{with_dvd}" == "yes"
michael@20 94 BuildPreReq: python
michael@20 95 PreReq: python
michael@20 96 %endif
michael@20 97
michael@20 98 %description
michael@20 99 Bacula is a set of computer programs that permit you (or the system
michael@20 100 administrator) to manage backup, recovery, and verification of
michael@20 101 computer data across a network of computers of different kinds. In
michael@20 102 technical terms, it is a network client/server based backup program.
michael@20 103 Bacula is relatively easy to use and efficient, while offering many
michael@20 104 advanced storage management features that make it easy to find and
michael@20 105 recover lost or damaged files.
michael@20 106
michael@20 107 %track
michael@20 108 prog bacula = {
michael@20 109 version = %{version}
michael@577 110 url = http://sourceforge.net/projects/bacula/files/
michael@20 111 regex = bacula-(\d+\.\d*[02468]\.\d+)\.tar\.gz
michael@20 112 }
michael@20 113
michael@20 114 %prep
michael@20 115 %setup -q
michael@20 116 %patch -p0
michael@20 117 rm -f src/lib/tcpd.h
michael@650 118 %{l_shtool} subst \
michael@650 119 -e 's;\( *\$(LDFLAGS)\)\(.*-L\.\.\/findlib\);\2\1;g' \
michael@650 120 -e 's;\( *\$(LDFLAGS)\)\(.*-L\.\.\/cats\);\2\1;g' \
michael@650 121 -e 's;\( *\$(LDFLAGS)\)\(.*-L\.\.\/lib\);\2\1;g' \
michael@650 122 src/stored/Makefile.in \
michael@650 123 src/console/Makefile.in \
michael@650 124 src/dird/Makefile.in \
michael@650 125 src/filed/Makefile.in \
michael@650 126 src/tools/Makefile.in \
michael@650 127 src/tray-monitor/Makefile.in \
michael@20 128
michael@20 129 %build
michael@20 130 # generate a random director password
michael@579 131 #password=`tr -dc A-Za-z0-9 </dev/urandom | head -c 33`
michael@579 132 password=`%{l_openssl} rand -base64 33`
michael@20 133
michael@20 134 # for the same reason remove version informations from config files
michael@20 135 %{l_shtool} subst \
michael@20 136 -e "s;For Bacula release @VERSION@ .*;;" \
michael@20 137 `find . -name "*.conf.in"`
michael@20 138
michael@579 139 # help specific platforms find fdatasync(3)
michael@579 140 libs=""
michael@579 141 case "%{l_platform -t}" in
michael@579 142 *-sunos* ) libs="-lrt" ;;
michael@579 143 esac
michael@579 144
michael@20 145 # use localhost as default host
michael@20 146 %{l_shtool} subst \
michael@20 147 -e 's;hostname=.*;hostname=localhost;g' \
michael@20 148 configure
michael@20 149
michael@651 150 # warning use of libtool(1) is defective in the case of static building.
michael@651 151 # http://www.bacula.org/en/dev-manual/main/main/New_Features_in_5_2_1.html#SECTION006110000000000000000
michael@20 152 # configure
michael@20 153 LIBS=
michael@20 154 case "%{l_platform -t}" in
michael@579 155 *-sunos*) LIBS="-ldl" ;;
michael@20 156 esac
michael@20 157 CC="%{l_cc}" \
michael@20 158 CFLAGS="%{l_cflags -O}" \
michael@579 159 CPPFLAGS="%{l_cppflags ncurses}" \
michael@578 160 LDFLAGS="%{l_ldflags} $LIBS" \
michael@20 161 ./configure \
michael@20 162 --prefix=%{l_prefix} \
michael@20 163 --with-dir-user=%{l_rusr} \
michael@20 164 --with-dir-group=%{l_rgrp} \
michael@20 165 --with-sd-user=%{l_rusr} \
michael@20 166 --with-sd-group=%{l_rgrp} \
michael@20 167 --with-fd-user=%{l_susr} \
michael@20 168 --with-fd-group=%{l_sgrp} \
michael@20 169 --with-dir-password="$password" \
michael@20 170 --with-fd-password="$password" \
michael@20 171 --with-sd-password="$password" \
michael@20 172 --with-mon-dir-password="$password" \
michael@20 173 --with-mon-fd-password="$password" \
michael@20 174 --with-mon-sd-password="$password" \
michael@20 175 --disable-conio \
michael@20 176 --enable-readline \
michael@20 177 --with-readline=%{l_prefix} \
michael@20 178 %if "%{with_server}" != "yes"
michael@20 179 --enable-client-only \
michael@20 180 %endif
michael@20 181 %if "%{with_ssl}" == "yes"
michael@20 182 --with-openssl=%{l_prefix} \
michael@20 183 %endif
michael@20 184 %if "%{with_wrap}" == "yes"
michael@20 185 --with-tcp-wrappers=yes \
michael@20 186 %endif
michael@577 187 %if "%{with_db_sqlite}" == "yes"
michael@20 188 --with-sqlite3=%{l_prefix} \
michael@20 189 %endif
michael@577 190 %if "%{with_db_mysql}" == "yes"
michael@20 191 --with-mysql=%{l_prefix} \
michael@20 192 %endif
michael@577 193 %if "%{with_db_pgsql}" == "yes"
michael@20 194 --with-postgresql=%{l_prefix} \
michael@20 195 %endif
michael@20 196 %if "%{with_python}" == "yes" || "%{with_dvd}" == "yes"
michael@20 197 --with-python=%{l_prefix} \
michael@20 198 %endif
michael@20 199 --sysconfdir=%{l_prefix}/etc/bacula \
michael@20 200 --mandir=%{l_prefix}/man \
michael@20 201 --with-scriptdir=%{l_prefix}/libexec/bacula \
michael@20 202 --with-working-dir=%{l_prefix}/var/bacula \
michael@20 203 --with-pid-dir=%{l_prefix}/var/bacula/run \
michael@20 204 --with-subsys-dir=%{l_prefix}/var/bacula/run/subsys \
michael@579 205 --with-archivedir=/tmp \
michael@579 206 --with-sbin-perm=0755 \
michael@649 207 --disable-libtool \
michael@20 208 --disable-nls
michael@20 209
michael@20 210 # build
michael@20 211 %{l_make} %{l_mflags -O}
michael@20 212
michael@20 213 %install
michael@20 214 # create installation hierarchy
michael@20 215 %{l_shtool} mkdir -f -p -m 755 \
michael@20 216 $RPM_BUILD_ROOT%{l_prefix}/bin \
michael@20 217 $RPM_BUILD_ROOT%{l_prefix}/sbin \
michael@20 218 $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula \
michael@20 219 $RPM_BUILD_ROOT%{l_prefix}/etc/bacula \
michael@20 220 $RPM_BUILD_ROOT%{l_prefix}/etc/bacula/clients \
michael@20 221 $RPM_BUILD_ROOT%{l_prefix}/etc/bacula/scripts \
michael@20 222 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
michael@20 223 $RPM_BUILD_ROOT%{l_prefix}/var/bacula \
michael@20 224 $RPM_BUILD_ROOT%{l_prefix}/var/bacula/run \
michael@20 225 $RPM_BUILD_ROOT%{l_prefix}/var/bacula/run/subsys \
michael@20 226 $RPM_BUILD_ROOT%{l_prefix}/man/man1 \
michael@578 227 $RPM_BUILD_ROOT%{l_prefix}/man/man8 \
michael@578 228 $RPM_BUILD_ROOT%{l_prefix}/share/bacula/examples \
michael@578 229 $RPM_BUILD_ROOT%{l_prefix}/share/bacula/examples/default-config
michael@20 230
michael@20 231 # install
michael@20 232 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
michael@20 233
michael@20 234 # strip down installation
michael@579 235 strip $RPM_BUILD_ROOT%{l_prefix}/sbin/* 2>/dev/null || true
michael@20 236 ( cd $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula &&
michael@578 237 for unwanted in bconsole startmysql stopmysql; do
michael@20 238 rm -f $unwanted
michael@20 239 done
michael@20 240 ) || exit $?
michael@649 241 ( cd $RPM_BUILD_ROOT%{l_prefix}/man/man1
michael@649 242 rm -f bacula-bwxconsole.1 bacula-tray-monitor.1 bat.1
michael@649 243 ) || exit $?
michael@20 244
michael@20 245 # install additional files
michael@20 246 %{l_shtool} install -c -m 754 %{l_value -s -a} \
michael@20 247 %{SOURCE bexec.sh} $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula/bexec
michael@20 248
michael@579 249 ## wrap binaries to avoid specifying '-c' on each run
michael@579 250 #( cd $RPM_BUILD_ROOT%{l_prefix}/sbin
michael@579 251 # for bin in bacula-dir bacula-fd bacula-sd \
michael@579 252 # bconsole bcopy bextract bls bscan dbcheck \
michael@579 253 # tray-monitor wx-console; do
michael@579 254 # if [ -x $bin ]; then
michael@579 255 # mv $bin $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula
michael@579 256 # ln $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula/bexec ./$bin
michael@579 257 # fi
michael@579 258 # done
michael@579 259 #) || exit $?
michael@20 260
michael@579 261 # install runcommand script
michael@20 262 %{l_shtool} install -c -m 755 %{l_value -s -a} \
michael@20 263 -e 's,@with_server@,%{with_server},g' \
michael@20 264 %{SOURCE rc.bacula} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
michael@20 265
michael@20 266 # determine installation files
michael@20 267 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
michael@20 268 %{l_files_std} \
michael@578 269 '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula' \
michael@578 270 '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula/run' \
michael@578 271 '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula/run/subsys' \
michael@20 272 '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/dvd-handler' \
michael@20 273 '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/mtx-changer' \
michael@578 274 %if "%{with_server}" == "yes"
michael@578 275 '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/make_catalog_backup' \
michael@578 276 '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/delete_catalog_backup'\
michael@656 277 '%config(noreplace) %attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/bacula-dir.conf' \
michael@656 278 '%config(noreplace) %attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/bacula-sd.conf' \
michael@656 279 %endif
michael@656 280 '%config(noreplace) %attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/bacula-fd.conf' \
michael@656 281 '%config(noreplace) %attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/bconsole.conf' \
michael@579 282 '%attr(750,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/clients' \
michael@579 283 '%attr(750,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/scripts'
michael@20 284
michael@20 285 %files -f files
michael@20 286
michael@20 287 %clean
michael@20 288
michael@20 289 %post
michael@20 290 # create initial database
michael@579 291 %if "%{with_server}" == "yes"
michael@20 292 if [ ! -f $RPM_INSTALL_PREFIX/var/bacula/bacula.db ]; then
michael@20 293 $RPM_INSTALL_PREFIX/libexec/bacula/make_bacula_tables
michael@20 294 chmod 600 $RPM_INSTALL_PREFIX/var/bacula/bacula.db
michael@20 295 chown %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/var/bacula/bacula.db
michael@20 296 fi
michael@579 297 %endif
michael@20 298
michael@20 299 # after upgrade, restart service
michael@20 300 [ $1 -eq 2 ] || exit 0
michael@20 301 eval `%{l_rc} bacula status 2>/dev/null`
michael@20 302 [ ".$bacula_active" = .yes ] && %{l_rc} bacula restart
michael@20 303 exit 0
michael@20 304
michael@20 305 %preun
michael@20 306 # before erase, stop service and remove working files
michael@20 307 [ $1 -eq 0 ] || exit 0
michael@20 308 %{l_rc} bacula stop 2>/dev/null
michael@20 309 rm -rf $RPM_INSTALL_PREFIX/var/bacula/*
michael@20 310 exit 0
michael@20 311

mercurial