]> git.sur5r.net Git - bacula/bacula/blob - bacula/platforms/rpm/bacula.spec
Fix for shared objects name convention change.
[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 # Build Service: Determine Distribution
87
88 %ifarch x86_64
89  %define build_x86_64 1
90 %endif
91
92
93 %if 0%{?fedora_version} || 0%{?rhel_version} || 0%{?centos_version}
94 BuildRequires: GConf2-devel
95 BuildRequires: freetype-devel
96 BuildRequires: libtermcap-devel
97 BuildRequires: shadow-utils
98 %endif
99
100
101 %if 0%{?mandriva_version} == 2007
102 %define build_mdv 1
103 %define _dist "Mandriva 2007"
104 %endif
105
106 %if 0%{?fedora_version} == 8
107 %define build_fc8 1
108 %define _dist "Fedora Core 8"
109 BuildRequires: redhat-release
110 %endif
111
112 %if 0%{?fedora_version} == 9
113 %define build_fc9 1
114 %define _dist "Fedora Core 9"
115 BuildRequires: redhat-release
116 %endif
117
118
119 %if 0%{?fedora_version} == 10
120 %define build_fc9 1
121 %define _dist "Fedora Core 10"
122 BuildRequires: PolicyKit-gnome
123 BuildRequires: fedora-release
124 %endif
125
126 %if 0%{?fedora_version} == 11
127 %define build_fc9 1
128 %define _dist "Fedora Core 11"
129 BuildRequires: PolicyKit-gnome
130 BuildRequires: fedora-release
131 %endif
132
133 %if 0%{?rhel_version} == 501
134 %define build_rhel5 1
135 %define _dist "Red Hat Enterprise Linux Server release 5"
136 BuildRequires: redhat-release
137 %endif
138
139 %if 0%{?rhel_version} == 406
140 %define build_rhel4 1
141 %define _dist "Red Hat Enterprise Linux Server release 4"
142 BuildRequires: redhat-release
143 %endif
144
145
146 %if 0%{?centos_version} == 501
147 %define build_centos5 1
148 %define _dist "CentOS 5"
149 BuildRequires: redhat-release
150 %endif
151
152
153 %if 0%{?suse_version} == 1020
154 %define build_su102 1
155 %define _dist "OpenSUSE 10.2"
156 BuildRequires: suse-release
157 %endif
158
159
160 %if 0%{?suse_version} == 1030
161 %define build_su103 1
162 %define _dist "OpenSUSE 10.3"
163 BuildRequires: suse-release
164 %endif
165
166 %if 0%{?suse_version} == 1100
167 %define build_su110 1
168 %define _dist "SUSE 11"
169 BuildRequires: suse-release
170 %endif
171
172
173 %if 0%{?suse_version} == 1110
174 %define build_su111 1
175 %define _dist "SUSE 11"
176 %endif
177
178 %if 0%{?suse_version} == 1120
179 %define build_su112 1
180 %define _dist "SUSE 11"
181 %endif
182
183
184 %if 0%{?sles_version} == 9
185 %define build_su9 1
186 %define _dist "SLES 9"
187 %endif
188
189
190 %if 0%{?sles_version} == 10
191 %define build_su10 1
192 %define _dist "SLE 10"
193 %endif
194
195
196 %if 0%{?sles_version} == 11
197 %define build_su111 1
198 %define _dist "SLES 11"
199 %endif
200
201 %endif 
202 # opensuse-bs?
203
204
205 # any patches for this release
206 # be sure to check the setup section for patch macros
207
208 #--------------------------------------------------------------------------
209 # it should not be necessary to change anything below here for a release
210 # except for patch macros in the setup section
211 #--------------------------------------------------------------------------
212
213 %{?contrib_packager:%define _packager %{contrib_packager}}
214
215 Summary: Bacula - The Network Backup Solution
216 Name: bacula
217 Version: %{_version}
218 Release: %{_release}
219 Group: System Environment/Daemons
220 License: GPL v2
221 BuildRoot: %{_tmppath}/%{name}-root
222 URL: http://www.bacula.org/
223 Vendor: The Bacula Team
224 Packager: %{_packager}
225 Prefix: %{_prefix}
226
227 Source0: http://www.prdownloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
228 # opensuse build service changes the release itself
229 # what happens if the release is not 1? DSB
230 %if 0%{?opensuse_bs}
231 Source1: Release_Notes-%{version}-1.tar.gz
232 %else
233 Source1: Release_Notes-%{version}-%{release}.tar.gz
234 %endif
235 Source2: bacula-2.2.7-postgresql.patch
236 Source3: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.tar.gz
237
238 # define the basic package description
239 %define blurb Bacula - It comes by night and sucks the vital essence from your computers.
240 %define blurb2 Bacula is a set of computer programs that permit you (or the system
241 %define blurb3 administrator) to manage backup, recovery, and verification of computer
242 %define blurb4 data across a network of computers of different kinds. In technical terms,
243 %define blurb5 it is a network client/server based backup program. Bacula is relatively
244 %define blurb6 easy to use and efficient, while offering many advanced storage management
245 %define blurb7 features that make it easy to find and recover lost or damaged files.
246 %define blurb8 Bacula source code has been released under the GPL version 2 license.
247
248 %define user_file  /etc/passwd
249 %define group_file /etc/group
250
251 # program locations
252 %define useradd  /usr/sbin/useradd
253 %define groupadd /usr/sbin/groupadd
254 %define usermod  /usr/sbin/usermod
255
256 # platform defines - set one below or define the build_xxx on the command line
257 # RedHat builds
258 %define rh7 0
259 %{?build_rh7:%define rh7 1}
260 %define rh8 0
261 %{?build_rh8:%define rh8 1}
262 %define rh9 0
263 %{?build_rh9:%define rh9 1}
264 # Fedora Core build
265 %define fc1 0
266 %{?build_fc1:%define fc1 1}
267 %define fc3 0
268 %{?build_fc3:%define fc3 1}
269 %define fc4 0
270 %{?build_fc4:%define fc4 1}
271 %define fc5 0
272 %{?build_fc5:%define fc5 1}
273 %define fc6 0
274 %{?build_fc6:%define fc6 1}
275 %define fc7 0
276 %{?build_fc7:%define fc7 1}
277 %define fc8 0
278 %{?build_fc8:%define fc8 1}
279 %define fc9 0
280 %{?build_fc9:%define fc9 1}
281 %define fc10 0
282 %{?build_fc10:%define fc10 1}
283 %define fc11 0
284 %{?build_fc11:%define fc11 1}
285 %define fc12 0
286 %{?build_fc12:%define fc12 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} || %{fc11} || %{fc12}
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 %define sqlite 0
387 %{?build_sqlite:%define sqlite 1}
388 %define postgresql 0
389 %{?build_postgresql:%define postgresql 1}
390
391 # test for a database definition
392 %if ! %{mysql} && ! %{sqlite} && ! %{postgresql} && ! %{client_only}
393 %{error: You must specify database support, by passing one of the following to rpmbuild:}
394 %{error:   --define build_postgresql=1}
395 %{error:   --define build_sqlite=1}
396 %{error:   --define build_mysql=1}
397 exit 1
398 %endif
399
400 %if %{mysql}
401 %define db_backend mysql
402 %endif
403 %if %{sqlite}
404 %define db_backend sqlite3
405 %endif
406 %if %{postgresql}
407 %define db_backend postgresql
408 %endif
409
410 # 64 bit support
411 %define x86_64 0
412 %{?build_x86_64:%define x86_64 1}
413
414 # check what distribution we are
415 %if %{rhat} || %{rhel}
416 %define _dist %(grep Red /etc/redhat-release)
417 %endif
418 %if %{fc1} || %{fc3} || %{fc4} || %{fc5} || %{fc7} || %{fc8} || %{fc9} || %{fc10} || %{fc11} || %{fc12}
419 %define _dist %(grep Fedora /etc/redhat-release)
420 %endif
421 %if %{centos5} || %{centos4} || %{centos3}
422 %define _dist %(grep CentOS /etc/redhat-release)
423 %endif
424 %if %{sl5} ||%{sl4} || %{sl3}
425 %define _dist %(grep 'Scientific Linux' /etc/redhat-release)
426 %endif
427 %if %{wb3} && ! %{rhel3} && ! %{centos3} && ! %{sl3}
428 %define _dist %(grep White /etc/whitebox-release)
429 %endif
430 %if %{suse}
431 %define _dist %(grep -i SuSE /etc/SuSE-release)
432 %endif
433 %if %{mdk}
434 %define _dist %(grep Mand /etc/mandrake-release)
435 %endif
436 %{?DISTNAME:%define _dist %{DISTNAME}}
437
438 # only set Disribution if not in opensuse build service, as it sets it itself
439 %if ! 0%{?opensuse_bs}
440 Distribution: %{_dist}
441 %endif
442
443 %if 0%{?opensuse_bs} &&  %{mysql} && %{suse}
444 # needed in opensuse_bs, as rpm is installed during build process
445 BuildRequires: libmysqlclient-devel
446 BuildRequires: mysql-client
447 BuildRequires: mysql
448 %endif
449 %if 0%{?opensuse_bs} &&  %{suse} && %{postgresql}
450 BuildRequires: postgresql
451 BuildRequires: postgresql-server
452 %endif
453 BuildRequires: openssl
454
455 %if 0%{?opensuse_bs} && %{suse}
456 BuildRequires: pwdutils
457 BuildRequires: sysconfig
458 %endif
459
460 # should we turn on python support
461 %define python 0
462 %{?build_python:%define python 1}
463
464 # should we enable tcp wrappers support
465 %define tcpwrappers 0
466 %{?build_tcpwrappers:%define tcpwrappers 1}
467
468 # do we need to patch for old postgresql version?
469 %define old_pgsql 0
470 %{?build_old_pgsql:%define old_pgsql 1}
471
472 # Mandriva somehow forces the manpage file extension to bz2 rather than gz
473 %if %{mdk}
474 %define manpage_ext bz2
475 %else
476 %define manpage_ext gz
477 %endif
478
479 # for client only build
480 %if %{client_only}
481 %define mysql 0
482 %define postgresql 0
483 %define sqlite 0
484 %endif
485
486 BuildRequires: gcc, gcc-c++, make, autoconf
487 BuildRequires: glibc, glibc-devel
488 BuildRequires: ncurses-devel, perl, readline-devel
489 BuildRequires: libstdc++-devel, zlib-devel
490 BuildRequires: openssl-devel
491 BuildRequires: libacl-devel
492 BuildRequires: pkgconfig
493 %if ! %{rh7}
494 BuildRequires: libxml2-devel
495 %endif
496 %if %{python}
497 BuildRequires: python, python-devel
498 %{expand: %%define pyver %(python -c 'import sys;print(sys.version[0:3])')}
499 %endif
500
501 %if %{rh7}
502 BuildRequires: libxml-devel
503 %endif
504 %if %{mdk}
505 BuildRequires: libstdc++-static-devel
506 BuildRequires: glibc-static-devel
507 %endif
508
509 %if %{suse}
510 BuildRequires: termcap
511 %else
512 BuildRequires: libtermcap-devel
513 %endif
514
515 %if %{sqlite}
516 BuildRequires: sqlite-devel
517 %endif
518
519 %if %{mysql}
520 BuildRequires: mysql-devel
521 %endif
522
523 %if %{postgresql} && %{wb3}
524 BuildRequires: rh-postgresql-devel >= 7
525 %endif
526
527 %if %{postgresql} && ! %{wb3}
528 BuildRequires: postgresql-devel >= 7
529 %endif
530
531 %description
532 %{blurb}
533
534 %{blurb2}
535 %{blurb3}
536 %{blurb4}
537 %{blurb5}
538 %{blurb6}
539 %{blurb7}
540 %{blurb8}
541
542 %if %{mysql}
543 %package mysql
544 %endif
545 %if %{sqlite}
546 %package sqlite
547 %endif
548 %if %{postgresql}
549 %package postgresql
550 %endif
551
552 Summary: Bacula - The Network Backup Solution
553 Group: System Environment/Daemons
554 Provides: bacula-dir, bacula-sd, bacula-fd, bacula-server
555 Conflicts: bacula-client
556
557 Requires: ncurses, libstdc++, zlib, openssl
558 Requires: glibc, readline
559
560 %if %{suse}
561 Conflicts: bacula
562 Requires: termcap
563 %else
564 Requires: libtermcap
565 %endif
566
567 %if %{mysql}
568 Requires: mysql
569 %endif
570
571 %if %{postgresql} && %{wb3}
572 Requires: rh-postgresql >= 7
573 %endif
574 %if %{postgresql} && ! %{wb3}
575 Requires: postgresql >= 7
576 %endif
577
578 %if %{mysql}
579 %description mysql
580 %endif
581 %if %{sqlite}
582 %description sqlite
583 %endif
584 %if %{postgresql}
585 %description postgresql
586 %endif
587
588 %if %{python}
589 Requires: python >= %{pyver}
590 %endif
591
592 %{blurb}
593
594 %{blurb2}
595 %{blurb3}
596 %{blurb4}
597 %{blurb5}
598 %{blurb6}
599 %{blurb7}
600 %{blurb8}
601
602 %if %{mysql}
603 This build requires MySQL to be installed separately as the catalog database.
604 %endif
605 %if %{postgresql}
606 This build requires PostgreSQL to be installed separately as the catalog database.
607 %endif
608 %if %{sqlite}
609 This build incorporates sqlite3 as the catalog database, statically compiled.
610 %endif
611 %if %{python}
612 This build includes python scripting support.
613 %endif
614 %if %{tcpwrappers}
615 This build includes tcp-wrappers support.
616 %endif
617
618 %package client
619 Summary: Bacula - The Network Backup Solution
620 Group: System Environment/Daemons
621 Provides: bacula-fd
622 Conflicts: bacula-mysql
623 Conflicts: bacula-sqlite
624 Conflicts: bacula-postgresql
625
626 %if %{suse}
627 Provides: bacula
628 %endif
629
630 Requires: libstdc++, zlib, openssl
631 Requires: glibc, readline
632
633 %if %{suse}
634 Requires: termcap
635 %else
636 Requires: libtermcap
637 %endif
638
639 %if %{python}
640 Requires: python >= %{pyver}
641 %endif
642
643 %description client
644 %{blurb}
645
646 %{blurb2}
647 %{blurb3}
648 %{blurb4}
649 %{blurb5}
650 %{blurb6}
651 %{blurb7}
652 %{blurb8}
653
654 This is the File daemon (Client) only package. It includes the command line 
655 console program.
656 %if %{python}
657 This build includes python scripting support.
658 %endif
659 %if %{tcpwrappers}
660 This build includes tcp-wrappers support.
661 %endif
662
663 %if ! %{client_only}
664 %package updatedb
665
666 Summary: Bacula - The Network Backup Solution
667 Group: System Environment/Daemons
668
669 %description updatedb
670 %{blurb}
671
672 %{blurb2}
673 %{blurb3}
674 %{blurb4}
675 %{blurb5}
676 %{blurb6}
677 %{blurb7}
678 %{blurb8}
679
680 This package installs scripts for updating older versions of the bacula
681 database.
682 %endif
683
684 # Must explicitly enable debug pkg on SuSE
685 # but not in opensuse_bs
686 %if %{suse} && ! 0%{?opensuse_bs}
687 %debug_package
688 %endif
689
690 %prep
691 %setup
692 %setup -T -D -b 1
693 %setup -T -D -b 3
694
695 %build
696
697 %if %{suse}
698 export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap"
699 %endif
700
701 cwd=${PWD}
702 %if %{sqlite}
703 cd %{depkgs}
704 make sqlite3
705 cd ${cwd}
706 %endif
707
708 %if %{wb3} || %{old_pgsql}
709 patch -p3 src/cats/postgresql.c < %SOURCE2
710 %endif
711
712 %if %{sqlite}
713 # patches for the bundled sqlite scripts
714
715 # patch the make_sqlite_tables script for installation bindir
716 patch src/cats/make_sqlite3_tables.in src/cats/make_sqlite3_tables.in.patch
717
718 # patch the create_sqlite_database script for installation bindir
719 patch src/cats/create_sqlite3_database.in src/cats/create_sqlite3_database.in.patch
720
721 # patch the make_catalog_backup script for installation bindir
722 patch src/cats/make_catalog_backup.in src/cats/make_catalog_backup.in.patch
723
724 # patch the update_sqlite_tables script for installation bindir
725 patch src/cats/update_sqlite3_tables.in src/cats/update_sqlite3_tables.in.patch
726
727 # patch the bacula-dir init script to remove sqlite service
728 %if %{sqlite} && %{suse}
729 patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
730 %endif
731 %endif
732
733 # 64 bit lib location hacks
734 # as of 1.39.18 it should not be necessary to enable x86_64 as configure is
735 # reported to be fixed to properly detect lib locations.
736 %if %{x86_64}
737 export LDFLAGS="${LDFLAGS} -L/usr/lib64"
738 %endif
739 %if %{mysql} && %{x86_64}
740 export LDFLAGS="${LDFLAGS} -L/usr/lib64/mysql"
741 %endif
742 %if %{python} && %{x86_64}
743 export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
744 %endif
745
746 # Main Bacula configuration
747 %configure \
748         --prefix=%{_prefix} \
749         --sbindir=%{_sbindir} \
750         --sysconfdir=%{sysconf_dir} \
751         --mandir=%{_mandir} \
752         --with-scriptdir=%{script_dir} \
753         --with-working-dir=%{working_dir} \
754         --with-plugindir=%{script_dir} \
755         --with-pid-dir=%{pid_dir} \
756         --with-subsys-dir=%{_subsysdir} \
757         --enable-smartalloc \
758         --disable-gnome \
759         --disable-bwx-console \
760         --disable-tray-monitor \
761         --disable-conio \
762         --enable-readline \
763 %if %{mysql}
764         --with-mysql \
765 %endif
766 %if %{sqlite}
767         --with-sqlite3=${cwd}/%{depkgs}/sqlite3 \
768 %endif
769 %if %{postgresql}
770         --with-postgresql \
771 %endif
772         --disable-bat \
773         --without-qwt \
774 %if %{python}
775         --with-python \
776 %endif
777 %if %{tcpwrappers}
778         --with-tcp-wrappers  \
779 %endif
780 %if %{client_only}
781         --enable-client-only \
782 %endif
783 %if %{rh7} || %{rh8} || %{rh9} || %{fc1} || %{fc3} || %{wb3} 
784         --disable-batch-insert \
785 %endif
786         --with-dir-user=%{director_daemon_user} \
787         --with-dir-group=%{daemon_group} \
788         --with-sd-user=%{storage_daemon_user} \
789         --with-sd-group=%{storage_daemon_group} \
790         --with-fd-user=%{file_daemon_user} \
791         --with-fd-group=%{daemon_group} \
792         --with-dir-password="XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX" \
793         --with-fd-password="XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX" \
794         --with-sd-password="XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX" \
795         --with-mon-dir-password="XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX" \
796         --with-mon-fd-password="XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX" \
797         --with-mon-sd-password="XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX" \
798         --with-openssl
799
800 make -j3
801
802 %install
803  
804 cwd=${PWD}
805 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
806 mkdir -p $RPM_BUILD_ROOT/etc/init.d
807 mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
808 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/conf/logfiles
809 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/conf/services
810 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/scripts/services
811 mkdir -p $RPM_BUILD_ROOT%{logwatch_dir}/scripts/shared
812 mkdir -p $RPM_BUILD_ROOT%{script_dir}/updatedb
813
814 mkdir -p $RPM_BUILD_ROOT/etc/pam.d
815 mkdir -p $RPM_BUILD_ROOT%{_sbindir}
816
817 %if %{sqlite}
818 mkdir -p $RPM_BUILD_ROOT%{sqlite_bindir}
819 %endif
820
821 make DESTDIR=$RPM_BUILD_ROOT install
822
823 %if %{client_only}
824 # Program docs not installed on client
825 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bacula-dir.8.%{manpage_ext}
826 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bacula-sd.8.%{manpage_ext}
827 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bcopy.8.%{manpage_ext}
828 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bextract.8.%{manpage_ext}
829 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bls.8.%{manpage_ext}
830 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bscan.8.%{manpage_ext}
831 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/btape.8.%{manpage_ext}
832 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/dbcheck.8.%{manpage_ext}
833 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bsmtp.1.%{manpage_ext}
834 %endif
835 # Docs for programs that are depreciated
836 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bgnome-console.1.%{manpage_ext}
837 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bwxconsole.1.%{manpage_ext}
838 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-tray-monitor.1.%{manpage_ext}
839 rm -f $RPM_BUILD_ROOT%{script_dir}/gconsole
840
841 # fixme - make installs the mysql scripts for sqlite build
842 %if %{sqlite}
843 rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
844 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
845 rm -f $RPM_BUILD_ROOT%{script_dir}/grant_mysql_privileges
846 %endif
847
848 # fixme - make installs the mysql scripts for postgresql build
849 %if %{postgresql}
850 rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
851 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
852 %endif
853
854 # install the init scripts
855 %if %{suse}
856 cp -p platforms/suse/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
857 cp -p platforms/suse/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
858 cp -p platforms/suse/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
859 %endif
860 %if %{mdk}
861 cp -p platforms/mandrake/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
862 cp -p platforms/mandrake/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
863 cp -p platforms/mandrake/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
864 %endif
865 %if ! %{suse} && ! %{mdk}
866 cp -p platforms/redhat/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
867 cp -p platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
868 cp -p platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
869 %endif
870 chmod 0754 $RPM_BUILD_ROOT/etc/init.d/*
871 %if %{client_only}
872 rm -f $RPM_BUILD_ROOT/etc/init.d/bacula-dir
873 rm -f $RPM_BUILD_ROOT/etc/init.d/bacula-sd
874 %endif
875
876 # install sqlite
877 %if %{sqlite}
878 cp -p %{depkgs}/sqlite3/sqlite3 $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite3
879 cp -p %{depkgs}/sqlite3/sqlite3.h $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite3.h
880 cp -p %{depkgs}/sqlite3/libsqlite3.a $RPM_BUILD_ROOT%{sqlite_bindir}/libsqlite3.a
881 %endif
882
883
884 # install the logrotate file
885 cp -p scripts/logrotate $RPM_BUILD_ROOT/etc/logrotate.d/bacula
886
887 # install the updatedb scripts
888 cp -p updatedb/* $RPM_BUILD_ROOT%{script_dir}/updatedb/
889
890 # install the sample-query.sql file
891 %if ! %{client_only}
892 cp -p examples/sample-query.sql $RPM_BUILD_ROOT%{script_dir}/sample-query.sql
893 %endif
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 %endif
977
978 # The rest is DB backend independent
979
980 %if ! %{client_only}
981 %attr(-, root, %{daemon_group}) %dir %{script_dir}
982 %attr(-, root, %{daemon_group}) %dir %{sysconf_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 /sbin/ldconfig
1307 exit 0
1308 %endif
1309
1310
1311 %if %{mysql}
1312 %preun mysql
1313 %endif
1314 %if %{sqlite}
1315 %preun sqlite
1316 %endif
1317 %if %{postgresql}
1318 %preun postgresql
1319 %endif
1320
1321 %if ! %{client_only}
1322 # delete our links
1323 if [ $1 = 0 ]; then
1324   /sbin/chkconfig --del bacula-dir
1325   /sbin/chkconfig --del bacula-fd
1326   /sbin/chkconfig --del bacula-sd
1327 fi
1328 /sbin/ldconfig
1329 exit 0
1330 %endif
1331
1332 %if %{mysql}
1333 %postun mysql
1334 %endif
1335 %if %{sqlite}
1336 %postun sqlite
1337 %endif
1338 %if %{postgresql}
1339 %postun postgresql
1340 %endif
1341 %if ! %{client_only}
1342 /sbin/ldconfig
1343 exit 0
1344 %endif
1345
1346 %files client
1347 %defattr(-,root,root)
1348 %attr(-, root, %{daemon_group}) %dir %{script_dir}
1349 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
1350 %{script_dir}/bacula-ctl-fd
1351 /etc/init.d/bacula-fd
1352
1353 /etc/logrotate.d/bacula
1354
1355 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bacula-fd.conf
1356 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bconsole.conf
1357 %attr(-, root, %{daemon_group}) %dir %{working_dir}
1358
1359 %{_sbindir}/bacula-fd
1360 %{_sbindir}/btraceback
1361 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.gdb
1362 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.dbx
1363 %{_sbindir}/bconsole
1364 %{_mandir}/man8/bacula-fd.8.%{manpage_ext}
1365 %{_mandir}/man8/bacula.8.%{manpage_ext}
1366 %{_mandir}/man8/bconsole.8.%{manpage_ext}
1367 %{_mandir}/man8/btraceback.8.%{manpage_ext}
1368 %{_mandir}/man1/bat.1.%{manpage_ext}
1369 %{_libdir}/libbac*
1370 %{_libdir}/libbaccfg*
1371 %{_libdir}/libbacfind*
1372 %{_libdir}/libbacpy*
1373 %_prefix/share/doc/*
1374
1375 %pre client
1376 # create the daemon group and user
1377 HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
1378 if [ -z "$HAVE_BACULA" ]; then
1379     %{groupadd} -r %{daemon_group} > /dev/null 2>&1
1380     echo "The group %{daemon_group} has been added to %{group_file}."
1381     echo "See the manual chapter \"Running Bacula\" for details."
1382 fi
1383 # we do not use the -g option allowing the primary group to be set to system default
1384 # this will be a unique group on redhat type systems or the group users on some systems
1385 HAVE_BACULA=`grep %{file_daemon_user} %{user_file} 2>/dev/null`
1386 if [ -z "$HAVE_BACULA" ]; then
1387     %{useradd} -r -c "Bacula" -d %{working_dir} -g %{daemon_group} -M -s /sbin/nologin %{file_daemon_user} > /dev/null 2>&1
1388     echo "The user %{file_daemon_user} has been added to %{user_file}."
1389     echo "See the manual chapter \"Running Bacula\" for details."
1390 fi
1391 # now we add the supplementary group, this is ok to call even if the user already exists
1392 # we only do this if the user is NOT root
1393 IS_ROOT=%{file_daemon_user}
1394 if [ "$IS_ROOT" != "root" ]; then
1395 %{usermod} -G %{daemon_group} %{file_daemon_user}
1396 fi
1397
1398 %post client
1399 # add our link
1400 if [ "$1" -ge 1 ] ; then
1401    /sbin/chkconfig --add bacula-fd
1402 fi
1403
1404 if [ -d %{sysconf_dir} ]; then
1405    cd %{sysconf_dir}
1406    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
1407       pass=`openssl rand -base64 33`
1408       for file in *.conf; do
1409          sed "s@${string}@${pass}@g" $file > $file.new
1410          cp -f $file.new $file; rm -f $file.new
1411       done
1412    done
1413 # put actual hostname in conf file
1414    host=`hostname`
1415    string="XXX_HOSTNAME_XXX"
1416    for file in *.conf; do
1417       sed "s@${string}@${host}@g" $file >$file.new
1418       cp -f $file.new $file; rm -f $file.new
1419    done
1420 fi
1421
1422 /sbin/ldconfig
1423 exit 0
1424 %preun client
1425 # delete our link
1426 if [ $1 = 0 ]; then
1427    /sbin/chkconfig --del bacula-fd
1428 fi
1429
1430 %postun client
1431 /sbin/ldconfig
1432 exit 0
1433
1434 %if ! %{client_only}
1435 %files updatedb
1436 %defattr(-,root,%{daemon_group})
1437 %{script_dir}/updatedb/*
1438 #oensuse_bs: directories not owned by any package
1439 #%{script_dir}/updatedb
1440
1441 %pre updatedb
1442 # create the daemon group
1443 HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
1444 if [ -z "$HAVE_BACULA" ]; then
1445     %{groupadd} -r %{daemon_group} > /dev/null 2>&1
1446     echo "The group %{daemon_group} has been added to %{group_file}."
1447     echo "See the manual chapter \"Running Bacula\" for details."
1448 fi
1449
1450 %post updatedb
1451 echo "The database update scripts were installed to %{script_dir}/updatedb"
1452 %endif
1453
1454 %changelog
1455 * Sat Feb 20 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1456 - remove deprecated mysql4 and mysql5 build defines
1457 - add build support for tcpwrappers
1458 - remove bacula_config file for client only build
1459 - remove requirements for database server packages
1460 - enable readline support
1461 - add fc11 and fc12
1462 * Sat Feb 13 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1463 - 5.0.1
1464 - fix client only build
1465 - clean up requirements for termcap
1466 - query.sql now empty by default so we install sample-query.sql along side it
1467 - remove old nobuild_mtx switch
1468 * Sun Feb 07 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1469 - fix mysql database upgrade
1470 * Fri Feb 05 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1471 - fix permissions of dbcheck
1472 - misc. cleanup
1473 * Sat Jan 30 2010 D. Scott Barninger <barninger@fairfieldcomputers.com>
1474 - 5.0.0
1475 - add su112 and fc10 builds, remove doc package declaration.
1476 - fix source path for logwatch files.
1477 - restore static bundled build of sqlite (who took that out?) and remove use
1478 - of system sqlite. we don't support use of sqlite2.
1479 - upgrade database from version 11 to 12.
1480 * Mon Aug 10 2009 Philipp Storz <philipp.storz@dass-it.de>
1481 - changes to work with opensuse build service
1482 * Sat Aug 1 2009 Kern Sibbald <kern@sibbald.com>
1483 - Split docs into separate bacula-docs.spec, bacula-bat.spec and bacula-mtx.spec
1484 - removed build of rescue, gnome console and wxconsole
1485 * Sat Jun 20 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1486 - Fix bat install which is now handled by make and uses shared libs
1487 * Sat May 16 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1488 - fix libxml dependency for rh7 per Pasi Kärkkäinen <pasik@iki.fi>
1489 * Mon May 04 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1490 - Fix post ldconfig problem in client only build
1491 * Sun May 03 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1492 - remove more files installed by client-only build not needed by client package
1493 - remove libbacsql files from client package
1494 * Sat May 02 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1495 - 3.0.1
1496 - update for new docs configuration
1497 * Sat Apr 25 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1498 - add switch to pass Distribution tag
1499 * Sun Apr 5 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
1500 - 3.0.0 release
1501 - database update version 10 to 11
1502 - make now installs docs so we rm from buildroot
1503 - add shared libs in %_libdir and other misc new files
1504 * Wed Dec 31 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1505 - add su111 target
1506 * Sat Nov 08 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1507 - set paths for QT using pkgconfig
1508 * Sat Oct 11 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1509 - release 2.4.3 update depkgs to 11Sep08 remove file nmshack from mtx package
1510 * Sun Sep 07 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1511 - adjust /opt/bacula install
1512 - add build switch to supress rescue package
1513 * Sun Aug 24 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1514 - add support for install to /opt/bacula
1515 * Sun Aug 17 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1516 - remove libtermcap dependancy for FC9
1517 * Mon Aug 04 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1518 - fix bat dependencies
1519 * Sat Jun 28 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1520 - add su110 target
1521 * Sat May 24 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1522 - add fc9 target
1523 * Sun Mar 30 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1524 - FHS compatibility changes
1525 * Sat Feb 16 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1526 - remove fix for false buffer overflow detection with glibc >= 2.7
1527 * Sat Feb 09 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
1528 - fix for false buffer overflow detection with glibc >= 2.7