Fix Makefile so invalid characters warning preserves error code
authorBruce Momjian <bruce@momjian.us>
Tue, 3 Dec 2024 23:27:41 +0000 (18:27 -0500)
committerBruce Momjian <bruce@momjian.us>
Tue, 3 Dec 2024 23:27:41 +0000 (18:27 -0500)
Fix for commit e4c8865196f.

Reported-by: Peter Eisentraut
Discussion: https://postgr.es/m/88cb6ecf-22bb-431e-974b-1cd236a80364@eisentraut.org

Backpatch-through: master

doc/src/sgml/Makefile

index 4a08b6f433e8177ba27ea53ed1f50651660dd61a..9d52715ff4b438b8b98c37de2b28e4b5df87b26d 100644 (file)
@@ -156,9 +156,11 @@ XSLTPROC_FO_FLAGS += --stringparam img.src.path '$(srcdir)/'
    $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_FO_FLAGS) --stringparam paper.type USletter -o $@ $^
 
 %.pdf: %.fo $(ALL_IMAGES)
-   LANG=C $(FOP) -fo $< -pdf $@ 2>&1 | \
-   awk 'BEGIN { warn = 0 }  { print }  /not available in font/ { warn = 1 }  \
-   END { if (warn != 0) print("\nFound characters that cannot be output in the PDF document;  see README.non-ASCII") }' 1>&2
+   @# There is no easy way to pipe output and capture its return code, so output a special string on failure.
+   { LANG=C $(FOP) -fo $< -pdf $@ 2>&1; [ "$$?" -ne 0 ] && echo "FOP_ERROR"; } | \
+   awk 'BEGIN { warn = 0 }  ! /^FOP_ERROR$$/ { print }  /not available in font/ { warn = 1 }  \
+   END { if (warn != 0) print("\nFound characters that cannot be output in the PDF document;  see README.non-ASCII"); \
+   if ($$0 ~ /^FOP_ERROR$$/) { exit 1} }' 1>&2
 
 
 ##