#!/usr/bin/make -f
-# Note that I have to refer to debhelper programs with ./, to make sure
-# I run the most current ones. That's also why there is a symlink to the
-# current Dh_lib.pm and the current Dh_getopt.pm in this debian/ directory.
-#
# This is _not_ a good example of a debhelper rules file.
+# See examples/ for some good examples.
-# If any automatic script generation is done in building this package,
-# be sure to use the new templates from this package.
-export DH_AUTOSCRIPTDIR=autoscripts
-
-# Living dangerously :-)
-export DH_COMPAT=2
+# 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.
+# (Like I said, this is not a good example of a debhelper rules file..)
+# 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) { \
+ $$collect.="=item $$1(1)\n\n$$2\n\n"; \
+ } \
+ } \
+ END { \
+ while (<STDIN>) { \
+ s/\#LIST\#/$$collect/; \
+ print; \
+ }; \
+ }'
-# Figure out the current debhelper version.
+# Figure out the `current debhelper version.
VERSION=$(shell expr "`dpkg-parsechangelog 2>/dev/null |grep Version:`" : '.*Version: \(.*\)')
-export DH_VERBOSE=1
-
-build: link-stamp
- # Run regression tests.
- $(MAKE) test
-
-clean: link-stamp
- ./dh_testdir
- ./dh_testroot
- ./dh_clean link-stamp
+PERLLIBDIR=$(shell perl -MConfig -e 'print $$Config{vendorlib}')
-test: link-stamp
- ./dh_clean
- DH_VERSION=10 perl -MTest::Harness -e 'runtests grep { ! /CVS/ } @ARGV' t/*
- ./dh_clean
+POD2MAN=pod2man -c Debhelper -r "$(VERSION)"
-# Build architecture-dependent files here.
-binary-arch: link-stamp build
-# Nothing to do.
+version:
+ printf "package Debian::Debhelper::Dh_Version;\n\$$version='$(VERSION)';" > \
+ Debian/Debhelper/Dh_Version.pm
-# Build architecture-independent files here.
-binary-indep: link-stamp build
- ./dh_testdir
- ./dh_testroot
- ./dh_clean -k
- ./dh_installdirs usr/bin usr/share/debhelper
-
- echo -e "package Dh_Version;\n\$$version='$(VERSION)';" > debian/debhelper/usr/share/debhelper/Dh_Version.pm
- find . -perm +111 -maxdepth 1 -type f -not -name "*.pl" \
- -exec install -p {} debian/debhelper/usr/bin \;
- cp -a Dh_*.pm debian/debhelper/usr/share/debhelper
- cp -a autoscripts debian/debhelper/usr/share/debhelper
- rm -rf debian/debhelper/usr/share/debhelper/autoscripts/CVS
+build: version test build-stamp
+build-stamp:
+ find . -maxdepth 1 -type f -perm +100 -name "dh_*" \
+ -exec $(POD2MAN) {} {}.1 \;
+ cat debhelper.pod | \
+ $(MAKEMANLIST) `find . -maxdepth 1 -type f -perm +100 -name "dh_*" | sort` | \
+ $(POD2MAN) --section=7 > debhelper.7
+ po4a po/po4a.cfg
+ set -e; \
+ for dir in man/*; do \
+ lang=`basename $$dir`; \
+ for file in $$dir/dh_*.pod; do \
+ prog=`basename $$file | sed 's/.pod//'`; \
+ $(POD2MAN) $$file $$prog.$$lang.1; \
+ done; \
+ cat $$dir/debhelper.pod | \
+ $(MAKEMANLIST) `find $$dir -type f -maxdepth 1 -name "dh_*.pod" | sort` | \
+ $(POD2MAN) --section=7 > debhelper.$$lang.7; \
+ done
+
+ touch build-stamp
- ./dh_installdocs `echo doc/* | sed s/CVS//`
- ./dh_installexamples `echo examples/* | sed s/CVS//`
- ./dh_installmenu
- ./dh_installmanpages
- ./dh_installinfo
- # Fix up all man pages, filling in the modification time for them.
- # Note this runs beofre the command below so debhelper.1 gets the right
- # date on it.
- perl -mPOSIX -e ' \
- foreach $$f (@ARGV) { \
- @data=stat($$f); \
- $$date=POSIX::strftime("%d %B %Y",localtime($$data[9])); \
- open (IN,$$f); \
- @lines=<IN>; \
- close IN; \
- $$lines[0]=~s/1 ""/1 "$$date"/; \
- open (OUT,">$$f"); \
- print OUT @lines; \
- close OUT; \
- }' debian/debhelper/usr/man/man1/*.1
- # Fix up the debhelper.1 man page, substituting in a list of all
- # debhelper commands. eek!
- perl -ne ' \
- s/\\- /(1)\n/; \
- $$collect.=".TP\n.BR $$_" if $$. eq 3 && /^dh_/; \
- close(ARGV) if eof; \
- END { \
- open(I,"debian/debhelper/usr/man/man1/debhelper.1"); \
- @lines=<I>; \
- close I; \
- open(O,">debian/debhelper/usr/man/man1/debhelper.1"); \
- foreach (@lines) { \
- s/#LIST#/$$collect/; \
- print O; \
- } \
- close O; \
- }' *.1
- ./dh_installchangelogs
-# ./dh_movefiles
- ./dh_link
- ./dh_compress
- ./dh_fixperms
- ./dh_suidregister
- ./dh_installdeb
- ./dh_gencontrol
- ./dh_md5sums
- ./dh_builddeb
+clean:
+ ./run dh_testdir
+ ./run dh_testroot
+ ./run dh_clean *.1 *.7 *-stamp Debian/Debhelper/Dh_Version.pm
+ rm -rf man
-# Install in the proper location on my ftp server and web server. Not intended
-# for use by anyone except the author.
-OLD_VER=$(shell perl -e '<>;<>;while(<>){last if /^ --/};<>;$$_=<>;print m/\((.*?)\)/'<debian/changelog)
-dist: commit link-stamp
- dpkg-buildpackage -rfakeroot -tc
- if [ `hostname` = 'kite' ] ; then \
- cp ../debhelper_$(VERSION).tar.gz ../../public; \
- rm /home/ftp/pub/code/debhelper/* || true; \
- cp debian/changelog /home/pub/programs/debhelper/CHANGES; \
- echo $(VERSION) > /home/pub/programs/debhelper/LATEST-VERSION-IS; \
- cd ..; rm -rf debhelper-$(OLD_VER); \
- [ -f ../public/debhelper_$(OLD_VER).tar.gz ] && \
- tar zxf ../public/debhelper_$(OLD_VER).tar.gz || \
- tar zxf ../outdated/debhelper_$(OLD_VER).tar.gz; \
- diff -r -u --new-file debhelper-$(OLD_VER) debhelper-$(VERSION) > \
- /home/ftp/pub/code/debhelper/diffs/debhelper-$(VERSION).diff; \
- gzip -9f /home/ftp/pub/code/debhelper/diffs/debhelper-$(VERSION).diff; \
- cd /tmp; rm -f debhelper-$(OLD-VER); \
- fi
+test: version test-stamp
+test-stamp:
+ ./run dh_clean
+ ./run perl -MTest::Harness -e 'runtests grep { ! /CVS/ && ! /\.svn/ } @ARGV' t/*
+ ./run dh_clean
+ touch test-stamp
-link-stamp:
- sh -e debian/fixlinks
- touch link-stamp
+binary-indep: build
+ ./run dh_testdir
+ ./run dh_testroot
+ ./run dh_clean -k
+ ./run dh_install -X .1 dh_* usr/bin
+ ./run dh_install Debian/Debhelper/*.pm $(PERLLIBDIR)/Debian/Debhelper/
+ ./run dh_install autoscripts usr/share/debhelper
+ ./run dh_installdocs doc/*
+ ./run dh_installexamples examples/*
+ ./run dh_installman *.1 *.7
+ ./run dh_installchangelogs
+ ./run dh_link
+ ./run dh_compress
+ ./run dh_fixperms
+ ./run dh_perl
+ ./run dh_installdeb
+ ./run dh_gencontrol
+ ./run dh_md5sums
+ ./run dh_builddeb
-# This is for local use - it tags the current code with the debian version
-# number, then commits the current code using the contents of the changelog
-# as the cvs changelog, then increments the version number
-commit:
- cvs -Q commit -m "`dpkg-parsechangelog | grep '^ '`"
- cvs -Q tag rel-$(shell dpkg-parsechangelog | grep ^Version: \
- |cut -d " " -f 2 |tr '.' '-')
-
-new:
- # Update w/o editing.
- EDITOR=true dch -i 2>/dev/null
- # Dch has to change the bloody directory name. Feh.
- mv . ../debhelper
+# Update the debhelper web page. Not intended for use by anyone except the
+# author.
+DIR=/home/web/kitenet.net/programs/debhelper
+installhook:
+ cp debian/changelog $(DIR)/CHANGES
+ echo -n $(VERSION) > $(DIR)/LATEST-VERSION-IS
+binary-arch:
binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary dist
+.PHONY: build clean binary-indep binary-arch binary