]> git.sur5r.net Git - bacula/bacula/blob - bacula/platforms/rpms/redhat/bacula.spec.in
Remove libbacpy from rpm spec files
[bacula/bacula] / bacula / platforms / rpms / redhat / bacula.spec.in
1 # Bacula RPM spec file
2 #
3 # Copyright (C) 2000-2014 Bacula Systems SA
4 #
5
6 # Platform Build Configuration
7
8 # basic defines for every build
9 %define _release           @RELEASE@
10 %define _version           @VERSION@
11 %define product            bacula
12 %define _packager Kern Sibbald <kern@sibbald.com>
13 %define depkgs_version @DEPKGS_VERSION@
14
15 # Don't strip binaries
16 %define __os_install_post %{nil}
17 %define __debug_install_post %{nil}
18 %define debug_package %{nil}
19
20 %define postgres_version 8
21 %define pgre84 0
22 %{?build_rhel5:%define pgre84 1}
23 %{?build_el5:%define pgre84 1}
24 %if %{pgre84}
25 %define postgres_package postgresql84
26 %define postgres_server_package postgresql84-server
27 %define postgres_devel_package postgresql84-devel
28 %else
29 %define postgres_package postgresql
30 %define postgres_server_package postgresql-server
31 %define postgres_devel_package postgresql-devel
32 %endif
33
34 %define single_dir 1
35 %{?single_dir_install:%define single_dir 1}
36
37 # Installation Directory locations
38 %if %{single_dir}
39 %define _prefix        /opt/bacula
40 %define _sbindir       /opt/bacula/bin
41 %define _bindir        /opt/bacula/bin
42 %define _subsysdir     /opt/bacula/working
43 %define sqlite_bindir  /opt/bacula/sqlite
44 %define _mandir        /usr/share/man
45 %define docs_dir       /opt/bacula/docs
46 %define archive_dir    /opt/bacula/archive
47 %define sysconf_dir    /opt/bacula/etc
48 %define script_dir     /opt/bacula/scripts
49 %define working_dir    /opt/bacula/working
50 %define pid_dir        /opt/bacula/working
51 %define plugin_dir     /opt/bacula/plugins
52 %define lib_dir        /opt/bacula/lib
53 %define log_dir        /opt/bacula/log
54 %else
55 %define _prefix        /usr
56 %define _sbindir       %_prefix/sbin
57 %define _bindir        %_prefix/bin
58 %define _subsysdir     /var/lock/subsys
59 %define sqlite_bindir %_libdir/bacula/sqlite
60 %define _mandir        %_prefix/share/man
61 %define sysconf_dir    /etc/bacula
62 %define script_dir     %_libdir/bacula
63 %define working_dir    /var/lib/bacula
64 %define pid_dir        /var/run
65 %define plugin_dir     %_libdir/bacula/plugins
66 %define lib_dir        %_libdir/bacula/lib
67 %define log_dir        %_libdir/bacula/log
68 %endif
69
70 # Daemon user:group Don't change them unless you know what you are doing
71 %define director_daemon_user    bacula
72 %define storage_daemon_user     bacula
73 %define file_daemon_user        root
74 %define daemon_group            bacula
75 # group that has write access to tape devices, usually disk on Linux
76 %define storage_daemon_group    disk
77
78 %define depkgs ../depkgs
79
80 # probems with mandriva build:
81 # nothing provides libbonobo2_0-devel, nothing provides libbonoboui2_0-devel
82
83 #--------------------------------------------------------------------------
84 # it should not be necessary to change anything below here for a release
85 # except for patch macros in the setup section
86 #--------------------------------------------------------------------------
87
88 %define base_package_name %{product}
89
90 %{?contrib_packager:%define _packager %{contrib_packager}}
91
92 Summary: Bacula - The Network Backup Solution
93 Name: %{base_package_name}
94 Version: %{_version}
95 Release: %{_release}
96 Group: System Environment/Daemons
97 License: AGPLv3
98 BuildRoot: %{_tmppath}/%{name}-root
99 URL: http://www.bacula.org/
100 Vendor: The Bacula Team
101 Packager: %{_packager}
102 Prefix: %{_prefix}
103
104 # opensuse build service changes the release itself
105 # what happens if the release is not 1? DSB
106 Source0: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.tar.gz
107 Source1: http://www.prdownloads.sourceforge.net/bacula/%{product}-%{version}.tar.gz
108 %if 0%{?opensuse_bs}
109 Source2: Release_Notes-%{version}-1.tar.gz
110 %else
111 Source2: Release_Notes-%{version}-%{release}.tar.gz
112 %endif
113
114 # define the basic package description
115 %define blurb Bacula - The Leading Open Source Backup Solution.
116 %define blurb2 Bacula is a set of computer programs that permit you (or the system
117 %define blurb3 administrator) to manage backup, recovery, and verification of computer
118 %define blurb4 data across a network of computers of different kinds. In technical terms,
119 %define blurb5 it is a network client/server based backup program. Bacula is relatively
120 %define blurb6 easy to use and efficient, while offering many advanced storage management
121 %define blurb7 features that make it easy to find and recover lost or damaged files.
122 %define blurb8 Bacula source code has been released under the AGPL version 3 license.
123
124 %define user_file  /etc/passwd
125 %define group_file /etc/group
126
127 # program locations
128 %define useradd  /usr/sbin/useradd
129 %define groupadd /usr/sbin/groupadd
130 %define usermod  /usr/sbin/usermod
131
132 # platform defines - set one below or define the build_xxx on the command line
133 # RedHat builds
134 %define rh7 0
135 %{?build_rh7:%define rh7 1}
136 %define rh8 0
137 %{?build_rh8:%define rh8 1}
138 %define rh9 0
139 %{?build_rh9:%define rh9 1}
140 # Fedora Core build
141 %define fc16 0
142 %{?build_fc16:%define fc16 1}
143 %define fc17 0
144 %{?build_fc17:%define fc17 1}
145 %define fc18 0
146 %{?build_fc18:%define fc18 1}
147 # Whitebox Enterprise build
148 %define wb3 0
149 %{?build_wb3:%define wb3 1}
150 # RedHat Enterprise builds
151 %define rhel3 0
152 %{?build_rhel3:%define rhel3 1}
153 %{?build_rhel3:%define wb3 1}
154 %define rhel4 0
155 %{?build_rhel4:%define rhel4 1}
156 %{?build_rhel4:%define fc3 1}
157 %{?build_el4:%define rhel4 1}
158 %{?build_el4:%define fc3 1}
159 %define rhel5 0
160 %{?build_rhel5:%define rhel5 1}
161 %{?build_rhel5:%define fc6 1}
162 %{?build_el5:%define rhel5 1}
163 %{?build_el5:%define fc6 1}
164 %define rhel6 0
165 %{?build_rhel6:%define rhel6 1}
166 %{?build_el6:%define rhel6 1}
167 # CentOS build
168 %define centos3 0
169 %{?build_centos3:%define centos3 1}
170 %{?build_centos3:%define wb3 1}
171 %define centos4 0
172 %{?build_centos4:%define centos4 1}
173 %{?build_centos4:%define fc3 1}
174 %define centos5 0
175 %{?build_centos5:%define centos5 1}
176 %{?build_centos5:%define fc6 1}
177 %define centos6 0
178 %{?build_centos6:%define centos6 1}
179 # SL build
180 %define sl3 0
181 %{?build_sl3:%define sl3 1}
182 %{?build_sl3:%define wb3 1}
183 %define sl4 0
184 %{?build_sl4:%define sl4 1}
185 %{?build_sl4:%define fc3 1}
186 %define sl5 0
187 %{?build_sl5:%define sl5 1}
188 %{?build_sl5:%define fc6 1}
189 # SuSE build
190 %define su9 0
191 %{?build_su9:%define su9 1}
192 %define su10 0
193 %{?build_su10:%define su10 1}
194 %define su102 0
195 %{?build_su102:%define su102 1}
196 %define su103 0
197 %{?build_su103:%define su103 1}
198 %define su110 0
199 %{?build_su110:%define su110 1}
200 %define su111 0
201 %{?build_su111:%define su111 1}
202 %define su112 0
203 %{?build_su112:%define su112 1}
204 # Mandrake builds
205 %define mdk 0
206 %{?build_mdk:%define mdk 1}
207 %define mdv 0
208 %{?build_mdv:%define mdv 1}
209 %{?build_mdv:%define mdk 1}
210
211 # client only build
212 %define client_only 0
213 %{?build_client_only:%define client_only 1}
214
215 # Setup some short cuts
216 %define rhat 0
217 %if %{rh7} || %{rh8} || %{rh9}
218 %define rhat 1
219 %endif
220 %define fed 0
221 %if %{fc16} || %{fc17} || %{fc18}
222 %define fed 1
223 %endif
224 %define suse 0
225 %if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111} || %{su112}
226 %define suse 1
227 %endif
228 %define rhel 0
229 %if %{rhel3} || %{rhel4} || %{rhel5} || %{rhel6} || %{centos3} || %{centos4} || %{centos5} || %{centos6}
230 %define rhel 1
231 %endif
232 %define scil 0
233 %if %{sl3} || %{sl4} || %{sl5}
234 %define scil 1
235 %endif
236
237
238 # test for a platform definition
239 %if !%{rhat} && !%{rhel} && !%{fed} && !%{wb3} && !%{suse} && !%{mdk} && !%{scil}
240 %{error: You must specify a platform. Please examine the spec file.}
241 exit 1
242 %endif
243
244 # distribution-specific directory for logwatch
245 %if %{wb3} || %{rh7} || %{rh8} || %{rh9}
246 %define logwatch_dir /etc/log.d
247 %else
248 %define logwatch_dir /etc/logwatch
249 %endif
250
251 # database defines
252 # set for database support desired or define the build_xxx on the command line
253 %define mysql 0
254 %{?build_mysql:%define mysql 1}
255 %define sqlite 0
256 %{?build_sqlite:%define sqlite 1}
257 %define postgresql 0
258 %{?build_postgresql:%define postgresql 1}
259
260 # test for a database definition
261 %if ! %{mysql} && ! %{sqlite} && ! %{postgresql} && ! %{client_only}
262 %{error: You must specify database support, by passing one of the following to rpmbuild:}
263 %{error:   --define build_postgresql=1}
264 %{error:   --define build_sqlite=1}
265 %{error:   --define build_mysql=1}
266 exit 1
267 %endif
268
269 %if %{mysql}
270 %define db_backend mysql
271 %endif
272 %if %{sqlite}
273 %define db_backend sqlite3
274 %endif
275 %if %{postgresql}
276 %define db_backend postgresql
277 %endif
278
279 # 64 bit support
280 %define x86_64 0
281 %{?build_x86_64:%define x86_64 1}
282
283 # check what distribution we are
284 %if %{fc16} || %{fc17} || %{fc18}
285 %define _dist %(grep Fedora /etc/redhat-release)
286 %endif
287 %if %{centos5} || %{centos4} || %{centos3}
288 %define _dist %(grep CentOS /etc/redhat-release)
289 %endif
290 %if %{sl5} ||%{sl4} || %{sl3}
291 %define _dist %(grep 'Scientific Linux' /etc/redhat-release)
292 %endif
293 %if %{wb3} && ! %{rhel3} && ! %{centos3} && ! %{sl3}
294 %define _dist %(grep White /etc/whitebox-release)
295 %endif
296 %if %{suse}
297 %define _dist %(grep -i SuSE /etc/SuSE-release)
298 %endif
299 %if %{mdk}
300 %define _dist %(grep Mand /etc/mandrake-release)
301 %endif
302 %if %{rhat} || %{rhel}
303 %define _dist %(grep Red /etc/redhat-release)
304 %endif
305 %{?DISTNAME:%define _dist %{DISTNAME}}
306
307 # only set Disribution if not in opensuse build service, as it sets it itself
308 %if ! 0%{?opensuse_bs}
309 Distribution: %{_dist}
310 %endif
311
312 %if 0%{?opensuse_bs} &&  %{mysql} && %{suse}
313 # needed in opensuse_bs, as rpm is installed during build process
314 BuildRequires: libmysqlclient-devel
315 BuildRequires: mysql-client
316 BuildRequires: mysql
317 %endif
318 %if 0%{?opensuse_bs} &&  %{suse} && %{postgresql}
319 BuildRequires: %{postgres_package}
320 BuildRequires: %{postgres_server_package}
321 %endif
322 BuildRequires: openssl
323
324 %if 0%{?opensuse_bs} && %{suse}
325 BuildRequires: pwdutils
326 BuildRequires: sysconfig
327 %endif
328
329 # should we turn on python support
330 %define python 0
331 %{?build_python:%define python 1}
332
333 # should we enable tcp wrappers support
334 %define tcpwrappers 1
335 %{?build_tcpwrappers:%define tcpwrappers 1}
336
337 # do we need to patch for old postgresql version?
338 %define old_pgsql 0
339 %{?build_old_pgsql:%define old_pgsql 1}
340
341 # Mandriva somehow forces the manpage file extension to bz2 rather than gz
342 %if %{mdk}
343 %define manpage_ext bz2
344 %else
345 %define manpage_ext gz
346 %endif
347
348 # for client only build
349 %if %{client_only}
350 %define mysql 0
351 %define postgresql 0
352 %define sqlite 0
353 %endif
354
355 BuildRequires: gcc, gcc-c++, make, autoconf
356 BuildRequires: glibc, glibc-devel
357 BuildRequires: ncurses-devel, readline-devel
358 BuildRequires: libstdc++-devel, zlib-devel
359 BuildRequires: openssl-devel
360 BuildRequires: libacl-devel
361 BuildRequires: pkgconfig
362 %if ! %{rh7}
363 BuildRequires: libxml2-devel
364 %endif
365 %if %{python}
366 BuildRequires: python, python-devel
367 %{expand: %%define pyver %(python -c 'import sys;print(sys.version[0:3])')}
368 %endif
369
370 %if %{rh7}
371 BuildRequires: libxml-devel
372 %endif
373 %if %{mdk}
374 BuildRequires: libstdc++-static-devel
375 BuildRequires: glibc-static-devel
376 %endif
377
378 %if %{mysql} && ! %{suse}
379 BuildRequires: mysql-devel
380 %endif
381
382 %if %{postgresql} && %{wb3}
383 BuildRequires: rh-postgresql-devel >= %{postgres_version}
384 %endif
385
386 %if %{postgresql} && ! %{wb3}
387 BuildRequires: %{postgres_devel_package} >= %{postgres_version}
388 %endif
389
390 %description
391 %{blurb}
392
393 %{blurb2}
394 %{blurb3}
395 %{blurb4}
396 %{blurb5}
397 %{blurb6}
398 %{blurb7}
399 %{blurb8}
400
401 %if %{mysql}
402 %package mysql
403 %endif
404 %if %{sqlite}
405 %package sqlite
406 %endif
407 %if %{postgresql}
408 %package postgresql
409 %endif
410
411 Summary: Bacula - The Network Backup Solution
412 Group: System Environment/Daemons
413 Provides: bacula-dir, bacula-sd, bacula-fd, bacula-server
414 Conflicts: bacula-client
415
416 Requires: ncurses, libstdc++, zlib, openssl
417 Requires: glibc, readline, %{name}-libs
418
419 %if %{suse}
420 Conflicts: bacula
421 %endif
422
423 %if %{mysql}
424 Requires: mysql
425 %endif
426
427 %if %{postgresql} && %{wb3}
428 Requires: rh-postgresql >= 7
429 %endif
430 %if %{postgresql} && ! %{wb3}
431 Requires: postgresql >= 7
432 %endif
433
434 %if %{mysql}
435 %description mysql
436 %endif
437 %if %{sqlite}
438 %description sqlite
439 %endif
440 %if %{postgresql}
441 %description postgresql
442 %endif
443
444 %if %{python}
445 Requires: python >= %{pyver}
446 %endif
447
448 %{blurb}
449
450 %{blurb2}
451 %{blurb3}
452 %{blurb4}
453 %{blurb5}
454 %{blurb6}
455 %{blurb7}
456 %{blurb8}
457
458 %if %{mysql}
459 This build requires MySQL to be installed separately as the catalog database.
460 %endif
461 %if %{postgresql}
462 This build requires PostgreSQL to be installed separately as the catalog database.
463 %endif
464 %if %{sqlite}
465 This build incorporates sqlite3 as the catalog database, statically compiled.
466 %endif
467 %if %{python}
468 This build includes python scripting support.
469 %endif
470 %if %{tcpwrappers}
471 This build includes tcp-wrappers support.
472 %endif
473
474 %package client
475 Summary: Bacula - The Network Backup Solution
476 Group: System Environment/Daemons
477 Provides: bacula-fd
478 Conflicts: bacula-mysql
479 Conflicts: bacula-sqlite
480 Conflicts: bacula-postgresql
481
482 %if %{suse}
483 Provides: %{product}
484 Provides: %{product}-libs
485 %endif
486
487 Requires: libstdc++, zlib, openssl
488 Requires: glibc, readline, %{name}-libs
489
490 %if %{python}
491 Requires: python >= %{pyver}
492 %endif
493
494 %description client
495 %{blurb}
496
497 %{blurb2}
498 %{blurb3}
499 %{blurb4}
500 %{blurb5}
501 %{blurb6}
502 %{blurb7}
503 %{blurb8}
504
505 This is the File daemon (Client) only package. It includes the command line
506 console program.
507 %if %{python}
508 This build includes python scripting support.
509 %endif
510 %if %{tcpwrappers}
511 This build includes tcp-wrappers support.
512 %endif
513
514 %if ! %{client_only}
515 %package updatedb
516
517 Summary: Bacula - The Network Backup Solution
518 Group: System Environment/Daemons
519
520 %description updatedb
521 %{blurb}
522
523 %{blurb2}
524 %{blurb3}
525 %{blurb4}
526 %{blurb5}
527 %{blurb6}
528 %{blurb7}
529 %{blurb8}
530
531 This package installs scripts for updating older versions of the bacula
532 database.
533 %endif
534
535 %package libs
536
537 Summary: Bacula - The Network Backup Solution
538 Group: System Environment/Daemons
539
540 %description libs
541 %{blurb}
542
543 %{blurb2}
544 %{blurb3}
545 %{blurb4}
546 %{blurb5}
547 %{blurb6}
548 %{blurb7}
549 %{blurb8}
550
551 This package installs the shared libraries used by many bacula programs.
552
553 # Must explicitly enable debug pkg on SuSE
554 # but not in opensuse_bs
555 #%if %{suse} && ! 0%{?opensuse_bs}
556 #%debug_package
557 #%endif
558
559 %prep
560 %setup -T    -b 0 -n depkgs
561 %setup -T    -b 1 -n %{product}-%{version}
562 %setup -T -D -b 2 -n %{product}-%{version}
563 # extract depkgs
564
565
566 %build
567
568 %if %{suse}
569 #export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap -L/usr/lib64/termcap"
570 %endif
571
572 # You can use a cache for depkgs
573 # tar xfz depkgs*gz -C ~/
574 # cd ~/depkgs
575 # touch %{depkgs_version}       # depkgs version
576
577 if [ -f $HOME/depkgs/%{depkgs_version} ]; then
578    rm -rf %{depkgs}
579    ln -s $HOME/depkgs %{depkgs}
580 fi
581
582 cwd=${PWD}
583 %if %{sqlite}
584 cd %{depkgs}
585 make sqlite3
586 cd ${cwd}
587 %endif
588
589 cd %{depkgs}
590 make lzo
591 export LDFLAGS="${LDFLAGS} -L${PWD}/lzo/lib"
592 export CPPFLAGS="${CPPFLAGS} -I${PWD}/lzo/include"
593 cd ${cwd}
594
595 # hostname is the build hostname, so use XXX_HOSTNAME_XXX for Address parameter
596 sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in
597
598 %if %{sqlite}
599 # patches for the bundled sqlite scripts
600 sed -i s:.SQLITE_BINDIR.:/opt/bacula/sqlite: src/cats/*_sqlite3_*.in
601
602 # patch the bacula-dir init script to remove sqlite service
603 %if %{suse}
604 sed -i 's/network .DB_TYPE./network/' platforms/suse/bacula-dir.in
605 %endif
606 %endif
607
608 # 64 bit lib location hacks
609 # as of 1.39.18 it should not be necessary to enable x86_64 as configure is
610 # reported to be fixed to properly detect lib locations.
611 %if %{x86_64}
612 export LDFLAGS="${LDFLAGS} -L/usr/lib64"
613 %endif
614 %if %{mysql} && %{x86_64}
615 export LDFLAGS="${LDFLAGS} -L/usr/lib64/mysql"
616 %endif
617 %if %{python} && %{x86_64}
618 export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
619 %endif
620
621 export BACULA="Bacula"
622
623 # Main Bacula configuration
624 %configure \
625         --prefix=%{_prefix} \
626         --sbindir=%{_sbindir} \
627         --sysconfdir=%{sysconf_dir} \
628         --mandir=%{_mandir} \
629         --with-scriptdir=%{script_dir} \
630         --with-working-dir=%{working_dir} \
631         --with-plugindir=%{plugin_dir} \
632         --with-logdir=%{log_dir} \
633         --with-pid-dir=%{pid_dir} \
634         --with-subsys-dir=%{_subsysdir} \
635         --enable-smartalloc \
636         --disable-conio \
637         --enable-readline \
638 %if %{mysql}
639         --with-mysql \
640 %endif
641 %if %{sqlite}
642         --with-sqlite3=${cwd}/%{depkgs}/sqlite3 \
643 %endif
644 %if %{postgresql}
645         --with-postgresql \
646 %endif
647         --disable-bat \
648 %if %{python}
649         --with-python \
650 %endif
651 %if %{client_only}
652         --enable-client-only \
653 %endif
654 %if %{rh7} || %{rh8} || %{rh9}
655         --disable-batch-insert \
656 %endif
657         --with-tcp-wrappers  \
658         --with-dir-user=%{director_daemon_user} \
659         --with-dir-group=%{daemon_group} \
660         --with-sd-user=%{storage_daemon_user} \
661         --with-sd-group=%{storage_daemon_group} \
662         --with-fd-user=%{file_daemon_user} \
663         --with-fd-group=%{daemon_group} \
664         --with-basename="XXX_HOSTNAME_XXX" \
665         --with-hostname="XXX_HOSTNAME_XXX" \
666         --with-dir-password="XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX" \
667         --with-fd-password="XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX" \
668         --with-sd-password="XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX" \
669         --with-mon-dir-password="XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX" \
670         --with-mon-fd-password="XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX" \
671         --with-mon-sd-password="XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX" \
672         --with-openssl
673
674 make -j3
675
676 %install
677
678 cwd=${PWD}
679 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
680 mkdir -p $RPM_BUILD_ROOT/etc/init.d
681 mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
682 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/conf/logfiles
683 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/conf/services
684 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/scripts/services
685 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/scripts/shared
686 mkdir -p $RPM_BUILD_ROOT%{script_dir}/updatedb
687
688 mkdir -p $RPM_BUILD_ROOT/etc/pam.d
689 mkdir -p $RPM_BUILD_ROOT%{_sbindir}
690
691 %if %{sqlite}
692 mkdir -p $RPM_BUILD_ROOT%{sqlite_bindir}
693 %endif
694
695 make DESTDIR=$RPM_BUILD_ROOT install
696
697 # Remove docs for programs that are depreciated
698 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bgnome-console.1.%{manpage_ext}
699 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bwxconsole.1.%{manpage_ext}
700 rm -f $RPM_BUILD_ROOT%{script_dir}/gconsole
701 # Storage-ctl packaged in shstore rpm
702 rm -f $RPM_BUILD_ROOT%{script_dir}/storage-ctl
703 rm -f $RPM_BUILD_ROOT%{script_dir}/storage-ctl.conf
704
705 # fixme - make installs the mysql scripts for sqlite build
706 %if %{sqlite}
707 rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
708 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
709 rm -f $RPM_BUILD_ROOT%{script_dir}/grant_mysql_privileges
710 %endif
711
712 # fixme - make installs the mysql scripts for postgresql build
713 %if %{postgresql}
714 rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
715 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
716 %endif
717
718 # install the init scripts
719 %if %{suse}
720 cp -p platforms/suse/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
721 cp -p platforms/suse/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
722 cp -p platforms/suse/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
723 %endif
724 %if %{mdk}
725 cp -p platforms/mandrake/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
726 cp -p platforms/mandrake/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
727 cp -p platforms/mandrake/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
728 %endif
729 %if ! %{suse} && ! %{mdk}
730 cp -p platforms/redhat/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
731 cp -p platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
732 cp -p platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
733 %endif
734 chmod 0754 $RPM_BUILD_ROOT/etc/init.d/*
735 %if %{client_only}
736 rm -f $RPM_BUILD_ROOT/etc/init.d/bacula-dir
737 rm -f $RPM_BUILD_ROOT/etc/init.d/bacula-sd
738 %endif
739
740 # install sqlite
741 %if %{sqlite}
742 cp -p %{depkgs}/sqlite3/sqlite3 $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite3
743 cp -p %{depkgs}/sqlite3/sqlite3.h $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite3.h
744 cp -p %{depkgs}/sqlite3/libsqlite3.a $RPM_BUILD_ROOT%{sqlite_bindir}/libsqlite3.a
745 %endif
746
747
748 # install the logrotate file
749 cp -p scripts/logrotate $RPM_BUILD_ROOT/etc/logrotate.d/bacula
750
751 # install the updatedb scripts
752 cp -p updatedb/* $RPM_BUILD_ROOT%{script_dir}/updatedb/
753
754 # install specific scripts
755
756 # install special upgrade script, except for sqlite3
757
758 %if ! %{client_only}
759 # install the sample-query.sql file
760 cp -p examples/sample-query.sql $RPM_BUILD_ROOT%{script_dir}/sample-query.sql
761
762 # install the logwatch scripts
763 cp -p scripts/logwatch/bacula $RPM_BUILD_ROOT%{logwatch_dir}/scripts/services/bacula
764 cp -p scripts/logwatch/applybaculadate $RPM_BUILD_ROOT%{logwatch_dir}/scripts/shared/applybaculadate
765 cp -p scripts/logwatch/logfile.bacula.conf $RPM_BUILD_ROOT%{logwatch_dir}/conf/logfiles/bacula.conf
766 cp -p scripts/logwatch/services.bacula.conf $RPM_BUILD_ROOT%{logwatch_dir}/conf/services/bacula.conf
767 chmod 755 $RPM_BUILD_ROOT%{logwatch_dir}/scripts/services/bacula
768 chmod 755 $RPM_BUILD_ROOT%{logwatch_dir}/scripts/shared/applybaculadate
769 chmod 644 $RPM_BUILD_ROOT%{logwatch_dir}/conf/logfiles/bacula.conf
770 chmod 644 $RPM_BUILD_ROOT%{logwatch_dir}/conf/services/bacula.conf
771 %endif
772
773 # now clean up permissions that are left broken by the install
774 chmod o-rwx $RPM_BUILD_ROOT%{working_dir}
775
776 # fix me - building enable-client-only installs files not included in bacula-client package
777 %if %{client_only}
778 # Program docs not installed on client
779 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bacula-dir.8.%{manpage_ext}
780 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bacula-sd.8.%{manpage_ext}
781 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bcopy.8.%{manpage_ext}
782 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bextract.8.%{manpage_ext}
783 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bls.8.%{manpage_ext}
784 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bscan.8.%{manpage_ext}
785 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/btape.8.%{manpage_ext}
786 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/dbcheck.8.%{manpage_ext}
787 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bregex.8.%{manpage_ext}
788 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bwild.8.%{manpage_ext}
789 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bsmtp.1.%{manpage_ext}
790
791 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula
792 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula_config
793 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula-ctl-dir
794 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula-ctl-sd
795 rm -f $RPM_BUILD_ROOT%{script_dir}/disk-changer
796 rm -f $RPM_BUILD_ROOT%{script_dir}/dvd-handler
797 rm -f $RPM_BUILD_ROOT%{script_dir}/mtx-changer
798 rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
799 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
800 rm -rf $RPM_BUILD_ROOT%{script_dir}/updatedb
801 rm -f $RPM_BUILD_ROOT%{script_dir}/bconsole
802 rm -f $RPM_BUILD_ROOT%{script_dir}/mtx-changer.conf
803 rm -f $RPM_BUILD_ROOT%{_sbindir}/bacula
804 %endif
805
806 %clean
807 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
808 %if 0%{?opensuse_bs}
809 rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-1.txt
810 %else
811 rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
812 %endif
813
814
815 %if %{mysql}
816 # MySQL specific files
817 %files mysql
818 %defattr(-, root, root)
819 %attr(-, root, %{daemon_group}) %{script_dir}/create_mysql_database
820 %attr(-, root, %{daemon_group}) %{script_dir}/drop_mysql_database
821 %attr(-, root, %{daemon_group}) %{script_dir}/make_mysql_tables
822 %attr(-, root, %{daemon_group}) %{script_dir}/drop_mysql_tables
823 %attr(-, root, %{daemon_group}) %{script_dir}/update_mysql_tables
824 %attr(-, root, %{daemon_group}) %{script_dir}/grant_mysql_privileges
825 %{_libdir}/libbaccats*
826 %{_libdir}/libbacsql*
827 %endif
828
829 %if %{sqlite}
830 %files sqlite
831 %defattr(-,root,root)
832 %attr(-, root, %{daemon_group}) %{script_dir}/create_sqlite3_database
833 %attr(-, root, %{daemon_group}) %{script_dir}/drop_sqlite3_database
834 %attr(-, root, %{daemon_group}) %{script_dir}/grant_sqlite3_privileges
835 %attr(-, root, %{daemon_group}) %{script_dir}/make_sqlite3_tables
836 %attr(-, root, %{daemon_group}) %{script_dir}/drop_sqlite3_tables
837 %attr(-, root, %{daemon_group}) %{script_dir}/update_sqlite3_tables
838 %{sqlite_bindir}/libsqlite3.a
839 %{sqlite_bindir}/sqlite3.h
840 %{sqlite_bindir}/sqlite3
841 %{_libdir}/libbaccats*
842 %{_libdir}/libbacsql*
843 %endif
844
845
846
847 %if %{postgresql}
848 %files postgresql
849 %defattr(-,root,root)
850 %attr(755, root, %{daemon_group}) %{script_dir}/create_postgresql_database
851 %attr(755, root, %{daemon_group}) %{script_dir}/drop_postgresql_database
852 %attr(755, root, %{daemon_group}) %{script_dir}/make_postgresql_tables
853 %attr(755, root, %{daemon_group}) %{script_dir}/drop_postgresql_tables
854 %attr(755, root, %{daemon_group}) %{script_dir}/update_postgresql_tables
855 %attr(755, root, %{daemon_group}) %{script_dir}/grant_postgresql_privileges
856 %{_libdir}/libbaccats*
857 %{_libdir}/libbacsql*
858 %endif
859
860 # The rest is DB backend independent
861
862 %if ! %{client_only}
863 %attr(-, root, %{daemon_group}) %dir %{script_dir}
864 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
865 #%attr(-, %{director_daemon_user}, %{daemon_group}) %dir %{log_dir}
866 %attr(-, root, %{daemon_group}) %{script_dir}/bacula
867 %attr(-, root, %{daemon_group}) %{script_dir}/bacula_config
868 %attr(-, root, %{daemon_group}) %{script_dir}/bconsole
869 %attr(755, root, %{daemon_group}) %{script_dir}/create_bacula_database
870 %attr(755, root, %{daemon_group}) %{script_dir}/drop_bacula_database
871 %attr(755, root, %{daemon_group}) %{script_dir}/grant_bacula_privileges
872 %attr(755, root, %{daemon_group}) %{script_dir}/make_bacula_tables
873 %attr(755, root, %{daemon_group}) %{script_dir}/drop_bacula_tables
874 %attr(755, root, %{daemon_group}) %{script_dir}/update_bacula_tables
875 %attr(-, root, %{daemon_group}) %{script_dir}/make_catalog_backup
876 %attr(-, root, %{daemon_group}) %{script_dir}/make_catalog_backup.pl
877 %attr(-, root, %{daemon_group}) %{script_dir}/delete_catalog_backup
878 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.dbx
879 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.gdb
880 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.mdb
881 %attr(-, root, %{daemon_group}) %{script_dir}/disk-changer
882 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-dir
883 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-fd
884 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-sd
885 %attr(-, root, %{daemon_group}) %{plugin_dir}/bpipe-fd.so
886 %attr(-, root, %{daemon_group}) /etc/init.d/bacula-dir
887 %attr(-, root, %{daemon_group}) /etc/init.d/bacula-fd
888 %attr(-, root, %{daemon_group}) %{_sbindir}/dbcheck
889 %attr(-, root, %{storage_daemon_group}) %{script_dir}/dvd-handler
890 %attr(-, root, %{storage_daemon_group}) /etc/init.d/bacula-sd
891 %attr(-, root, %{storage_daemon_group}) %{script_dir}/mtx-changer
892 %attr(-, root, %{storage_daemon_group}) %config(noreplace) %{script_dir}/mtx-changer.conf
893
894 /etc/logrotate.d/bacula
895 %{logwatch_dir}/scripts/services/bacula
896 %{logwatch_dir}/scripts/shared/applybaculadate
897 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bacula-dir.conf
898 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bacula-fd.conf
899 %attr(-, root, %{storage_daemon_group}) %config(noreplace) %{sysconf_dir}/bacula-sd.conf
900 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bconsole.conf
901 %attr(-, root, %{daemon_group}) %config(noreplace) %{logwatch_dir}/conf/logfiles/bacula.conf
902 %attr(-, root, %{daemon_group}) %config(noreplace) %{logwatch_dir}/conf/services/bacula.conf
903 %attr(-, root, %{daemon_group}) %{script_dir}/sample-query.sql
904
905 %attr(-, %{storage_daemon_user}, %{daemon_group}) %dir %{working_dir}
906
907 %attr(-, root, %{daemon_group}) %{_sbindir}/bacula-dir
908 %attr(-, root, %{daemon_group}) %{_sbindir}/bacula-sd
909 %attr(-, root, %{daemon_group}) %{_sbindir}/btraceback
910 %attr(-, root, %{daemon_group}) %{_sbindir}/bconsole
911 %attr(-, root, %{daemon_group}) %{_sbindir}/bsmtp
912 %attr(-, root, %{daemon_group}) %{_sbindir}/bscan
913 %attr(-, root, %{daemon_group}) %{_sbindir}/btape
914
915 %{_sbindir}/bacula-fd
916 %{_sbindir}/bacula
917 %{_sbindir}/bcopy
918 %{_sbindir}/bextract
919 %{_sbindir}/bls
920 %{_sbindir}/bregex
921 %{_sbindir}/bwild
922 %{_mandir}/man8/bacula-fd.8.%{manpage_ext}
923 %{_mandir}/man8/bacula-dir.8.%{manpage_ext}
924 %{_mandir}/man8/bacula-sd.8.%{manpage_ext}
925 %{_mandir}/man8/bacula.8.%{manpage_ext}
926 %{_mandir}/man8/bconsole.8.%{manpage_ext}
927 %{_mandir}/man8/bcopy.8.%{manpage_ext}
928 %{_mandir}/man8/bextract.8.%{manpage_ext}
929 %{_mandir}/man8/bls.8.%{manpage_ext}
930 %{_mandir}/man8/bscan.8.%{manpage_ext}
931 %{_mandir}/man8/btape.8.%{manpage_ext}
932 %{_mandir}/man8/btraceback.8.%{manpage_ext}
933 %{_mandir}/man8/dbcheck.8.%{manpage_ext}
934 %{_mandir}/man8/bregex.8.%{manpage_ext}
935 %{_mandir}/man8/bwild.8.%{manpage_ext}
936 %{_mandir}/man1/bsmtp.1.%{manpage_ext}
937 %{_mandir}/man1/bat.1.%{manpage_ext}
938 %_prefix/share/doc/*
939
940 # opensuse build service changes the release itself
941 %if 0%{?opensuse_bs}
942 %doc ../Release_Notes-%{version}-1.txt
943 %else
944 %doc ../Release_Notes-%{version}-%{release}.txt
945 %endif
946 %endif
947
948 %if %{mysql}
949 %pre mysql
950 # test for bacula database older than version 13
951 # note: this ASSUMES no password has been set for bacula database
952 DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1`
953 %endif
954
955 %if %{sqlite}
956 %pre sqlite
957 # are we upgrading from sqlite to sqlite3?
958 if [ -s %{working_dir}/bacula.db ] && [ -s %{sqlite_bindir}/sqlite ];then
959         echo "This version of bacula-sqlite involves an upgrade to sqlite3."
960         echo "Your catalog database file is not compatible with sqlite3, thus"
961         echo "you will need to dump the data, delete the old file, and re-run"
962         echo "this rpm upgrade."
963         echo ""
964         echo "Backing up your current database..."
965         echo ".dump" | %{sqlite_bindir}/sqlite %{working_dir}/bacula.db > %{working_dir}/bacula_backup.sql
966         mv %{working_dir}/bacula.db %{working_dir}/bacula.db.old
967         echo "Your catalog data has been saved in %{working_dir}/bacula_backup.sql and your"
968         echo "catalog file has been renamed %{working_dir}/bacula.db.old."
969         echo ""
970         echo "Please re-run this rpm package upgrade."
971         echo "After the upgrade is complete, restore your catalog"
972         echo "with the following commands:"
973         echo "%{script_dir}/drop_sqlite3_tables"
974         echo "cd %{working_dir}"
975         echo "%{sqlite_bindir}/sqlite3 $* bacula.db < bacula_backup.sql"
976         echo "chown bacula.bacula bacula.db"
977         exit 1
978 fi
979 # test for bacula database older than version 12 and sqlite3
980 if [ -s %{working_dir}/bacula.db ] && [ -s %{sqlite_bindir}/sqlite3 ];then
981         DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite3 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
982 %endif
983
984 %if %{postgresql}
985 %pre postgresql
986 DB_VER=`echo 'SELECT * FROM Version LIMIT 1;' | su - postgres -c 'psql bacula' 2>/dev/null | tail -3 | head -1`
987 %endif
988
989 %if ! %{client_only}
990 if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "12" ]; then
991     echo "This bacula upgrade will update a bacula database from version 12 to 1014."
992     echo "You appear to be running database version $DB_VER. You must first update"
993     echo "your database to version 12 and then install this upgrade. The alternative"
994     echo "is to use %{script_dir}/drop_%{db_backend}_tables to delete all your your current"
995     echo "catalog information, then do the upgrade. Information on updating a"
996     echo "database older than version 12 can be found in the release notes."
997     exit 1
998 fi
999 %endif
1000
1001 %if %{sqlite}
1002 fi
1003 %endif
1004
1005 %if ! %{client_only}
1006 # check for and copy %{sysconf_dir}/console.conf to bconsole.conf
1007 if [ -s %{sysconf_dir}/console.conf ];then
1008     cp -p %{sysconf_dir}/console.conf %{sysconf_dir}/bconsole.conf
1009 fi
1010
1011 # create the daemon users and groups
1012 # first create the groups if they don't exist
1013 HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
1014 if [ -z "$HAVE_BACULA" ]; then
1015         %{groupadd} -r %{daemon_group} > /dev/null 2>&1
1016         echo "The group %{daemon_group} has been added to %{group_file}."
1017         echo "See the manual chapter \"Running Bacula\" for details."
1018 fi
1019 HAVE_BACULA=`grep %{storage_daemon_group} %{group_file} 2>/dev/null`
1020 if [ -z "$HAVE_BACULA" ]; then
1021         %{groupadd} -r %{storage_daemon_group} > /dev/null 2>&1
1022         echo "The group %{storage_daemon_group} has been added to %{group_file}."
1023         echo "See the manual chapter \"Running Bacula\" for details."
1024 fi
1025 # now create the users if they do not exist
1026 # we do not use the -g option allowing the primary group to be set to system default
1027 # this will be a unique group on redhat type systems or the group users on some systems
1028 HAVE_BACULA=`grep %{storage_daemon_user} %{user_file} 2>/dev/null`
1029 if [ -z "$HAVE_BACULA" ]; then
1030         %{useradd} -r -c "Bacula" -d %{working_dir} -g %{storage_daemon_group} -M -s /sbin/nologin %{storage_daemon_user} > /dev/null 2>&1
1031         echo "The user %{storage_daemon_user} has been added to %{user_file}."
1032         echo "See the manual chapter \"Running Bacula\" for details."
1033 fi
1034 HAVE_BACULA=`grep %{director_daemon_user} %{user_file} 2>/dev/null`
1035 if [ -z "$HAVE_BACULA" ]; then
1036         %{useradd} -r -c "Bacula" -d %{working_dir} -g %{daemon_group} -M -s /sbin/nologin %{director_daemon_user} > /dev/null 2>&1
1037         echo "The user %{director_daemon_user} has been added to %{user_file}."
1038         echo "See the manual chapter \"Running Bacula\" for details."
1039 fi
1040 HAVE_BACULA=`grep %{file_daemon_user} %{user_file} 2>/dev/null`
1041 if [ -z "$HAVE_BACULA" ]; then
1042         %{useradd} -r -c "Bacula" -d %{working_dir} -g %{daemon_group} -M -s /sbin/nologin %{file_daemon_user} > /dev/null 2>&1
1043         echo "The user %{file_daemon_user} has been added to %{user_file}."
1044         echo "See the manual chapter \"Running Bacula\" for details."
1045 fi
1046 # now we add the supplementary groups, this is ok to call even if the users already exist
1047 # we only do this if the user is NOT root
1048 IS_ROOT=%{director_daemon_user}
1049 if [ "$IS_ROOT" != "root" ]; then
1050 %{usermod} -G %{daemon_group} %{director_daemon_user}
1051 fi
1052 IS_ROOT=%{storage_daemon_user}
1053 if [ "$IS_ROOT" != "root" ]; then
1054 %{usermod} -G %{daemon_group},%{storage_daemon_group} %{storage_daemon_user}
1055 fi
1056 IS_ROOT=%{file_daemon_user}
1057 if [ "$IS_ROOT" != "root" ]; then
1058 %{usermod} -G %{daemon_group} %{file_daemon_user}
1059 fi
1060 %endif
1061
1062 %if %{mysql}
1063 %post mysql
1064 %endif
1065 %if %{sqlite}
1066 %post sqlite
1067 %endif
1068 %if %{postgresql}
1069 %post postgresql
1070 %endif
1071 %if ! %{client_only}
1072 # add our links
1073 if [ "$1" -ge 1 ] ; then
1074 %if %{suse} && %{mysql}
1075   /sbin/chkconfig --add mysql
1076 %endif
1077 %if %{suse} && %{postgresql}
1078   /sbin/chkconfig --add postgresql
1079 %endif
1080   /sbin/chkconfig --add bacula-dir
1081   /sbin/chkconfig --add bacula-fd
1082   /sbin/chkconfig --add bacula-sd
1083 fi
1084 %endif
1085
1086 if [ -d %{sysconf_dir} ]; then
1087    cd %{sysconf_dir}
1088    if [ ! -f .rpm.sed ]; then
1089        (umask 0177
1090         echo "# This file is used to ensure that all passwords will" > .rpm.sed
1091         echo "# match between configuration files"                  >> .rpm.sed
1092        )
1093        for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
1094            pass=`openssl rand -base64 33`
1095            echo "s@${string}@${pass}@g" >> .rpm.sed
1096        done
1097    fi
1098    host=`hostname -s`
1099    for file in *.conf; do
1100       sed -f .rpm.sed $file > $file.new
1101       sed "s@XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
1102       rm -f $file.new
1103    done
1104 fi
1105
1106
1107 %if %{mysql}
1108
1109 #check, if mysql can be called successfully at all
1110 if mysql 2>/dev/null bacula -e 'select * from Version;' ; then
1111
1112   # test for an existing database
1113   # note: this ASSUMES no password has been set for bacula database
1114   DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1`
1115
1116   # grant privileges and create tables if they do not exist
1117   if [ -z "$DB_VER" ]; then
1118       echo "Hmm, it doesn't look like you have an existing database."
1119       echo "Granting privileges for MySQL user bacula..."
1120       %{script_dir}/grant_mysql_privileges
1121       echo "Creating MySQL bacula database..."
1122       %{script_dir}/create_mysql_database
1123       echo "Creating bacula tables..."
1124       %{script_dir}/make_mysql_tables
1125
1126   elif [ "$DB_VER" -ge "12" -a "$DB_VER" -lt "1015" ]; then
1127       echo "This release requires an upgrade to your bacula database."
1128       echo "Backing up your current database..."
1129       mysqldump -f --opt bacula | bzip2 > %{working_dir}/bacula_backup.sql.bz2
1130       echo "Upgrading bacula database ..."
1131       %{script_dir}/update_mysql_tables
1132       echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
1133
1134   fi
1135 fi
1136 %endif
1137
1138 %if %{sqlite}
1139 # test for an existing database
1140 if [ -s %{working_dir}/bacula.db ]; then
1141         DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite3 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
1142         # check to see if we need to upgrade a 3.x database
1143         if [ "$DB_VER" -le "13" ] && [ "$DB_VER" -ge "12" ]; then
1144                 echo "This release requires an upgrade to your bacula database."
1145                 echo "Backing up your current database..."
1146                 echo ".dump" | %{sqlite_bindir}/sqlite3 %{working_dir}/bacula.db | bzip2 > %{working_dir}/bacula_backup.sql.bz2
1147                 echo "Upgrading bacula database ..."
1148                 %{script_dir}/update_sqlite3_tables
1149                 echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
1150         fi
1151 else
1152         # create the database and tables
1153         echo "Hmm, doesn't look like you have an existing database."
1154         echo "Creating SQLite database..."
1155         %{script_dir}/create_sqlite3_database
1156         echo "Creating the SQLite tables..."
1157         %{script_dir}/make_sqlite3_tables
1158         chown %{director_daemon_user}.%{daemon_group} %{working_dir}/bacula.db
1159 fi
1160 %endif
1161
1162 %if %{postgresql}
1163 # check if psql can be called successfully at all
1164 if echo 'select * from Version;' | su - postgres -c 'psql bacula' 2>/dev/null; then
1165
1166   # test for an existing database
1167   # note: this ASSUMES no password has been set for bacula database
1168   DB_VER=`echo 'SELECT * FROM Version LIMIT 1;' | su - postgres -c 'psql bacula' 2>/dev/null | tail -3 | head -1`
1169
1170   # grant privileges and create tables if they do not exist
1171   if [ -z "$DB_VER" ]; then
1172       echo "Hmm, doesn't look like you have an existing database."
1173       echo "Creating PostgreSQL bacula database..."
1174       su - postgres -c %{script_dir}/create_postgresql_database
1175       echo "Creating bacula tables..."
1176       su - postgres -c %{script_dir}/make_postgresql_tables
1177       echo "Granting privileges for PostgreSQL user bacula..."
1178       su - postgres -c %{script_dir}/grant_postgresql_privileges
1179
1180   elif [ "$DB_VER" -ge "12" -a "$DB_VER" -lt "1015" ]; then
1181       echo "This release requires an upgrade to your bacula database."
1182       echo "Backing up your current database..."
1183       su - postgres -c 'pg_dump bacula' | bzip2 > %{working_dir}/bacula_backup.sql.bz2
1184       echo "Upgrading bacula database ..."
1185       su - postgres -c %{script_dir}/update_postgresql_tables
1186       echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
1187       echo "Granting privileges for PostgreSQL user bacula..."
1188       su - postgres -c %{script_dir}/grant_postgresql_privileges
1189
1190   fi
1191 fi
1192 %endif
1193
1194 %if ! %{client_only}
1195 if [ -d %{sysconf_dir} ]; then
1196    cd %{sysconf_dir}
1197    if [ ! -f .rpm.sed ]; then
1198        (umask 0177
1199         echo "# This file is used to ensure that all passwords will" > .rpm.sed
1200         echo "# match between configuration files"                  >> .rpm.sed
1201        )
1202        for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
1203            pass=`openssl rand -base64 33`
1204            echo "s@${string}@${pass}@g" >> .rpm.sed
1205        done
1206    fi
1207    host=`hostname -s`
1208    for file in *.conf; do
1209       sed -f .rpm.sed $file > $file.new
1210       sed "s@XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
1211       rm -f $file.new
1212    done
1213 fi
1214 %endif
1215
1216
1217 %if %{mysql}
1218 %preun mysql
1219 %endif
1220 %if %{sqlite}
1221 %preun sqlite
1222 %endif
1223 %if %{postgresql}
1224 %preun postgresql
1225 %endif
1226
1227 %if ! %{client_only}
1228 # delete our links
1229 if [ $1 = 0 ]; then
1230   /sbin/chkconfig --del bacula-dir
1231   /sbin/chkconfig --del bacula-fd
1232   /sbin/chkconfig --del bacula-sd
1233 fi
1234 %endif
1235
1236 %files client
1237 %defattr(-,root,root)
1238 %attr(-, root, %{daemon_group}) %dir %{script_dir}
1239 %attr(-, root, %{daemon_group}) %dir %{plugin_dir}
1240 #%attr(-, root, %{daemon_group}) %dir %{log_dir}
1241 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
1242 %{script_dir}/bacula-ctl-fd
1243 /etc/init.d/bacula-fd
1244
1245 /etc/logrotate.d/bacula
1246
1247 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bacula-fd.conf
1248 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bconsole.conf
1249 %attr(-, root, %{daemon_group}) %dir %{working_dir}
1250
1251 %{_sbindir}/bacula-fd
1252 %{_sbindir}/btraceback
1253 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.gdb
1254 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.dbx
1255 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.mdb
1256 %attr(-, root, %{daemon_group}) %{plugin_dir}/bpipe-fd.so
1257 %{_sbindir}/bconsole
1258 %{_mandir}/man8/bacula-fd.8.%{manpage_ext}
1259 %{_mandir}/man8/bacula.8.%{manpage_ext}
1260 %{_mandir}/man8/bconsole.8.%{manpage_ext}
1261 %{_mandir}/man8/btraceback.8.%{manpage_ext}
1262 %{_mandir}/man1/bat.1.%{manpage_ext}
1263 %_prefix/share/doc/*
1264
1265 %pre client
1266 # create the daemon group and user
1267 HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
1268 if [ -z "$HAVE_BACULA" ]; then
1269     %{groupadd} -r %{daemon_group} > /dev/null 2>&1
1270     echo "The group %{daemon_group} has been added to %{group_file}."
1271     echo "See the manual chapter \"Running Bacula\" for details."
1272 fi
1273 # we do not use the -g option allowing the primary group to be set to system default
1274 # this will be a unique group on redhat type systems or the group users on some systems
1275 HAVE_BACULA=`grep %{file_daemon_user} %{user_file} 2>/dev/null`
1276 if [ -z "$HAVE_BACULA" ]; then
1277     %{useradd} -r -c "Bacula" -d %{working_dir} -g %{daemon_group} -M -s /sbin/nologin %{file_daemon_user} > /dev/null 2>&1
1278     echo "The user %{file_daemon_user} has been added to %{user_file}."
1279     echo "See the manual chapter \"Running Bacula\" for details."
1280 fi
1281 # now we add the supplementary group, this is ok to call even if the user already exists
1282 # we only do this if the user is NOT root
1283 IS_ROOT=%{file_daemon_user}
1284 if [ "$IS_ROOT" != "root" ]; then
1285 %{usermod} -G %{daemon_group} %{file_daemon_user}
1286 fi
1287
1288 %post client
1289 # add our link
1290 if [ "$1" -ge 1 ] ; then
1291    /sbin/chkconfig --add bacula-fd
1292 fi
1293
1294 if [ -d %{sysconf_dir} ]; then
1295    cd %{sysconf_dir}
1296    if [ ! -f .rpm.sed ]; then
1297        (umask 0177
1298         echo "# This file is used to ensure that all passwords will" > .rpm.sed
1299         echo "# match between configuration files"                  >> .rpm.sed
1300        )
1301        for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
1302            pass=`openssl rand -base64 33`
1303            echo "s@${string}@${pass}@g" >> .rpm.sed
1304        done
1305    fi
1306    host=`hostname -s`
1307    for file in *.conf; do
1308       sed -f .rpm.sed $file > $file.new
1309       sed "s@XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
1310       rm -f $file.new
1311    done
1312 fi
1313
1314 %preun client
1315 # delete our link
1316 if [ $1 = 0 ]; then
1317    /sbin/chkconfig --del bacula-fd
1318 fi
1319
1320 %files libs
1321 %defattr(-,root,root)
1322 %{_libdir}/libbac-*
1323 %{_libdir}/libbac.*
1324 %{_libdir}/libbaccfg*
1325 %{_libdir}/libbacfind*
1326
1327 %post libs
1328 /sbin/ldconfig
1329 exit 0
1330
1331 %postun libs
1332 /sbin/ldconfig
1333 exit 0
1334
1335 %if ! %{client_only}
1336 %files updatedb
1337 %defattr(-,root,%{daemon_group})
1338 %{script_dir}/updatedb/*
1339 #oensuse_bs: directories not owned by any package
1340 #%{script_dir}/updatedb
1341
1342 %pre updatedb
1343 # create the daemon group
1344 HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
1345 if [ -z "$HAVE_BACULA" ]; then
1346     %{groupadd} -r %{daemon_group} > /dev/null 2>&1
1347     echo "The group %{daemon_group} has been added to %{group_file}."
1348     echo "See the manual chapter \"Running Bacula\" for details."
1349 fi
1350
1351 %post updatedb
1352 echo "The database update scripts were installed to %{script_dir}/updatedb"
1353 %endif
1354
1355 %changelog