diff options
Diffstat (limited to '')
-rw-r--r-- | Makefile | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..76036b7 --- /dev/null +++ b/Makefile @@ -0,0 +1,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 |