Hello, I've revised my Makefile to build all translated doc in the ddp, and to build not only html, but also several formats.
** Features - has a conf part and an 'active' part. The first could become the makefile of each dir, and the second be the base of a Makefile.standard - can build the following format (configurable): ps pdf txt tov info - build the version.ent if possible (ie, if dir 'debian' exists) - publish anything properlly (I think), symlinking what should be symlinked - have a conf variable ORIG_LANG to say what is the cannonical language, and handle it properlly - contains a bad trick to fix what debiandoc2* does. It does pt_BR -> pt-br, and I revert it (not only of pt_BR, but for .._..). This trick is bad because debiandoc2* should be fixed. ** The tests I've done it works with no change in the following dirs with no change: - maint-guide - developers-reference - project-history It fails in the following dirs : - faq: there is more than on manual in there. I will need to rework the Makefile a bit - tutorial: the manual is named 'debian-tutorial'. So, we can't find it from the pwd (but could be done in conf part). I did not try the others dir. ** What is needed now ? - a way to build an index.html containing links to all available materials (for now, it is the index.en.html, and users won't see the result other materials) So, I think it should be ok this time. Can someone review (should be quick), and commit it ? Bye, Mt.
# # Makefile for the Debian New Maintainers' Guide # # Should work both for a manual in the Debian Documentation Project # manuals.sgml tree, and for maint-guide package build. ##### CONF PART # this can and will be overriden by a higher level makefile PUBLISHDIR := ../../../public_html/manuals.html MANUAL = $(notdir $(shell pwd)) # The cannonical language, in which the original document is ORIG_LANG=en # list of langs (above the canonical one) LANGS=fr #to test #LANGS=$(shell ls $(MANUAL).*.sgml|sed 's/.*$(MANUAL)\.\([^.]*\)\.sgml/\1/') EXTS=ps pdf txt tov info ##### END OF CONF PART CHANGE THE END AT YOU OWN RISK # what will be built HTMLDIRS=$(MANUAL).html $(foreach lang,$(LANGS),$(MANUAL).$(lang).html) ALLFILES=$(foreach ext,$(EXTS),\ $(MANUAL).$(ORIG_LANG).$(ext)\ $(foreach lang,$(LANGS),$(MANUAL).$(lang).$(ext))\ ) #====[ build rules ]=========================================================== # generate anything some dirs want version.ent to be builded, some not DEBIAN=$(wildcard debian) ifeq ($(DEBIAN),"debian") all: version.ent $(HTMLDIRS) $(ALLFILES) else all: $(HTMLDIRS) $(ALLFILES) endif version.ent: debian/changelog ./debian/rules $@ #----[ generating HTML ]------------------------------------------------------- # for orig_lang $(MANUAL).html: $(MANUAL).sgml debiandoc2html -l $(ORIG_LANG) -c $< # for translated languages # FIXME: there is a trick because debiandoc2html does a sed 'y/.../...' # which should be reverted to have the content negociation working. # This trick is bad. debiandoc2html should be corrected. $(MANUAL).%.html: $(MANUAL).%.sgml debiandoc2html -l $* -c $< @echo "cleaning up file extensions";\ for file in `ls $(MANUAL).$*.html/*` ; do\ newfile=`echo $$file|\ sed 's/$(shell echo $*|\ sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ_/abcdefghijklmnopqrstuvwxyz-/'\ )\.html/$*\.html/'`;\ if [ $$file != $$newfile ] ; then\ mv $$file $$newfile;\ fi\ done; #----[ generating plain text ]------------------------------------------------- # for orig_lang $(MANUAL).$(ORIG_LANG).txt: $(MANUAL).sgml debiandoc2text -l $(ORIG_LANG) -c $< # for translated languages $(MANUAL).%.txt: $(MANUAL).%.sgml debiandoc2text -l $* $< #----[ generating tov ]-------------------------------------------------------- # for orig_lang $(MANUAL).$(ORIG_LANG).tov: $(MANUAL).sgml debiandoc2textov -l $(ORIG_LANG) -c $< # for translated languages $(MANUAL).%.tov: $(MANUAL).%.sgml debiandoc2textov -l $* $< #----[ generating info ]------------------------------------------------------- # for orig_lang $(MANUAL).$(ORIG_LANG).info: $(MANUAL).sgml debiandoc2info -l $(ORIG_LANG) -c $< # for translated languages $(MANUAL).%.info: $(MANUAL).%.sgml debiandoc2info -l $* $< #----[ generating PostScript ]------------------------------------------------- # for orig_lang $(MANUAL).$(ORIG_LANG).ps: $(MANUAL).sgml debiandoc2latexps -l $(ORIG_LANG) -c $< # for translated languages $(MANUAL).%.ps: $(MANUAL).%.sgml debiandoc2latexps -l $* $< #----[ generating PDF ]-------------------------------------------------------- # for orig_lang $(MANUAL).$(ORIG_LANG).pdf: $(MANUAL).sgml debiandoc2latexpdf -l $(ORIG_LANG) -c $< # for translated languages $(MANUAL).%.pdf: $(MANUAL).%.sgml debiandoc2latexpdf -l $* $< #====[ publishing to the DDP web pages ]======================================= publish: publish-html publish-files #----[ publish html ]---------------------------------------------------------- publish-html: $(HTMLDIRS) test -d $(PUBLISHDIR)/$(MANUAL) \ || install -d -m 755 $(PUBLISHDIR)/$(MANUAL) rm -f $(PUBLISHDIR)/$(MANUAL)/*.html # install any translated html $(foreach lang,$(LANGS),\ install -p -m 644 $(MANUAL).$(lang).html/*.html $(PUBLISHDIR)/$(MANUAL)/;) # install original html install -p -m 644 $(MANUAL).html/*.html \ $(PUBLISHDIR)/$(MANUAL)/ # make the simlinks for html files @$(foreach file,$(wildcard $(MANUAL).html/*.html),\ name=`echo $(file) | sed 's/$(MANUAL).html\///'`; \ link=`echo $$name|sed 's/.$(ORIG_LANG).html$$/.html/'`;\ rm -f $$link; \ echo "$$link -> $$name";\ ln -s $(PUBLISHDIR)/$(MANUAL)/$$name\ $(PUBLISHDIR)/$(MANUAL)/$$link;\ ) #----[ publish the files ]----------------------------------------------------- publish-files: $(ALLFILES) test -d $(PUBLISHDIR)/$(MANUAL) \ || install -d -m 755 $(PUBLISHDIR)/$(MANUAL) $(foreach ext,$(EXTS),\ rm -f $(PUBLISHDIR)/$(MANUAL)/*.$(ext);\ \ $(foreach lang,$(LANGS),\ install -p -m 644 $(MANUAL).$(lang).$(ext)\ $(PUBLISHDIR)/$(MANUAL)/;)\ \ install -p -m 644 $(MANUAL).$(ORIG_LANG).$(ext)\ $(PUBLISHDIR)/$(MANUAL)/;\ \ rm -f $(PUBLISHDIR)/$(MANUAL)/$(MANUAL).$(ext);\ ln -s $(PUBLISHDIR)/$(MANUAL)/$(MANUAL).$(ORIG_LANG).$(ext)\ $(PUBLISHDIR)/$(MANUAL)/$(MANUAL).$(ext);\ ) #----[ publish the ps ]-------------------------------------------------------- publish-ps: ps test -d $(PUBLISHDIR)/$(MANUAL) \ || install -d -m 755 $(PUBLISHDIR)/$(MANUAL) rm -f $(PUBLISHDIR)/$(MANUAL)/*.ps # install any translated ps $(foreach lang,$(LANGS),\ install -p -m 644 $(MANUAL).$(lang).ps \ $(PUBLISHDIR)/$(MANUAL)/ ;) # install original ps install -p -m 644 $(MANUAL).$(ORIG_LANG).ps\ $(PUBLISHDIR)/$(MANUAL)/ # make the simlinks for ps rm -f $(PUBLISHDIR)/$(MANUAL)/$(MANUAL).ps; ln -s $(PUBLISHDIR)/$(MANUAL)/$(MANUAL).$(ORIG_LANG).ps\ $(PUBLISHDIR)/$(MANUAL)/$(MANUAL).ps #====[ validating SGML ]======================================================= validate: set -x; for i in $(wildcard *.sgml); do nsgmls -ges -wall $$i; done #====[ cleaning up ]=========================================================== clean distclean: rm -f maint-guide*.{txt,ps,dvi,pdf,info*,log,tex,aux,toc,sasp*} *~ rm -rf maint-guide*.html .PHONY: all html txt ps\ publish publish-html publish-txt publish-ps\ clean distclean validate