[bacula/f16] Rework building of all parts to reduce build time and to prepare for conditionals on RHEL

Simone Caronni slaanesh at fedoraproject.org
Fri Dec 23 12:41:14 UTC 2011


commit d844af1df9d46ef93ce6e126c9942fb7f857979c
Author: Simone Caronni <negativo17 at gmail.com>
Date:   Fri Dec 23 13:39:08 2011 +0100

    Rework building of all parts to reduce build time and to prepare for conditionals on RHEL

 bacula.spec |  139 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 89 insertions(+), 50 deletions(-)
---
diff --git a/bacula.spec b/bacula.spec
index 5c55baf..5a10cf4 100644
--- a/bacula.spec
+++ b/bacula.spec
@@ -10,16 +10,22 @@ BuildRoot:		%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 Source0:		http://download.sourceforge.net/bacula/bacula-%{version}.tar.gz
 Source1:		http://download.sourceforge.net/bacula/bacula-docs-%{version}.tar.bz2
-Source4:		bacula-wxconsole.desktop
-Source5:		bacula-traymonitor.desktop
-Source6:		bacula.logrotate
+Source2:		bacula.logrotate
+Source3:		bacula-checkconf
+Source4:		bacula-fd.init
+Source5:		bacula-dir.init
+Source6:		bacula-sd.init
 Source7:		bacula-fd.service
 Source8:		bacula-dir.service
 Source9:		bacula-sd.service
+Source10:		bacula-wxconsole.desktop
+Source11:		bacula-traymonitor.desktop
 Source12:		bacula-bat.desktop
 Source13:		bacula-traymonitor.console_apps
 Source14:		bacula-wxconsole.console_apps
-Source15:		bacula-checkconf
+Source15:		bacula-fd.sysconfig
+Source16:		bacula-dir.sysconfig
+Source17:		bacula-sd.sysconfig
 
 Patch1:			bacula-config.patch
 Patch3:			bacula-pamd.patch
@@ -354,7 +360,9 @@ find -type f -name '*.c' | xargs chmod -x
 find -type f -name '*.h' | xargs chmod -x 
 
 # We are building the source several times, each with a different storage backend
-mkdir bacula-mysql bacula-postgresql bacula-sqlite
+# and all the common files separated so we can also reduce compilation time
+# and build graphical consoles where allowed.
+mkdir bacula-mysql bacula-postgresql bacula-sqlite bacula-base
 
 %build
 # Shell function to configure and build a Bacula tree
