From: simonmar Date: Mon, 12 Nov 2001 14:13:35 +0000 (+0000) Subject: [project @ 2001-11-12 14:13:35 by simonmar] X-Git-Tag: Approximately_9120_patches~579 X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=cc863b02496de2d1bd3b3cb24e141d6892d56a05 [project @ 2001-11-12 14:13:35 by simonmar] Generate .a files into a temporary file before renaming to the actual target, to avoid a problem whereby 'ar' could leave a partially-built archive lying around. --- diff --git a/mk/target.mk b/mk/target.mk index 0ad9587..dc6add1 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -437,20 +437,25 @@ ifneq "$(way)" "u" SRC_HC_OPTS += -split-objs +# We generate the archive into a temporary file libfoo.a.tmp, then +# rename it at the end. This avoids the problem that ar may sometimes +# fail, leaving a partially built archive behind. ifeq "$(ArSupportsInput)" "" define BUILD_LIB -$(RM) $@ -(echo $(STUBOBJS); $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o') | xargs ar q $@ -$(RANLIB) $@ +$(RM) $@ $@.tmp +(echo $(STUBOBJS); $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o') | xargs ar q $@.tmp +$(RANLIB) $@.tmp +$(MV) $@.tmp $@ endef else define BUILD_LIB -$(RM) $@ +$(RM) $@ $@.tmp echo $(STUBOBJS) > $@.list $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o' >> $@.list -$(AR) $(AR_OPTS) $@ $(ArSupportsInput) $@.list +$(AR) $(AR_OPTS) $@.tmp $(ArSupportsInput) $@.list $(RM) $@.list -$(RANLIB) $@ +$(RANLIB) $@.tmp +$(MV) $@.tmp $@ endef endif