#!/usr/bin/make -f
#
# Invoke each target with `./debian/rules <target>'.  All targets should be
# invoked with the package root as the current directory.
#
# Marco Budde (Budde@tu-harburg.de)
# Colin Watson (cjwatson@debian.org)

# The name of the package

R = debian/doc-linux-html
R2 = debian/doc-linux-text

HTML_BUILD = $(R)/usr/share/doc/HOWTO/en-html
TEXT_BUILD = $(R2)/usr/share/doc/HOWTO/en-txt

BZTAR = tar --bzip2

source = $(shell dpkg-parsechangelog | grep '^Source:' | sed 's/^Source: //')
upstream = $(shell dpkg-parsechangelog | grep '^Version:' | \
		   sed -e 's/^Version: //' -e 's/-.*//')

export DH_COMPAT = 2
export DH_OPTIONS

$(DIRECTORIES):
	install -d -g root -o root -m 755 $@
	chmod g-s $@

# Override this if you want to use a mirror closer to home.
LDP_MIRROR = ftp://sunsite.unc.edu/pub/Linux/docs

# This should only need to be overridden if the database host moves.
LDP_OMF = http://www.lampadas.org/omf

refresh: refresh-howto-html refresh-howto-text refresh-faq
# refresh-xml

refresh-howto-docbook:
	dh_testdir
	# Update DocBook versions of the HOWTOs.
	[ -d HOWTO ] || mkdir HOWTO
	wget --recursive --timestamping --level 1 \
		--no-directories --directory-prefix HOWTO --passive \
		$(LDP_MIRROR)/HOWTO/other-formats/docbook/
	[ -d HOWTO/mini ] || mkdir HOWTO/mini
	wget --recursive --timestamping --level 1 \
		--no-directories --directory-prefix HOWTO/mini --passive \
		$(LDP_MIRROR)/HOWTO/mini/other-formats/docbook/

refresh-howto-html:
	dh_testdir
	# Update HTML versions of the HOWTOs.
	[ -d HOWTO ] || mkdir HOWTO
	wget --timestamping --passive \
		--no-directories --directory-prefix HOWTO \
		$(LDP_MIRROR)/HOWTO/other-formats/html/Linux-html-HOWTOs\*.bz2 \
		$(LDP_MIRROR)/HOWTO/mini/other-formats/html/Linux-mini-html-HOWTOs\*.bz2

refresh-howto-text:
	dh_testdir
	# Update text versions of the HOWTOs.
	[ -d HOWTO ] || mkdir HOWTO
	wget --timestamping --passive \
		--no-directories --directory-prefix HOWTO \
		$(LDP_MIRROR)/HOWTO/Linux-HOWTOs\*.bz2 \
		$(LDP_MIRROR)/HOWTO/mini/Linux-mini-HOWTOs\*.bz2

refresh-faq:
	dh_testdir
	# Update the Linux FAQ.
	[ -d FAQ ] || mkdir FAQ
	wget --timestamping --no-directories --directory-prefix FAQ --passive \
		$(LDP_MIRROR)/faqs/linux-faq/Linux-FAQ.html.tar.gz \
		$(LDP_MIRROR)/faqs/linux-faq/Linux-FAQ

# Eventually this XML description (or the related one at ldp.xml) might
# become more intricately involved with this package's build process. It
# probably should. I'm not going to mess around with that during the freeze,
# though.
refresh-xml:
	dh_testdir
	# Update the OMF document index.
	[ -d xml ] || mkdir xml
	wget --timestamping --output-document xml/ldp-omf.xml --passive \
		$(LDP_OMF)

build: build-stamp
build-stamp:
	dh_testdir
#	$(BZTAR) -tf HOWTO/Linux-html-HOWTOs.tar.bz2 \
#		>  xml/doc-linux.list
#	$(BZTAR) -tf HOWTO/Linux-mini-html-HOWTOs.tar.bz2 \
#		>> xml/doc-linux.list
#	chmod +x debian/make-omf	# diffs don't preserve permissions
#	debian/make-omf /usr/share/doc/HOWTO/en-html xml/doc-linux.list \
#		xml/ldp-omf.xml > xml/doc-linux.omf
	touch $@

# Undoes the effect of `make -f rules build'.
clean:
	dh_testdir
	dh_testroot
	rm -rf $(R) $(R2)
#	rm -f xml/doc-linux.list xml/doc-linux.omf
	dh_clean build-stamp debian/doc-linux-html.menu

