summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2012-03-21 23:47:54 +0100
committerDavid Kalnischkies <kalnischkies@gmail.com>2012-03-21 23:47:54 +0100
commita11afb9d0dd5d2326acb2de19ea20b49238667d0 (patch)
tree1db2be39d53ae96404af0e994ffd683040797966
parentfca9751603f4f1ee0612208c009326490dca9a53 (diff)
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
-rw-r--r--Makefile6
-rw-r--r--buildlib/defaults.mak2
-rw-r--r--buildlib/podomain.mak2
-rw-r--r--debian/changelog7
-rw-r--r--doc/makefile11
-rw-r--r--po/makefile24
-rw-r--r--test/Makefile4
7 files changed, 32 insertions, 24 deletions
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 <kalnischkies@gmail.com> Tue, 20 Mar 2012 19:22:49 +0100
+
+ -- David Kalnischkies <kalnischkies@gmail.com> 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 $@