From: Serge Hallyn Date: Thu, 14 Mar 2024 23:53:49 +0000 (-0500) Subject: man/po/Makefile.in: avoid unnecessary changes to git indexed files X-Git-Tag: 4.15.1~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e08db2de4c950e4bef1122b6787832958188eb72;p=thirdparty%2Fshadow.git man/po/Makefile.in: avoid unnecessary changes to git indexed files Keep pot creation date out of our po files when we compare them. Otherwise, we always think they need to be updated. We prepend a line '# To re-generate, ....' to the shadow-man-pages.pot file. Do that before we compare the new candidate, because right now our comparison to see if we've made changes always thinks we have. Put some of the tempfiles in a mktemp -d'd directory, which we remove when all's done. This keeps the working tree cleaner. Signed-off-by: Serge Hallyn --- diff --git a/man/po/Makefile.in b/man/po/Makefile.in index 14352ad09..d0f738f8d 100644 --- a/man/po/Makefile.in +++ b/man/po/Makefile.in @@ -86,37 +86,38 @@ stamp-po: $(srcdir)/$(DOMAIN).pot # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. # TODO: set MSGID_BUGS_ADDRESS, COPYRIGHT_HOLDER -$(DOMAIN).pot-update: $(XMLFILES) $(srcdir)/XMLFILES remove-potcdate.sed - @set -e; tmpdir=`pwd`; \ - echo "cd $(top_srcdir)/man"; \ +$(DOMAIN).pot-update: $(XMLFILES) $(srcdir)/XMLFILES + @set -ex; tmpdir=`mktemp -d`; \ + origdir=`pwd`; \ cd $(top_srcdir)/man; \ + cp *.xml $$tmpdir/; \ files=""; \ for file in $(notdir $(XMLFILES)); do \ + base=`basename $$file`; \ + outfile=$$tmpdir/$$base.out; \ if grep -q SHADOW-CONFIG-HERE $$file ; then \ - sed -e 's/^/%config;/' $$file > $$file.out; \ + sed -e 's/^/%config;/' $$file > $$outfile; \ else \ - sed -e 's/^\(/\1 [%config;]>/' $$file > $$file.out; \ + sed -e 's/^\(/\1 [%config;]>/' $$file > $$outfile; \ fi; \ - files="$$files $$file.out"; \ + files="$$files $$outfile"; \ done; \ itstool -d -o $$tmpdir/$(DOMAIN).po $$files; \ - cd $$tmpdir; \ - test ! -f $(DOMAIN).po || { \ + sed -i '1i \ +# To re-generate, run "cd man/po; make update-po"' $$tmpdir/$(DOMAIN).po; \ + cd $$origdir; \ + test ! -f $$tmpdir/$(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ - sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ - sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ - if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ - else \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $$tmpdir/$(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $$tmpdir/$(DOMAIN).po > $$tmpdir/$(DOMAIN).2po && \ + if ! cmp $$tmpdir/$(DOMAIN).1po $$tmpdir/$(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(srcdir)/$(DOMAIN).pot && \ + mv $$tmpdir/$(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + mv $$tmpdir/$(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ - sed -i '1i \ -# To re-generate, run "cd man/po; make update-po"' $(srcdir)/$(DOMAIN).pot; \ - } + } ; rm -rf $$tmpdir # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. @@ -214,26 +215,25 @@ update-po: Makefile .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - tmpdir=`pwd`; \ + ptmpdir=`mktemp -d`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$ptmpdir/$$lang.new.po; then \ + sed -f remove-potcdate.sed < $$lang.po > $$ptmpdir/$$lang.1po; \ + sed -f remove-potcdate.sed < $$ptmpdir/$$lang.new.po > $$ptmpdir/$$lang.new.1po; \ + if ! cmp $$ptmpdir/$$lang.1po $$ptmpdir/$$lang.new.1po >/dev/null 2>&1; then \ + if mv -f $$ptmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + echo "msgmerge for $$lang.po failed: cannot move $$ptmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi + fi ; rm -rf $$ptmpdir $(DUMMYPOFILES):