build: when po-check fails, say why and suggest a fix
authorJim Meyering <meyering@redhat.com>
Thu, 16 Oct 2008 12:22:46 +0000 (14:22 +0200)
committerJim Meyering <meyering@redhat.com>
Thu, 16 Oct 2008 12:25:53 +0000 (14:25 +0200)
* maint.mk (po-check): Before, when this check failed, it just
spat out a diff mentioning two temporary files.  Now, it tells
you what's wrong and suggests a fix with a patch using the name
of the affected file (rather than temporary file names) in the
diff output.

maint.mk

index 8db32d9..2752486 100644 (file)
--- a/maint.mk
+++ b/maint.mk
@@ -597,10 +597,15 @@ m4-check:
          && { echo '$(ME): quote the first arg to AC_DEFUN' 1>&2; \
               exit 1; } || :
 
+fix_po_file_diag = \
+'you have changed the set of files with translatable diagnostics;\n\
+apply the above patch\n'
+
 # Verify that all source files using _() are listed in po/POTFILES.in.
+po_file = po/POTFILES.in
 po-check:
-       @if test -f po/POTFILES.in; then                                \
-         grep -E -v '^(#|$$)' po/POTFILES.in                           \
+       @if test -f $(po_file); then                                    \
+         grep -E -v '^(#|$$)' $(po_file)                               \
            | grep -v '^src/false\.c$$' | sort > $@-1;                  \
          files=;                                                       \
          for file in $$($(VC_LIST_EXCEPT)) lib/*.[ch]; do              \
@@ -617,7 +622,8 @@ po-check:
          done;                                                         \
          grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files          \
            | sort -u > $@-2;                                           \
-         diff -u $@-1 $@-2 || exit 1;                                  \
+         diff -u -L $(po_file) -L $(po_file) $@-1 $@-2                 \
+           || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; };   \
          rm -f $@-1 $@-2;                                              \
        fi