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