On Wed, Dec 11, 2019 at 12:52:20PM -0600, Eric Blake wrote: > On 12/11/19 12:45 PM, Daniel P. Berrangé wrote: > > This avoids leaving a zero length or partially generated output > > file on errors. > > > > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > > --- > > docs/Makefile.am | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/docs/Makefile.am b/docs/Makefile.am > > index eb8de80b9c..9a1f7a6117 100644 > > --- a/docs/Makefile.am > > +++ b/docs/Makefile.am > > @@ -259,21 +259,21 @@ man8_MANS = $(manpages8_rst:%.rst=%.8) > > grep -v '^\.\. contents::' < $< | \ > > sed -e 's|SYSCONFDIR|$(sysconfdir)|g' \ > > -e 's|RUNSTATEDIR|$(runstatedir)|g' | \ > > - $(RST2MAN) > $@ > > + $(RST2MAN) > $@ || { rm $@ && exit 1; } > > But still allows a truncated view of the file if another process accesses > the file while RST2MAN is still running. Even better is to generate output > to a temp file then atomically mv it into place, so that no concurrent > process can ever see an incomplete file. Is that a problem that actually impacts negatively in real world for builds? In various places in the make rules, we've either done the "|| rm" approach, or the temp file and rename approach. Personally I find the recipes using the "|| rm" approach are more maintainable/readable. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list