bacula/bacula.spec

Wed, 29 Aug 2012 21:07:35 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 29 Aug 2012 21:07:35 +0200
changeset 651
0c602c0042b6
parent 650
f4280ba8b3ac
child 656
0f564e7490b9
permissions
-rw-r--r--

Document important information source relating to flawed libtool(1) usage.

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

mercurial