[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] Makefile: Update unmodified config-devices.mak
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] Re: [PATCH] Makefile: Update unmodified config-devices.mak automatically |
Date: |
Thu, 24 Dec 2009 14:58:23 +0200 |
User-agent: |
Mutt/1.5.19 (2009-01-05) |
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 <address@hidden>
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 $< > address@hidden, " GEN $@")
> - @if test -f $@ ; then \
> - echo "WARNING: $@ out of date." ;\
> - echo "Run \"make defconfig\" to regenerate." ; \
> - rm address@hidden ; \
> + @if test -f $@; then \
> + if cmp -s address@hidden $@ || cmp -s $@ address@hidden; then \
> + mv address@hidden $@; \
> + cp -p $@ address@hidden; \
> + else \
> + if test -f address@hidden; then \
> + echo "WARNING: $@ (user modified) out of date.";\
> + else \
> + echo "WARNING: $@ out of date.";\
> + fi; \
> + echo "Run \"make defconfig\" to regenerate."; \
> + rm address@hidden; \
> + fi; \
> else \
> - mv address@hidden $@ ; \
> + mv address@hidden $@; \
> + cp -p $@ address@hidden; \
> fi
>
> defconfig:
> --
> 1.6.5
>
>