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
|