On Sun, Dec 20, 2009 at 03:39:03PM +0100, Stefan Weil wrote: > This makes rebuilds after source updates easier > for most users (who don't edit config-devices.mak). > > Signed-off-by: Stefan Weil <w...@mail.berlios.de>
Sorry about missing this and not commenting earlier. So the problem here is that it relies on keeping .old file around. This is a generated file, but - you don't remove it with make clean or distclean - it is not removed on error properly as it is not a target of makefile so it seems easy to get into a situation where a corrupted file will be created and the only way to get rid of it would be by manual rm command. Instead, what I think we should do is make the generated file *almost empty* and then it is easy to detect user tweaking it without keeping more state. A patch I posted does this by sticking a single "include" directive in a generated file. > --- > Makefile | 20 +++++++++++++++----- > 1 files changed, 15 insertions(+), 5 deletions(-) > > diff --git a/Makefile b/Makefile > index c1fa08c..684365d 100644 > --- a/Makefile > +++ b/Makefile > @@ -43,12 +43,22 @@ config-all-devices.mak: $(SUBDIR_DEVICES_MAK) > > %/config-devices.mak: default-configs/%.mak > $(call quiet-command,cat $< > $...@.tmp, " GEN $@") > - @if test -f $@ ; then \ > - echo "WARNING: $@ out of date." ;\ > - echo "Run \"make defconfig\" to regenerate." ; \ > - rm $...@.tmp ; \ > + @if test -f $@; then \ > + if cmp -s $...@.old $@ || cmp -s $@ $...@.tmp; then \ > + mv $...@.tmp $@; \ > + cp -p $@ $...@.old; \ > + else \ > + if test -f $...@.old; then \ > + echo "WARNING: $@ (user modified) out of date.";\ > + else \ > + echo "WARNING: $@ out of date.";\ > + fi; \ > + echo "Run \"make defconfig\" to regenerate."; \ > + rm $...@.tmp; \ > + fi; \ > else \ > - mv $...@.tmp $@ ; \ > + mv $...@.tmp $@; \ > + cp -p $@ $...@.old; \ > fi > > defconfig: > -- > 1.6.5 > >