summaryrefslogtreecommitdiff
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules249
1 files changed, 249 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 000000000..e67053cdd
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,249 @@
1#!/usr/bin/make -f
2
3# Uncomment this to turn on verbose mode.
4# export DH_VERBOSE=1
5
6# This has to be exported to make some magic below work.
7export DH_OPTIONS
8
9ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
10 RUN_TESTS := yes
11else
12 RUN_TESTS :=
13endif
14
15ifeq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
16 PARALLEL :=
17else
18 PARALLEL := \
19 -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
20endif
21
22DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
23DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
24DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
25
26ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
27 CC := gcc
28 PKG_CONFIG = pkg-config
29else
30 CC := $(DEB_HOST_GNU_TYPE)-gcc
31 PKG_CONFIG = $(DEB_HOST_GNU_TYPE)-pkg-config
32 RUN_TESTS :=
33endif
34
35DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)
36
37# Take account of old dpkg-architecture output.
38ifeq ($(DEB_HOST_ARCH_OS),)
39 DEB_HOST_ARCH_OS := $(subst -gnu,,$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM))
40 ifeq ($(DEB_HOST_ARCH_OS),gnu)
41 DEB_HOST_ARCH_OS := hurd
42 endif
43endif
44
45# Change the version string to reflect distribution
46DISTRIBUTION := $(shell dpkg-vendor --query vendor)
47SSH_EXTRAVERSION := $(DISTRIBUTION)-$(shell dpkg-parsechangelog | sed -n -e '/^Version:/s/Version: //p' | sed -e 's/[^-]*-//')
48
49DISTRIBUTOR := $(shell if dpkg-vendor --derives-from Ubuntu 2>/dev/null; then echo Ubuntu; else echo Debian; fi)
50ifeq ($(DISTRIBUTOR),Ubuntu)
51DEFAULT_PATH := /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
52else
53DEFAULT_PATH := /usr/local/bin:/usr/bin:/bin:/usr/games
54endif
55SUPERUSER_PATH := /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
56
57ifeq ($(DISTRIBUTOR),Ubuntu)
58server_recommends := ssh-import-id
59else
60server_recommends :=
61endif
62
63# Common path configuration.
64confflags += --sysconfdir=/etc/ssh
65confflags += --libexecdir=\$${prefix}/lib/openssh
66
67# Common build options.
68confflags += --disable-strip
69confflags += --with-mantype=doc
70confflags += --with-4in6
71confflags += --with-privsep-path=/var/run/sshd
72
73# The Hurd needs libcrypt for res_query et al.
74ifeq ($(DEB_HOST_ARCH_OS),hurd)
75confflags += --with-libs=-lcrypt
76endif
77
78# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155
79ifeq ($(DEB_HOST_ARCH),hppa)
80confflags += --without-hardening
81endif
82
83# Everything above here is common to the deb and udeb builds.
84confflags_udeb := $(confflags)
85
86# Options specific to the deb build.
87confflags += --with-tcp-wrappers
88confflags += --with-pam
89confflags += --with-libedit
90confflags += --with-kerberos5=/usr
91confflags += --with-ssl-engine
92ifeq ($(DEB_HOST_ARCH_OS),linux)
93confflags += --with-selinux
94confflags += --with-audit=linux
95endif
96
97# The deb build wants xauth; the udeb build doesn't.
98confflags += --with-xauth=/usr/bin/xauth
99confflags_udeb += --without-xauth
100
101# Default paths. The udeb build has /usr/games removed.
102confflags += --with-default-path=$(DEFAULT_PATH) --with-superuser-path=$(SUPERUSER_PATH)
103confflags_udeb += --with-default-path=/usr/local/bin:/usr/bin:/bin --with-superuser-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
104
105# Compiler flags.
106export DEB_BUILD_MAINT_OPTIONS := hardening=+all
107include /usr/share/dpkg/buildflags.mk
108cflags := $(CPPFLAGS) $(CFLAGS)
109cflags += -DLOGIN_PROGRAM=\"/bin/login\" -DLOGIN_NO_ENDOPT
110cflags += -DSSH_EXTRAVERSION=\"$(SSH_EXTRAVERSION)\"
111cflags_udeb := -Os
112cflags_udeb += -DSSH_EXTRAVERSION=\"$(SSH_EXTRAVERSION)\"
113confflags += --with-cflags='$(cflags)'
114confflags_udeb += --with-cflags='$(cflags_udeb)'
115
116# Linker flags.
117confflags += --with-ldflags='$(strip -Wl,--as-needed $(LDFLAGS))'
118confflags_udeb += --with-ldflags='-Wl,--as-needed'
119
120%:
121 dh $@ --with=autoreconf,systemd
122
123autoreconf:
124 autoreconf -f -i
125 cp -f /usr/share/misc/config.guess /usr/share/misc/config.sub ./
126
127override_dh_autoreconf-arch:
128 dh_autoreconf debian/rules -- autoreconf
129
130override_dh_autoreconf-indep:
131
132override_dh_auto_configure-arch:
133 dh_auto_configure -Bbuild-deb -- $(confflags)
134 dh_auto_configure -Bbuild-deb-ssh1 -- $(confflags) --with-ssh1
135 dh_auto_configure -Bbuild-udeb -- $(confflags_udeb)
136
137override_dh_auto_configure-indep:
138
139override_dh_auto_build-arch:
140 # Avoid libnsl linkage. Ugh.
141 perl -pi -e 's/ +-lnsl//' build-udeb/config.status
142 cd build-udeb && ./config.status
143
144 $(MAKE) -C build-deb $(PARALLEL) ASKPASS_PROGRAM='/usr/bin/ssh-askpass'
145 $(MAKE) -C build-deb-ssh1 $(PARALLEL) ASKPASS_PROGRAM='/usr/bin/ssh-askpass' ssh scp ssh-keygen
146 $(MAKE) -C build-udeb $(PARALLEL) ASKPASS_PROGRAM='/usr/bin/ssh-askpass' ssh scp sftp sshd ssh-keygen
147
148 $(MAKE) -C contrib gnome-ssh-askpass2 CC='$(CC) $(CPPFLAGS) $(CFLAGS) -Wall -Wl,--as-needed $(LDFLAGS)' PKG_CONFIG=$(PKG_CONFIG)
149
150override_dh_auto_build-indep:
151
152override_dh_auto_test-arch:
153ifeq ($(RUN_TESTS),yes)
154 $(MAKE) -C build-deb regress-prep
155 $(MAKE) -C build-deb $(PARALLEL) \
156 regress/unittests/sshbuf/test_sshbuf \
157 regress/unittests/sshkey/test_sshkey \
158 regress/unittests/bitmap/test_bitmap \
159 regress/unittests/hostkeys/test_hostkeys \
160 regress/unittests/kex/test_kex
161 $(MAKE) -C build-deb/regress \
162 .OBJDIR="$(CURDIR)/build-deb/regress" \
163 .CURDIR="$(CURDIR)/regress" \
164 unit
165 $(MAKE) -C build-deb compat-tests
166 $(MAKE) -C debian/keygen-test
167endif
168
169override_dh_auto_test-indep:
170
171override_dh_auto_clean:
172 rm -rf build-deb build-deb-ssh1 build-udeb
173ifeq ($(RUN_TESTS),yes)
174 $(MAKE) -C debian/keygen-test clean
175endif
176 $(MAKE) -C contrib clean
177 (cat debian/copyright.head; iconv -f ISO-8859-1 -t UTF-8 LICENCE) \
178 > debian/copyright
179
180override_dh_auto_install-arch:
181 $(MAKE) -C build-deb DESTDIR=`pwd`/debian/tmp install-nokeys
182
183override_dh_auto_install-indep:
184
185override_dh_install-arch:
186 rm -f debian/tmp/etc/ssh/sshd_config
187
188 dh_install -Nopenssh-client-udeb -Nopenssh-server-udeb --fail-missing
189 dh_install -popenssh-client-udeb -popenssh-server-udeb \
190 --sourcedir=build-udeb
191
192 # Remove version control tags to avoid unnecessary conffile
193 # resolution steps for administrators.
194 sed -i '/\$$OpenBSD:/d' \
195 debian/openssh-client/etc/ssh/moduli \
196 debian/openssh-client/etc/ssh/ssh_config
197
198# We'd like to use dh_install --fail-missing here, but that doesn't work
199# well in combination with dh-exec: it complains that files generated by
200# dh-exec for architecture-dependent packages aren't installed.
201override_dh_install-indep:
202 rm -f debian/tmp/etc/ssh/sshd_config
203 dh_install
204
205override_dh_installdocs:
206 dh_installdocs \
207 -Nopenssh-client-ssh1 -Nopenssh-server -Nopenssh-sftp-server
208 dh_installdocs \
209 -popenssh-client-ssh1 -popenssh-server -popenssh-sftp-server \
210 --link-doc=openssh-client
211 # Avoid breaking dh_installexamples later.
212 mkdir -p debian/openssh-server/usr/share/doc/openssh-client
213
214override_dh_systemd_enable:
215 dh_systemd_enable -popenssh-server --name ssh ssh.service
216 dh_systemd_enable -popenssh-server --name ssh --no-enable ssh.socket
217
218override_dh_installinit:
219 dh_installinit -R --name ssh
220
221debian/openssh-server.sshd.pam: debian/openssh-server.sshd.pam.in
222ifeq ($(DEB_HOST_ARCH_OS),linux)
223 sed 's/^@IF_KEYINIT@//' $< > $@
224else
225 sed '/^@IF_KEYINIT@/d' $< > $@
226endif
227
228override_dh_installpam: debian/openssh-server.sshd.pam
229 dh_installpam --name sshd
230
231override_dh_fixperms-arch:
232 dh_fixperms
233 chmod u+s debian/openssh-client/usr/lib/openssh/ssh-keysign
234
235# Tighten libssl dependencies to match the check in entropy.c.
236override_dh_shlibdeps:
237 dh_shlibdeps
238 debian/adjust-openssl-dependencies
239
240override_dh_gencontrol:
241 dh_gencontrol -- -V'openssh-server:Recommends=$(server_recommends)'
242
243override_dh_builddeb:
244 dh_builddeb -- -Zxz
245
246debian/faq.html:
247 wget -O - http://www.openssh.org/faq.html | \
248 sed 's,\(href="\)\(txt/\|[^":]*\.html\),\1http://www.openssh.org/\2,g' \
249 > debian/faq.html