chiark / gitweb /
Update minimal GPG key length to match current requirements. Closes: #643933 Thanks...
[developers-reference.git] / Makefile
index 9fc7829bf9b7584e756d3a68133ed59ff7c037e3..860e219beef476f25b8028d75ab2710ffe55695a 100644 (file)
--- a/Makefile
+++ b/Makefile
-# 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
+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
-
-htmllink       := echo "<!entity % htmltext \"INCLUDE\">" > dynamic.ent
-nohtmllink     := echo "<!entity % htmltext \"IGNORE\">" > dynamic.ent
-
-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
+# The "--keep 0" should be removed as soon as the translations are ready
+TRANSLATE=po4a-translate --format docbook --keep 0
+
+# 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 developers-reference*pdf      \
-          $(PUBLISHDIR)/$(MANUAL)
-
-developers-reference.html:     developers-reference.sgml
-       $(htmllink)
-       $(DEBIANDOC2HTML) -l en $<
-
-developers-reference.html/*:   developers-reference.html
-
-developers-reference.%.html:   developers-reference.%.sgml
-       $(htmllink)
-       $(DEBIANDOC2HTML) -l $* $<
-
-developers-reference.txt:      developers-reference.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2TEXT) -l en -O $< > $@
-
-developers-reference.%.txt:    developers-reference.%.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2TEXT) -l $* -O $< > $@
-
-developers-reference.tex:      developers-reference.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2LATEX) -l en -O $< > $@
-
-developers-reference.%.tex:    developers-reference.%.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2LATEX) -l $* -O $< > $@
-
-developers-reference.ps:        developers-reference.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2PS) -l en $<
-
-developers-reference.%.ps:      developers-reference.%.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2PS) -l $* $<
-
-developers-reference.pdf:       developers-reference.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2PDF) -l en $<
-
-developers-reference.%.pdf:     developers-reference.%.sgml
-       $(nohtmllink)
-       $(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
+
+.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
+       $(MAKE) $@ LINGUA=`basename $(@D)`
+
+FORCE:
+else
+$(LINGUA)/%.dbk:       %.dbk $(patsubst %.dbk,po4a/$(LINGUA)/%.po,%.dbk)
+#      $(TRANSLATE) -m $< -p po4a/$(@:.dbk=.po) -l $@ -a ?po4a/$(@:.dbk=.add)
+# workaround to "-a ?" only possible with po4a version in Squeeze, otherwise build is broken in Lenny
+       if [ -f po4a/$(@:.dbk=.add) ]; then \
+               $(TRANSLATE) -m $< -p po4a/$(@:.dbk=.po) -l $@ -a po4a/$(@:.dbk=.add); else \
+               $(TRANSLATE) -m $< -p po4a/$(@:.dbk=.po) -l $@; fi
+
+$(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 \
+           | w3m -o display_charset=UTF-8 -cols 70 -dump -no-graph -T text/html > $@
+
+developers-reference.pdf:       $(CURDIR)/developers-reference.pdf
+%/developers-reference.pdf:     $(addprefix %/,$(SOURCES))
+       TOP=`pwd` && cd $(@D) && $(DBLATEX) index.dbk \
+           && mv index.dbk.pdf $(@F)
+
+.PHONY: pot
+pot:                           $(patsubst %.dbk,po4a/po/%.pot,$(SOURCES))
+po4a/po/%.pot:                 %.dbk
+       po4a-gettextize --format docbook --master $< --po $@
+
+ifdef LINGUA
+.PHONY: updatepo
+updatepo:                      $(patsubst %.dbk,po4a/$(LINGUA)/%.po,$(SOURCES))
+po4a/$(LINGUA)/%.po:           %.dbk
+       po4a-updatepo --previous --format docbook --master $< --po $@
+endif
+
+tidypo:
+       for po in $(wildcard po4a/*/*.po po4a/*/*.pot); do \
+           msgcat $$po > $$po.tmp && mv $$po.tmp $$po; \
+       done
+
+checkpo:
+       @for po in $(wildcard po4a/*/*.po po4a/*/*.pot); do \
+           echo $$po; \
+           msgfmt --check --verbose $$po; \
+       done
+
+%/version.ent:
+       echo '<!ENTITY version "$(VERSION)">' >  $@
+       echo '<!ENTITY pubdate "$(PUBDATE)">' >> $@
 
 .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
+       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: