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