File: rules

package info (click to toggle)
openafs 1.8.6-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 42,628 kB
  • sloc: ansic: 462,310; xml: 66,853; perl: 11,933; makefile: 10,135; sh: 7,785; objc: 6,438; java: 5,638; cpp: 2,268; asm: 1,236; yacc: 429; tcl: 249; lex: 201; csh: 85
file content (258 lines) | stat: -rwxr-xr-x 11,012 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
#!/usr/bin/make -f

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)

# Determine whether we're building with optimization.  This doesn't really
# work at the moment due to upstream problems.
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
    DEBIAN_OPT_FLAGS = --disable-optimize --disable-optimize-lwp
    DEBIAN_KERN_FLAGS = --disable-optimize-kernel
else ifneq (,$(findstring arm-linux-gnueabi,$(DEB_HOST_GNU_TYPE)))
    DEBIAN_OPT_FLAGS = --disable-optimize --disable-optimize-lwp
    DEBIAN_KERN_FLAGS = --disable-optimize-kernel
else
    DEBIAN_OPT_FLAGS =
    DEBIAN_KERN_FLAGS =
endif

# Skip lengthy parts of the doc build when requested
ifneq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS)))
    DOCMAKE=echo --
    DOXYCMD=
    GENDOCS=
else
    # pdfTeX refuses to fully obey SOURCE_DATE_EPOCH without
    # FORCE_SOURCE_DATE=1.
    DOCMAKE=FORCE_SOURCE_DATE=1 make
    DOXYCMD=dh_doxygen -popenafs-doc
    GENDOCS=AdminGuide QuickStartUnix UserGuide
endif

SYS_NAME  := $(shell sh debian/sysname)

package    = openafs
srcpkg     = openafs-modules-source
dkmspkg    = openafs-modules-dkms
DOCS       = $(CURDIR)/debian/openafs-doc/usr/share/doc/openafs-doc

# The path to the XSLT used to generate HTML from the DocBook source files.
# This path is specific to different Linux distributions, so we have to pass
# it into configure.
HTML_XSL   = /usr/share/xml/docbook/stylesheet/nwalsh/html/chunk.xsl

# The /usr/share/doc directory for these packages should be a symlink to
# /usr/share/doc/openafs-client.  Any package on this list must depend on
# openafs-client.  This variable is used as options to dh_installdocs with
# the --link-doc option.
DOC_PACKAGES = -popenafs-fuse

# These are files that we know we don't want to install.  List them so that we
# can use dh_missing --fail-missing and catch anything new that shows up.
IGNORE = -XAuthLog -Xaklog_dynamic_auth.8 -Xcopyauth -Xdlog -Xdpass	\
	-Xfms.log -Xfs_chgrp.1 -Xfs_chown.1 -Xfs_cscpolicy.1		\
	-Xfs_memdump.1 -Xfs_minidump.1 -Xfs_trace.1	\
	-Xkadb_check -Xkaserver -Xkdb -Xkdump -Xkpwvalid -Xpagsh.krb	\
	-Xsymlink -Xtokens.krb -Xuss -Xvldb_convert -Xvsys		\
	-Xxfs_size_check

# Installed via other means since we have to rename them.
IGNORE += -Xafsd.fuse.8

# These variables are used by get-orig-source, to construct dkms.conf, and
# to set the build version.  You will need to change TAG to package stable
# releases instead of experimental releases.
DEBIAN  := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2)
DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1)
VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g')
TAG     := $(shell echo 'openafs-stable-$(VERSION)' | sed 's/\./_/g')
REPO    := git://git.openafs.org/openafs.git

# Upstream does tarball releases for major releases, but not for point
# relesaes, and the tarball releases are split into src and doc and contain
# the WINNT directory.  Dropping WINNT, which is not used on Debian, saves a
# substantial amount of space in the source package, and there's no reason
# to include the files generated by regen.sh when we're going to run it
# again ourselves anyway.
#
# This rule therefore generates an upstream tarball from the upstream Git
# tag, rather than the tarball release, without the generated files that are
# not in Git and without the WINNT directory.  It assumes that git-core is
# installed and there's network connectivity to the upstream repository.
get-orig-source:
	git archive --remote='$(REPO)' --prefix='openafs_$(DEBVERS).orig/' \
	    --format=tar '$(TAG)'					   \
	    | tar --delete 'openafs_$(DEBVERS).orig/src/WINNT'		   \
	    | xz > 'openafs_$(DEBVERS).orig.tar.xz'

# Use dh for most actions, with overrides below.
# openafs provides regen.sh that supersedes autoreconf.
%:
	dh $@ --without-autoreconf

