Skip to contentSkip to conversation

'make clean' improvements

PATCH New Thomas De Schampheleire 4 participants 8 messages Sep 30, 2013 – Oct 1, 2013 Kbuild

lore
Share & tools
lore
#1 lore raw

PATCH 1/1 make clean: improve when no .config present

The 'make clean' recipe is using variables that are not defined without .config file, causing only a partial cleanup when the .config file is accidentally deleted.

This patch moves those variables that do not depend on values from .config outside the BR2_HAVE_DOT_CONFIG check, so that 'make clean' is much more similar with and without .config.

The HOST_DIR (and the derived STAGING_DIR) are determined from BR2_HOST_DIR in .config, so the host directory can still not be cleaned correctly without making assumptions, if no .config is present.

---
Note: we could improve the HOST_DIR cleanup by removing 'output/host' unconditionally, but it's an assumption. Let me know your thoughts on this, it could be fixed in another patch.

 Makefile |  23 ++++++++++-------------
 1 files changed, 10 insertions(+), 13 deletions(-)
Makefile +10 -13
@@ -193,7 +193,17 @@ BASE_DIR := $(shell mkdir -p $(O) && cd 
 $(if $(BASE_DIR),, $(error output directory "$(O)" does not exist))
 
 BUILD_DIR:=$(BASE_DIR)/build
+STAMP_DIR:=$(BASE_DIR)/stamps
+BINARIES_DIR:=$(BASE_DIR)/images
+TARGET_DIR:=$(BASE_DIR)/target
 
+LEGAL_INFO_DIR=$(BASE_DIR)/legal-info
+REDIST_SOURCES_DIR=$(LEGAL_INFO_DIR)/sources
+LICENSE_FILES_DIR=$(LEGAL_INFO_DIR)/licenses
+LEGAL_MANIFEST_CSV=$(LEGAL_INFO_DIR)/manifest.csv
+LEGAL_LICENSES_TXT=$(LEGAL_INFO_DIR)/licenses.txt
+LEGAL_WARNINGS=$(LEGAL_INFO_DIR)/.warnings
+LEGAL_REPORT=$(LEGAL_INFO_DIR)/README
 
 ifeq ($(BR2_HAVE_DOT_CONFIG),y)
 
@@ -262,21 +272,8 @@ HOST_DIR:=$(call qstrip,$(BR2_HOST_DIR))
 # locales to generate
 GENERATE_LOCALE=$(call qstrip,$(BR2_GENERATE_LOCALE))
 
-# stamp (dependency) files go here
-STAMP_DIR:=$(BASE_DIR)/stamps
-
-BINARIES_DIR:=$(BASE_DIR)/images
-TARGET_DIR:=$(BASE_DIR)/target
 TARGET_SKELETON=$(TOPDIR)/system/skeleton
 
-LEGAL_INFO_DIR=$(BASE_DIR)/legal-info
-REDIST_SOURCES_DIR=$(LEGAL_INFO_DIR)/sources
-LICENSE_FILES_DIR=$(LEGAL_INFO_DIR)/licenses
-LEGAL_MANIFEST_CSV=$(LEGAL_INFO_DIR)/manifest.csv
-LEGAL_LICENSES_TXT=$(LEGAL_INFO_DIR)/licenses.txt
-LEGAL_WARNINGS=$(LEGAL_INFO_DIR)/.warnings
-LEGAL_REPORT=$(LEGAL_INFO_DIR)/README
-
 # Location of a file giving a big fat warning that output/target
 # should not be used as the root filesystem.
 TARGET_DIR_WARNING_FILE=$(TARGET_DIR)/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM
#2 lore raw

PATCH 1/1 make clean: improve when no .config present

Dear Thomas De Schampheleire,

Quoted 7 lines · Thomas De Schampheleire

The 'make clean' recipe is using variables that are not defined without .config file, causing only a partial cleanup when the .config file is accidentally deleted.

This patch moves those variables that do not depend on values from .config outside the BR2_HAVE_DOT_CONFIG check, so that 'make clean' is much more similar with and without .config.

Yeah, this has bothered me for a while, so I agree with that.

Quoted 10 lines

The HOST_DIR (and the derived STAGING_DIR) are determined from BR2_HOST_DIR in .config, so the host directory can still not be cleaned correctly without making assumptions, if no .config is present.

---
Note: we could improve the HOST_DIR cleanup by removing 'output/host' unconditionally, but it's an assumption. Let me know your thoughts on this, it could be fixed in another patch.

Hum, yeah, indeed. This means that the contents of output/host are not removed, which is quite annoying. I don't immediately see a solution to this problem, though.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH 1/1 make clean: improve when no .config present

Quoted 19 lines · Thomas Petazzoni

Dear Thomas De Schampheleire,

Quoted 7 lines · Thomas De Schampheleire

The 'make clean' recipe is using variables that are not defined without .config file, causing only a partial cleanup when the .config file is accidentally deleted.

This patch moves those variables that do not depend on values from .config outside the BR2_HAVE_DOT_CONFIG check, so that 'make clean' is much more similar with and without .config.

Yeah, this has bothered me for a while, so I agree with that.

Quoted 6 lines

The HOST_DIR (and the derived STAGING_DIR) are determined from BR2_HOST_DIR in .config, so the host directory can still not be cleaned correctly without making assumptions, if no .config is present.

Quoted 8 lines
Quoted 4 lines

---
Note: we could improve the HOST_DIR cleanup by removing 'output/host' unconditionally, but it's an assumption. Let me know your thoughts on this, it could be fixed in another patch.

Hum, yeah, indeed. This means that the contents of output/host are not removed, which is quite annoying. I don't immediately see a solution to this problem, though.

I would be OK with defining HOST_DIR as $(BASE_DIR)/host before .config
is included. If .config exists, it will be overridden afterwards.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#4 lore raw

PATCH 1/1 make clean: improve when no .config present

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle <[email protected]> writes:

Hi,

Quoted 7 lines
Quoted 7 lines
Quoted 3 lines

Note: we could improve the HOST_DIR cleanup by removing 'output/host' unconditionally, but it's an assumption. Let me know your thoughts on this, it could be fixed in another patch.

Hum, yeah, indeed. This means that the contents of output/host are not removed, which is quite annoying. I don't immediately see a solution to this problem, though.

Arnout> I would be OK with defining HOST_DIR as $(BASE_DIR)/host before Arnout> .config is included. If .config exists, it will be overridden Arnout> afterwards.

Yes, that sounds like a plan. The only potential issue is if somebody builds out of tree _AND_ has changed the BR2_HOST_DIR _AND_ runs make clean in a directory where they have an important 'host' subdir.

That's probably all fairly unlikely to be a real issue.

Signature · 1 line
Bye, Peter Korsgaard
#5 lore raw

PATCH 1/1 make clean: remove redundant removal of STAGING_DIR

In reply to Thomas De Schampheleire

Since STAGING_DIR is defined as (package/Makefile.in):

STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot
STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR)

