]> git.sur5r.net Git - bacula/bacula/blob - bacula/platforms/rpm/bacula.spec
Updates for 5.0.1.
[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           5.0.1
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} && !%{scil}
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 Distribution: %{_dist}
448 %endif
449
450 %if 0%{?opensuse_bs} &&  %{mysql} && %{suse}
451 # needed in opensuse_bs, as rpm is installed during build process
452 BuildRequires: libmysqlclient-devel
453 BuildRequires: mysql-client
454 BuildRequires: mysql
455 %endif
456 %if 0%{?opensuse_bs} &&  %{suse} && %{postgresql}
457 BuildRequires: postgresql
458 BuildRequires: postgresql-server
459 %endif
460 BuildRequires: openssl
461
462 %if 0%{?opensuse_bs} && %{suse}
463 BuildRequires: pwdutils
464 BuildRequires: sysconfig
465 %endif
466
467 # should we turn on python support
468 %define python 0
469 %{?build_python:%define python 1}
470
471 # do we need to patch for old postgresql version?
472 %define old_pgsql 0
473 %{?build_old_pgsql:%define old_pgsql 1}
474
475 # Mandriva somehow forces the manpage file extension to bz2 rather than gz
476 %if %{mdk}
477 %define manpage_ext bz2
478 %else
479 %define manpage_ext gz
480 %endif
481
482 # for client only build
483 %if %{client_only}
484 %define mysql 0
485 %define mysql4 0
486 %define mysql5 0
487 %define postgresql 0
488 %define sqlite 0
489 %endif
490
491 BuildRequires: gcc, gcc-c++, make, autoconf
492 BuildRequires: glibc, glibc-devel
493 BuildRequires: ncurses-devel, perl
494 BuildRequires: libstdc++-devel, zlib-devel
495 BuildRequires: openssl-devel
496 BuildRequires: libacl-devel
497 BuildRequires: pkgconfig
498 %if ! %{rh7}
499 BuildRequires: libxml2-devel
500 %endif
501 %if %{python}
502 BuildRequires: python, python-devel
503 %{expand: %%define pyver %(python -c 'import sys;print(sys.version[0:3])')}
504 %endif
505
506 %if %{rh7}
507 BuildRequires: libxml-devel
508 %endif
509 %if %{mdk}
510 BuildRequires: libstdc++-static-devel
511 BuildRequires: glibc-static-devel
512 %endif
513
514 %if %{suse}
515 BuildRequires: termcap
516 %else
517 BuildRequires: libtermcap-devel
518 %endif
519
520 %if %{sqlite}
521 BuildRequires: sqlite-devel
522 %endif
523
524 %if %{mysql}
525 BuildRequires: mysql-devel
526 %endif
527
528 %if %{postgresql} && %{wb3}
529 BuildRequires: rh-postgresql-devel >= 7
530 %endif
531
532 %if %{postgresql} && ! %{wb3}
533 BuildRequires: postgresql-devel >= 7
534 %endif
535
536 %description
537 %{blurb}
538
539 %{blurb2}
540 %{blurb3}
541 %{blurb4}
542 %{blurb5}
543 %{blurb6}
544 %{blurb7}
545 %{blurb8}
546
547 %if %{mysql}
548 %package mysql
549 %endif
550 %if %{sqlite}
551 %package sqlite
552 %endif
553 %if %{postgresql}
554 %package postgresql
555 %endif
556
557 Summary: Bacula - The Network Backup Solution
558 Group: System Environment/Daemons
559 Provides: bacula-dir, bacula-sd, bacula-fd, bacula-server
560 Conflicts: bacula-client
561
562 Requires: ncurses, libstdc++, zlib, openssl
563 Requires: glibc
564
565 %if %{suse}
566 Conflicts: bacula
567 Requires: termcap
568 %else
569 Requires: libtermcap
570 %endif
571
572 %if %{mysql}
573 Requires: mysql
574
575 %if %{suse} || %{mdk}
576 Requires: mysql-client
577 %else
578 Requires: mysql-server
579 %endif
580 %endif
581
582 %if %{postgresql} && %{wb3}
583 Requires: rh-postgresql >= 7
584 Requires: rh-postgresql-server >= 7
585 %endif
586 %if %{postgresql} && ! %{wb3}
587 Requires: postgresql >= 7
588 Requires: postgresql-server >= 7
589 %endif
590
591 %if %{mysql}
592 %description mysql
593 %endif
594 %if %{sqlite}
595 %description sqlite
596 %endif
597 %if %{postgresql}
598 %description postgresql
599 %endif
600
601 %if %{python}
602 Requires: python >= %{pyver}
603 %endif
604
605 %{blurb}
606
607 %{blurb2}
608 %{blurb3}
609 %{blurb4}
610 %{blurb5}
611 %{blurb6}
612 %{blurb7}
613 %{blurb8}
614
615 %if %{mysql}
616 This build requires MySQL to be installed separately as the catalog database.
617 %endif
618 %if %{postgresql}
619 This build requires PostgreSQL to be installed separately as the catalog database.
620 %endif
621 %if %{sqlite}
622 This build incorporates sqlite3 as the catalog database, statically compiled.
623 %endif
624 %if %{python}
625 This build includes python scripting support.
626 %endif
627
628 %package client
629 Summary: Bacula - The Network Backup Solution
630 Group: System Environment/Daemons
631 Provides: bacula-fd
632 Conflicts: bacula-mysql
633 Conflicts: bacula-sqlite
634 Conflicts: bacula-postgresql
635
636 %if %{suse}
637 Provides: bacula
638 %endif
639
640 Requires: libstdc++, zlib, openssl
641 Requires: glibc
642
643 %if %{suse}
644 Requires: termcap
645 %else
646 Requires: libtermcap
647 %endif
648
649 %if %{python}
650 Requires: python >= %{pyver}
651 %endif
652
653 %description client
654 %{blurb}
655
656 %{blurb2}
657 %{blurb3}
658 %{blurb4}
659 %{blurb5}
660 %{blurb6}
661 %{blurb7}
662 %{blurb8}
663
664 This is the File daemon (Client) only package. It includes the command line 
665 console program.
666 %if %{python}
667 This build includes python scripting support.
668 %endif
669
670 %if ! %{client_only}
671 %package updatedb
672
673 Summary: Bacula - The Network Backup Solution
674 Group: System Environment/Daemons
675
676 %description updatedb
677 %{blurb}
678
679 %{blurb2}
680 %{blurb3}
681 %{blurb4}
682 %{blurb5}
683 %{blurb6}
684 %{blurb7}
685 %{blurb8}
686
687 This package installs scripts for updating older versions of the bacula
688 database.
689 %endif
690
691 # Must explicitly enable debug pkg on SuSE
692 # but not in opensuse_bs
693 %if %{suse} && ! 0%{?opensuse_bs}
694 %debug_package
695 %endif
696
697 %prep
698 %setup
699 %setup -T -D -b 1
700 %setup -T -D -b 3
701
702 %build
703
704 %if %{suse}
705 export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap"
706 %endif
707
708 cwd=${PWD}
709 %if %{sqlite}
710 cd %{depkgs}
711 make sqlite3
712 cd ${cwd}
713 %endif
714
715 %if %{wb3} || %{old_pgsql}
716 patch -p3 src/cats/postgresql.c < %SOURCE2
717 %endif
718
719 %if %{sqlite}
720 # patches for the bundled sqlite scripts
721
722 # patch the make_sqlite_tables script for installation bindir
723 patch src/cats/make_sqlite3_tables.in src/cats/make_sqlite3_tables.in.patch
724
725 # patch the create_sqlite_database script for installation bindir
726 patch src/cats/create_sqlite3_database.in src/cats/create_sqlite3_database.in.patch
727
728 # patch the make_catalog_backup script for installation bindir
729 patch src/cats/make_catalog_backup.in src/cats/make_catalog_backup.in.patch
730
731 # patch the update_sqlite_tables script for installation bindir
732 patch src/cats/update_sqlite3_tables.in src/cats/update_sqlite3_tables.in.patch
733
734 # patch the bacula-dir init script to remove sqlite service
735 %if %{sqlite} && %{suse}
736 patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
737 %endif
738 %endif
739
740 # 64 bit lib location hacks
741 # as of 1.39.18 it should not be necessary to enable x86_64 as configure is
742 # reported to be fixed to properly detect lib locations.
743 %if %{x86_64}
744 export LDFLAGS="${LDFLAGS} -L/usr/lib64"
745 %endif
746 %if %{mysql} && %{x86_64}
747 export LDFLAGS="${LDFLAGS} -L/usr/lib64/mysql"
748 %endif
749 %if %{python} && %{x86_64}
750 export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
751 %endif
752
753 # Main Bacula configuration
754 %configure \
755         --prefix=%{_prefix} \
756         --sbindir=%{_sbindir} \
757         --sysconfdir=%{sysconf_dir} \
758         --mandir=%{_mandir} \
759         --with-scriptdir=%{script_dir} \
760         --with-working-dir=%{working_dir} \
761         --with-plugindir=%{script_dir} \
762         --with-pid-dir=%{pid_dir} \
763         --with-subsys-dir=%{_subsysdir} \
764         --enable-smartalloc \
765         --disable-gnome \
766         --disable-bwx-console \
767         --disable-tray-monitor \
768 %if %{mysql}
769         --with-mysql \
770 %endif
771 %if %{sqlite}
772         --with-sqlite3=${cwd}/%{depkgs}/sqlite3 \
773 %endif
774 %if %{postgresql}
775         --with-postgresql \
776 %endif
777         --disable-bat \
778         --without-qwt \
779 %if %{python}
780         --with-python \
781 %endif
782 %if %{client_only}
783         --enable-client-only \
784 %endif
785 %if %{rh7} || %{rh8} || %{rh9} || %{fc1} || %{fc3} || %{wb3} 
786         --disable-batch-insert \
787 %endif
788         --with-dir-user=%{director_daemon_user} \
789         --with-dir-group=%{daemon_group} \
790         --with-sd-user=%{storage_daemon_user} \
791         --with-sd-group=%{storage_daemon_group} \
792         --with-fd-user=%{file_daemon_user} \
793         --with-fd-group=%{daemon_group} \
794         --with-dir-password="XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX" \
795         --with-fd-password="XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX" \
796         --with-sd-password="XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX" \
797         --with-mon-dir-password="XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX" \
798         --with-mon-fd-password="XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX" \
799         --with-mon-sd-password="XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX" \
800         --with-openssl
801
802 make -j3
803
804 %install
805  
806 cwd=${PWD}
807 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
808 mkdir -p $RPM_BUILD_ROOT/etc/init.d
809 mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
810 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/conf/logfiles
811 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/conf/services
812 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/scripts/services
813 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/scripts/shared
814 mkdir -p $RPM_BUILD_ROOT%{script_dir}/updatedb
815
816 mkdir -p $RPM_BUILD_ROOT/etc/pam.d
817 mkdir -p $RPM_BUILD_ROOT%{_sbindir}
818
819 %if %{sqlite}
820 mkdir -p $RPM_BUILD_ROOT%{sqlite_bindir}
821 %endif
822
823 make DESTDIR=$RPM_BUILD_ROOT install
824
825 %if %{client_only}
826 # Program docs not installed on client
827 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bacula-dir.8.%{manpage_ext}
828 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bacula-sd.8.%{manpage_ext}
829 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bcopy.8.%{manpage_ext}
830 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bextract.8.%{manpage_ext}
831 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bls.8.%{manpage_ext}
832 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bscan.8.%{manpage_ext}
833 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/btape.8.%{manpage_ext}
834 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/dbcheck.8.%{manpage_ext}
835 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bsmtp.1.%{manpage_ext}
836 %endif
837 # Docs for programs that are depreciated
838 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bgnome-console.1.%{manpage_ext}
839 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bwxconsole.1.%{manpage_ext}
840 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-tray-monitor.1.%{manpage_ext}
841 rm -f $RPM_BUILD_ROOT%{script_dir}/gconsole
842
843 # fixme - make installs the mysql scripts for sqlite build
844 %if %{sqlite}
845 rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
846 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
847 rm -f $RPM_BUILD_ROOT%{script_dir}/grant_mysql_privileges
848 %endif
849
850 # fixme - make installs the mysql scripts for postgresql build
851 %if %{postgresql}
852 rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
853 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
854 %endif
855
856 # install the init scripts
857 %if %{suse}
858 cp -p platforms/suse/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
859 cp -p platforms/suse/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
860 cp -p platforms/suse/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
861 %endif
862 %if %{mdk}
863 cp -p platforms/mandrake/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
864 cp -p platforms/mandrake/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
865 cp -p platforms/mandrake/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
866 %endif
867 %if ! %{suse} && ! %{mdk}
868 cp -p platforms/redhat/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
869 cp -p platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
870 cp -p platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
871 %endif
872 chmod 0754 $RPM_BUILD_ROOT/etc/init.d/*
873 %if %{client_only}
874 rm -f $RPM_BUILD_ROOT/etc/init.d/bacula-dir
875 rm -f $RPM_BUILD_ROOT/etc/init.d/bacula-sd
876 %endif
877
878 # install sqlite
879 %if %{sqlite}
880 cp -p %{depkgs}/sqlite3/sqlite3 $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite3
881 cp -p %{depkgs}/sqlite3/sqlite3.h $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite3.h
882 cp -p %{depkgs}/sqlite3/libsqlite3.a $RPM_BUILD_ROOT%{sqlite_bindir}/libsqlite3.a
883 %endif
884
885
886 # install the logrotate file
887 cp -p scripts/logrotate $RPM_BUILD_ROOT/etc/logrotate.d/bacula
888
889 # install the updatedb scripts
890 cp -p updatedb/* $RPM_BUILD_ROOT%{script_dir}/updatedb/
891
892 # install the sample-query.sql file
893 cp -p examples/sample-query.sql $RPM_BUILD_ROOT%{script_dir}/sample-query.sql
894
895 # install the logwatch scripts
896 %if ! %{client_only}
897 cp -p scripts/logwatch/bacula $RPM_BUILD_ROOT%{logwatch_dir}/scripts/services/bacula
898 cp -p scripts/logwatch/applybaculadate $RPM_BUILD_ROOT%{logwatch_dir}/scripts/shared/applybaculadate
899 cp -p scripts/logwatch/logfile.bacula.conf $RPM_BUILD_ROOT%{logwatch_dir}/conf/logfiles/bacula.conf
900 cp -p scripts/logwatch/services.bacula.conf $RPM_BUILD_ROOT%{logwatch_dir}/conf/services/bacula.conf
901 chmod 755 $RPM_BUILD_ROOT%{logwatch_dir}/scripts/services/bacula
902 chmod 755 $RPM_BUILD_ROOT%{logwatch_dir}/scripts/shared/applybaculadate
903 chmod 644 $RPM_BUILD_ROOT%{logwatch_dir}/conf/logfiles/bacula.conf
904 chmod 644 $RPM_BUILD_ROOT%{logwatch_dir}/conf/services/bacula.conf
905 %endif
906
907 # now clean up permissions that are left broken by the install
908 chmod o-rwx $RPM_BUILD_ROOT%{working_dir}
909
910 # fix me - building enable-client-only installs files not included in bacula-client package
911 %if %{client_only}
912 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula
913 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula_config
914 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula-ctl-dir
915 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula-ctl-sd
916 rm -f $RPM_BUILD_ROOT%{script_dir}/disk-changer
917 rm -f $RPM_BUILD_ROOT%{script_dir}/dvd-handler
918 rm -f $RPM_BUILD_ROOT%{script_dir}/mtx-changer
919 rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
920 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
921 rm -rf $RPM_BUILD_ROOT%{script_dir}/updatedb
922 rm -f $RPM_BUILD_ROOT%{script_dir}/bconsole
923 rm -f $RPM_BUILD_ROOT%{script_dir}/bpipe-fd.so
924 rm -f $RPM_BUILD_ROOT%{script_dir}/mtx-changer.conf
925 rm -f $RPM_BUILD_ROOT%{_sbindir}/bacula
926 %endif
927
928 %clean
929 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
930 %if 0%{?opensuse_bs}
931 rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-1.txt
932 %else
933 rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
934 %endif
935
936
937 %if %{mysql}
938 # MySQL specific files
939 %files mysql
940 %defattr(-, root, root)
941 %attr(-, root, %{daemon_group}) %{script_dir}/create_mysql_database
942 %attr(-, root, %{daemon_group}) %{script_dir}/drop_mysql_database
943 %attr(-, root, %{daemon_group}) %{script_dir}/make_mysql_tables
944 %attr(-, root, %{daemon_group}) %{script_dir}/drop_mysql_tables
945 %attr(-, root, %{daemon_group}) %{script_dir}/update_mysql_tables
946 %attr(-, root, %{daemon_group}) %{script_dir}/grant_mysql_privileges
947 %attr(-, root, %{daemon_group}) %{script_dir}/startmysql
948 %attr(-, root, %{daemon_group}) %{script_dir}/stopmysql
949 %endif
950
951 %if %{sqlite}
952 %files sqlite
953 %defattr(-,root,root)
954 %attr(-, root, %{daemon_group}) %{script_dir}/create_sqlite3_database
955 %attr(-, root, %{daemon_group}) %{script_dir}/drop_sqlite3_database
956 %attr(-, root, %{daemon_group}) %{script_dir}/grant_sqlite3_privileges
957 %attr(-, root, %{daemon_group}) %{script_dir}/make_sqlite3_tables
958 %attr(-, root, %{daemon_group}) %{script_dir}/drop_sqlite3_tables
959 %attr(-, root, %{daemon_group}) %{script_dir}/update_sqlite3_tables
960 %{sqlite_bindir}/libsqlite3.a
961 %{sqlite_bindir}/sqlite3.h
962 %{sqlite_bindir}/sqlite3
963 %endif
964
965
966
967 %if %{postgresql}
968 %files postgresql
969 %defattr(-,root,root)
970 %attr(-, root, %{daemon_group}) %{script_dir}/create_postgresql_database
971 %attr(-, root, %{daemon_group}) %{script_dir}/drop_postgresql_database
972 %attr(-, root, %{daemon_group}) %{script_dir}/make_postgresql_tables
973 %attr(-, root, %{daemon_group}) %{script_dir}/drop_postgresql_tables
974 %attr(-, root, %{daemon_group}) %{script_dir}/update_postgresql_tables
975 %attr(-, root, %{daemon_group}) %{script_dir}/grant_postgresql_privileges
976 # The rest is DB backend independent
977 %endif
978 # opensuse_bs: directories not owned by any package
979 %dir %attr(-, root, %{daemon_group}) %{sysconf_dir}
980
981 %if ! %{client_only}
982 %attr(-, root, %{daemon_group}) %dir %{script_dir}
983 %attr(-, root, %{daemon_group}) %{script_dir}/bacula
984 %attr(-, root, %{daemon_group}) %{script_dir}/bacula_config
985 %attr(-, root, %{daemon_group}) %{script_dir}/bconsole
986 %attr(-, root, %{daemon_group}) %{script_dir}/create_bacula_database
987 %attr(-, root, %{daemon_group}) %{script_dir}/drop_bacula_database
988 %attr(-, root, %{daemon_group}) %{script_dir}/grant_bacula_privileges
989 %attr(-, root, %{daemon_group}) %{script_dir}/make_bacula_tables
990 %attr(-, root, %{daemon_group}) %{script_dir}/drop_bacula_tables
991 %attr(-, root, %{daemon_group}) %{script_dir}/update_bacula_tables
992 %attr(-, root, %{daemon_group}) %{script_dir}/make_catalog_backup
993 %attr(-, root, %{daemon_group}) %{script_dir}/make_catalog_backup.pl
994 %attr(-, root, %{daemon_group}) %{script_dir}/delete_catalog_backup
995 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.dbx
996 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.gdb
997 %attr(-, root, %{daemon_group}) %{script_dir}/disk-changer
998 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-dir
999 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-fd
1000 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-sd
1001 %attr(-, root, %{daemon_group}) %{script_dir}/bpipe-fd.so
1002 %attr(-, root, %{daemon_group}) /etc/init.d/bacula-dir
1003 %attr(-, root, %{daemon_group}) /etc/init.d/bacula-fd
1004 %attr(-, root, %{daemon_group}) %{_sbindir}/dbcheck
1005 %attr(-, root, %{storage_daemon_group}) %{script_dir}/dvd-handler
1006 %attr(-, root, %{storage_daemon_group}) /etc/init.d/bacula-sd
1007 %attr(-, root, %{storage_daemon_group}) %{script_dir}/mtx-changer
1008 %attr(-, root, %{storage_daemon_group}) %config(noreplace) %{script_dir}/mtx-changer.conf
1009
1010 /etc/logrotate.d/bacula
1011 %{logwatch_dir}/scripts/services/bacula
1012 %{logwatch_dir}/scripts/shared/applybaculadate
1013 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bacula-dir.conf
1014 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bacula-fd.conf
1015 %attr(-, root, %{storage_daemon_group}) %config(noreplace) %{sysconf_dir}/bacula-sd.conf
1016 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bconsole.conf
1017 %attr(-, root, %{daemon_group}) %config(noreplace) %{logwatch_dir}/conf/logfiles/bacula.conf
1018 %attr(-, root, %{daemon_group}) %config(noreplace) %{logwatch_dir}/conf/services/bacula.conf
1019 %attr(-, root, %{daemon_group}) %config(noreplace) %{script_dir}/query.sql
1020 %attr(-, root, %{daemon_group}) %{script_dir}/sample-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 * Sat Feb 13 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1453 - 5.0.1
1454 - fix client only build
1455 - clean up requirements for termcap
1456 - query.sql now empty by default so we install sample-query.sql along side it
1457 - remove old nobuild_mtx switch
1458 * Sun Feb 07 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1459 - fix mysql database upgrade
1460 * Fri Feb 05 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1461 - fix permissions of dbcheck
1462 - misc. cleanup
1463 * Sat Jan 30 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1464 - 5.0.0
1465 - add su112 and fc10 builds, remove doc package declaration.
1466 - fix source path for logwatch files.
1467 - restore static bundled build of sqlite (who took that out?) and remove use
1468 - of system sqlite. we don't support use of sqlite2.
1469 - upgrade database from version 11 to 12.
1470 * Mon Aug 10 2009 Philipp Storz <philipp.storz@dass-it.de>
1471 - changes to work with opensuse build service
1472 * Sat Aug 1 2009 Kern Sibbald <kern@sibbald.com>
1473 - Split docs into separate bacula-docs.spec, bacula-bat.spec and bacula-mtx.spec
1474 - removed build of rescue, gnome console and wxconsole
1475 * Sat Jun 20 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1476 - Fix bat install which is now handled by make and uses shared libs
1477 * Sat May 16 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1478 - fix libxml dependency for rh7 per Pasi Kärkkäinen <pasik@iki.fi>
1479 * Mon May 04 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1480 - Fix post ldconfig problem in client only build
1481 * Sun May 03 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1482 - remove more files installed by client-only build not needed by client package
1483 - remove libbacsql files from client package
1484 * Sat May 02 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1485 - 3.0.1
1486 - update for new docs configuration
1487 * Sat Apr 25 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1488 - add switch to pass Distribution tag
1489 * Sun Apr 5 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1490 - 3.0.0 release
1491 - database update version 10 to 11
1492 - make now installs docs so we rm from buildroot
1493 - add shared libs in %_libdir and other misc new files
1494 * Wed Dec 31 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1495 - add su111 target
1496 * Sat Nov 08 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1497 - set paths for QT using pkgconfig
1498 * Sat Oct 11 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1499 - release 2.4.3 update depkgs to 11Sep08 remove file nmshack from mtx package
1500 * Sun Sep 07 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1501 - adjust /opt/bacula install
1502 - add build switch to supress rescue package
1503 * Sun Aug 24 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1504 - add support for install to /opt/bacula
1505 * Sun Aug 17 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1506 - remove libtermcap dependancy for FC9
1507 * Mon Aug 04 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1508 - fix bat dependencies
1509 * Sat Jun 28 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1510 - add su110 target
1511 * Sat May 24 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1512 - add fc9 target
1513 * Sun Mar 30 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1514 - FHS compatibility changes
1515 * Sat Feb 16 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1516 - remove fix for false buffer overflow detection with glibc >= 2.7
1517 * Sat Feb 09 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1518 - fix for false buffer overflow detection with glibc >= 2.7