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
|
#!/usr/bin/make -f
INSTALL = install
INSTALL_PROGRAM = $(INSTALL) -p -m 755
export DEB_BUILD_MAINT_OPTIONS=hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
include /usr/share/dpkg/architecture.mk
include /usr/share/dpkg/pkg-info.mk
H_LDFLAGS = $(LDFLAGS)
VENDOR=$(shell dpkg-vendor --query vendor | env LC_ALL=C tr A-Z a-z | env LC_ALL=C tr -d -c '[:alnum:]')
CFLAGS += -Wall -g
CONFIGFLAGS = --prefix=/usr
CONFIGFLAGS += --mandir=/usr/share/man
CONFIGFLAGS += LDFLAGS="-g $(H_LDFLAGS)"
CONFIGFLAGS += --infodir=/usr/share/info
CONFIGFLAGS += --enable-maildir-support
CONFIGFLAGS += --enable-max-jobtable-size=256
CONFIGFLAGS += --enable-etcdir=/etc/zsh
CONFIGFLAGS += --enable-function-subdirs
CONFIGFLAGS += --enable-site-fndir=/usr/local/share/zsh/site-functions
CONFIGFLAGS += --enable-fndir=/usr/share/zsh/functions
CONFIGFLAGS += --enable-runhelpdir=/usr/share/zsh/help
CONFIGFLAGS += --with-tcsetpgrp
CONFIGFLAGS += --enable-gdbm
CONFIGFLAGS += --with-term-lib="ncursesw tinfo"
CONFIGFLAGS += --enable-cap --enable-pcre
CONFIGFLAGS += --enable-readnullcmd=pager
CONFIGFLAGS += --enable-custom-patchlevel=$(VENDOR)/$(DEB_VERSION)
CONFIGFLAGS += --enable-additional-fpath=/usr/share/zsh/vendor-functions,/usr/share/zsh/vendor-completions
CONFIGFLAGS += --disable-ansi2knr
STATICFLAGS = --disable-dynamic
STATICFLAGS += --enable-ldflags=-static
STATICFLAGS += --disable-dynamic-nss
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
CONFIGFLAGS += --enable-zsh-debug
CONFIGFLAGS += --enable-zsh-mem-debug
CONFIGFLAGS += --enable-zsh-mem-warning
CONFIGFLAGS += --enable-zsh-secure-free
CONFIGFLAGS += --enable-zsh-hash-debug
endif
# We first need to check if the package is installed, otherwise the
# resulting syntax might be invalid. Needed for packages which are
# also provided by other packages like libncurses-dev and
# libncursesw5-dev which both fulfil the according build-dependency.
BUILT_USING=$(shell for pkg in libcap-dev libncurses-dev libpcre2-dev libc-dev-bin; do dpkg-query -f '$${status}' -W $$pkg 2>&1 | grep -Fq installed && dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W $$pkg; done)
%:
dh $@
override_dh_auto_build-arch: build-dynamic build-static
build-dynamic:
dh_auto_build -B obj
build-static:
dh_auto_build -B obj-static
override_dh_auto_build-indep:
dh_auto_build -B obj -- pdf
dh_auto_build -B obj/Etc # FAQ
override_dh_auto_test-arch:
if dpkg-architecture -qDEB_BUILD_ARCH_OS | grep -qv hurd; then \
HOME="$(CURDIR)/obj/testhome" ZTST_verbose=1 dh_auto_test -B obj; \
fi
HOME="$(CURDIR)/obj-static/testhome" ZTST_verbose=1 dh_auto_test -B obj-static || true
override_dh_auto_test-indep:
override_dh_auto_configure:
chmod 755 configure
mkdir -p obj/testhome obj-static/testhome
dh_auto_configure -B obj -- $(CONFIGFLAGS)
dh_auto_configure -B obj-static -- $(CONFIGFLAGS) $(STATICFLAGS)
sed -e 's/#define VENDOR "pc"/#define VENDOR "$(VENDOR)"/' \
-i obj/config.h obj-static/config.h
sed -e 's/files.mdd link=no/files.mdd link=static/;s/stat.mdd link=no/stat.mdd link=static/' \
-i obj-static/config.modules
override_dh_auto_clean:
dh_auto_clean -B obj
dh_auto_clean -B obj-static
override_dh_installdocs-indep:
dh_installdocs -pzsh-doc --link-doc=zsh-common --doc-main-package=zsh-common
dh_installdocs -pzsh-common
# Needs a freshly built (arch-dependent) zsh executable to compile .zwc files
override_dh_auto_install-indep: build-dynamic
cd obj && $(MAKE) install.man DESTDIR=$(CURDIR)/debian/zsh-common
perl $(CURDIR)/Util/helpfiles obj/Doc/zshbuiltins.1 debian/zsh-common/usr/share/zsh/help
cd obj && $(MAKE) install.fns DESTDIR=$(CURDIR)/debian/zsh-common
# move this to a non-root section; also drop it for cross-compiles
ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
awk '/^#define FPATH_DIR/ { head=$$3; gsub(/"/,"",head); }; \
/^#define FPATH_SUBDIRS/ { $$1=""; $$2=""; gsub(/[" ]/,""); tail=$$0; } \
END { printf "%s/%s\n", head, tail; };' \
obj/Src/zshpaths.h >obj/Src/zshpaths.temp
obj/Src/zsh -fc \
'setopt extendedglob; \
for i in debian/zsh-common/'`cat obj/Src/zshpaths.temp`'; do \
zcompile -U -M $$i.zwc $$i/*~*.zwc(^/); \
chmod 644 $$i.zwc; \
done'
endif
# Docs: Info + HTML
cd obj && $(MAKE) install.info install.html \
DESTDIR=$(CURDIR)/debian/zsh-doc htmldir=/usr/share/doc/zsh-common/html
rm -f debian/zsh-doc/usr/share/info/dir*
# Work around texi2html unfriendliness
sed -i -e 's/<BODY.*>/<BODY LANG="EN">/' debian/zsh-doc/usr/share/doc/zsh-common/html/*.html
override_dh_installexamples-indep:
dh_installexamples -pzsh-common -X.distfiles
cd debian/zsh-common/usr/share/doc/zsh-common/examples/; mv Example Functions
sed -i -e '1!b;s:^#!.*[ /]zsh:#!/bin/zsh:;s#/usr/local/bin#/usr/bin#' \
debian/zsh-common/usr/share/doc/zsh-common/examples/Misc/*
execute_after_dh_install-indep:
# Doesn't this need to go before we zcompile stuff into .zwc files? -- Axel
sed -i -e '1!b;s:^#!.*[ /]zsh:#!/bin/zsh:;s#/usr/local/bin#/usr/bin#;' \
`find debian/zsh-common/usr/share/zsh/functions -type f`
override_dh_compress-indep:
dh_compress -i -Xpdf
override_dh_auto_install-arch:
cd obj && $(MAKE) install.bin install.modules \
DESTDIR=$(CURDIR)/debian/zsh INSTALL_PROGRAM='$(INSTALL_PROGRAM)'
rm debian/zsh/usr/bin/zsh-5.[0-9]*
override_dh_shlibdeps-arch:
dh_shlibdeps -pzsh -- \
-dDepends debian/zsh/usr/bin/* \
-dRecommends debian/zsh/usr/lib/*/zsh/*/zsh/*.so
execute_after_dh_installdocs-arch:
awk 'BEGIN { print "The following modules are statically-compiled into the static zsh binary:\n"; } /link=static/ { printf "%s (%s %s)\n", substr($$1,6), $$4, $$5; }' obj-static/config.modules >debian/zsh-static/usr/share/doc/zsh-static/README.Debian
execute_after_dh_install-arch:
mv debian/zsh-static/usr/bin/zsh debian/zsh-static/usr/bin/zsh-static
mv debian/zsh-static/usr/bin/zsh5 debian/zsh-static/usr/bin/zsh5-static
sed -e 's:#!/bin/zsh:#!/bin/zsh-static:' -i debian/zsh-static/usr/bin/zsh5-static
find debian/zsh-dev/usr/include/zsh -name '*.h' -o -name '*.mdh' | \
xargs sed -e 's@\.\./config\.h@config.h@;s@#\(\s*\)include "\([^"]\+\)"@#\1include <zsh/\2>@' -i
cd debian/zsh-dev/usr/share/aclocal; mv aczshoot.m4 zshoot.m4
override_dh_gencontrol-arch:
dh_gencontrol -a -- -VBuilt-Using="$(BUILT_USING)"
restore-cleaned-files:
git status --porcelain | egrep '^ D ' | cut -c4- | xargs --no-run-if-empty git checkout
.PHONY: restore-cleaned-files
|