* .config not updated after make clean
@ 2005-12-22 13:43 Jan Beulich
2005-12-22 21:25 ` Sam Ravnborg
0 siblings, 1 reply; 4+ messages in thread
From: Jan Beulich @ 2005-12-22 13:43 UTC (permalink / raw)
To: sam; +Cc: linux-kernel
Sam,
since 'make clean' doesn't delete include/linux/autoconf.h (but
obviously does delete .config.cmd), .config cannot get updated anymore
if any of the Kconfig-s in the tree changes. Is there a particular
reason that include/linux/autoconf.h only gets deleted by 'make
mrproper', but not by 'make clean'? If that cannot be adjusted, I can't
see how else to force proper re-generation of .config through the
silentoldconfig target.
Thanks, Jan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: .config not updated after make clean
2005-12-22 13:43 .config not updated after make clean Jan Beulich
@ 2005-12-22 21:25 ` Sam Ravnborg
2005-12-23 7:34 ` Jan Beulich
0 siblings, 1 reply; 4+ messages in thread
From: Sam Ravnborg @ 2005-12-22 21:25 UTC (permalink / raw)
To: Jan Beulich; +Cc: linux-kernel, Roman Zippel
On Thu, Dec 22, 2005 at 02:43:45PM +0100, Jan Beulich wrote:
> Sam,
>
> since 'make clean' doesn't delete include/linux/autoconf.h (but
> obviously does delete .config.cmd), .config cannot get updated anymore
> if any of the Kconfig-s in the tree changes.
Correct but thats unfortunate though.
> Is there a particular
> reason that include/linux/autoconf.h only gets deleted by 'make
> mrproper', but not by 'make clean'?
make clean is used to clean out all intermidiate files not needed for:
- building applications that users kernel headers directly
- building external modules
For the latter autoconf.h is needed in order to obtain the
current kernel configuration.
> If that cannot be adjusted, I can't
> see how else to force proper re-generation of .config through the
> silentoldconfig target.
The current flow is something in the line of:
all Kconfig files => .config + include/linux/autoconf.h +.config.cmd
include/linux/autoconf.h => include/config/* + include/config/MARKER
When we execute make clean we delete the .config.cmd file so
we will not detect when a Kconfig file is changed - not good.
Since for reasons listed above we want to keep the autoconf.h
around also after make clean a new approach is needed.
We could keep the .config.cmd file but thats clearly not
supposed to stay around after a make clean.
So I went for another solution and if .config.cmd - renamed to
kconfig.dep - does not exists we execute make silentoldconfig
The reason for the rename is the clash with the normal kbuild .cmd
file which caused it to have multiple targets if it was created.
Sam
diff --git a/Makefile b/Makefile
index f4218b5..43ab980 100644
--- a/Makefile
+++ b/Makefile
@@ -481,18 +481,20 @@ ifeq ($(dot-config),1)
# Read in dependencies to all Kconfig* files, make sure to run
# oldconfig if changes are detected.
--include .config.cmd
+-include .kconfig.dep
include .config
# If .config needs to be updated, it will be done via the dependency
# that autoconf has on .config.
# To avoid any implicit rule to kick in, define an empty command
-.config: ;
+.config .kconfig.dep: ;
# If .config is newer than include/linux/autoconf.h, someone tinkered
-# with it and forgot to run make oldconfig
-include/linux/autoconf.h: .config
+# with it and forgot to run make oldconfig.
+# If kconfig.dep is missing then we are probarly in a cleaned tree so
+# we execute the config step to be sure to catch updated Kconfig files
+include/linux/autoconf.h: .kconfig.dep .config
$(Q)mkdir -p include/linux
$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
else
@@ -981,7 +983,7 @@ endif # CONFIG_MODULES
# Directories & files removed with 'make clean'
CLEAN_DIRS += $(MODVERDIR)
-CLEAN_FILES += vmlinux System.map \
+CLEAN_FILES += vmlinux System.map .kconfig.dep\
.tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map
# Directories & files removed with 'make mrproper'
diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c
index 1fa4c0b..854d247 100644
--- a/scripts/kconfig/util.c
+++ b/scripts/kconfig/util.c
@@ -33,7 +33,7 @@ int file_write_dep(const char *name)
FILE *out;
if (!name)
- name = ".config.cmd";
+ name = ".kconfig.dep";
out = fopen("..config.tmp", "w");
if (!out)
return 1;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: .config not updated after make clean
2005-12-22 21:25 ` Sam Ravnborg
@ 2005-12-23 7:34 ` Jan Beulich
2005-12-26 22:35 ` Sam Ravnborg
0 siblings, 1 reply; 4+ messages in thread
From: Jan Beulich @ 2005-12-23 7:34 UTC (permalink / raw)
To: Sam Ravnborg; +Cc: Roman Zippel, linux-kernel
Looks better than any of the alternatives I had come to think of.
Thanks, and assuming you're going to push this upwards... Jan
>>> Sam Ravnborg <sam@ravnborg.org> 22.12.05 22:25:08 >>>
On Thu, Dec 22, 2005 at 02:43:45PM +0100, Jan Beulich wrote:
> Sam,
>
> since 'make clean' doesn't delete include/linux/autoconf.h (but
> obviously does delete .config.cmd), .config cannot get updated
anymore
> if any of the Kconfig-s in the tree changes.
Correct but thats unfortunate though.
> Is there a particular
> reason that include/linux/autoconf.h only gets deleted by 'make
> mrproper', but not by 'make clean'?
make clean is used to clean out all intermidiate files not needed for:
- building applications that users kernel headers directly
- building external modules
For the latter autoconf.h is needed in order to obtain the
current kernel configuration.
> If that cannot be adjusted, I can't
> see how else to force proper re-generation of .config through the
> silentoldconfig target.
The current flow is something in the line of:
all Kconfig files => .config + include/linux/autoconf.h +.config.cmd
include/linux/autoconf.h => include/config/* + include/config/MARKER
When we execute make clean we delete the .config.cmd file so
we will not detect when a Kconfig file is changed - not good.
Since for reasons listed above we want to keep the autoconf.h
around also after make clean a new approach is needed.
We could keep the .config.cmd file but thats clearly not
supposed to stay around after a make clean.
So I went for another solution and if .config.cmd - renamed to
kconfig.dep - does not exists we execute make silentoldconfig
The reason for the rename is the clash with the normal kbuild .cmd
file which caused it to have multiple targets if it was created.
Sam
diff --git a/Makefile b/Makefile
index f4218b5..43ab980 100644
--- a/Makefile
+++ b/Makefile
@@ -481,18 +481,20 @@ ifeq ($(dot-config),1)
# Read in dependencies to all Kconfig* files, make sure to run
# oldconfig if changes are detected.
--include .config.cmd
+-include .kconfig.dep
include .config
# If .config needs to be updated, it will be done via the dependency
# that autoconf has on .config.
# To avoid any implicit rule to kick in, define an empty command
-.config: ;
+.config .kconfig.dep: ;
# If .config is newer than include/linux/autoconf.h, someone tinkered
-# with it and forgot to run make oldconfig
-include/linux/autoconf.h: .config
+# with it and forgot to run make oldconfig.
+# If kconfig.dep is missing then we are probarly in a cleaned tree so
+# we execute the config step to be sure to catch updated Kconfig
files
+include/linux/autoconf.h: .kconfig.dep .config
$(Q)mkdir -p include/linux
$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
else
@@ -981,7 +983,7 @@ endif # CONFIG_MODULES
# Directories & files removed with 'make clean'
CLEAN_DIRS += $(MODVERDIR)
-CLEAN_FILES += vmlinux System.map \
+CLEAN_FILES += vmlinux System.map .kconfig.dep\
.tmp_kallsyms* .tmp_version .tmp_vmlinux*
.tmp_System.map
# Directories & files removed with 'make mrproper'
diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c
index 1fa4c0b..854d247 100644
--- a/scripts/kconfig/util.c
+++ b/scripts/kconfig/util.c
@@ -33,7 +33,7 @@ int file_write_dep(const char *name)
FILE *out;
if (!name)
- name = ".config.cmd";
+ name = ".kconfig.dep";
out = fopen("..config.tmp", "w");
if (!out)
return 1;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: .config not updated after make clean
2005-12-23 7:34 ` Jan Beulich
@ 2005-12-26 22:35 ` Sam Ravnborg
0 siblings, 0 replies; 4+ messages in thread
From: Sam Ravnborg @ 2005-12-26 22:35 UTC (permalink / raw)
To: Jan Beulich; +Cc: Roman Zippel, linux-kernel
> Thanks, and assuming you're going to push this upwards... Jan
Hi Jan - just pushed atteched patch.
Slightly simplified compared to first version.
Sam
kbuild: always run 'make silentoldconfig' when tree is cleaned
If the file .kconfig.d is missing then make sure to run
'make silentoldconfig', since we have no way to detect if
a Kconfig file has been updated.
-kconfig.d is created by kconfig and is removed as part
of 'make clean' so the situation is likely to occur in reality.
Jan Beulich <JBeulich@novell.com> reported this bug.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
commit 752625cff3eba81cbc886988d5b420064c033948
tree 10281d9345281b3d118aa8b29b3fb21e1ea10655
parent 54e08a2392e99ba9e48ce1060e0b52a39118419c
author Sam Ravnborg <sam@mars.ravnborg.org> Mon, 26 Dec 2005 23:34:03 +0100
committer Sam Ravnborg <sam@mars.ravnborg.org> Mon, 26 Dec 2005 23:34:03 +0100
Makefile | 10 ++++++----
scripts/kconfig/util.c | 2 +-
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/Makefile b/Makefile
index 922c763..d3598ef 100644
--- a/Makefile
+++ b/Makefile
@@ -477,18 +477,20 @@ ifeq ($(dot-config),1)
# Read in dependencies to all Kconfig* files, make sure to run
# oldconfig if changes are detected.
--include .config.cmd
+-include .kconfig.d
include .config
# If .config needs to be updated, it will be done via the dependency
# that autoconf has on .config.
# To avoid any implicit rule to kick in, define an empty command
-.config: ;
+.config .kconfig.d: ;
# If .config is newer than include/linux/autoconf.h, someone tinkered
-# with it and forgot to run make oldconfig
-include/linux/autoconf.h: .config
+# with it and forgot to run make oldconfig.
+# If kconfig.d is missing then we are probarly in a cleaned tree so
+# we execute the config step to be sure to catch updated Kconfig files
+include/linux/autoconf.h: .kconfig.d .config
$(Q)mkdir -p include/linux
$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
else
diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c
index 1fa4c0b..a711007 100644
--- a/scripts/kconfig/util.c
+++ b/scripts/kconfig/util.c
@@ -33,7 +33,7 @@ int file_write_dep(const char *name)
FILE *out;
if (!name)
- name = ".config.cmd";
+ name = ".kconfig.d";
out = fopen("..config.tmp", "w");
if (!out)
return 1;
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-12-26 23:06 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-12-22 13:43 .config not updated after make clean Jan Beulich
2005-12-22 21:25 ` Sam Ravnborg
2005-12-23 7:34 ` Jan Beulich
2005-12-26 22:35 ` Sam Ravnborg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome