X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=developers-reference.git;a=blobdiff_plain;f=Makefile;h=5c19b3bbf7f65b18688230e5f8c91a1ab3b04821;hp=c14e1e833cdac2a29e34f11c780a86c23818b425;hb=refs%2Fheads%2Fmaster;hpb=2708f38de85931e69ec70ee9d66af73b3b7c9433 diff --git a/Makefile b/Makefile index c14e1e8..5c19b3b 100644 --- a/Makefile +++ b/Makefile @@ -1,123 +1,149 @@ -# Makefile, used for the DDP manuals.sgml area +# Makefile, used for the developers-reference in DocBook XML -MANUAL := $(notdir $(shell pwd)) -PUBLISHDIR := /org/www.debian.org/www/doc/manuals +# Note: This Makefile should work perfectly without the debian/ directory. -SOURCES := $(wildcard *.sgml) +SOURCES := $(wildcard *.dbk) common.ent version.ent -TARGETS := $(foreach fmt,html txt pdf,developers-reference.$(fmt)) \ - $(filter-out developers-reference.ja.pdf, \ - $(foreach langext,.fr, \ - $(foreach fmt,html txt,developers-reference$(langext).$(fmt)))) +FORMATS := html txt pdf epub +LANGS := de fr ja +TARGETS := $(foreach fmt,$(FORMATS),developers-reference.$(fmt)) \ + $(foreach lng,$(LANGS), \ + $(foreach fmt,$(FORMATS), \ + $(lng)/developers-reference.$(fmt))) +# list of targets, that currently cannot build +#BLACKLIST := ja/developers-reference.pdf -# programs for creating output -DEBIANDOC2HTML := debiandoc2html -c -DEBIANDOC2TEXT := debiandoc2text -DEBIANDOC2LATEX := debiandoc2latex -DEBIANDOC2PS := debiandoc2latexps -DEBIANDOC2PDF := debiandoc2latexpdf - -# this hint is for adding a link to the pdf version -add_pdf_link := patch -p0 < add_pdf_link.diff -remove_pdf_link := patch -p0 -R < add_pdf_link.diff - -make_directory := install -d -m 755 -install_file := install -m 644 -p - -MAX_TEX_RECURSION := 5 - -.PHONY: all dropold -all: $(TARGETS) dropold - -dropold: - -rm -rf developers-reference.ja.html +# hopefully overwritten by caller, e.g. debian/rules +VERSION=unknown +PUBDATE=unknown +# programs for creating output +XP=xsltproc --nonet --novalid --xinclude +XL=xmllint --nonet --noout --postvalid --xinclude +# dblatex 0.2.8 has some problems (e.g. #465221 and Japanese does +# not build) +# Alternatives: +# - docbook2pdf (seems to die on UTF-8, #431085); and +# - fop is currently in contrib, but can go to main, see #366783 +# - xmlroff (not mature enough, #182445) +DBLATEX=dblatex --style=db2latex +TRANSLATE=po4a po4a/po4a.cfg + +# XSL files and parameters +# note: the URL is used as identifier, no HTTP is used! +DOCBOOK_XSL=http://docbook.sourceforge.net/release/xsl/current +# for HTML output +DBK2HTML=$(CURDIR)/html.xsl +# all in one file for text output +DBK2HTML1=$(CURDIR)/txt.xsl + +.PHONY: all +all: $(filter-out $(BLACKLIST), $(TARGETS)) .PHONY: validate -validate: $(addsuffix .validate,$(SOURCES)) +validate: $(SOURCES) + $(XL) index.dbk -# hmmm, this rule may need to be revised/tested +%/validate: $(addprefix %/,$(SOURCES)) + cd $(@D) && $(XL) index.dbk + +# This rule controls the build and installation on the website +# Logs are here: http://www-master.debian.org/build-logs/ddp/ +.PHONY: publish publish: all [ -d $(PUBLISHDIR) ] || exit 1 - rm -f $(PUBLISHDIR)/$(MANUAL)/*.html - $(make_directory) $(PUBLISHDIR)/$(MANUAL) - $(install_file) developers-reference*.html/*.html \ - $(PUBLISHDIR)/$(MANUAL) - -developers-reference.html: developers-reference.sgml - $(add_pdf_link) - $(DEBIANDOC2HTML) -l en $< - $(remove_pdf_link) - -developers-reference.html/*: developers-reference.html - -developers-reference.%.html: developers-reference.%.sgml - $(DEBIANDOC2HTML) -l $* $< - -developers-reference.txt: developers-reference.sgml - $(DEBIANDOC2TEXT) -l en -O $< > $@ - -developers-reference.%.txt: developers-reference.%.sgml - $(DEBIANDOC2TEXT) -l $* -O $< > $@ - -developers-reference.tex: developers-reference.sgml - $(DEBIANDOC2LATEX) -l en -O $< > $@ - -developers-reference.%.tex: developers-reference.%.sgml - $(DEBIANDOC2LATEX) -l $* -O $< > $@ - -developers-reference.ps: developers-reference.sgml - $(DEBIANDOC2PS) -l en $< - -developers-reference.%.ps: developers-reference.%.sgml - $(DEBIANDOC2PS) -l $* $< - -developers-reference.pdf: developers-reference.sgml - $(DEBIANDOC2PDF) -l en $< - -developers-reference.%.pdf: developers-reference.%.sgml - $(DEBIANDOC2PDF) -l $* $< - -version.ent: debian/changelog - ./debian/rules $@ - -%.validate : % version.ent - nsgmls -wall -gues $< - touch $@ - -USERMAP := ../../ddp/CVSROOT/users -.PHONY: prepare -prepare: ChangeLog - cvs ci -m "update for next release" ChangeLog - -.PHONY: ChangeLog -ChangeLog: - @[ -f CVS/Root -a -f $(USERMAP) ] || \ - ( echo "usermap file '$(USERMAP)' not found" 1>&2; exit 1 ) - cvs2cl -r --usermap $(USERMAP) + install -d -m 755 $(PUBLISHDIR)/developers-reference + rm -f $(PUBLISHDIR)/developers-reference/*.html + rm -f en && ln -sf . en + $(foreach format,$(FORMATS),$(foreach lang,en $(LANGS),for file in $(lang)/*.$(format); do if [ -e "$$file" ]; then cp --preserve=timestamps $$file $(PUBLISHDIR)/developers-reference/$$(basename $$file .$(format)).$(lang).$(format); fi; done;)) + ln -sf index.en.html $(PUBLISHDIR)/developers-reference/index.html + ln -sf developers-reference.en.pdf $(PUBLISHDIR)/developers-reference/developers-reference.pdf + ln -sf developers-reference.en.txt $(PUBLISHDIR)/developers-reference/developers-reference.txt + ln -sf developers-reference.en.epub $(PUBLISHDIR)/developers-reference/developers-reference.epub + +.PHONY: developers-reference.html %/developers-reference.html +developers-reference.html: $(CURDIR)/index.html +%/developers-reference.html: $(addprefix %/,index.html) + @true + +.PRECIOUS: %/index.html +index.html: $(CURDIR)/developers-reference.html +%/index.html: $(addprefix %/,$(SOURCES)) + cd $(@D) && $(XP) $(DBK2HTML) index.dbk + +# There must be an easier way than recursive make! +.PRECIOUS: %.dbk %.ent +ifndef LINGUA +%.dbk %.ent: FORCE + $(TRANSLATE) + $(MAKE) $@ LINGUA=`basename $(@D)` + +FORCE: +else +$(LINGUA)/%.dbk: %.dbk po4a/$(LINGUA).po + $(TRANSLATE) + +$(LINGUA)/common.ent: common.ent + cd $(@D) && ln -sf ../$(@F) . +endif + +developers-reference.txt: $(CURDIR)/developers-reference.txt +%/developers-reference.txt: $(addprefix %/,$(SOURCES)) + $(XP) $(DBK2HTML1) $(@D)/index.dbk \ + | LC_ALL=C.UTF-8 w3m -o display_charset=UTF-8 -cols 70 -dump -no-graph -T text/html > $@ + +XSLT := xslt + +developers-reference.pdf: $(CURDIR)/developers-reference.pdf +%/developers-reference.pdf: $(addprefix %/,$(SOURCES)) + $(DBLATEX) $(@D)/index.dbk \ + --backend=xetex \ + --xsl-user=$(XSLT)/user_param.xsl \ + --xsl-user=$(XSLT)/xetex_param.xsl \ + --param=lingua=$(@D) \ + && mv $(@D)/index.dbk.pdf $@ + +developers-reference.epub: $(CURDIR)/developers-reference.epub +%/developers-reference.epub: $(addprefix %/,$(SOURCES)) + TOP=`pwd` && cd $(@D) && xmlto epub index.dbk && mv index.epub $(@F) + +.PHONY: pot +pot: po4a/po/developers-reference.pot +po4a/po/developers-reference.pot: %.dbk + $(TRANSLATE) + +ifdef LINGUA +.PHONY: updatepo +updatepo: po4a/po/$(LINGUA).po +po4a/po/$(LINGUA).po: %.dbk + $(TRANSLATE) +endif + +tidypo: + for po in po4a/po/*.po; do \ + msgcat -o $$po $$po; \ + done + +checkpo: + @for po in po4a/po/*.po; do \ + msgfmt -vv $$po; \ + done + +%/version.ent: + echo '' > $@ + echo '' >> $@ .PHONY: clean clean: - rm -rf developers-reference*.html - rm -f developers-reference*.txt developers-reference*.pdf \ - developers-reference*.ps developers-reference*.lout* lout.li \ - developers-reference*.sasp* developers-reference*.tex \ - developers-reference*.aux developers-reference*.toc \ - developers-reference*.idx developers-reference*.log \ - developers-reference*.out developers-reference*.dvi \ - developers-reference*.tpt + rm -f *.fo *.html *.pdf *.txt *.epub + for L in $(LANGS); do rm -rf `basename ./"$$L"/`; done rm -f version.ent rm -f `find . -name "*~" -o -name "*.bak"` - rm -f *.validate rm -f *~ *.bak .#* core .PHONY: distclean distclean: clean rm -f *.rej *.orig -developers-reference$(SRCEXT).sgml: version.ent common.ent - -html: $(MANUAL).html - # if rule bomb out, delete the target .DELETE_ON_ERROR: