From ac62eb38b0bca7a45835903eb421c19f4f78aca3 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 19 May 2013 15:49:24 +0200 Subject: build the en manpages in subdirectory doc/en Building manpages becames more consistent this way and it is simpler to ignore build artefacts, too. --- doc/makefile | 72 ++++++++++++++++-------------------------------------------- 1 file changed, 19 insertions(+), 53 deletions(-) (limited to 'doc/makefile') diff --git a/doc/makefile b/doc/makefile index be8357d80..44a22a597 100644 --- a/doc/makefile +++ b/doc/makefile @@ -1,7 +1,6 @@ # -*- make -*- BASE=.. SUBDIR=doc -SUBDIRS= $(dir $(wildcard */makefile)) # Bring in the default rules include ../buildlib/defaults.mak @@ -13,34 +12,6 @@ include $(DEBIANDOC_H) doc: manpages debiandoc -# Do not use XMLTO, build the manpages directly with XSLTPROC -ifdef XSLTPROC -# generate a list of accepted man page translations -SOURCE = $(patsubst %.xml,%,$(wildcard *.?.xml)) -INCLUDES = apt.ent apt-verbatim.ent -STYLESHEET=manpage-style.xsl - -LOCAL := manpage-$(firstword $(SOURCE)) -$(LOCAL)-LIST := $(SOURCE) - -# Install generation hooks -manpages: $($(LOCAL)-LIST) - -$($(LOCAL)-LIST) :: % : %.xml $(STYLESHEET) $(INCLUDES) - echo Creating man page $@ - $(XSLTPROC) -o $@ $(STYLESHEET) $< - -# Clean rule -.PHONY: veryclean/$(LOCAL) -veryclean: veryclean/$(LOCAL) -veryclean/$(LOCAL): - -rm -rf $($(@F)-LIST) -endif - -# Chain to the manpage rule -SOURCE = apt.8 -include $(MANPAGE_H) - examples/sources.list: examples/sources.list.in apt-verbatim.ent sed -e 's#&stable-codename;#$(shell grep --max-count=1 '^ examples/sources.list @@ -50,42 +21,43 @@ TO = $(DOC) TARGET = binary include $(COPY_H) -.PHONY: clean clean-subdirs veryclean veryclean-subdirs all binary doc stats +.PHONY: clean clean/subdirs veryclean veryclean/subdirs manpages/subdirs debiandoc/subdirs all binary doc stats -clean: clean-subdirs -veryclean: veryclean-subdirs +clean: clean/subdirs +veryclean: veryclean/subdirs +manpages: manpages/subdirs +debiandoc: debiandoc/subdirs -clean-subdirs: - for dir in $(SUBDIRS); do\ - $(MAKE) -C $$dir clean; \ - done +DOCUMENTATIONPO = $(patsubst %.po,%,$(notdir $(wildcard po/*.po))) +DOCDIRLIST = $(addsuffix /makefile,$(DOCUMENTATIONPO)) -veryclean-subdirs: - for dir in $(SUBDIRS); do\ - rm -rf $$dir; \ +dirs: $(DOCDIRLIST) +$(DOCDIRLIST) :: %/makefile : lang.makefile + test -d $(dir $@) || mkdir $(dir $@) + sed "s#@@LANG@@#$(subst /,,$(dir $@))#" $< > $@ + +debiandoc/subdirs manpages/subdirs clean/subdirs veryclean/subdirs: dirs + for dir in en $(dir $(DOCDIRLIST)); do \ + $(MAKE) -C $$dir $(patsubst %/subdirs,%,$@); \ done stats: for i in po/*.po; do echo -n "$$i: "; msgfmt --output-file=/dev/null --statistics $$i; done ifdef PO4A -DOCUMENTATIONPO = $(patsubst %.po,%,$(notdir $(wildcard po/*.po))) MANPAGEPOLIST = $(addprefix manpages-translation-,$(DOCUMENTATIONPO)) DEBIANDOCPOLIST = $(addprefix debiandoc-translation-,$(DOCUMENTATIONPO)) -MANPAGEDIRLIST = $(addsuffix /makefile,$(DOCUMENTATIONPO)) +.PHONY: update-po po4a $(MANPAGEPOLIST) $(DEBIANDOCPOLIST) $(DOCDIRLIST) -.PHONY: update-po po4a $(MANPAGEPOLIST) $(MANPAGEDIRLIST) - -manpages: $(MANPAGEPOLIST) -debiandoc: $(DEBIANDOCPOLIST) -po4a: $(MANPAGEPOLIST) $(DEBIANDOCPOLIST) +po4a: manpages/subdirs debiandoc/subdirs update-po: po4a --previous --no-backups --force --no-translations \ --package-name='$(PACKAGE)-doc' --package-version='$(PACKAGE_VERSION)' \ --msgid-bugs-address='$(PACKAGE_MAIL)' po4a.conf +manpages/subdirs: $(MANPAGEPOLIST) $(MANPAGEPOLIST) :: manpages-translation-% : %/makefile po4a.conf # first line is for apt.8 (see Bug#696923) po4a --previous --no-backups --translate-only $(dir $<)apt.ent \ @@ -100,19 +72,13 @@ $(MANPAGEPOLIST) :: manpages-translation-% : %/makefile po4a.conf $(patsubst %,--translate-only $(dir $<)%,$(patsubst %.8.xml,%.$(subst /,,$(dir $<)).8.xml,$(wildcard *.8.xml))) \ --package-name='$(PACKAGE)-doc' --package-version='$(PACKAGE_VERSION)' \ --msgid-bugs-address='$(PACKAGE_MAIL)' po4a.conf - $(MAKE) -C $(dir $<) manpages +debiandoc/subdirs: $(DEBIANDOCPOLIST) $(DEBIANDOCPOLIST) :: debiandoc-translation-% : %/makefile po4a.conf po4a --previous --no-backups --translate-only $(dir $<)apt.ent \ $(patsubst %,--translate-only $(dir $<)%,$(patsubst %.sgml,%.$(subst /,,$(dir $<)).sgml,$(wildcard *.sgml))) \ --package-name='$(PACKAGE)-doc' --package-version='$(PACKAGE_VERSION)' \ --msgid-bugs-address='$(PACKAGE_MAIL)' po4a.conf - $(MAKE) -C $(dir $<) debiandoc - -dirs: $(MANPAGEDIRLIST) -$(MANPAGEDIRLIST) :: %/makefile : lang.makefile - test -d $(dir $@) || mkdir $(dir $@) - sed "s#@@LANG@@#$(subst /,,$(dir $@))#" $< > $@ endif ifdef DOXYGEN -- cgit v1.2.3-70-g09d2 From 57da1b4bd21aceced30f658993fb811a5232cff7 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 31 May 2013 18:19:09 +0200 Subject: stop building l10n if strings are unchanged The buildsystem tried to build l10n for test applications which never produced the output it expected causing it to try building it all the time. --- buildlib/copy.mak | 2 +- buildlib/podomain.mak | 7 ++++++- doc/makefile | 2 +- po/makefile | 15 +++++++++++---- test/interactive-helper/makefile | 1 + test/libapt/makefile | 1 + 6 files changed, 21 insertions(+), 7 deletions(-) (limited to 'doc/makefile') diff --git a/buildlib/copy.mak b/buildlib/copy.mak index e8fe43deb..3ae11a7eb 100644 --- a/buildlib/copy.mak +++ b/buildlib/copy.mak @@ -21,7 +21,7 @@ veryclean: veryclean/$(LOCAL) MKDIRS += $(dir $($(LOCAL)-LIST)) -$($(LOCAL)-LIST) : $(TO)/% : % dirs +$($(LOCAL)-LIST) : $(TO)/% : % echo Installing $< to $(@D) cp $< $(@D) diff --git a/buildlib/podomain.mak b/buildlib/podomain.mak index cca7d55be..265359abc 100644 --- a/buildlib/podomain.mak +++ b/buildlib/podomain.mak @@ -4,6 +4,8 @@ # declared domain of the make file. It also arranges to set the DOMAIN # CPPFLAG for the compilation. +ifneq ($(APT_DOMAIN),none) + MY_DOMAIN := $(PACKAGE) ifdef APT_DOMAIN $($(LOCAL)-OBJS): CPPFLAGS := $(CPPFLAGS) -DAPT_DOMAIN='"$(APT_DOMAIN)"' @@ -13,10 +15,13 @@ endif MKDIRS += $(PO_DOMAINS)/$(MY_DOMAIN) $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: SRC := $(addprefix $(SUBDIR)/,$(SOURCE)) $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: makefile dirs - (echo $(SRC) | xargs -n1 echo) > $@ + (echo $(SRC) | xargs -n1 echo) > $@.tmp + cmp --silent $@.tmp $@ || mv $@.tmp $@ startup binary program clean update-po: $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list veryclean: veryclean/$(LOCAL) veryclean/po/$(LOCAL): LIST := $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list veryclean/po/$(LOCAL): rm -f $(LIST) + +endif diff --git a/doc/makefile b/doc/makefile index 44a22a597..274fbc278 100644 --- a/doc/makefile +++ b/doc/makefile @@ -36,7 +36,7 @@ $(DOCDIRLIST) :: %/makefile : lang.makefile test -d $(dir $@) || mkdir $(dir $@) sed "s#@@LANG@@#$(subst /,,$(dir $@))#" $< > $@ -debiandoc/subdirs manpages/subdirs clean/subdirs veryclean/subdirs: dirs +debiandoc/subdirs manpages/subdirs clean/subdirs veryclean/subdirs: for dir in en $(dir $(DOCDIRLIST)); do \ $(MAKE) -C $$dir $(patsubst %/subdirs,%,$@); \ done diff --git a/po/makefile b/po/makefile index ebf6c06d0..5a3c7fb67 100644 --- a/po/makefile +++ b/po/makefile @@ -30,17 +30,23 @@ GETDOMAIN = $(word 1,$(subst /, ,$(1))) # and produce the .pot file. $(POTFILES) : $(PO)/%.pot : echo "Generating POT file $@" - echo $@ : $(wildcard $(PO)/domains/$*/*.*list) $(addprefix $(BASE)/,$(shell cat $(wildcard $(PO)/domains/$*/*.srclist))) > $@.d + echo $@ : $(wildcard $(PO)/domains/$*/*.*list) $(addprefix $(BASE)/,$(shell cat $(wildcard $(PO)/domains/$*/*.srclist))) > $@.d.tmp + cmp --silent $@.d.tmp $@.d || mv $@.d.tmp $@.d # From sh source - cat $(PO)/domains/$*/*.shlist 2> /dev/null | (cd $(BASE) && xargs -n1 bash --dump-po-strings) > $(PO)/domains/$*/sh.pot + cat $(PO)/domains/$*/*.shlist 2> /dev/null | (cd $(BASE) && xargs -n1 bash --dump-po-strings) > $(PO)/domains/$*/sh.pot.tmp + cmp --silent $(PO)/domains/$*/sh.pot.tmp $(PO)/domains/$*/sh.pot || \ + mv $(PO)/domains/$*/sh.pot.tmp $(PO)/domains/$*/sh.pot # From C/C++ source cat $(PO)/domains/$*/*.srclist > $(PO)/POTFILES_$*.in $(XGETTEXT) --default-domain=$* --directory=$(BASE) \ --add-comments --foreign --keyword=_ --keyword=N_ \ --keyword=P_:1,2 \ - --files-from=$(PO)/POTFILES_$*.in -o $(PO)/domains/$*/c.pot + --files-from=$(PO)/POTFILES_$*.in -o $(PO)/domains/$*/c.pot.tmp + cmp --silent $(PO)/domains/$*/c.pot.tmp $(PO)/domains/$*/c.pot || \ + mv $(PO)/domains/$*/c.pot.tmp $(PO)/domains/$*/c.pot rm -f $(PO)/POTFILES_$*.in - $(MSGCOMM) --omit-header --more-than=0 $(PO)/domains/$*/c.pot $(PO)/domains/$*/sh.pot --output=$@ + $(MSGCOMM) --omit-header --more-than=0 $(PO)/domains/$*/c.pot $(PO)/domains/$*/sh.pot --output=$@.tmp + cmp --silent $@ $@.tmp || mv $@.tmp $@ # copy into the domain dirs to make rosetta happy rm -f $(PO)/domains/$*/*.pot cp $@ $(PO)/domains/$* @@ -93,4 +99,5 @@ ifneq ($(words $(The_DFiles)),0) include $(The_DFiles) endif +# otherwise the output is completely screwed .NOTPARALLEL: diff --git a/test/interactive-helper/makefile b/test/interactive-helper/makefile index 10d1e44ec..fa4f5fecb 100644 --- a/test/interactive-helper/makefile +++ b/test/interactive-helper/makefile @@ -1,6 +1,7 @@ # -*- make -*- BASE=../.. SUBDIR=test/interactive-helper +APT_DOMAIN=none # Bring in the default rules include ../../buildlib/defaults.mak diff --git a/test/libapt/makefile b/test/libapt/makefile index 953e455e0..1b67cba9d 100644 --- a/test/libapt/makefile +++ b/test/libapt/makefile @@ -2,6 +2,7 @@ BASE=../.. SUBDIR=test/libapt BASENAME=_libapt_test +APT_DOMAIN=none # Bring in the default rules include ../../buildlib/defaults.mak -- cgit v1.2.3-70-g09d2