build: fix symlinked .config handling
authorSergey Ryazanov <ryazanov.s.a@gmail.com>
Thu, 20 Apr 2017 02:10:45 +0000 (05:10 +0300)
committerJo-Philipp Wich <jo@mein.io>
Tue, 2 May 2017 14:11:09 +0000 (16:11 +0200)
When running "make menuconfig" with symlinked .config (e.g. to
env/.config) it renames symlink to .config.old, creates new .config file
and writes updated configuration here.

This breaks the desired workflow when changes in the configuration could
be checked using "scripts/env diff" and commited with
"scripts/env save". Since the env/.config file is not updated.

Fix this issue by exporting KCONFIG_OVERWRITECONFIG=1, which forces
mconf to overwrite the .config content, instead of renaming it and
creating a new file. This variable is set only if .config is a symlink,
otherwise the variable is not exported and the old behaviour is
preserved.

Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
include/toplevel.mk

index 24e4ebf823fbb304fd32c67815596803890a367c..c90670bee62ee7912a1c08c2f582e6b0a074ceca 100644 (file)
@@ -126,7 +126,7 @@ menuconfig: scripts/config/mconf prepare-tmpinfo FORCE
        if [ \! -e .config -a -e $(HOME)/.openwrt/defconfig ]; then \
                cp $(HOME)/.openwrt/defconfig .config; \
        fi
-       $< Config.in
+       [ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; $< Config.in
 
 prepare_kernel_conf: .config FORCE