# Handle the renaming of the up man page to afs-up here since the man pages
# are generated from POD source by regen.sh.
override_dh_auto_configure:
	@if test x"$(SYS_NAME)" = x"UNKNOWN" ; then exit 1 ; fi
	echo '$(DEBIAN)'-debian > .version
	mv doc/man-pages/pod1/up.pod doc/man-pages/pod1/afs-up.pod
	rm -f doc/man-pages/man1/up.1
	sh regen.sh
	afslogsdir=/var/log/openafs afslocaldir=/var/lib/openafs/local	   \
	    dh_auto_configure --					   \
	    --with-afs-sysname=$(SYS_NAME) --disable-kernel-module	   \
	    --libdir=\$${prefix}/lib --libexecdir=\$${prefix}/lib	   \
	    --localstatedir=/var/lib --enable-supergroups		   \
	    --enable-fuse-client --enable-debug --enable-debug-lwp	   \
	    --with-docbook2pdf=dblatex --with-xslt-processor=xsltproc	   \
	    --with-html-xsl=$(HTML_XSL)					   \
	    --with-krb5-include=/usr/include/mit-krb5			   \
	    --with-krb5-lib=/usr/lib/$(DEB_HOST_MULTIARCH)/mit-krb5	   \
	    --with-roken-include=/usr/include/heimdal			   \
	    --with-roken-lib=/usr/lib/$(DEB_HOST_MULTIARCH)/heimdal	   \
	    --with-hcrypto-include=/usr/include/heimdal			   \
	    --with-hcrypto-lib=/usr/lib/$(DEB_HOST_MULTIARCH)/heimdal	   \
	    --without-ctf-tools						   \
	    $(DEBIAN_OPT_FLAGS)

# Also build a libafs_tree and build the XML documentation if building
# architecture-independent packages.
override_dh_auto_build-indep:
	dh_auto_build
	$(MAKE) libafs_tree
	set -e; for d in $(GENDOCS); do	\
	    $(DOCMAKE) -C doc/xml/$$d all ;				\
	done

# The manipulation of debian/changelog here is unnecessary with a regular
# Debian build.  It is provided solely so that upstream can share the Debian
# packaging files, working around problems caused by upstream's distclean
# removing packaging/Debian/changelog because it's Autoconf-generated.
override_dh_auto_clean:
	[ ! -f doc/man-pages/pod1/afs-up.pod ] \
	    || mv doc/man-pages/pod1/afs-up.pod doc/man-pages/pod1/up.pod
	set -e; for d in $(GENDOCS); do	    \
	    [ ! -f doc/xml/$$d/Makefile ] || $(DOCMAKE) -C doc/xml/$$d clean ; \
	done
	[ ! -f debian/changelog.in ] \
	    || cp debian/changelog debian/changelog.save
	dh_auto_clean -- maintainer-clean
	[ -f debian/changelog ] || mv debian/changelog.save debian/changelog

# We have to use a non-standard install target and then do some fiddling
# with the results.
override_dh_auto_install:
	mkdir -p $(CURDIR)/debian/tmp
	$(MAKE) install_nolibafs DESTDIR=$(CURDIR)/debian/tmp
	rm -f debian/tmp/usr/bin/klog.krb
	rm -f debian/tmp/usr/share/man/man1/klog.krb.1
	rm -f debian/tmp/usr/share/man/man8/kas*.8
	rm -f debian/tmp/usr/share/man/man1/kkpasswd.1

# Override dh_install for architecture-dependent builds to move some files
# around, do some manual installation of things like PAM modules, and ensure
# that scripts we install are executable
override_dh_install-arch:
	chmod +x debian/afs-rootvol debian/afs-newcell
	dh_install $(IGNORE)

	mv debian/openafs-client/usr/bin/pagsh \
	    debian/openafs-client/usr/bin/pagsh.openafs
	mv debian/openafs-client/usr/share/man/man1/pagsh.1 \
	    debian/openafs-client/usr/share/man/man1/pagsh.openafs.1
	mv debian/openafs-client/usr/bin/up \
	    debian/openafs-client/usr/bin/afs-up

	install -d debian/openafs-dbserver/usr/share/man/man8
	( cd debian && pod2man --section 8 --center "Debian GNU/Linux"	\
	    afs-rootvol )						\
	    >debian/openafs-dbserver/usr/share/man/man8/afs-rootvol.8
	( cd debian && pod2man --section 8 --center "Debian GNU/Linux"	\
	    afs-newcell )						\
	    >debian/openafs-dbserver/usr/share/man/man8/afs-newcell.8

