-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
143 lines (122 loc) · 4.8 KB
/
Makefile
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
PERL ?= perl
PO4A ?= po4a
POD2MAN ?= pod2man
# List of files of dh_* commands. Sorted for debhelper man page.
COMMANDS=$(shell find . -maxdepth 1 -type f -perm /100 -name "dh_*" -printf "%f\n" | grep -v '~$$' | LC_ALL=C sort)
MANPAGES=$(COMMANDS:=.1) dh.1
# Find deprecated commands by looking at their synopsis.
DEPRECATED=$(shell egrep -l '^dh_.* - .*deprecated' $(COMMANDS))
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
TEST_JOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
else
TEST_JOBS = 1
endif
# Figure out the `current debhelper version.
VERSION=$(shell dpkg-parsechangelog -SVersion)
# This generates a list of synopses of debhelper commands, and substitutes
# it in to the #LIST# line on the man page fed to it on stdin. Must be passed
# parameters of all the executables or pod files to get the synopses from.
# For correct conversion of pod tags (like S< >) #LIST# must be substituted in
# the pod file and not in the troff file.
MAKEMANLIST=$(PERL) -e ' \
undef $$/; \
foreach (@ARGV) { \
open (IN, $$_) or die "$$_: $$!"; \
$$file=<IN>; \
close IN; \
if ($$file=~m/=head1 .*?\n\n(.*?) - (.*?)\n\n/s) { \
my $$item="=item $$1(1)\n\n$$2\n\n"; \
if (" $(DEPRECATED) " !~ / $$1 /) { \
$$list.=$$item; \
} \
else { \
$$list_deprecated.=$$item; \
} \
} \
} \
END { \
my $$recommended_compat = q{$(VERSION)}; \
$$recommended_compat =~ s{^\d+\K(?:\D.*|\..*)?}{}; \
while (<STDIN>) { \
s/\#LIST\#/$$list/g; \
s/\#LIST_DEPRECATED\#/$$list_deprecated/g; \
s/\#RECOMMENDED_COMPAT\#/$$recommended_compat/g; \
print; \
}; \
}'
PERLLIBDIR=$(shell $(PERL) -MConfig -e 'print $$Config{vendorlib}')/Debian/Debhelper
PREFIX=/usr
POD2MAN_FLAGS=--utf8 -c Debhelper -r "$(VERSION)"
ifneq ($(USE_NLS),no)
# l10n to be built is determined from .po files
LANGS?=$(notdir $(basename $(wildcard man/po4a/po/*.po)))
LANG_TARGETS = $(foreach L,$(LANGS),translated-$(L)-stamp)
else
LANGS=
LANG_TARGETS =
endif
build: $(LANG_TARGETS) version debhelper.7 debhelper-compat-upgrade-checklist.7 debhelper-obsolete-compat.7 $(MANPAGES)
po4a-stamp:
$(PO4A) --previous -L UTF-8 man/po4a/po4a.cfg
touch $@
translated-%-stamp: po4a-stamp
set -e; \
lang=$* ; \
dir=man/$$lang; \
for file in $$dir/dh*.pod; do \
prog=`basename $$file | sed 's/.pod//'`; \
$(POD2MAN) $(POD2MAN_FLAGS) $$file $$prog.$$lang.1; \
done; \
if [ -e $$dir/debhelper.pod ]; then \
cat $$dir/debhelper.pod | \
$(MAKEMANLIST) `find $$dir -type f -maxdepth 1 -name "dh_*.pod" | LC_ALL=C sort` | \
$(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 > debhelper.$$lang.7; \
fi; \
if [ -e $$dir/debhelper-compat-upgrade-checklist.pod ]; then \
$(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 $$dir/debhelper-compat-upgrade-checklist.pod > debhelper-compat-upgrade-checklist.$$lang.7; \
fi ; \
if [ -e $$dir/debhelper-obsolete-compat.pod ]; then \
$(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 $$dir/debhelper-obsolete-compat.pod > debhelper-obsolete-compat.$$lang.7; \
fi
touch $@
version:
printf "package Debian::Debhelper::Dh_Version;\n\$$version='$(VERSION)';\n1" > \
lib/Debian/Debhelper/Dh_Version.pm
dh_%.1: dh_%
$(POD2MAN) $(POD2MAN_FLAGS) $^ $@
dh.1: dh
$(POD2MAN) $(POD2MAN_FLAGS) $^ $@
debhelper.7: debhelper.pod
cat debhelper.pod | \
$(MAKEMANLIST) $(COMMANDS) | \
$(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 > $@
%.7: %.pod
$(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 $^ > $@
clean:
rm -f *-stamp *.1 *.7 lib/Debian/Debhelper/Dh_Version.pm
ifneq ($(USE_NLS),no)
$(PO4A) --previous --rm-translations --rm-backups man/po4a/po4a.cfg
endif
for lang in $(LANGS); do \
if [ -e man/$$lang ]; then rmdir man/$$lang; fi; \
done;
install:
install -d $(DESTDIR)$(PREFIX)/bin \
$(DESTDIR)$(PREFIX)/share/debhelper/autoscripts \
$(DESTDIR)$(PERLLIBDIR)/Sequence \
$(DESTDIR)$(PERLLIBDIR)/Buildsystem \
$(DESTDIR)$(PERLLIBDIR)/DH
install dh $(COMMANDS) $(DESTDIR)$(PREFIX)/bin
install -m 0644 autoscripts/* $(DESTDIR)$(PREFIX)/share/debhelper/autoscripts
install -m 0644 lib/Debian/Debhelper/*.pm $(DESTDIR)$(PERLLIBDIR)
[ "$(PREFIX)" = /usr ] || \
sed -i '/$$prefix=/s@/usr@$(PREFIX)@g' $(DESTDIR)$(PERLLIBDIR)/Dh_Lib.pm
if [ "$(VERSION)" ]; then \
MV=$$(echo "$(VERSION)" | $(PERL) -ne 'print $$1 if /^(\d+)[~.]/;') ; \
sed -i "/constant HIGHEST_STABLE_COMPAT_LEVEL =>/s@=>.*;@=> $${MV};@g" $(DESTDIR)$(PERLLIBDIR)/Dh_Lib.pm ; \
fi
install -m 0644 lib/Debian/Debhelper/Sequence/*.pm $(DESTDIR)$(PERLLIBDIR)/Sequence
install -m 0644 lib/Debian/Debhelper/Buildsystem/*.pm $(DESTDIR)$(PERLLIBDIR)/Buildsystem
install -m 0644 lib/Debian/Debhelper/DH/*.pm $(DESTDIR)$(PERLLIBDIR)/DH
test: version
MAKEFLAGS= prove -lrj$(TEST_JOBS) --timer t