3 DEB_HOST_MULTIARCH ?
= $(shell dpkg-architecture
-qDEB_HOST_MULTIARCH
)
4 DEB_HOST_GNU_TYPE ?
= $(shell dpkg-architecture
-qDEB_HOST_GNU_TYPE
)
6 # Determine whether we're building with optimization. This doesn't really
7 # work at the moment due to upstream problems.
8 ifneq (,$(findstring noopt
,$(DEB_BUILD_OPTIONS
)))
9 DEBIAN_OPT_FLAGS
= --disable-optimize
--disable-optimize-lwp
10 DEBIAN_KERN_FLAGS
= --disable-optimize-kernel
11 else ifneq (,$(findstring arm-linux-gnueabi
,$(DEB_HOST_GNU_TYPE
)))
12 DEBIAN_OPT_FLAGS
= --disable-optimize
--disable-optimize-lwp
13 DEBIAN_KERN_FLAGS
= --disable-optimize-kernel
19 # Skip lengthy parts of the doc build when requested
20 ifneq (,$(findstring nodoc
,$(DEB_BUILD_OPTIONS
)))
25 # pdfTeX refuses to fully obey SOURCE_DATE_EPOCH without
26 # FORCE_SOURCE_DATE=1.
27 DOCMAKE
=FORCE_SOURCE_DATE
=1 make
28 DOXYCMD
=dh_doxygen
-popenafs-doc
29 GENDOCS
=AdminGuide QuickStartUnix UserGuide
32 SYS_NAME
:= $(shell sh debian
/sysname
)
35 srcpkg
= openafs-modules-source
36 dkmspkg
= openafs-modules-dkms
37 DOCS
= $(CURDIR
)/debian
/openafs-doc
/usr
/share
/doc
/openafs-doc
39 # The path to the XSLT used to generate HTML from the DocBook source files.
40 # This path is specific to different Linux distributions, so we have to pass
42 HTML_XSL
= /usr
/share
/xml
/docbook
/stylesheet
/nwalsh
/html
/chunk.xsl
44 # The /usr/share/doc directory for these packages should be a symlink to
45 # /usr/share/doc/openafs-client. Any package on this list must depend on
46 # openafs-client. This variable is used as options to dh_installdocs with
47 # the --link-doc option.
48 DOC_PACKAGES
= -popenafs-fuse
50 # These are files that we know we don't want to install. List them so that we
51 # can use dh_install --fail-missing and catch anything new that shows up.
52 IGNORE
= -XAuthLog
-Xaklog_dynamic_auth
.8 -Xcopyauth
-Xdlog
-Xdpass \
53 -Xfms.log
-Xfs_chgrp
.1 -Xfs_chown
.1 -Xfs_cscpolicy
.1 \
54 -Xfs_flushall
.1 -Xfs_memdump
.1 -Xfs_minidump
.1 -Xfs_trace
.1 \
55 -Xkadb_check
-Xkaserver
-Xkdb
-Xkdump
-Xkpwvalid
-Xpagsh.krb \
56 -Xsymlink
-Xtokens.krb
-Xuss
-Xvldb_convert
-Xvsys \
59 # Installed via other means since we have to rename them.
60 IGNORE
+= -Xafsd.fuse
.8
62 # These variables are used by get-orig-source, to construct dkms.conf, and
63 # to set the build version. You will need to change TAG to package stable
64 # releases instead of experimental releases.
65 DEBIAN
:= $(shell dpkg-parsechangelog | grep ^Version
: | cut
-d
' ' -f2
)
66 DEBVERS
:= $(shell echo
'$(DEBIAN)' | cut
-d-
-f1
)
67 VERSION
:= $(shell echo
'$(DEBVERS)' | sed
-e
's/[+-].*//' -e
's/~//g')
68 TAG
:= $(shell echo
'openafs-stable-$(VERSION)' | sed
's/\./_/g')
69 REPO
:= git
://git.openafs.org
/openafs.git
71 # Upstream does tarball releases for major releases, but not for point
72 # relesaes, and the tarball releases are split into src and doc and contain
73 # the WINNT directory. Dropping WINNT, which is not used on Debian, saves a
74 # substantial amount of space in the source package, and there's no reason
75 # to include the files generated by regen.sh when we're going to run it
76 # again ourselves anyway.
78 # This rule therefore generates an upstream tarball from the upstream Git
79 # tag, rather than the tarball release, without the generated files that are
80 # not in Git and without the WINNT directory. It assumes that git-core is
81 # installed and there's network connectivity to the upstream repository.
83 git archive
--remote
='$(REPO)' --prefix='openafs_$(DEBVERS).orig/' \
84 --format
=tar '$(TAG)' \
85 |
tar --delete
'openafs_$(DEBVERS).orig/src/WINNT' \
86 | xz
> 'openafs_$(DEBVERS).orig.tar.xz'
88 # Use dh for most actions, with overrides below.
92 # Handle the renaming of the up man page to afs-up here since the man pages
93 # are generated from POD source by regen.sh.
94 override_dh_auto_configure
:
95 @if
test x
"$(SYS_NAME)" = x
"UNKNOWN" ; then exit
1 ; fi
96 echo
'$(DEBIAN)'-debian
> .version
97 mv doc
/man-pages
/pod1
/up.pod doc
/man-pages
/pod1
/afs-up.pod
98 rm -f doc
/man-pages
/man1
/up
.1
100 afslogsdir
=/var
/log
/openafs afslocaldir
=/var
/lib
/openafs
/local \
101 dh_auto_configure
-- \
102 --with-afs-sysname
=$(SYS_NAME
) --disable-kernel-module \
103 --libdir=\
$${prefix}/lib
--libexecdir
=\
$${prefix}/lib \
104 --localstatedir
=/var
/lib
--enable-supergroups \
105 --enable-fuse-client
--enable-debug
--enable-debug-lwp \
106 --with-docbook2pdf
=dblatex
--with-xslt-processor
=xsltproc \
107 --with-html-xsl
=$(HTML_XSL
) \
108 --with-krb5-include
=/usr
/include/mit-krb5 \
109 --with-krb5-lib
=/usr
/lib
/$(DEB_HOST_MULTIARCH
)/mit-krb5 \
110 --with-roken-include
=/usr
/include/heimdal \
111 --with-roken-lib
=/usr
/lib
/$(DEB_HOST_MULTIARCH
)/heimdal \
112 --with-hcrypto-include
=/usr
/include/heimdal \
113 --with-hcrypto-lib
=/usr
/lib
/$(DEB_HOST_MULTIARCH
)/heimdal \
114 --without-ctf-tools \
117 # Also build a libafs_tree and build the XML documentation if building
118 # architecture-independent packages.
119 override_dh_auto_build-indep
:
122 set
-e
; for d in
$(GENDOCS
); do \
123 $(DOCMAKE
) -C doc
/xml
/$$d all ; \
126 # The manipulation of debian/changelog here is unnecessary with a regular
127 # Debian build. It is provided solely so that upstream can share the Debian
128 # packaging files, working around problems caused by upstream's distclean
129 # removing packaging/Debian/changelog because it's Autoconf-generated.
130 override_dh_auto_clean
:
131 [ ! -f doc
/man-pages
/pod1
/afs-up.pod
] \
132 || mv doc
/man-pages
/pod1
/afs-up.pod doc
/man-pages
/pod1
/up.pod
133 set
-e
; for d in
$(GENDOCS
); do \
134 [ ! -f doc
/xml
/$$d/Makefile
] ||
$(DOCMAKE
) -C doc
/xml
/$$d clean ; \
136 [ ! -f debian
/changelog.in
] \
137 || cp debian
/changelog debian
/changelog.save
138 dh_auto_clean
-- maintainer-clean
139 [ -f debian
/changelog
] || mv debian
/changelog.save debian
/changelog
141 # We have to use a non-standard install target and then do some fiddling
143 override_dh_auto_install
:
144 mkdir
-p
$(CURDIR
)/debian
/tmp
145 $(MAKE
) install_nolibafs DESTDIR
=$(CURDIR
)/debian
/tmp
146 rm -f debian
/tmp
/usr
/bin
/klog.krb
147 rm -f debian
/tmp
/usr
/share
/man
/man1
/klog.krb
.1
148 rm -f debian
/tmp
/usr
/share
/man
/man8
/kas
*.8
149 rm -f debian
/tmp
/usr
/share
/man
/man1
/kkpasswd
.1
151 # Override dh_install for architecture-dependent builds to move some files
152 # around, do some manual installation of things like PAM modules, and ensure
153 # that scripts we install are executable
154 override_dh_install-arch
:
155 chmod
+x debian
/afs-rootvol debian
/afs-newcell
156 dh_install
--fail-missing
$(IGNORE
)
158 mv debian
/openafs-client
/usr
/bin
/pagsh \
159 debian
/openafs-client
/usr
/bin
/pagsh.openafs
160 mv debian
/openafs-client
/usr
/share
/man
/man1
/pagsh
.1 \
161 debian
/openafs-client
/usr
/share
/man
/man1
/pagsh.openafs
.1
162 mv debian
/openafs-client
/usr
/bin
/up \
163 debian
/openafs-client
/usr
/bin
/afs-up
165 install -d debian
/openafs-dbserver
/usr
/share
/man
/man8
166 ( cd debian
&& pod2man
--section
8 --center
"Debian GNU/Linux" \
168 >debian
/openafs-dbserver
/usr
/share
/man
/man8
/afs-rootvol
.8
169 ( cd debian
&& pod2man
--section
8 --center
"Debian GNU/Linux" \
171 >debian
/openafs-dbserver
/usr
/share
/man
/man8
/afs-newcell
.8
173 # Override dh_install for architecture-independent builds to handle
174 # installation of all the extra documentation that upstream doesn't install
175 # by default and install the source required for the kernel source package
176 # and the DKMS package.
177 override_dh_install-indep
:
178 mkdir
-p
$(DOCS
)/html
179 -cp doc
/xml
/*.gif doc
/xml
/*.html
$(DOCS
)/html
/
180 set
-e
; for d in
$(GENDOCS
); do \
181 mkdir
$(DOCS
)/html
/$$d ; \
182 cp doc
/xml
/$$d/*.html
$(DOCS
)/html
/$$d/ ; \
183 cp doc
/xml
/$$d/*.pdf
$(DOCS
)/ ; \
185 -cp doc
/xml
/AdminGuide
/*.png
$(DOCS
)/html
/AdminGuide
/
186 mkdir
$(DOCS
)/html
/arch-overview
187 cp doc
/txt
/arch-overview.h
$(DOCS
)/html
/arch-overview
188 cd
$(DOCS
)/html
/arch-overview
&& doxygen
-g
&& doxygen \
189 && rm Doxyfile
*.h
&& mv html
/* .
&& rm -r latex html
190 set
-e
; for h in doc
/protocol
/*.h
; do \
191 mkdir
$(DOCS
)/html
/`basename $$h .h` ; \
192 cp
$$h $(DOCS
)/html
/`basename $$h .h` ; \
193 cd
$(DOCS
)/html
/`basename $$h .h` && doxygen
-g
&& doxygen \
194 && rm Doxyfile
*.h
&& mv html
/* .
&& rm -r latex html \
199 install -d debian
/$(srcpkg
)/usr
/src
/modules
/$(package
)
200 cd libafs_tree
&& find .
-print \
201 | cpio
-admp
$(CURDIR
)/debian
/$(srcpkg
)/usr
/src
/modules
/$(package
)
202 cp .version debian
/$(srcpkg
)/usr
/src
/modules
/$(package
)/
203 mkdir
-p debian
/$(srcpkg
)/usr
/src
/modules
/$(package
)/debian
204 cp debian
/copyright debian
/module
/* \
205 debian
/$(srcpkg
)/usr
/src
/modules
/$(package
)/debian
/
206 sed
's/^openafs /openafs-modules /' debian
/changelog \
207 > debian
/$(srcpkg
)/usr
/src
/modules
/$(package
)/debian
/changelog
208 chmod
755 debian
/$(srcpkg
)/usr
/src
/modules
/$(package
)/debian
/rules
209 chown
-R root.src debian
/$(srcpkg
)
210 find debian
/$(srcpkg
) -type d | xargs chmod
755
211 find debian
/$(srcpkg
) -type f
-perm
-100 | xargs chmod
755
212 find debian
/$(srcpkg
) -type f
-not
-perm
-100 | xargs chmod
644
213 chmod
775 debian
/$(srcpkg
)/usr
/src
/modules
214 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
215 bzip2 debian
/$(srcpkg
)/usr
/src
/$(package
).
tar
216 chmod
644 debian
/$(srcpkg
)/usr
/src
/$(package
).
tar.bz2
217 install -d debian
/$(dkmspkg
)/usr
/src
218 mv debian
/$(srcpkg
)/usr
/src
/modules
/$(package
) \
219 debian
/$(dkmspkg
)/usr
/src
/openafs-
$(VERSION
)
220 rm -rf debian
/$(dkmspkg
)/usr
/src
/openafs-
$(VERSION
)/debian
221 rmdir debian
/$(srcpkg
)/usr
/src
/modules
222 dh_dkms
-V
$(VERSION
)
224 install -d debian
/$(srcpkg
)/usr
/share
/doc
/$(srcpkg
)
225 install -m
644 debian
/openafs-client.NEWS \
226 debian
/$(srcpkg
)/usr
/share
/doc
/$(srcpkg
)/NEWS.Debian
228 # We don't want to stop the init scripts on upgrade.
229 override_dh_installinit
:
231 dh_installinit
-popenafs-client
-r
232 dh_installinit
-popenafs-fileserver
-r
234 # Symlink /usr/share/doc for some packages.
235 override_dh_installdocs
:
236 dh_installdocs
$(DOC_PACKAGES
) --link-doc
=openafs-client
237 dh_installdocs
--remaining-packages
239 # Install the upstream NEWS file as the upstream changelog.
240 override_dh_installchangelogs
:
241 dh_installchangelogs NEWS
243 # Override some of our permissions.
244 override_dh_fixperms-arch
:
246 chmod
700 debian
/openafs-client
/var
/cache
/openafs
247 chmod
700 debian
/openafs-dbserver
/var
/lib
/openafs
/db
248 chmod
700 debian
/openafs-fileserver
/var
/lib
/openafs
/local
251 dh_strip
--dbgsym-migration
='openafs-dbg (<< 1.6.18.3-3~)'