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
> 
> 


Reply via email to