# Build a new .orig.tar.gz.
orig: clean
	tar -C .. --exclude debian -czvf \
	    ../$(source)_$(upstream).orig.tar.gz $(source)-$(upstream)

# Construct the binary packages.

binary-doc-linux-html: DH_OPTIONS=-pdoc-linux-html
binary-doc-linux-html: build
	dh_testdir
	dh_testroot
	dh_clean -d
	dh_installdirs

	$(BZTAR) -C $(HTML_BUILD) -xf HOWTO/Linux-html-HOWTOs.tar.bz2
	mkdir $(HTML_BUILD)/mini
	$(BZTAR) -C $(HTML_BUILD)/mini -xf HOWTO/Linux-mini-html-HOWTOs.tar.bz2

	# Replace some relative links with links to the LDP web site.
	patch -d $(HTML_BUILD) -p0 < debian/redirect.patch
	perl -pi -e 's,^HREF="../../,HREF="http://www.tldp.org/,' \
		$(HTML_BUILD)/HOWTO-INDEX/*.html

	# The HTML version of this HOWTO contains sample i386-only binaries.
	# Removed for now.
	rm -rf $(HTML_BUILD)/RedHat-CD-HOWTO*

	chmod +x debian/html2docs	# diffs don't preserve permissions
	debian/html2docs HOWTO HOWTO \
		$(HTML_BUILD)/.dhelp debian/doc-linux-html.menu \
		$(HTML_BUILD) \
		$(HTML_BUILD)/HOWTO-INDEX/howtos.html
#	install -m 644 xml/doc-linux.omf \
#		$(R)/usr/share/omf/doc-linux-html/HOWTOs.omf

	cp -a HOWTO/extra $(HTML_BUILD)
	find $(HTML_BUILD)/extra -name \*.txt | xargs rm -f

	tar -C $(R)/usr/share/doc/FAQ -xzvf FAQ/Linux-FAQ.html.tar.gz
	ln -s ../FAQ $(R)/usr/share/doc/doc-linux-html/FAQ
	install -m 644 debian/doc-base.faq $(R)/usr/share/doc-base/linux-faq

	dh_installdocs -n
	dh_installchangelogs
	gzip -9 $(R)/usr/share/doc/doc-linux-html/changelog.Debian
	ln -s ../HOWTO/en-html $(R)/usr/share/doc/doc-linux-html/HOWTO
	dh_installmenu
	install -m644 debian/doc-linux-html.overrides \
		$(R)/usr/share/lintian/overrides/doc-linux-html

binary-doc-linux-text: DH_OPTIONS=-pdoc-linux-text
binary-doc-linux-text: build
	dh_testdir
	dh_testroot
	dh_clean -d
	dh_installdirs

	$(BZTAR) -C $(TEXT_BUILD) -xf HOWTO/Linux-HOWTOs.tar.bz2
	mkdir $(TEXT_BUILD)/mini
	$(BZTAR) -C $(TEXT_BUILD)/mini -xf HOWTO/Linux-mini-HOWTOs.tar.bz2
	rm -f $(TEXT_BUILD)/COPYRIGHT

	mkdir $(TEXT_BUILD)/extra
	set -e; for x in `find HOWTO/extra -name \*.txt -printf '%P\n'`; do \
		name=`dirname $$x`; \
		if [ -e $(TEXT_BUILD)/extra/$$name ]; then \
			echo "WARNING: Multiple text documents for $$name!"; \
		fi; \
		install -m 644 HOWTO/extra/$$x $(TEXT_BUILD)/extra/$$name; \
	done

	install -m 644 FAQ/Linux-FAQ $(R2)/usr/share/doc/FAQ
	ln -s ../FAQ $(R2)/usr/share/doc/doc-linux-text/FAQ

	find $(TEXT_BUILD) $(R2)/usr/share/doc/FAQ -type f | xargs gzip -9

	dh_installdocs -n
	dh_installchangelogs
	gzip -9 $(R2)/usr/share/doc/doc-linux-text/changelog.Debian
	ln -s ../HOWTO/en-txt $(R2)/usr/share/doc/doc-linux-text/HOWTO

binary-arch:

# Makes a binary package.
binary-indep: DH_OPTIONS=-i
binary-indep: binary-doc-linux-html binary-doc-linux-text
	dh_fixperms
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch

.PHONY: refresh refresh-howto-docbook refresh-howto-html refresh-howto-text
.PHONY: refresh-faq refresh-xml clean orig
.PHONY: binary-doc-linux-html binary-doc-linux-text
.PHONY: binary-arch binary-indep binary
