diff mbox

[v2] Makefile: Fix "make clean"

Message ID 1395020122-4957-1-git-send-email-famz@redhat.com
State New
Headers show

Commit Message

Fam Zheng March 17, 2014, 1:35 a.m. UTC
This fixes a dangerous bug: "make clean" after "make distclean" will
delete every single file including those under .git, if you do in-tree
build!

Rationale: A first "make distclean" will unset $(DSOSUF), a following
"make distclean" or "make clean" will find all the files and delete it.

Fix it by explicitly typing the file extensions here, and combine
multiple find invocations into one.

Signed-off-by: Fam Zheng <famz@redhat.com>

---
v2: Improve as Stefan Weil suggested.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 Makefile | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

Comments

Stefan Weil March 17, 2014, 6:15 a.m. UTC | #1
Am 17.03.2014 02:35, schrieb Fam Zheng:
> This fixes a dangerous bug: "make clean" after "make distclean" will
> delete every single file including those under .git, if you do in-tree
> build!
> 
> Rationale: A first "make distclean" will unset $(DSOSUF), a following
> "make distclean" or "make clean" will find all the files and delete it.
> 
> Fix it by explicitly typing the file extensions here, and combine
> multiple find invocations into one.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> 
> ---
> v2: Improve as Stefan Weil suggested.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  Makefile | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index bd9cd4f..ec74039 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -265,10 +265,7 @@ clean:
>  # avoid old build problems by removing potentially incorrect old files
>  	rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
>  	rm -f qemu-options.def
> -	find . -name '*.[oda]' -type f -exec rm -f {} +
> -	find . -name '*.l[oa]' -type f -exec rm -f {} +
> -	find . -name '*$(DSOSUF)' -type f -exec rm -f {} +
> -	find . -name '*.mo' -type f -exec rm -f {} +
> +	find . \( -name '*.l[oa]' -o -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
>  	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
>  	rm -f fsdev/*.pod
>  	rm -rf .libs */.libs
> 

Reviewed-by: Stefan Weil <sw@weilnetz.de>

Hello Peter,

this is a bugfix which fixes a potential danger for a developer's
working directory, so I think it should be fixed directly (not via
qemu-trivial).

Regards
Stefan
Peter Maydell March 17, 2014, 11:56 a.m. UTC | #2
On 17 March 2014 06:15, Stefan Weil <sw@weilnetz.de> wrote:
> Am 17.03.2014 02:35, schrieb Fam Zheng:
>> This fixes a dangerous bug: "make clean" after "make distclean" will
>> delete every single file including those under .git, if you do in-tree
>> build!
>>
>> Rationale: A first "make distclean" will unset $(DSOSUF), a following
>> "make distclean" or "make clean" will find all the files and delete it.
>>
>> Fix it by explicitly typing the file extensions here, and combine
>> multiple find invocations into one.
>>
>> Signed-off-by: Fam Zheng <famz@redhat.com>

> Reviewed-by: Stefan Weil <sw@weilnetz.de>
>
> Hello Peter,
>
> this is a bugfix which fixes a potential danger for a developer's
> working directory, so I think it should be fixed directly (not via
> qemu-trivial).

Agreed; applied to master, thanks.

-- PMM
diff mbox

Patch

diff --git a/Makefile b/Makefile
index bd9cd4f..ec74039 100644
--- a/Makefile
+++ b/Makefile
@@ -265,10 +265,7 @@  clean:
 # avoid old build problems by removing potentially incorrect old files
 	rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
 	rm -f qemu-options.def
-	find . -name '*.[oda]' -type f -exec rm -f {} +
-	find . -name '*.l[oa]' -type f -exec rm -f {} +
-	find . -name '*$(DSOSUF)' -type f -exec rm -f {} +
-	find . -name '*.mo' -type f -exec rm -f {} +
+	find . \( -name '*.l[oa]' -o -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
 	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
 	rm -f fsdev/*.pod
 	rm -rf .libs */.libs