svn commit: r50879 - head/share/mk
Wolfram Schneider
wosch at FreeBSD.org
Tue Sep 19 09:57:16 UTC 2017
Author: wosch
Date: Tue Sep 19 09:57:15 2017
New Revision: 50879
URL: https://svnweb.freebsd.org/changeset/doc/50879
Log:
fix race conditions in doc image builds
PR: 222327
Modified:
head/share/mk/doc.images.mk
Modified: head/share/mk/doc.images.mk
==============================================================================
--- head/share/mk/doc.images.mk Tue Sep 19 09:54:21 2017 (r50878)
+++ head/share/mk/doc.images.mk Tue Sep 19 09:57:15 2017 (r50879)
@@ -102,15 +102,19 @@ EPS2PNM_RES?= 100
## If we want grayscale, convert with ppmtopgm before running through pnmtops
.if defined(GREYSCALE_IMAGES)
.scr.eps:
+ tmpfile=$$(mktemp ${.TARGET}.XXXXXXXX); \
${SCR2PNG} ${SCR2PNGOPTS} < ${.ALLSRC} | \
${PNGTOPNM} ${PNGTOPNMOPTS} | \
${PPMTOPGM} ${PPMTOPGMOPTS} | \
- ${PNMTOPS} ${PNMTOPSOPTS} > ${.TARGET}
+ ${PNMTOPS} ${PNMTOPSOPTS} > $$tmpfile && \
+ ${MV} -f $$tmpfile ${.TARGET}
.else
.scr.eps:
+ tmpfile=$$(mktemp ${.TARGET}.XXXXXXXX); \
${SCR2PNG} ${SCR2PNGOPTS} < ${.ALLSRC} | \
${PNGTOPNM} ${PNGTOPNMOPTS} | \
- ${PNMTOPS} ${PNMTOPSOPTS} > ${.TARGET}
+ ${PNMTOPS} ${PNMTOPSOPTS} > $$tmpfile && \
+ ${MV} -f $$tmpfile ${.TARGET}
.endif
# The .txt files need to have any trailing spaces trimmed from
@@ -126,7 +130,8 @@ EPS2PNM_RES?= 100
| ${PNMTOPNG} > ${.TARGET}
.pic.ps:
- ${PIC2PS} ${.ALLSRC} > ${.TARGET}
+ tmpfile=$$(mktemp ${.TARGET}.XXXXXXXX); \
+ ${PIC2PS} ${.ALLSRC} > $$tmpfile && ${MV} -f $$tmpfile ${.TARGET}
# When ghostscript built with A4=yes is used, ps2epsi's paper size also
# becomes the A4 size. However, the ps2epsi fails to convert grops(1)
@@ -139,22 +144,24 @@ EPS2PNM_RES?= 100
# must contain %%BoundingBox line which the "gs -sDEVICE=bbox" outputs
# (the older versions calculated BBox directly in ps2epsi.ps).
.ps.eps:
- ${PS2BBOX} ${PS2BBOXOPTS} ${.ALLSRC} > ${.TARGET} 2>&1
- ${SETENV} outfile=${.TARGET} ${PS2EPS} ${PS2EPSOPTS} < ${.ALLSRC} 1>&2
+ tmpfile=$$(mktemp ${.TARGET}.XXXXXXXX); \
+ ${PS2BBOX} ${PS2BBOXOPTS} ${.ALLSRC} > $$tmpfile 2>&1; \
+ ${SETENV} outfile=$$tmpfile ${PS2EPS} ${PS2EPSOPTS} < ${.ALLSRC} 1>&2; \
(echo "save countdictstack mark newpath /showpage {} def /setpagedevice {pop} def";\
echo "%%EndProlog";\
echo "%%Page: 1 1";\
echo "%%BeginDocument: ${.ALLSRC}";\
- ) >> ${.TARGET}
+ ) >> $$tmpfile; \
${SED} -e '/^%%BeginPreview:/,/^%%EndPreview[^!-~]*$$/d' \
-e '/^%!PS-Adobe/d' \
-e '/^%%[A-Za-z][A-Za-z]*[^!-~]*$$/d'\
- -e '/^%%[A-Za-z][A-Za-z]*: /d' < ${.ALLSRC} >> ${.TARGET}
+ -e '/^%%[A-Za-z][A-Za-z]*: /d' < ${.ALLSRC} >> $$tmpfile; \
(echo "%%EndDocument";\
echo "%%Trailer";\
echo "cleartomark countdictstack exch sub { end } repeat restore";\
echo "%%EOF";\
- ) >> ${.TARGET}
+ ) >> $$tmpfile; \
+ ${MV} -f $$tmpfile ${.TARGET}
# We can't use suffix rules to generate the rules to convert EPS to PNG and
# PNG to EPS. This is because a .png file can depend on a .eps file, and
More information about the svn-doc-head
mailing list