@@ -362,7 +370,6 @@ build() {
 cp -rl ../bacula-%{version}/* .
 export CFLAGS="$RPM_OPT_FLAGS -I%{_includedir}/ncurses"
 export CPPFLAGS="$RPM_OPT_FLAGS -I%{_includedir}/ncurses"
-export QMAKE=/usr/bin/qmake-qt4
 %configure \
 	--sysconfdir=%{_sysconfdir}/bacula \
 	--with-dir-user=bacula \
@@ -385,16 +392,11 @@ export QMAKE=/usr/bin/qmake-qt4
 	--disable-conio \
 	--enable-readline \
 	--enable-largefile \
-	--enable-bwx-console \
-	--enable-tray-monitor \
-	--enable-build-dird \
-	--enable-build-stored \
 	--with-openssl \
 	--with-tcp-wrappers \
 	--with-python \
 	--enable-smartalloc \
 	--with-x \
-	--enable-bat \
 	--disable-libtool \
 	$*
 
@@ -408,11 +410,14 @@ fi
 
 }				
 
-# Build sqlite director
-pushd bacula-sqlite
-	build --with-sqlite3
-
-#Regen bat qt project file and build
+# Regen bat QT project file and build tools
+pushd bacula-base
+	export QMAKE=/usr/bin/qmake-qt4
+	build \
+		--enable-bat \
+		--enable-bwx-console \
+		--enable-tray-monitor \
+		--enable-client-only
 	pushd src
 		pushd qt-console
 			/usr/bin/qmake-qt4
@@ -421,14 +426,37 @@ pushd bacula-sqlite
 	popd
 popd
 
+# Build sqlite director
+pushd bacula-sqlite
+	build \
+		--disable-bat \
+		--disable-bwx-console \
+		--disable-tray-monitor \
+		--enable-build-stored \
+		--enable-build-dird \
+		--with-sqlite3
+popd
+
 # Build MySQL director
 pushd bacula-mysql
-	build --with-mysql
+	build \
+		--disable-bat \
+		--disable-bwx-console \
+		--disable-tray-monitor \
+		--enable-build-stored \
+		--enable-build-dird \
+		--with-mysql
 popd
 
 # Build PostgreSQL director
 pushd bacula-postgresql
-	build --with-postgresql
+	build \
+		--disable-bat \
+		--disable-bwx-console \
+		--disable-tray-monitor \
+		--enable-build-stored \
+		--enable-build-dird \
+		--with-postgresql
 popd
 
 # Build the docs
@@ -440,6 +468,32 @@ popd
 %install
 rm -rf %{buildroot}
 
+pushd bacula-base
+	make install DESTDIR=%{buildroot}
+	# Desktop Integration for the console apps and the traymonitor
+	mkdir -p %{buildroot}%{_bindir}
+	install -m 644 -D scripts/bacula.png %{buildroot}%{_datadir}/pixmaps/bacula.png
+	install -m 644 -D src/wx-console/wxwin16x16.xpm %{buildroot}%{_datadir}/pixmaps/wxwin16x16.xpm
+	install -m 644 -D scripts/wxconsole.pamd %{buildroot}%{_sysconfdir}/pam.d/bwxconsole
+	install -m 644 -D %{SOURCE14} %{buildroot}%{_sysconfdir}/security/console.apps/bwxconsole
+	install -m 644 -D scripts/bgnome-console.pamd %{buildroot}%{_sysconfdir}/pam.d/bat
+	install -m 644 -D scripts/bat.console_apps %{buildroot}%{_sysconfdir}/security/console.apps/bat
+	install -m 644 -D src/tray-monitor/generic.xpm %{buildroot}%{_datadir}/pixmaps/bacula-tray-monitor.xpm
+	install -m 644 -D src/qt-console/images/bat_icon.png %{buildroot}%{_datadir}/pixmaps/bat_icon.png
+	install -m 644 -D scripts/bgnome-console.pamd %{buildroot}%{_sysconfdir}/pam.d/bacula-tray-monitor
+	install -m 644 -D %{SOURCE13} %{buildroot}%{_sysconfdir}/security/console.apps/bacula-tray-monitor
+	install -m 644 -D src/qt-console/bat.conf %{buildroot}%{_sysconfdir}/bacula/bat.conf
+
+	ln -sf consolehelper %{buildroot}%{_bindir}/bwxconsole
+	ln -sf consolehelper %{buildroot}%{_bindir}/bat
+	ln -sf consolehelper %{buildroot}%{_bindir}/bacula-tray-monitor
+	install -m 755 src/qt-console/bat %{buildroot}%{_sbindir}
+
+	desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE10}
+	desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE11}
+	desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE12}
+popd
+
 pushd bacula-sqlite
 	make install DESTDIR=%{buildroot}
 	mv %{buildroot}%{_sbindir}/bacula-dir  %{buildroot}%{_sbindir}/bacula-dir.sqlite
@@ -493,45 +547,27 @@ rm -f %{buildroot}%{_libexecdir}/bacula/gconsole
 mv %{buildroot}%{_sbindir}/bwx-console %{buildroot}%{_sbindir}/bwxconsole
 mv %{buildroot}%{_sysconfdir}/bacula/bwx-console.conf %{buildroot}%{_sysconfdir}/bacula/bwxconsole.conf
 
-# Desktop Integration for the console apps and the traymonitor
-mkdir -p %{buildroot}%{_bindir}
-install -m 644 -D bacula-sqlite/scripts/bacula.png %{buildroot}%{_datadir}/pixmaps/bacula.png
-install -m 644 -D bacula-sqlite/src/wx-console/wxwin16x16.xpm %{buildroot}%{_datadir}/pixmaps/wxwin16x16.xpm
-install -m 644 -D bacula-sqlite/scripts/wxconsole.pamd %{buildroot}%{_sysconfdir}/pam.d/bwxconsole
-install -m 644 -D %{SOURCE14} %{buildroot}%{_sysconfdir}/security/console.apps/bwxconsole
-#bat.pamd is broken.
-install -m 644 -D bacula-sqlite/scripts/bgnome-console.pamd %{buildroot}%{_sysconfdir}/pam.d/bat
-install -m 644 -D bacula-sqlite/scripts/bat.console_apps %{buildroot}%{_sysconfdir}/security/console.apps/bat
-install -m 644 -D bacula-sqlite/src/tray-monitor/generic.xpm %{buildroot}%{_datadir}/pixmaps/bacula-tray-monitor.xpm
-install -m 644 -D bacula-sqlite/src/qt-console/images/bat_icon.png %{buildroot}%{_datadir}/pixmaps/bat_icon.png
-install -m 644 -D bacula-sqlite/scripts/bgnome-console.pamd %{buildroot}%{_sysconfdir}/pam.d/bacula-tray-monitor
-install -m 644 %{SOURCE13} %{buildroot}%{_sysconfdir}/security/console.apps/bacula-tray-monitor
-
-ln -sf consolehelper %{buildroot}%{_bindir}/bwxconsole
-ln -sf consolehelper %{buildroot}%{_bindir}/bat
-ln -sf consolehelper %{buildroot}%{_bindir}/bacula-tray-monitor
-install -m 755 bacula-sqlite/src/qt-console/bat %{buildroot}%{_sbindir}
-
-desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE4}
-desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE5}
-desktop-file-install --vendor="fedora" --dir=%{buildroot}%{_datadir}/applications %{SOURCE12}
-
 # logrotate
 mkdir -p %{buildroot}%{_localstatedir}/log/bacula
-install -m 644 -D %{SOURCE6} %{buildroot}%{_sysconfdir}/logrotate.d/bacula
+install -m 644 -D %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/bacula
 
 # And logwatch
-install -m 755 -D bacula-sqlite/scripts/logwatch/bacula %{buildroot}%{_sysconfdir}/logwatch/scripts/services/bacula
-install -m 755 -D bacula-sqlite/scripts/logwatch/applybaculadate %{buildroot}%{_sysconfdir}/logwatch/scripts/shared/applybaculadate
-install -m 644 -D bacula-sqlite/scripts/logwatch/logfile.bacula.conf %{buildroot}%{_sysconfdir}/logwatch/conf/logfiles/bacula.conf
-install -m 644 -D bacula-sqlite/scripts/logwatch/services.bacula.conf %{buildroot}%{_sysconfdir}/logwatch/conf/services/bacula.conf
+install -m 755 -D bacula-base/scripts/logwatch/bacula %{buildroot}%{_sysconfdir}/logwatch/scripts/services/bacula
+install -m 755 -D bacula-base/scripts/logwatch/applybaculadate %{buildroot}%{_sysconfdir}/logwatch/scripts/shared/applybaculadate
+install -m 644 -D bacula-base/scripts/logwatch/logfile.bacula.conf %{buildroot}%{_sysconfdir}/logwatch/conf/logfiles/bacula.conf
+install -m 644 -D bacula-base/scripts/logwatch/services.bacula.conf %{buildroot}%{_sysconfdir}/logwatch/conf/services/bacula.conf
 
 # Systemd unit files
 mkdir -p ${buildroot}%{_unitdir}
 install -m 755 -D %{SOURCE7}  %{buildroot}%{_unitdir}/bacula-fd.service
 install -m 755 -D %{SOURCE8}  %{buildroot}%{_unitdir}/bacula-dir.service
 install -m 755 -D %{SOURCE9}  %{buildroot}%{_unitdir}/bacula-sd.service
-install -m 755 -D %{SOURCE15} %{buildroot}%{_sbindir}/bacula-checkconf
+install -m 755 -D %{SOURCE3} %{buildroot}%{_sbindir}/bacula-checkconf
+
+# Sysconfig
+install -m 644 -D %{SOURCE15}  %{buildroot}%{_sysconfdir}/sysconfig/bacula-fd
+install -m 644 -D %{SOURCE16}  %{buildroot}%{_sysconfdir}/sysconfig/bacula-dir
+install -m 644 -D %{SOURCE17}  %{buildroot}%{_sysconfdir}/sysconfig/bacula-sd
 
 # Wipe backup files from the multiple make install calls
 rm -vf %{buildroot}%{_sysconfdir}/bacula/*.{new,old}
@@ -546,9 +582,6 @@ mv %{buildroot}%{_libexecdir}/bacula/query.sql %{buildroot}%{_sysconfdir}/bacula
 # Nuke the scripts we do not need
 rm -vf %{buildroot}%{_libexecdir}/bacula/{bacula,bacula-ctl-*,startmysql,stopmysql} 
 
-# Install bat.conf
-install -m 644 bacula-sqlite/src/qt-console/bat.conf %{buildroot}%{_sysconfdir}/bacula/bat.conf
-
 # Fix up some perms so rpmlint does not complain too much
 chmod 755 %{buildroot}%{_sbindir}/*
 chmod 755 %{buildroot}%{_libexecdir}/bacula/*
@@ -759,11 +792,13 @@ fi
 %{_libexecdir}/bacula/btraceback.mdb
 %{_sbindir}/bacula-checkconf
 
+
 %files client
 %defattr(-,root,root,-)
 %{_sbindir}/bacula-fd
 %{_unitdir}/bacula-fd.service
 %config(noreplace) %{_sysconfdir}/bacula/bacula-fd.conf
+%config(noreplace) %{_sysconfdir}/sysconfig/bacula-fd
 %{_mandir}/man8/bacula-fd.8*
 
 
@@ -803,6 +838,7 @@ fi
 %defattr(-,root,root,-)
 %doc bacula-%{version}/updatedb/
 %attr(640,root,bacula) %config(noreplace) %{_sysconfdir}/bacula/bacula-dir.conf
+%config(noreplace) %{_sysconfdir}/sysconfig/bacula-dir
 %config(noreplace) %{_sysconfdir}/bacula/query.sql
 %config %{_sysconfdir}/logwatch/conf/logfiles/bacula.conf
 %config %{_sysconfdir}/logwatch/conf/services/bacula.conf
@@ -881,6 +917,7 @@ fi
 %{_sbindir}/bls
 %{_sbindir}/btape
 %config(noreplace) %{_sysconfdir}/bacula/bacula-sd.conf
+%config(noreplace) %{_sysconfdir}/sysconfig/bacula-sd
 %{_unitdir}/bacula-sd.service
 %{_libexecdir}/bacula/disk-changer
 %{_libexecdir}/bacula/dvd-handler
@@ -951,6 +988,8 @@ fi
 - Change SQL query file patch.
 - Add back sysconf files and remove redundant user/group in systemd
   service files.
+- Move build of common parts around to reduce build time and to prepare
+  for nagios-plugins and conditionals for RHEL.
 
 * Thu Dec 22 2011 Lukáš Nykrýn <lnykryn at redhat.com> - 5.0.3-14
 - removed duplicity from logrotate file (#755970)


More information about the scm-commits mailing list