Michael S. Tsirkin schrieb: > 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 >
As long as config-devices.mak is not removed, config-devices.mak.old has to be kept, too. > - 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. > I don't think that this is a real world scenario. The .old file is a simple copy of config-devices.mak. > 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. > This is a matter of personal preferences. Maybe other users who want to modify config-devices.mak prefer to have a full version where they can remove some lines they don't need. The solution implemented here was the result of Juan's feedback to an earlier suggestion from me. > 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