removing HOST_DIR will automatically remove STAGING_DIR. This patch updates 'make clean' based on this knowledge.

---
 Makefile |  2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Makefile +1 -1
@@ -748,7 +748,7 @@ printvars:
 		$(info $V=$($V) ($(value $V)))))
 
 clean:
-	rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
+	rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
 		$(STAMP_DIR) $(BUILD_DIR) $(BASE_DIR)/staging \
 		$(LEGAL_INFO_DIR)
 
#6 lore raw

PATCH 1/1 make clean: remove redundant removal of STAGING_DIR

Quoted 9 lines · Thomas De Schampheleire

Since STAGING_DIR is defined as (package/Makefile.in):

STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot
STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR)

removing HOST_DIR will automatically remove STAGING_DIR. This patch updates 'make clean' based on this knowledge.

Quoted 18 lines
---
  Makefile |  2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
Makefile +1 -1
@@ -748,7 +748,7 @@ printvars:
  		$(info $V=$($V) ($(value $V)))))
 
  clean:
-	rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
+	rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
  		$(STAMP_DIR) $(BUILD_DIR) $(BASE_DIR)/staging \
  		$(LEGAL_INFO_DIR)
 
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#7 lore raw

PATCH 1/1 make clean: remove redundant removal of STAGING_DIR

In reply to Thomas De Schampheleire
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas De Schampheleire <[email protected]> writes:

Thomas> Since STAGING_DIR is defined as (package/Makefile.in):
Thomas> STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot
Thomas> STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR)

Thomas> removing HOST_DIR will automatically remove STAGING_DIR. This Thomas> patch updates 'make clean' based on this knowledge.

Thomas> Signed-off-by: Thomas De Schampheleire <[email protected]>

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard