File: rules

package info (click to toggle)
bacula 5.0.2-2.2%2Bsqueeze2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze-lts
  • size: 22,692 kB
  • ctags: 15,071
  • sloc: ansic: 109,509; cpp: 24,105; sh: 21,958; makefile: 4,012; perl: 3,083; sql: 1,366; lisp: 479; python: 166; xml: 64; sed: 32; awk: 8
file content (359 lines) | stat: -rwxr-xr-x 12,139 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
#!/usr/bin/make -f
# debian/rules for Bacula
# based upon dh_make template, copyright 1997 by Joey Hess.
#

#export DH_VERBOSE=1

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_ARCH_OS    ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)

CFLAGS = -g -Wall
INSTALL_PROGRAM = install

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif

ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif


VARIANTS := sqlite3 pgsql mysql

######################################################################

NAME=bacula

# The variant that is used when we install non-variant-specific stuff.
# Only bother building extra consoles and stuff for this one.
DEFAULTVARIANT := sqlite3
TEMPLATES = $(wildcard debian/*.templates)
BUILDDIR := $(CURDIR)/debian/tmp-build
INSTALLDIR := $(CURDIR)/debian/tmp-install
DEFAULTINSTALLDIR := $(INSTALLDIR)-$(DEFAULTVARIANT)
DBC := usr/share/dbconfig-common/data/

CONF_ALL	= --enable-smartalloc \
	--with-python --with-tcp-wrappers \
	--with-openssl \
	--with-libiconv-prefix=/usr/include --with-readline=/usr/include/readline \
	--disable-conio \
	--with-libintl-prefix=/usr/include --with-x \
		--docdir=\$${prefix}/share/doc/bacula-common \
		--htmldir=\$${prefix}/share/doc/bacula-common/html \
		--libdir=\$${prefix}/lib/bacula \
	--enable-batch-insert \
	--disable-bwx-console \
	--without-qwt \
	--enable-ipv6 \
	--with-dir-passowrd=XXX_DIRPASSWORD_XXX \
	--with-fd-password=XXX_FDPASSWORD_XXX \
	--with-sd-password=XXX_SDPASSWORD_XXX \
	--with-mon-dir-password=XXX_MONDIRPASSWORD_XXX \
	--with-mon-fd-password=XXX_MONFDPASSWORD_XXX \
	--with-mon-sd-password=XXX_MONSDPASSWORD_XXX \
	--with-db-name=XXX_DBNAME_XXX \
	--with-db-user=XXX_DBUSER_XXX \
	--with-db-password=XXX_DBPASSWORD_XXX


CONF_common	= --disable-gnome --disable-bwx-console --disable-tray-monitor \
			--disable-bat

ifeq ($(DEB_HOST_ARCH_OS),kfreebsd)
CONF_ALL	+= --disable-acl --disable-xattr
endif

CONF_sqlite3	= --with-sqlite3 --without-mysql --without-postgresql --without-sqlite \
			--enable-tray-monitor --enable-bat
CONF_mysql	= --with-mysql --without-sqlite --without-postgresql --without-sqlite3 $(CONF_common)
CONF_pgsql	= --with-postgresql --without-sqlite --without-mysql --without-sqlite3 $(CONF_common)

###########################################################################

extract: extract-stamp
extract-stamp: $(foreach s,$(VARIANTS),extract-stamp-$(s))
extract-stamp-%:
	@echo " *** DEBIAN *** VARIANT $(*): EXTRACTING to $(BUILDDIR)-$(*)"
	mkdir $(BUILDDIR)-$(*)
	tar -cSf - --exclude=./.git --exclude=./debian . | tar -xSpf - -C $(BUILDDIR)-$(*)
	touch $@

configure-stamp-%: extract-stamp-%
	dh_testdir
	@echo " *** DEBIAN *** CONFIGURING VARIANT $*"
	cp /usr/share/misc/config.guess /usr/share/misc/config.sub \
		$(BUILDDIR)-$(*)/autoconf/
	cd $(BUILDDIR)-$(*) && \
		QMAKE=/usr/bin/qmake-qt4 ./configure --config-cache \
		--host=${DEB_HOST_GNU_TYPE} --build=${DEB_BUILD_GNU_TYPE} \
		--prefix=/usr \
		--with-archivedir=/nonexistant/path/to/file/archive/dir \
		--sysconfdir=/etc/bacula --with-scriptdir=/etc/bacula/scripts \
		--sharedstatedir=/var/lib/bacula \
		--localstatedir=/var/lib/bacula \
		--with-pid-dir=/var/run/bacula --with-smtp-host=localhost \
		--with-working-dir=/var/lib/bacula \
		--with-subsys-dir=/var/lock \
		--mandir=\$${prefix}/share/man \
		--infodir=\$${prefix}/share/info \
		$(CONF_ALL) $(CONF_$(*))
	touch $@

build-stamp-%: configure-stamp-%
	dh_testdir
	@echo " *** DEBIAN *** BUILDING VARIANT $*"

# Main building process
	$(MAKE) -C $(BUILDDIR)-$(*)

# Grrr... client-only does not build needed db-independent 'bsmtp', 'stored'
	$(MAKE) -C $(BUILDDIR)-$(*)/src/tools
	$(MAKE) -C $(BUILDDIR)-$(*)/src/stored

	chmod 755 debian/additions/postinst-common
	chmod 755 debian/additions/bconsole

	touch $@

build-arch: build-stamp
build-stamp: $(foreach v,$(VARIANTS),build-stamp-$(v))
	touch $@

build-indep: build-indep-stamp
build-indep-stamp:
	dh_testdir

	touch $@


build: patch build-arch build-indep

###############################################
# Cleaning macro
###############################################

clean:

	test ! -f patch-stamp || patch -p1 -R <debian/patches/fix_dump_resources_acl.patch \
		patch -p1 -R < debian/patches/fix-mysql55-sql-syntax.patch
	$(RM) *stamp*

	dh_clean

	$(RM) -r debian/tmp* debian/bacula-doc \
		scripts/disk-changer  

	## delete ${FLAVORED_BINARIES} 
	$(RM) $(foreach pkg,$(VARIANTS), src/dird/bacula-dir.$(pkg) src/tools/dbcheck.$(pkg) src/stored/bscan.$(pkg) src/stored/bcopy.$(pkg))

	#-$(MAKE) -C doc/latex clean

	$(RM) build-arch-flavor-stamp

	$(RM) patch-stamp


# Macro to extract a here document and put it in place
# args: 1 -- db name, 2 -- file to extract, 3 -- version
define ext-upgrade
debian/patches/extract_here < $(2) > debian/bacula-director-$(1)/$(DBC)/bacula-director-$(1)/upgrade/$(1)/$(3)
endef

# Macro to process upgrades for all flavors
# args: 1 -- file to extract relative to updatedb/update_x_tables_
#       2 -- version
define ext-upgrade-all
$(call ext-upgrade,pgsql,debian/tmp-build-pgsql/updatedb/update_postgresql_tables_$(1),$(2))
$(call ext-upgrade,mysql,debian/tmp-build-mysql/updatedb/update_mysql_tables_$(1),$(2))
$(call ext-upgrade,sqlite3,debian/tmp-build-sqlite3/updatedb/update_sqlite3_tables_$(1),$(2))
endef

# Macro to process latest version upgrades for all flavors
# args: 1 -- version
define ext-upgrade-latest
$(call ext-upgrade,pgsql,debian/tmp-build-pgsql/src/cats/update_postgresql_tables,$(1))
$(call ext-upgrade,mysql,debian/tmp-build-mysql/src/cats/update_mysql_tables,$(1))
$(call ext-upgrade,sqlite3,debian/tmp-build-sqlite3/src/cats/update_sqlite3_tables,$(1))
endef

# Macro to extract a here document for install and put it in place
# args: 1 -- db name, 2 -- file to extract
# We append so we can do the postgresql hack for datestyle
define ext-install
debian/patches/extract_here < $(2) > debian/bacula-director-$(1)/$(DBC)/bacula-director-$(1)/install/$(1)
endef

install: build install-stamp
install-stamp: build-stamp $(foreach v,$(VARIANTS),install-stamp-$(v))
	dh_installdirs -a
	dh_install -pbacula-director-common

	dh_install -pbacula-fd
	dh_install -pbacula-console -pbacula-console-qt
	cp $(DEFAULTINSTALLDIR)/usr/sbin/bconsole debian/bacula-console/usr/sbin/bacula-console
	cp debian/tmp-build-$(DEFAULTVARIANT)/src/qt-console/.libs/bat debian/bacula-console-qt/usr/bin/bat

######### dbconfig-common stuff
#	$(call ext-upgrade-all,7_to_8,1.36.0)
#	$(call ext-upgrade-all,8_to_9,1.38.0)
#	$(call ext-upgrade-all,9_to_10,2.0.0)
# above lines commented out because they are pre-lenny and no longer needed
	$(call ext-upgrade-all,10_to_11,3.0.0)

# Sometimes the latest release doesn't have a copy of the data in updatedb.
# Manually install those.  CHECK THIS FOR EACH NEW RELEASE, and move older
# versions to an ext-upgrade-all line as above.

	$(call ext-upgrade-latest,5.0.0) # 5.0.0 upgrade 11 to 12


# PostgreSQL
	echo "ALTER DATABASE _DBC_DBNAME_ SET datestyle TO 'ISO, YMD';" > \
		debian/bacula-director-pgsql/$(DBC)/bacula-director-pgsql/install-dbadmin/pgsql

	$(call ext-install,pgsql,debian/tmp-build-pgsql/src/cats/make_postgresql_tables)
# MySQL
	$(call ext-install,mysql,debian/tmp-build-mysql/src/cats/make_mysql_tables)
# Remove USE bacula -- dbconfig-common selects the database for us
	sed -i -e 's/USE \$${db_name};//' -e 's/USE bacula;//' debian/bacula-director-mysql/$(DBC)/bacula-director-mysql/install/mysql debian/bacula-director-mysql/$(DBC)/bacula-director-mysql/upgrade/mysql/*

# Next two lines required for upgrade to 5.0.0.  Remove that and
# debian/bacula-director-mysql.script.5.0.0 post-squeeze
	cp debian/bacula-director-mysql.script.5.0.0 \
			debian/bacula-director-mysql/usr/share/dbconfig-common/scripts/bacula-director-mysql/upgrade/mysql/5.0.0
	chmod 0755 debian/bacula-director-mysql/usr/share/dbconfig-common/scripts/bacula-director-mysql/upgrade/mysql/5.0.0

# SQLite3
	$(call ext-install,sqlite3,debian/tmp-build-sqlite3/src/cats/make_sqlite3_tables)

	dh_link -pbacula-console usr/share/man/man8/bconsole.8.gz usr/share/man/man8/bacula-console.8.gz

	touch $@

install-stamp-%: build-stamp-%
	@echo " *** DEBIAN *** INSTALLING VARIANT $*"
	dh_installdirs -pbacula-director-$(*)
	mkdir $(INSTALLDIR)-$(*)
	$(MAKE) -C $(BUILDDIR)-$(*) install DESTDIR=$(INSTALLDIR)-$(*)

	dh_install -pbacula-director-$(*)
	touch $@


install-indep: build install-stamp
	dh_testdir
	dh_testroot 
	dh_install -i
	dh_installdirs -i
	dh_link -pbacula-director-common
	dh_install -pbacula -pbacula-client -pbacula-server 
	#install doc/html-manual/* \
	#	$(CURDIR)/debian/bacula-doc/usr/share/doc/bacula-doc/html-manual
	#$(RM) $(CURDIR)/debian/bacula-doc/usr/share/doc/bacula-doc/html-manual/*.wml

install-arch: build install-stamp
	dh_install -a
	dh_link -pbacula-common
	for f in bconsole.conf bat.conf \
		bacula-sd.conf bacula-fd.conf tray-monitor.conf; do \
		debian/patches/fix_config \
			debian/tmp-install-sqlite3/etc/bacula/$$f \
			debian/bacula-common/usr/share/bacula-common/defconfig/$$f; \
	done
	debian/patches/fix_director \
		debian/tmp-install-sqlite3/etc/bacula/bacula-dir.conf \
		debian/bacula-common/usr/share/bacula-common/defconfig/bacula-dir.conf

	cp $(CURDIR)/debian/common-functions $(CURDIR)/debian/bacula-common/usr/share/bacula-common
	chmod 755 $(CURDIR)/debian/bacula-common/usr/lib/bacula/btraceback

patch: patch-stamp
patch-stamp:
	chmod 755 debian/patches/fix_config debian/patches/fix_director \
		debian/patches/extract_here
	chmod 755 debian/additions/bconsole
	patch -p1 < debian/patches/fix_dump_resources_acl.patch
	patch -p1 < debian/patches/fix-mysql55-sql-syntax.patch
	touch patch-stamp

# Build architecture-independent files here.
# Pass -i to all debhelper commands in this target to reduce clutter.
binary-indep: build install-indep patch
	dh_testdir -i
	dh_testroot -i
#	dh_installdebconf -i
	dh_installdocs -i -X.cvsignore -X1 -X*.wml -X*.inc -X*.list -X*.pl -X*.apf -X*.book -Nbacula
	dh_installexamples -i
#	dh_installmenu -i
	dh_installlogrotate -i
#	dh_installinit -i
	dh_installcron -i
	dh_installman -i
	dh_installinfo -i
	dh_installchangelogs ChangeLog -i
	rm -r debian/bacula/usr/share/doc/bacula
	dh_link -i
	dh_compress -i -X.pdf
	dh_lintian -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i


# Build architecture-dependent files here.
binary-arch: build install install-arch binary-arch-common

binary-arch-common: DH_OPTIONS=
binary-arch-common: build install
	dh_testdir -a
	dh_testroot -a
	dh_installdebconf -a
	dh_installdocs -a
	dh_installexamples -a
	dh_installmenu -pbacula-console -pbacula-console-qt
	dh_installlogrotate -a
	dh_installinit -pbacula-sd -- defaults 90 10
	dh_installinit -pbacula-fd -- defaults 91 9
	dh_installinit --name=bacula-director -pbacula-director-common --no-start -- defaults 92 8
#	dh_installcron -a
	dh_installman -a
	dh_installinfo -a
	dh_installchangelogs ChangeLog -a
	dh_strip -a
	dh_link -a
	dh_lintian -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_installdeb -a

# Handle shlibs for the database packages specially so they get
# the deps on the correct libraries.
	dh_shlibdeps -pbacula-sd-mysql -Lbacula-common-mysql
	dh_shlibdeps -pbacula-director-mysql -Lbacula-common-mysql
	dh_shlibdeps -pbacula-sd-sqlite3 -Lbacula-common-sqlite3
	dh_shlibdeps -pbacula-director-sqlite3 -Lbacula-common-sqlite3
	dh_shlibdeps -pbacula-sd-pgsql -Lbacula-common-pgsql
	dh_shlibdeps -pbacula-director-pgsql -Lbacula-common-pgsql

# Now build all other shlibdeps.
	dh_shlibdeps -a -Nbacula-sd-mysql -Nbacula-director-mysql \
		-Nbacula-sd-sqlite3 -Nbacula-director-sqlite3 \
		-Nbacula-sd-pgsql -Nbacula-director-pgsql

	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install  build-arch