From: David Kalnischkies Date: Wed, 21 Mar 2012 22:47:54 +0000 (+0100) Subject: do not update po and pot files in the process of the build as this X-Git-Tag: 0.9.0~7^2~25 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/a11afb9d0dd5d2326acb2de19ea20b49238667d0 do not update po and pot files in the process of the build as this causes timestamp changes for the mo files which therefore can't be refcounted by dpkg for your M-A: same packages (Closes: #659333, LP: #924628) The commit also enables a top-level 'make update-po' and does all the needed changes to let this work now that update-po might be called in a freshly checkout tree --- diff --git a/Makefile b/Makefile index 9a47014c3..aa8160ac0 100644 --- a/Makefile +++ b/Makefile @@ -9,8 +9,8 @@ endif .PHONY: default default: startup all -.PHONY: headers library clean veryclean all binary program doc test -all headers library clean veryclean binary program doc dirs test: +.PHONY: headers library clean veryclean all binary program doc test update-po +startup all headers library clean veryclean binary program doc dirs test update-po: $(MAKE) -C apt-pkg $@ $(MAKE) -C apt-inst $@ $(MAKE) -C methods $@ @@ -21,6 +21,8 @@ all headers library clean veryclean binary program doc dirs test: $(MAKE) -C po $@ $(MAKE) -C test $@ +update-po: startup + # Some very common aliases .PHONY: maintainer-clean dist-clean distclean pristine sanity maintainer-clean dist-clean distclean pristine sanity: veryclean diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak index edb089160..c10813e9d 100644 --- a/buildlib/defaults.mak +++ b/buildlib/defaults.mak @@ -121,7 +121,7 @@ MKDIRS := $(BIN) all: dirs binary doc binary: library program maintainer-clean dist-clean distclean pristine sanity: veryclean -headers library clean veryclean program test: +startup headers library clean veryclean program test update-po: veryclean: echo Very Clean done for $(SUBDIR) diff --git a/buildlib/podomain.mak b/buildlib/podomain.mak index 511a5cae2..bb1c77e47 100644 --- a/buildlib/podomain.mak +++ b/buildlib/podomain.mak @@ -14,7 +14,7 @@ MKDIRS += $(PO_DOMAINS)/$(MY_DOMAIN) $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: SRC := $(addprefix $(SUBDIR)/,$(SOURCE)) $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: makefile (echo $(SRC) | xargs -n1 echo) > $@ -binary program clean: $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list +startup binary program clean: $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list veryclean: veryclean/$(LOCAL) veryclean/po/$(LOCAL): LIST := $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list diff --git a/debian/changelog b/debian/changelog index bb5d9920a..ca622a78c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,10 @@ apt (0.8.16~exp14) UNRELEASED; urgency=low - fix inconsistent clog/cout usage in the debug output [ David Kalnischkies ] + * do not update po and pot files in the process of the build as this + causes timestamp changes for the mo files which therefore can't + be refcounted by dpkg for your M-A: same packages + (Closes: #659333, LP: #924628) * debian/libapt-pkg4.12: - update symbols file * apt-pkg/packagemanager.cc: @@ -35,7 +39,8 @@ apt (0.8.16~exp14) UNRELEASED; urgency=low - do not link rred against libz anymore as FileFd handles all this transparently now - -- David Kalnischkies Tue, 20 Mar 2012 19:22:49 +0100 + + -- David Kalnischkies Wed, 21 Mar 2012 18:50:23 +0100 apt (0.8.16~exp13) experimental; urgency=low diff --git a/doc/makefile b/doc/makefile index 4fcf3bd10..fca0bfa0d 100644 --- a/doc/makefile +++ b/doc/makefile @@ -67,26 +67,21 @@ veryclean-subdirs: rm -rf $$dir; \ done +.PHONY: update-po po4a stats + ifdef PO4A doc: po4a -clean: po4a-clean - -.PHONY: update-po po4a stats update-po: po4a --previous --no-backups --force --no-translations po4a.conf -po4a-clean: - po4a --previous --rm-backups --rm-translations po4a.conf - po4a: po4a --previous --no-backups po4a.conf +endif stats: for i in po/*.po; do echo -n "$$i: "; msgfmt --statistics $$i; done -endif - ifdef DOXYGEN DOXYGEN_SOURCES = $(shell find $(BASE)/apt-pkg -not -name .\\\#* -and \( -name \*.cc -or -name \*.h \) ) diff --git a/po/makefile b/po/makefile index 9f8b7b22e..6a2bc416d 100644 --- a/po/makefile +++ b/po/makefile @@ -29,7 +29,7 @@ GETDOMAIN = $(word 1,$(subst /, ,$(1))) # Generate the list of files from the bits the other make files dropped # and produce the .pot file. $(POTFILES) : $(PO)/%.pot : - printf "%s " "Generating POT file $@" + echo "Generating POT file $@" echo $@ : $(wildcard $(PO)/domains/$*/*.*list) $(addprefix $(BASE)/,$(shell cat $(wildcard $(PO)/domains/$*/*.srclist))) > $@.d # From sh source cat $(PO)/domains/$*/*.shlist 2> /dev/null | (cd $(BASE) && xargs -n1 bash --dump-po-strings) > $(PO)/domains/$*/sh.pot @@ -40,22 +40,19 @@ $(POTFILES) : $(PO)/%.pot : --keyword=P_:1,2 \ --files-from=$(PO)/POTFILES_$*.in -o $(PO)/domains/$*/c.pot rm -f $(PO)/POTFILES_$*.in - $(MSGCOMM) --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=$@ # copy into the domain dirs to make rosetta happy rm -f $(PO)/domains/$*/*.pot cp $@ $(PO)/domains/$* -$(PACKAGE)-all.pot: $(POTFILES) - $(MSGCOMM) --more-than=0 $(POTFILES) --output=$@ - # Filter the complete translation with the domain specific file to produce # only the subtext needed for this domain # We cannot express the dependencies required for this directly with a pattern # rule, so we use the .d hack. -$(LANG_POFILES) : $(PO_DOMAINS)/%.po : $(PACKAGE)-all.pot +$(LANG_POFILES) : $(PO_DOMAINS)/%.po : $(POTFILES) printf "%s " "Generating $@" echo $@ : $(notdir $@) $(PO)/$(call GETDOMAIN,$*).pot > $(PO)/$(call GETDOMAIN,$*)_$(notdir $@).d - $(MSGMERGE) $(notdir $@) $(PO)/$(call GETDOMAIN,$*).pot -o $@ + $(MSGMERGE) --no-location $(notdir $@) $(PO)/$(call GETDOMAIN,$*).pot -o $@ $(MOFILES) : $(PO_DOMAINS)/%.mo : $(PO_DOMAINS)/%.po printf "%s: " "Generating $(LOCALE)/$(notdir $*)/LC_MESSAGES/$(call GETDOMAIN,$*).mo" @@ -66,7 +63,16 @@ $(MOFILES) : $(PO_DOMAINS)/%.mo : $(PO_DOMAINS)/%.po stats: for i in *.pot *.po; do echo -n "$$i: "; msgfmt --statistics $$i; done -binary: $(POTFILES) $(PACKAGE)-all.pot $(MOFILES) +binary: $(POTFILES) $(MOFILES) + +$(PACKAGE)-all.pot: $(POTFILES) + # we create our partial pot files without a header to avoid changing dates in *.mo files, + # but we want a header for our master-pot file, so we use a dummy pot with nothing but the header + $(XGETTEXT) --default-domain=$(PO)/$(PACKAGE)-dummy.pot --foreign --language=c \ + -o $(PO)/$(PACKAGE)-dummy.pot --force-po --package-name=$(PACKAGE) \ + --package-version=$(VERSION) --msgid-bugs-address=deity@lists.debian.org /dev/null + $(MSGCOMM) --more-than=0 $(PO)/$(PACKAGE)-dummy.pot $(POTFILES) --output=$(PACKAGE)-all.pot + rm -f $(PO)/$(PACKAGE)-dummy.pot .PHONY: update-po update-po: $(PACKAGE)-all.pot @@ -78,7 +84,7 @@ update-po: $(PACKAGE)-all.pot done clean: clean/local -clean/local: update-po +clean/local: rm -f $(MOFILES) $(LANG_POFILES) $(PO)/*.d # Include the dependencies that are available diff --git a/test/Makefile b/test/Makefile index da0a49b0c..b42a90b25 100644 --- a/test/Makefile +++ b/test/Makefile @@ -6,8 +6,8 @@ ifndef NOISY .SILENT: endif -.PHONY: headers library clean veryclean all binary program doc test -all clean veryclean binary program dirs test: +.PHONY: startup headers library clean veryclean all binary program doc test update-po +startup all clean veryclean binary program dirs test update-po: $(MAKE) -C libapt $@ $(MAKE) -C interactive-helper $@