Date: Wednesday, September 15, 2010 @ 22:29:38
Author: rtoy
Path: /project/cmucl/cvsroot/src
Modified: lisp/GNUmakefile tools/make-extra-dist.sh
lisp/GNUmakefile:
o Don't overwrite the CVS po file with the merged version; the merged
version is written to the build directory.
o The mo file is created from the merged version in the build
directory.
o Compare the newly merged version with the original CVS version and
print a message if they are different. (Sort the files first to
remove any issues with order of the various fields. It is known
that the versions of msgmerge on FreeBSD and Mac OS X will put the
Language line in different places.
tools/make-extra-dist.sh:
o Be sure to install the po file from the build directory and not the
source directory. (But do we really need to distribute the po
files?)
--------------------------+
lisp/GNUmakefile | 23 +++++++++++++++++++----
tools/make-extra-dist.sh | 6 +++---
2 files changed, 22 insertions(+), 7 deletions(-)
Index: src/lisp/GNUmakefile
diff -u src/lisp/GNUmakefile:1.37 src/lisp/GNUmakefile:1.38
--- src/lisp/GNUmakefile:1.37 Thu Jul 29 00:28:49 2010
+++ src/lisp/GNUmakefile Wed Sep 15 22:29:37 2010
@@ -1,4 +1,4 @@
-# $Header: /project/cmucl/cvsroot/src/lisp/GNUmakefile,v 1.37 2010-07-29 04:28:49 rtoy Exp $
+# $Header: /project/cmucl/cvsroot/src/lisp/GNUmakefile,v 1.38 2010-09-16 02:29:37 rtoy Exp $
all: lisp.nm
@@ -74,16 +74,31 @@
# Convert locale names to the appropriate path where we want the mo files to go.
LOCALE_DIRS = $(patsubst %, i18n/locale/%/LC_MESSAGES, $(LOCALES))
+# When processing the translations, we merge the po file from the src
+# directory with the appropriate pot file. The result is placed in
+# the build directory. Then we compare the original po file with the
+# newly generated one (but sorting both before comparing). If they
+# are different we print out a note so that we know to look into it
+# and decide if the po file in the src directory needs to be updated.
+#
+# The sorting is done so that differences in order of the lines is not
+# important. In particular, msgmerge on OSX wants to put the
+# Language: line after the Content-Transfer-Encoding line. But on
+# FreeBSD, it moves the line to after the Language-Team line. This
+# makes things messy. Hence, sort and diff.
translations:
for pot in ../../src/i18n/locale/*.pot; do \
for po in $(LOCALE_DIRS); do \
d=`dirname $$pot`; \
f=`basename $$pot .pot`; \
- touch ../../src/$$po/$$f.po; \
echo ; \
echo '***' Processing $$f.pot: $$po; \
- msgmerge -v ../../src/$$po/$$f.po $$pot -o ../../src/$$po/$$f.po; \
- msgfmt -v ../../src/$$po/$$f.po -o ../$$po/$$f.mo; \
+ msgmerge -v ../../src/$$po/$$f.po $$pot -o ../$$po/$$f.po; \
+ msgfmt -v ../$$po/$$f.po -o ../$$po/$$f.mo; \
+ sort < ../$$po/$$f.po > /tmp/$$$$-updated-$$f.po; \
+ sort < ../../src/$$po/$$f.po > /tmp/$$$$-orig-$$f.po; \
+ diff -uwB /tmp/$$$$-orig-$$f.po /tmp/$$$$-updated-$$f.po || echo "Warning: $$po/$$f.po changed"; \
+ rm -f /tmp/$$$$-updated-$$f.po /tmp/$$$$-orig-$$f.po; \
done; done
.PHONY : translations
Index: src/tools/make-extra-dist.sh
diff -u src/tools/make-extra-dist.sh:1.12 src/tools/make-extra-dist.sh:1.13
--- src/tools/make-extra-dist.sh:1.12 Mon Jul 5 16:32:33 2010
+++ src/tools/make-extra-dist.sh Wed Sep 15 22:29:37 2010
@@ -121,12 +121,12 @@
install ${GROUP} ${OWNER} -m 0644 $TARGET/i18n/$f $DESTDIR/lib/cmucl/lib/$DIR
done
-# Install po files
-for f in `(cd src/i18n; find locale -type f -print | egrep -v 'CVS|~.*~|.*~')`
+# Install po files. (Do we really need to distribute the po files?)
+for f in `(cd $TARGET/i18n; find locale -type f -print | egrep -v 'CVS|~.*~|.*~')`
do
FILE=`basename $f`
DIR=`dirname $f`
- install ${GROUP} ${OWNER} -m 0644 src/i18n/$f $DESTDIR/lib/cmucl/lib/$DIR
+ install ${GROUP} ${OWNER} -m 0644 $TARGET/i18n/$f $DESTDIR/lib/cmucl/lib/$DIR
done
if [ -z "$INSTALL_DIR" ]; then