4 # Copyright (C) 2000-2015 Kern Sibbald
5 # License: BSD 2-Clause; see file LICENSE-FOSS
8 # Platform Build Configuration
9 # TODO: merge all plugins into one spec file
11 # basic defines for every build
12 %define _release @RELEASE@
13 %define _version @VERSION@
14 %define product bacula
15 %define _packager Kern Sibbald <kern@sibbald.com>
16 %define depkgs_version @DEPKGS_VERSION@
18 # Don't strip binaries
19 %define __os_install_post %{nil}
20 %define __debug_install_post %{nil}
21 %define debug_package %{nil}
24 %{?single_dir_install:%define single_dir 1}
26 # Installation Directory locations
28 # Installation Directory locations
29 %define _prefix /opt/bacula
30 %define _sbindir /opt/bacula/sbin
31 %define _bindir /opt/bacula/bin
32 %define _subsysdir /opt/bacula/working
33 %define sqlite_bindir /opt/bacula/sqlite
34 %define _mandir /usr/share/man
35 %define _man_bacula /opt/bacula/share/man/
36 %define sysconf_dir /opt/bacula/etc
37 %define scripts_dir /opt/bacula/scripts
38 %define working_dir /opt/bacula/working
39 %define pid_dir /opt/bacula/working
40 %define plugin_dir /opt/bacula/plugins
41 %define lib_dir /opt/bacula/lib
42 %define script_dir /opt/bacula/scripts
43 %define doc_dir /opt/bacula/share/doc
44 %define var_dir /opt/bacula/var
47 %define _sbindir %_prefix/sbin
48 %define _bindir %_prefix/bin
49 %define _subsysdir /var/lock/subsys
50 %define sqlite_bindir %_libdir/bacula/sqlite
51 %define _mandir %_prefix/share/man
52 %define sysconf_dir /etc/bacula
53 %define script_dir %_libdir/bacula
54 %define working_dir /var/lib/bacula
55 %define pid_dir /var/run
56 %define plugin_dir %_libdir/bacula/plugins
57 %define lib_dir %_libdir/bacula/lib
60 #--------------------------------------------------------------------------
61 # it should not be necessary to change anything below here for a release
62 # except for patch macros in the setup section
63 #--------------------------------------------------------------------------
65 %define file_daemon_user root
66 %define daemon_group bacula
68 %define base_package_name bacula
70 %{?contrib_packager:%define _packager %{contrib_packager}}
72 Summary: Bacula - The Network Backup Solution
73 Name: %{base_package_name}-client-static
76 Group: System Environment/Daemons
78 BuildRoot: %{_tmppath}/%{name}-root
79 URL: http://www.baculasystems.com/
80 Vendor: Bacula Project
81 Packager: %{_packager}
83 Distribution: Bacula Static Client
84 Source0: https://www.baculasystems.com/dl/download/bacula-%{_version}.tar.gz
87 %{blurb} This is Bacula static FD package.
89 # define the basic package description
90 %define blurb Bacula static FD - The Network Backup Solution.
91 %define blurb2 Bacula static FD staticly linked FD
93 BuildRequires: gcc, gcc-c++, make, autoconf
94 BuildRequires: glibc, glibc-devel
95 BuildRequires: ncurses-devel, perl, readline-devel
96 BuildRequires: libstdc++-devel, zlib-devel
97 BuildRequires: libacl-devel
98 BuildRequires: pkgconfig
101 Conflicts: bacula-client
103 Summary: Bacula static fd package - The Network Backup Solution
104 Group: System Environment/Daemons
107 %setup -T -D -n bacula-%{_version} -b 0
111 cd ../bacula-%{_version}
113 --prefix=%{_prefix} \
114 --sbindir=%{_sbindir} \
115 --sysconfdir=%{sysconf_dir} \
116 --with-scriptdir=%{scripts_dir} \
117 --with-working-dir=%{working_dir} \
118 --with-plugindir=%{plugin_dir} \
119 --with-pid-dir=%{pid_dir} \
120 --with-subsys-dir=%{_subsysdir} \
121 --enable-smartalloc \
123 --enable-client-only \
124 --with-basename="XXX_HOSTNAME_XXX" \
125 --with-hostname="XXX_HOSTNAME_XXX" \
126 --with-fd-password="XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX" \
127 --with-mon-fd-password="XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX" \
128 --enable-static-fd=yes \
129 --enable-static-tools=yes \
130 --enable-static-cons=yes \
138 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
139 mkdir -p $RPM_BUILD_ROOT/etc/init.d
140 mkdir -p $RPM_BUILD_ROOT%{_sbindir}
141 mkdir -p $RPM_BUILD_ROOT%{_bindir}
142 mkdir -p $RPM_BUILD_ROOT%{plugin_dir}
143 mkdir -p $RPM_BUILD_ROOT%{sysconf_dir}
144 mkdir -p $RPM_BUILD_ROOT%{working_dir}
145 mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d/bacula
147 cp -p platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/init.d/static-bacula-fd
148 chmod 0754 $RPM_BUILD_ROOT/etc/init.d/*
150 make DESTDIR=$RPM_BUILD_ROOT install
152 # fix me - building enable-client-only installs files not included in bacula-client package
153 # Program docs not installed on client
155 cp $RPM_BUILD_ROOT%{sysconf_dir}/bacula-fd.conf $RPM_BUILD_ROOT%{sysconf_dir}/static-bacula-fd.conf
157 rm -f $RPM_BUILD_ROOT%{_sbindir}/bconsole
158 rm -f $RPM_BUILD_ROOT%{_sbindir}/bbconsjson
159 rm -f $RPM_BUILD_ROOT%{_sbindir}/btraceback
160 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/mtx-changer.conf.new
161 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/btraceback.mdb
162 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/dvd-handler.old
163 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/storage-ctl.conf.new
164 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/disk-changer.old
165 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/bacula-ctl-sd
166 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/bconsole
167 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/btraceback.gdb
168 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/disk-changer
169 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/dvd-handler
170 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/storage-ctl
171 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/mtx-changer
172 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/mtx-changer.conf
173 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/bacula-ctl-dir
174 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/bconsole.conf.new
175 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/storage-ctl.conf
176 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/btraceback.dbx
177 rm -f $RPM_BUILD_ROOT%{sysconf_dir}/bacula-fd.conf
178 rm -f $RPM_BUILD_ROOT%{_bindir}/bfdjson
179 rm -f $RPM_BUILD_ROOT%{_bindir}/bacula
180 rm -f $RPM_BUILD_ROOT%{_sbindir}/bacula
181 rm -f $RPM_BUILD_ROOT%{_sbindir}/bacula-fd
182 rm -f $RPM_BUILD_ROOT%{_sbindir}/bfdjson
183 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man1/bacula-tray-monitor.1.gz
184 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man1/bat.1.gz
185 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man1/bsmtp.1.gz
186 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bacula-dir.8.gz
187 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bacula-sd.8.gz
188 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bacula.8.gz
189 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bcopy.8.gz
190 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bextract.8.gz
191 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bls.8.gz
192 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bregex.8.gz
193 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bscan.8.gz
194 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/btape.8.gz
195 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/btraceback.8.gz
196 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/bwild.8.gz
197 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man8/dbcheck.8.gz
198 rm -f $RPM_BUILD_ROOT%{_man_bacula}/man1/bacula-bwxconsole.1.gz
199 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula
200 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula-ctl-dir
201 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula-ctl-sd
202 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula_config
203 rm -f $RPM_BUILD_ROOT%{script_dir}/bconsole
204 rm -f $RPM_BUILD_ROOT%{script_dir}/breload
205 rm -f $RPM_BUILD_ROOT%{script_dir}/btraceback.dbx
206 rm -f $RPM_BUILD_ROOT%{script_dir}/btraceback.gdb
207 rm -f $RPM_BUILD_ROOT%{script_dir}/btraceback.mdb
208 rm -f $RPM_BUILD_ROOT%{script_dir}/disk-changer
209 rm -f $RPM_BUILD_ROOT%{script_dir}/dvd-handler
210 rm -f $RPM_BUILD_ROOT%{script_dir}/manual_prune.pl
211 rm -f $RPM_BUILD_ROOT%{script_dir}/mtx-changer
212 rm -f $RPM_BUILD_ROOT%{script_dir}/mtx-changer.conf
213 rm -f $RPM_BUILD_ROOT%{script_dir}/storage-ctl
214 rm -f $RPM_BUILD_ROOT%{script_dir}/storage-ctl.conf
215 rm -f $RPM_BUILD_ROOT%{doc_dir}/bacula/ChangeLog
216 rm -f $RPM_BUILD_ROOT%{doc_dir}/bacula/INSTALL
217 rm -f $RPM_BUILD_ROOT%{doc_dir}/bacula/LICENSE
218 rm -f $RPM_BUILD_ROOT%{doc_dir}/bacula/README
219 rm -f $RPM_BUILD_ROOT%{doc_dir}/bacula/ReleaseNotes
220 rm -f $RPM_BUILD_ROOT%{doc_dir}/bacula/VERIFYING
221 rm -f $RPM_BUILD_ROOT%/opt/bacula/share/man/man1/bacula-bwxconsole.1.gz
224 %defattr(-,root,root)
226 %attr(-, root, %{daemon_group}) %dir %{script_dir}
227 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
228 %attr(-, root, %{daemon_group}) %dir %{working_dir}
229 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-fd
230 %attr(-, root, %{daemon_group}) %dir %{plugin_dir}
231 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/static-bacula-fd.conf
232 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bconsole.conf
233 %attr(-, root, %{daemon_group}) %{_sbindir}/static-bconsole
234 %attr(-, root, %{daemon_group}) %{_sbindir}/static-bacula-fd
236 %attr(-, root, %{daemon_group}) /etc/init.d/static-bacula-fd
237 %attr(-, root, %{daemon_group}) %dir /etc/logrotate.d/bacula
238 %attr(-, root, %{daemon_group}) %{_man_bacula}/man8/bconsole.8.gz
239 %attr(-, root, %{daemon_group}) %{_man_bacula}/man8/bacula-fd.8.gz
244 if [ "$1" -ge 1 ] ; then
245 /sbin/chkconfig --add static-bacula-fd
248 if [ -d %{sysconf_dir} ]; then
250 if [ ! -f .rpm.sed ]; then
252 echo "# This file is used to ensure that all passwords will" > .rpm.sed
253 echo "# match between configuration files" >> .rpm.sed
255 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_PAS\
257 pass=`openssl rand -base64 33`
258 echo "s@${string}@${pass}@g" >> .rpm.sed
262 echo "s@XXX_HOSTNAME_XXX@${host}@g" >> .rpm.sed
263 for file in *.conf; do
264 sed -f .rpm.sed $file > $file.new
265 sed "s@XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
270 cat /etc/init.d/static-bacula-fd | sed s@bacula-fd@static-bacula-fd@g > .rpm.sed
271 cp .rpm.sed /etc/init.d/static-bacula-fd
272 chmod 755 /etc/init.d/static-bacula-fd
280 /sbin/chkconfig --del static-bacula-fd
284 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"