# Override dh_install for architecture-independent builds to handle
# installation of all the extra documentation that upstream doesn't install
# by default and install the source required for the kernel source package
# and the DKMS package.
override_dh_install-indep:
	mkdir -p $(DOCS)/html
	-cp doc/xml/*.gif doc/xml/*.html $(DOCS)/html/
	set -e; for d in $(GENDOCS); do	\
	    mkdir $(DOCS)/html/$$d ;					\
	    cp doc/xml/$$d/*.html $(DOCS)/html/$$d/ ;			\
	    cp doc/xml/$$d/*.pdf $(DOCS)/ ;				\
	done
	-cp doc/xml/AdminGuide/*.png $(DOCS)/html/AdminGuide/
	mkdir $(DOCS)/html/arch-overview
	cp doc/txt/arch-overview.h $(DOCS)/html/arch-overview
	cd $(DOCS)/html/arch-overview && doxygen -g && doxygen \
	    && rm Doxyfile *.h && mv html/* . && rm -r latex html
	set -e; for h in doc/protocol/*.h ; do				\
	    mkdir $(DOCS)/html/`basename $$h .h` ;			\
	    cp $$h $(DOCS)/html/`basename $$h .h` ;			\
	    cd $(DOCS)/html/`basename $$h .h` && doxygen -g && doxygen	\
		&& rm Doxyfile *.h && mv html/* . && rm -r latex html	\
		&& cd $(CURDIR) ;					\
	done
	$(DOXYCMD)

	install -d debian/$(srcpkg)/usr/src/modules/$(package)
	cd libafs_tree && find . -print \
	    | cpio -admp $(CURDIR)/debian/$(srcpkg)/usr/src/modules/$(package)
	cp .version debian/$(srcpkg)/usr/src/modules/$(package)/
	mkdir -p debian/$(srcpkg)/usr/src/modules/$(package)/debian
	cp debian/copyright debian/module/* \
	    debian/$(srcpkg)/usr/src/modules/$(package)/debian/
	sed 's/^openafs /openafs-modules /' debian/changelog \
	    > debian/$(srcpkg)/usr/src/modules/$(package)/debian/changelog
	chmod 755 debian/$(srcpkg)/usr/src/modules/$(package)/debian/rules
	chown -R root.src debian/$(srcpkg)
	find debian/$(srcpkg) -type d | xargs chmod 755
	find debian/$(srcpkg) -type f -perm -100 | xargs chmod 755
	find debian/$(srcpkg) -type f -not -perm -100 | xargs chmod 644
	chmod 775 debian/$(srcpkg)/usr/src/modules
	cd debian/$(srcpkg)/usr/src && find modules -print0 | LC_ALL=C sort -z | tar --no-recursion --null -T - $(if $(SOURCE_DATE_EPOCH),--mtime=@$(SOURCE_DATE_EPOCH)) -cf $(package).tar
	bzip2 debian/$(srcpkg)/usr/src/$(package).tar
	chmod 644 debian/$(srcpkg)/usr/src/$(package).tar.bz2
	install -d debian/$(dkmspkg)/usr/src
	mv debian/$(srcpkg)/usr/src/modules/$(package) \
	    debian/$(dkmspkg)/usr/src/openafs-$(VERSION)
	rm -rf debian/$(dkmspkg)/usr/src/openafs-$(VERSION)/debian
	rmdir debian/$(srcpkg)/usr/src/modules
	dh_dkms -V $(VERSION)

	install -d debian/$(srcpkg)/usr/share/doc/$(srcpkg)
	install -m 644 debian/openafs-client.NEWS \
	    debian/$(srcpkg)/usr/share/doc/$(srcpkg)/NEWS.Debian

# We don't want to stop the init scripts on upgrade.
override_dh_installinit:
	dh_installinit -popenafs-client -r
	dh_installinit -popenafs-fileserver -r

override_dh_installsystemd:
	dh_installsystemd -r

# Symlink /usr/share/doc for some packages.
override_dh_installdocs:
	dh_installdocs $(DOC_PACKAGES) --link-doc=openafs-client
	dh_installdocs --remaining-packages

# Install the upstream NEWS file as the upstream changelog.
override_dh_installchangelogs:
	dh_installchangelogs NEWS

# We want --fail-missing behavior, but --list-missing is the default
override_dh_missing-arch:
	dh_missing --fail-missing $(IGNORE)

# Override some of our permissions.
override_dh_fixperms-arch:
	dh_fixperms
	chmod 700 debian/openafs-client/var/cache/openafs
	chmod 700 debian/openafs-dbserver/var/lib/openafs/db
	chmod 700 debian/openafs-fileserver/var/lib/openafs/local

override_dh_strip:
	dh_strip --dbgsym-migration='openafs-dbg (<< 1.6.18.3-3~)'