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